この記事「成功したGit分岐モデル」は、経験豊富なDVCSユーザーの間で非常によく知られていると思います。
私はhg
主に使用しますが、この議論はどのDVCSでも問題ないと主張します。
現在のワークフローは、各開発者がマスターリポジトリのクローンを作成することです。独自のローカルリポジトリにコードを記述し、テストを実行し、すべてがうまくいけばマスターにプッシュします。
そこで、JenkinsのようなCIサーバーをセットアップし、将来のプロビジョニングシステム(シェフ、パペット、アンシブルなど)でワークフローを改善したいと考えています。
実部
さて、上記のモデルはうまく機能しますが、ブランチはCIを壊す可能性があります。機能ブランチは、development
CIとマージをスムーズにするために、オリジンと同期する必要があります(記事によると、ブランチになります)。
アリスとボブが2つの機能に取り組んでいると言います。しかし、アリスは翌日に行われます。ボブの機能には1週間かかります。Bobが完了するまでに、彼の変更は古くなっています(おそらく、Aliceは一部のクラスをリファクタリング/名前変更しています)。
1つの解決策は、毎朝、開発者がプルmaster/origin
して、変更があるかどうかを確認する必要があることです。Aliceがコミットした場合、Bobは自分のワークスペースにプルしてマージし、機能ブランチが最新になるようにします。
- これは良い方法ですか?
- これらのブランチは(ローカルクローンではなく)マスターリポジトリに存在する必要がありますか?つまり、すべての開発者がGitHub / Bitbucketのマスターリポジトリにコミット権限を与えて、新しいブランチを作成できるようにする必要がありますか?または、これはローカルで行われますか?
- 最後に、記事が提示するモデルは、ブランチがと同期していない場合、CIを破壊する必要があり
origin/master
ます。ナイトリービルドを実行したいので、開発者は仕事を離れる前にプルしてマージし、各機能ブランチでもCIを実行する必要がありますか?