2012-04-27 43 views
7

TFSシェルフセットを使用する理由の1つは、私が同意しないコードレビュー用ですが、これは現在のプロジェクトで実践されている方法です。 TFSシェルフセットを使用している理由は、コードレビューには適していません。TFSシェルフセットとコードレビュー

  • シェルフセットには、変更セットには自然順序がありません。この は、多くのマージ競合を引き起こす可能性があります。
  • 開発者がレビューを取得するまでコードをチェックインできない場合、レビュー担当者に依存します。レビューアが短期間にレビューを行わない場合、これらのシェルセット は他のタスクを妨害する可能性があります。
  • 他の開発者とのコラボレーションが苦しいようになりました。チェックインコードではなくシェルフセットを渡す必要があります。これにより、今後もマージ競合が発生する可能性があります。

誰かが私に私がアプローチについて確信を得るか、私はこのアプローチを使用しないためのケースを提示することができますいずれかのように対するまたはためレビューのためのTFSのシェルブセットのアプローチのいずれかになりますいくつかのポインタを提供することができますか?

+0

あなたが分岐を使用して、代わりに棚上げ変更のマージを見てきましたか? – cordialgerm

+0

@picklesでは、分岐とマージはレビュー目的のために過度のものになります。分岐やマージは、製品バージョン、開発チームをサポートするためにほとんど行われていますが、コードレビューの分岐については聞いていません。 – Chandermani

+0

@Chandermani 2011年ALMサミットでは、機能ブランチのチームブランチで開発者ブランチを使用するチームがありました。過剰なものと思われましたが、その複雑なプロジェクトは本当にそれから恩恵を受けました。マージ機能を維持するために、毎日2日に2回の逆統合を開発者ブランチまで実行します。 – jessehouwing

答えて

11

は私がTFS 11およびVisual Studio 11の新しいコードレビュー機能がshelvesetsを中心に構築されているとして、Microsoftは、このいずれかであなたと多くのことを同意しないと思います。実際の問題はおそらく、チームの運営方法やタスクが製品全体にどのように分割されているかなどの点にあります。

タスクが依存性が少なく、同じエリアで働く人々が緊密に連携するようにタスクが分割されている場合、マージとチェックインに関する問題は発生しません。タスクに時間がかかる場合は、定期的に開発ブランチから最新のバージョンを取得し、常に最新の状態にしてください。

レビュアーが遅すぎることがわかり、シェルフセットがキューイングしていて、レビュー待ちの状態になっている場合は、実際の問題が発生する可能性があります。タスクが終了したら、できるだけ早くレビューし、レビュー待ちのままにしてはいけません。レビューに24時間以上かかる場合、これは本当の問題になる可能性があります。他の人がピアレビューをやり直すか、チームの審査員を増やすことでこれを緩和することができます。

他にもすべてが失敗した場合は、死刑審査を行い(棚の代わりにチェンジセットを検討する)、TFS 11とVisual Studio 11もこのシナリオをサポートします。

私の個人的な好みは私のチームの開発者を信頼することで、私たちはほとんどポストチェックレビューをします。新しいメンバーまたは非常に少年のメンバーがいる場合は、より初期の開発者が最初のプレチェックインレビューを行うことができるようにします。

も参照してください:

+1

Spot on !!私は批評家の限られた帯域幅のために積み重ねられた棚に何度も直面しています。チームメンバーが関連する機能を担当してからシェルフセットを渡す必要があります。私は、このメカニズムが失敗する複数のインスタンスを説明することができます。私はこれについてブログの投稿を書いておくべきだと思う:)レビューが限られた時間枠内で起こるなら、私はこれが成功することができる唯一の方法だ。 – Chandermani

+1

また、必要に応じて、チェック・イン・コードの最低品質を得るために、コード解析とすべての単体テストの実行と組み合わせて、Gated Checkinビルドを使用することを検討することもできます。そうすれば、すべてのチェックインを個別にレビューする必要はないかもしれません。 – jessehouwing

+0

tfs用の2つのオープンソースプロセステンプレートアドオンがあり、vs2010に同様のレビューエクスペリエンスをもたらします。プレゼンテーションからそれらへのリンクをチェックしてください。 – jessehouwing

2

