GITをリポジトリとして使用する場合のコードレビュープロセス?


9

GITを使用する場合のコードレビューの最適なプロセスは何ですか?外部GITプロバイダー(Unfuddle)があり、リソース使用量に上限があります。そのため、すべての開発者に専用のリモートリポジトリを用意することはできません。

現在のプロセス:

  • master誰もがコミットするブランチを持つGITサーバーがあります
  • 開発者はローカルmasterミラーまたはローカル機能ブランチから作業します
  • 開発者がサーバーのmasterブランチにプッシュ
  • 開発者は最後のコミット時にコードレビューをリクエストする

問題:

  • コードレビューのすべてのバグは、それがキャッチされるまでにすでにマスターにあります。
  • さらに悪いことに、通常、誰かが何が起こったのかを理解しようとして数時間火傷しました...

ですので、

  • コードを実行するには、「マスター」に配信する前に確認してください。
  • グローバルチームと連携するプロセスを用意する(肩のレビューではありません!)
  • 個人の開発者が自分のデスク/マシンに電源を入れて他の誰かがリモートでアクセスできるようにする必要がないもの(人間の依存関係を削除し、開発者が異なるタイムゾーンで家に帰る)

TortoiseGITを使用して、変更されたファイルのリスト、ファイルの差分などを視覚的に表現します。GUIが十分でない場合、GITシェルにドロップする人もいますが、理想的には、ワークフローをシンプルでGUIベースにしたい(私は私のツールではなく、あらゆる負担を取り除くツールを求めています)。


コミットする前に単体テストを行っていますか?
ガイコーダ

@GuyCoder:ほとんどがそうです。
DeepSpace101

ホストがコードレビュー機能を提供していない場合は、より良いホストを入手してください。Gerritを見て、それを提供するホストを見つけることができるかどうかを確認してください。
mattnz 2012年

回答:


15

シンプルですが効果的なモデルは、GitHubプルリクエストモデルです。このモデルでは、寄稿者が「コードをマージしてください」リクエストをファイルします。メンテナはチェンジセットをレビューし、さらに作業が必要かどうか、またはマージに適しているかどうかを判断します。その後、彼はmasterブランチにマージできます。通常、コミッターはマスターブランチに直接プッシュすることはできません(これは好みに合わせてカスタマイズできます。「マイナー」コミットを直接実行できます)。


私たちには、世界中に7人のプロの開発者(匿名の寄稿者)の緊密なチームがあるため、それぞれが直接リモートマスターにプッシュできるようにしても安全です。私が好むのはリンク+イントロvsスタンドアロンの回答ですが、この場合は理にかなっています。リンクでの素晴らしい記事、ありがとう!
DeepSpace101

@シド3人のチームでは、彼ら全員がマスターにプッシュすることはできません。
Andrew T Finnell、2012年

プルリクエストは、RhodecodeとAtlassian Stashでも利用できます
dukeofgaming 2012年

2
@Andrew:どうして?チーム全体の作業をチョークポイントから注ぎ込むことで発生する可能性のある多くの問題があります。これらはすべて軽減することができますが、単一のポイントコマンドと制御構造が他の状況よりも状況によってはより適しています。
mattnz 2012年

1

Gitは分散バージョン管理システムです。1つのブランチを持つ1つのリポジトリだけではありません。

複数のリポジトリをセットアップできます(開発者ごとに1つ)。もう1つはマスターリポジトリです。ブランチの1つがマージされる準備ができると、開発者はマージを要求し、それらの変更はブランチ/レポからマスターにプルされます。

そのマージが実際に行われる前に、レビュー担当者は変更を環境にプルし、マスターにプッシュする前にレビューできます。

追加された利点は、このようにして、開発者が互いに干渉したり、お互いの汚れた洗濯物をそれほど見たりすることなく、好きな名前を付けてブランチをいくつでも作成できることです。


また、専門用語を学ぶ:「Devsはサーバーのマスターブランチにコミットする」とは、変更をマスターにプッシュすることを意味しますか?


そう、彼らpushの仕事。GITホスティング業者に支払い、リポジトリごとに課金するため、GITサーバー上に一意のリモートリポジトリを置くことはできません。開発者ごとに複数のリモートブランチがあるということですか?そして、the reviewer can pull the changes into their environment正確なGITコマンド(またはTortoiseGITフロー)を言うとき、どういう意味ですか?
DeepSpace101

いいえ、私は複数のリポジトリを持っているということです。開発者ごとに1つ、そのリポジトリには、必要な数のブランチを含めることができます。に関してはpull、TortoiseGITでコマンドがどのようになるかわかりませんが、コマンドはgit pullです。これはプッシュの逆です。リモートリポジトリから変更をプルして、他の開発者が行った作業で環境を更新します。
Richard JP Le Guen

私は知っていますgit pull:) ...あなたが参照していたプッシュ/プルのレポ/ブランチ/タグシステムを検査するための完全な構文を求めていました。今はgit pullとにかくやっていますが、それはremote:masterから外れているだけです-これが問題の原因です。とにかく、スティーブンのリンクは素晴らしかった。ありがとう
DeepSpace101

この場合のすべての実用的な目的では、ホストされたリポジトリ内のブランチは、別のリポジトリとまったく同じです。
mattnz 2012年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.