小規模チーム向けのGitワークフロー


11

私は、小さなチームで実装するgitワークフローに取り組んでいます。ワークフローのコアアイデア:

  • すべてのチームメンバーが書き込み可能な共有プロジェクトマスターがあります
  • すべての開発は機能ブランチでのみ行われます
  • 機能ブランチは、ブランチ作成者以外のチームメンバーによってコードレビューされます
  • 機能ブランチは最終的に共有マスターにマージされ、サイクルが再び開始されます

この記事では、このサイクルの手順について詳しく説明します。

https://github.com/janosgyerik/git-workflows-book/blob/small-team-workflow/chapter05.md

これは理にかなっていますか、何か不足していますか?

回答:


16

git flow branching modelが好きです。masterブランチはほとんどの場合そのままで、リリースのみが含まれています。開発ブランチは常に安定している必要があり、機能ブランチは破損する可能性があります。

開発を機能ブランチにマージし、機能ブランチを開発にマージすることにより、これを継続的な統合と組み合わせることができます。もちろん、何かが機能していると確信し、壊れていない場合にのみ、何かを開発にマージする必要があります。


私が理解しているように、git flowと継続的インテグレーションは代替の作業方法であり、実際には組み合わせることができません。gitフローでは、機能が完成したときにのみコードが開発にマージされます。継続的インテグレーションでは、新しい機能をすぐに提供しなくても、すべてのコードが少なくとも1日に1回、共有ブランチにマージされます。
bdsl

7

トピック継続的インテグレーションが欠落していると思います。すべての開発セットアップの一部である必要があります。

機能ブランチを使用すると、問題が発生します。継続的に統合するのではなく、機能が完了した後にのみ問題が発生します。

分岐された機能が短命であれば、これは受け入れられるかもしれませんが、それは間違いなく考慮すべきものです。

別の代替手段は、機能ブランチごとにCIビルドをセットアップすることです。これは確かに役立ちますが、統合ではありません。これは、機能Aと機能Bには表示されないが、機能AとBを統合した瞬間に最初のバグを見つけると明らかになります。

3番目の選択肢は、CIビルドの一部の統合ブランチにマージすることです。これは真の統合であり、作業が多少分離されている場合、実際にはgitで十分に機能しますが、ビルド中にマージの競合が発生し、ビルドが失敗します。


マスターブランチをCIと接続して、自動非回帰テストに失敗した機能ブランチのマージを拒否できます。ヒントをありがとう、最後に「ヒント」セクションを追加し、そこに言及します。
ジャノス

1
確かに、しかし前述のように、これは連続的な統合ではなく、機能統合の最後にありますが、これはまったく同じかもしれませんが、同じではありません
ジェンス

1
機能ブランチは安定している必要がないため、非常に便利だと思います。つまり、1回の巨大なコミットではなく、頻繁にコミットできます。
アルジャン

スケジュール(CIシステム)で実行される自動ビルドプロセスは不可欠です。コンパイルの問題をすばやく見つけて修正できるように、頻繁に実行する必要があります。開発チームは、ビルドの失敗を最優先にすべきです。これらのタイプの問題は、最初に表面化するときに修正する方がはるかに簡単です。
ネイサンピリング

1
CIを使用するプロジェクト(現時点では使用できないレガシープロジェクトがいくつかあります)では、真のCIをマスターするためにすべてをコミットします。レガシープロジェクトでは、gitフロー分岐モデルを使用します。機能ブランチは、私に尋ねるとCIブロッカーであり、(終了したときだけでなく)継続的に統合するのを難しくします。機能の作業を続け、最終的なタスクは基本的に有効にすることですが、コードは常にプロジェクト内にあります。
エリオットブラックバーン14

1

gitflowまたはTwgitに触発されます。

gitflowは、そのアプローチを次のように要約します。

Vincent Driessenの分岐モデルに高レベルのリポジトリ操作を提供するGit拡張。

Twgitは次のように自身を説明します。

Twgitは、Gitリポジトリの機能、修正プログラム、およびリリースを管理するための無料のオープンソース支援ツールです。ドキュメントに記載されている分岐モデルを採用するためのシンプルで高レベルのコマンドを提供します。サポートされるOS:Debian / Ubuntu Linux、Mac OSX。

両方のツールはgithubから入手できます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.