OSS開発勉強会-09

今日の勉強会で説明した内容のメモ

GitHubなんかを使って、何か別のOSSプロジェクト(gitで管理されている)の
派生バージョンを作り、かつ、オリジナルの更新に追従する方法。

オリジナルのGitリポジトリのURLを git://github.com/kaigai/my_oss.git とし、
このリポジトリに対するコミット権は無いものとする。

自分の派生バージョンのGitリポジトリのURLを ssh://git@github.com/kaigai/modified.git とする。
自分はこのリポジトリの所有者であるのでコミット権があるものとする。

% git clone ssh://git@github.com/kaigai/modified.git
% git remote add upstream git://github.com/kaigai/my_oss.git
  • 手順3:オリジナルの master をトラッキングするブランチの作成
% git checkout --track upstream/master -b develop

ここでは develop というブランチを作成し、同時に、このブランチが upstream リポジトリの master ブランチをトラッキング(追跡)するように設定している。

これにより、オリジナル側で新たなパッチが commit された場合には、git pull でオリジナルの修正をマージすることができるようになる。

  • 手順4:オリジナル側の更新をマージ
% git pull [--rebase]
  • 手順5:origin のリモートリポジトリに登録
% git push origin develop

この操作により、developブランチに加えた全ての修正がoriginのリモートブランチに加えられる事になり、他の利用者にも visible となる。

gitの場合、ローカル環境で commit しても、pushしない限りその修正はローカルのコピー(git cloneした)に留まることに留意。

この辺の git の機能を使えば、非常に楽に派生バージョンを並行に開発することができる。
SE-PostgreSQLのように、マージまでに非常に長い時間がかかって
いる場合でも、本家の追従を容易に行うことができる。