問題はそれほどシェルフセットではありません。あなたのコードを見直すためにピアを待っているなら、コードが保存されている方法は大きな違いをもたらさないでしょう。つまり、シェルフセットは、査読者がアクセスできる場所にコンピュータから安全に保管されているので、それはすべてのソリューションと同じくらい良いソリューションだと思います。代わりにチェックインするか、チェンジセットを渡して、それが合言葉に合格しないか、またはジップの周りを回らなければ元に戻すかどちらかです。どちらも重大な欠点があります。

チェックインする前にコードレビューを行う必要があるかどうかは本当に問題ですか?

+0

チェックイン後にコードをレビューできないのはなぜですか?コードが既存のフローと統合されていないことを確認できれば、チェックインしてレビューすることができます。 – Chandermani

+1

私が理解していないことは、問題をマージすることについて明らかに多くのことを明らかにしているので、チェックイン後にレビューを行うと、与えられたタスクのチェンジセットの数が増える可能性が高くなります。より多くのチェンジセットがよりマージされます... – Nock

6

シェルセットセットには変更セットがあるため、自然順序付けはありません。これは が多くのマージ競合につながることがあります。

私はここであなたのポイントを見ることができません、あなたのための "自然な順序"は何ですか?チェンジセットの年代順は、あなたがチームで働き始めるときに与えられた順序に従わない。

それが見直されますまで、開発者がコードをチェックインすることができない場合は、審査の上 依存関係を置き、審査が短い期間内に審査 をしない場合は、これらのshelvesetsは、他の タスクに干渉することができます。

この場合も、タスクBを実行する前にタスクAを開始しているためではない「通常のタスク開発」と同じ状況があります。タスクAをBの前にチェックインする(BはA、それはここでのポイントではありません)。タスク開発のワークフローの最終ステップとしてレビューを検討してください。レビューアの依存関係は実際には複雑になりますが、安定したビルドを実現し、社内標準に準拠したコードを持っています。今、あなたは再び将来的に マージの競合を引き起こす可能性があり周りではなく、コードをチェックインより ブセットを、渡す必要があるとして、他の開発者との

コラボレーションが苦痛になります。

シェルフセットよりも簡単なことは分かりますか?変更されたコードを電子メールでzipファイルに送信したいですか?参照に影響を与えたくないときは、シェルセットを使用することで、開発者間でコードを共有するのが簡単になります。ここでも、あなたが言及しているマージ競合の問題はわかりません。ここで

はいくつかのアドバイスです:

  1. 誰かが別のDEVのブセットを取り戻している場合は、DevのAはブセットを作成したと言うとDevのBはDevのBは、独立したクリーンを持っていることを確認し、それを確認するのにしたいと専用のワークスペースを使用しないでください。通常の "dev"ワークスペースでは、unshelveする必要はありません。コードレビューのための専用のワークスペースは、あなたが言及したマージ競合の問題を緩和します。

  2. 理論的には、対象ブランチに統合する前に、すべてをレビューする必要があります。実際にそうするのは難しいと言われているので、あなたのチームがそのようなプロセスの習慣を持っていない場合、何かを完璧にすることを目指してはいけません。彼が取り組んでいるアプリケーションをよく知っているシニア開発者は、レビューの前にチェックインする権限を持つことができます。これはすべてのトレードオフの問題です。この場合、柔軟性と開発者エクスペリエンスが向上しますが、参考文献の品質と安定性が損なわれる可能性があります。本物の勝者はいません。あなたのために重要なことに基づいて選んだのです。

  3. コードレビューにブランチを使用しないでください。

  4. シェルフセットによるコードレビューの経験は、VS/TFSではやや不完全であることに同意しますが、代替案よりも優れています。マイクロソフトでは、この点でよりうまくいく可能性があることを認識し、VS11/TFS11の改善点を示しています。次のバージョンではまだコードレビューの経験がありますが、まだシェルセットに基づいていますが、俳優間のより完全なコミュニケーションシステムがあります。この改善は「私の仕事」の経験で行われ、物事はよりスムーズになりました。 tfspreview.comとVS11ベータ版を試してみるか、ブログ記事(Brian Harry)を読んで詳しい情報を入手してください。ここであなたが興味を持つだろうa linkです。

+1

詳細な説明をありがとう。私はまだチェックインは正しい道だと思っています。作業フローに統合することなくチェックインできる限り、シェルフセットを使用するよりもはるかに優れています。 Shelvesetsは、私が他の開発者との依存関係がない何かに取り組んでいるときに良いです。 – Chandermani

関連する問題