TFSのシェルビングとは何ですか?


317

他のチームメンバーがソースコードを確認できるように、TFSでの棚上げは単なるソフトチェックインですか?

つまり、棚上げされたコードは正しくコンパイルされませんか?

回答:


453

棚には多くの用途があります。主なものは次のとおりです。

  1. コンテキストの切り替え:現在のタスクの作業を保存して、別の優先度の高いタスクに切り替えることができます。上司が実行され、「ああ!バグバグバグ!」機能の現在の変更を削除して、バグを修正する必要があります。機能の作業を保留してバグを修正してから、戻って棚上げを解除し、後で変更に取り組むことができます。
  2. 変更セットの共有:チェックインせずにコードの変更セットを共有したい場合、他の人がコードセットをシェルフすることで簡単にアクセスできるようにすることができます。これは、不完全なタスクを他の誰か(貧しい魂)に渡す場合や、他の誰かが実行する必要があることを決してチェックしないようなテストコードがある場合に使用できます。これをレビューに使用することについての他の応答へのh / t、それは非常に良いアイデアです。
  3. 進行状況の保存:複雑な機能に取り組んでいるときに、進行状況を保存したい「良い点」にいる場合があります。これは、コードを棚上げする理想的な時期です。レンダリングのバグを修正するために、CSS / HTMLをハッキングしているとしましょう。通常、あなたはそれを強打し、それが正しく見えるまで、考えられるすべての可能なクラッジを繰り返します。ただし、正しく表示されたら、もう一度チェックインしてマークアップをクリーンアップし、チェックインする前に他の誰かがあなたの操作を理解できるようにすることができます。この場合、すべてが正しくレンダリングされたら、コードを保留できます。 、その後、マークアップを自由に移動してリファクタリングします。誤って再度マークアップを解除した場合は、いつでも戻ってチェンジセットを取得できます。

他の用途はありますか?


16
チェンジセットをシェルフするとき、保留中の変更をローカルに保存するか(2または3の場合に役立つ)または保存しない(1の場合に役立つ)
dumbledad

2
棚上のVisual Studioドキュメントは情報にいくつかの追加のコンテキストとどのようにしています。
ホリスティックデベロッパー

1
また、最終的なコミットが行われるまで変更を保存するために、ゲート付きビルドによって使用されます。
Østergaardとれ

私が気づいたことの1つは、変更をシェルビングしても必ずしもコードが元に戻るわけではなく、ファイルの状態がチェックインされるように変更されるわけでもないということです。あなたの棚のコード?
ジャック

変更セットをローカルに保存するオプションを選択すると、ファイルがチェックアウトされたままであることがわかりました。
ジャック

105

シェルビングは、チェックインせずにボックス上のすべての変更を保存する方法です。変更はサーバーに保持されます。いつでも、あなたやあなたのチームメイトは彼らをあなたのマシンのいずれかに「アンシェルブ」して戻すことができます。

また、レビュー目的にも最適です。チェックインのための私のチームでは、変更を棚上げし、変更の説明と変更セットの名前をメールで送信します。チームのメンバーは、変更セットを表示してフィードバックを提供できます。

参考:シェルブセットを確認する最良の方法は、次のコマンドを使用することです

tfpt review / shelveset:shelvesetName; userName

tfptはTeam Foundation Power Toolsの一部です


6
変更を手動で保留して情報を電子メールで送信する理由は今日ではないことに注意してください。現代のプロセスは、コードレビューを要求することです。
ChiefTwoPencils 2017年

34

そのとおり。シェルフを作成すると、最新を取得している他の人にはコードが表示されません。

それはあなたのコードの変更をサーバーに置きます、それはおそらくあなたの仕事用のPCよりよくバックアップされます。

自宅で仕事をしたい場合は、別のマシンで変更をピックアップできます。

他の人はあなたの棚を見ることができます(これはオプションであると思います)ので、彼らはチェックイン前にあなたのコードをレビューできます。


そのとおり。シェルフを作成すると、最新を取得している他の人にはコードが表示されません。 これは、1)TFSにコードをチェックインするときに、チームメンバーが最新のコードを取得すると、システムにコードが表示されることを意味します。2)つまり、どのアカウントでコードを保留したかを意味します。同じアカウントからのみ、保留されたコードが表示されますか?私が間違っている場合は私を修正してください
クリッシュ2015

よければ、他の人の棚を見ることができます。
teedyay 2015

3
より正確に言うと、「最新を取得している他の人はあなたのコードをダウンロードしません」
sergiol

18

これらの多くの議論で見逃されている1つのポイントは、変更を保留した同じマシンに戻す方法です。おそらくほとんどの人にとっては明白ですが、私にはわかりませんでした。元に戻す保留中の変更を実行すると思います-それでよろしいですか?

私は次のようにプロセスを理解しています:

  1. 現在保留中の変更を保留するには、プロジェクト「Shelve」を右クリックして、シェルフ名を追加します
  2. これはサーバーへの変更を保存(またはシェルブ)します(誰もそれらを見ることができません)
  3. 次に、[保留中の変更を元に戻す]を実行して、コードを最後のチェックインポイントに戻します。
  4. その後、元に戻されたコードベースラインを使用して、必要な操作を実行できます
  5. いつでも変更を保留解除できます(マージの競合が必要になる場合があります)

したがって、Shelveに必要な作業を開始したい場合は、開始する前に必ずチェックインしてください。チェックインポイントは、上記の[保留中の変更を元に戻す]手順を実行するときに戻る場所です。


8
シェルフセットの作成時に[保留中の変更をローカルに保持]チェックボックスをオフにすると、保留中の変更を元に戻す手順をスキップできます。
マイケルJ.

14

私はいつもこれに遭遇するので、ブランチに関する補足情報:

複数のブランチを使用している場合、シェルブセットは、それらを作成した特定のブランチに関連付けられています。そのため、チェンジセットをシェルフで長時間錆びさせて別のブランチに棚上げを解除する必要がある場合は、7月のリリースの電動工具でそれを行う必要があります。

tfpt unshelve /migrate

トピック外ですが、本当です:-)
TosterØstergaardMay

2
このコメントは非常に古いため、スタックオーバーフローの回答が作成される前に追加されました:-)
joshua.ewer

2

棚付けは、既存の変更に影響を与えずに変更がソース管理に保存されているようなものです。ソース管理でファイルをチェックインすると、既存のファイルが変更されますが、シェルビングは変更をソース管理に保存するようなものですが、実際の変更は変更しません。


1

@JaredPar:はい、シェルブセットをレビューに使用できますが、シェルブセットは自分や他のユーザーによって上書きされる可能性があるため、長期的に安定しているわけではありません。したがって、規制関連のレビューでは、シェルブセットをベースとして使用するのではなく、チェックイン(チェンジセット)を使用してください。非公式のレビューでは問題ありませんが、正式な(例:FTA関連)レビューではありません!


0

ゲートビルドを使用している場合、ビルドがトリガーされると、ビルドのために送信されるワークスペースのシェルブセットが作成されます。ビルドが失敗すると、シェルブセットは拒否されます。ビルドが成功すると、チェンジセットが作成され、TFSにコミットされます。どちらの場合でも、そのチェックイン/ビルドを行う人は、ワークスペースを調整する必要があります。これは、最新の取得を実行するのと同じくらい簡単です。

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