GITを使用する場合のコードレビューに最適なプロセスは何ですか?外部のGITプロバイダー(Unfuddle)があり、リソースの使用量に上限があります。そのため、すべての開発者に専用のリモートリポジトリを用意することはできません。
現在のプロセス:
- 全員がコミットする
master
ブランチを持つGITサーバーがあります - 開発者はローカルの
master
ミラーまたはローカル機能ブランチ - 開発者がサーバーにプッシュする
master
ブランチ - 開発者が最後のコミット時にコードレビューを要求する
問題:
- コードレビューのバグは、キャッチされるまでにすでにマスターになっています。
- さらに悪いことに、通常、誰かが数時間試してみました。何が起こったのかを理解するために…
それで、
- 「マスター」に配信する前にコードレビューを行いたいと思います。
- グローバルチームと連携するプロセスを用意します(肩越しのレビューはありません!)
- 個々の開発者が自分のデスク/マシンにいる必要がないもの他の誰かがリモートできるように電源を入れるn(人間の依存関係を取り除き、開発者はさまざまなタイムゾーンで帰宅します)
変更されたファイルのリスト、差分ファイルなどを視覚的に表現するためにTortoiseGITを使用します。 GUIでは不十分な場合のGITシェルですが、理想的には、ワークフローをシンプルでGUIベースにする必要があります(開発者ではなく、ツールで負担を軽減したい)。
コメント
- コミットする前にユニットテストを行っていますか?
- @GuyCoder:ほとんどの場合、行っています。
- ホストがコードレビューを提供していない場合機能、より良いホストを取得します。 Gerritを見て、それを提供するホストを見つけることができるかどうかを確認してください。
回答
Aシンプルですが効果的なモデルは、 GitHubプルリクエストモデルです。このモデルでは、寄稿者が「コードにマージしてください」というリクエストを提出します。メンテナはチェンジセットを確認し、さらに作業が必要かどうか、またはマージに適しているかどうかを判断します。その後、彼はマスターブランチにマージできます。コミッターは通常、マスターブランチに直接プッシュすることはできません(これは好みに合わせてカスタマイズできます。「マイナー」コミットを直接入力できます)。
コメント
- 世界中に7人のプロの開発者(匿名の寄稿者)からなる緊密なチームがあるため、それぞれをリモートマスターに直接プッシュさせるのは安全です。 'はリンク+イントロと私が好むスタンドアロンの回答ですが、この場合は理にかなっています。リンクでのすばらしい記事、ありがとう!
- @Sid 3人のチームで、'全員をマスターにプッシュさせません。
- プルリクエストは、RhodecodeとAtlassianStashでも利用できます
- @Andrew:どうしてですか?チーム全体の作業をチョークポイントに集中させることによって発生する可能性のある多くの問題があります。これらはすべて軽減できますが、状況によっては、単一のコマンドおよび制御構造が他の状況よりも適しています。
回答
Gitは分散バージョン管理システムです。1つのブランチを持つリポジトリは1つだけではありません!
開発者ごとに1つずつ、マスターリポジトリである複数のリポジトリを設定できます。ブランチの1つをマージする準備ができると、開発者はマージを要求し、変更はブランチ/リポジトリからマスターにプルされます。
そのマージが実際に行われる前に、レビュー担当者は変更を
追加された利点は、開発者が互いに干渉したり、所有したりすることなく、好きな名前のブランチを好きなだけ持つことができることです。お互いの汚れた洗濯物をそんなに見るために。
また、用語を学びましょう。「開発者がサーバーのマスターブランチにコミットする」とは、変更をマスターにプッシュしますか?
コメント
- ええ、
push
彼らの作業。 ' GITホスティング業者に支払いを行い、リポジトリごとに課金するため、GITサーバー上に一意のリモートリポジトリを設定することはできません。開発者ごとに複数のリモートブランチがあるということですか?また、the reviewer can pull the changes into their environment
と言うとき、正確なGITコマンド(またはTortoiseGITフロー)とはどういう意味ですか? - いいえ、複数のリポジトリがあることを意味します。開発者ごとに1つ、そのリポジトリ上に必要な数のブランチを持つことができます。
pull
については、' TortoiseGITのコマンドが何であるかわかりませんが、コマンドは gitpull 。 'はプッシュの反対です。リモートリポジトリから変更をプルして、他の開発者が行った可能性のある作業で環境を更新します。 - 私は
:)..。私はあなたが参照していたプッシュ/プルについてリポジトリ/ブランチ/タグシステムを検査するための完全な構文を求めていました。 現在、とにかく
git pull
を実行していますが、'はremote:masterのすぐそばにあります。これが問題の原因です。 とにかく、Steven 'のリンクは素晴らしかった。 ありがとう - この場合、すべての実用的な目的で、ホストされているリポジトリのブランチは別のリポジトリとまったく同じです。