58

Here's the part I get: When you shelve in TFS, it makes a server copy of the changes so they are not lost, but does not check them into the source code trunk/branch you are working on.

Question: Under what circumstances would you use the "unshelve" feature? Does it mean it will remove the shelveset from the TFS server? Can you do a get from a shelveset? Or is it really just a diff description between the shelveset and the "real" source code?

4

3 に答える 3

72

Unshelving は、作業を継続できるように、シェルフセットをマシンに復元する方法です。サーバー上のシェルブセットは変更されません (そのためには、再度シェルブして同じシェルブセット名を使用する必要があります)。

私がそれをどのように使用するかの 1 つの例は、作業中にマシン間で変更を移動することです。デスクトップ マシンで棚上げしてから、ラップトップで棚上げを解除してから、ラップトップで作業を続けます。

また、(コード レビューやその他の理由で) 変更を誰かと共有するためにも使用できます。あなたが変更を棚上げすると、他の人が行って棚上げを解除し、あなたが行ったことを確認できます。

Unshelving は、実際にはサーバー上のシェルフセットやその他のものを変更しません。それはただの取得操作です。

于 2010-02-24T20:20:23.760 に答える
32

ヘルムズは当たりです。彼の答えを読んでください。

1 つの重要な注意点: Shelfset が作成されてから Get を実行した場合、Unshelve は Shelfset に含まれるファイルのローカル バージョンのみをロールバックします。したがって、一貫性のないワークスペースを持つ可能性が非常に高くなります。

Unshelve の後に Getを常に再実行することをお勧めします。これにより、実際には半分新しい/半分古い状態の副作用であるファントム ビルド エラーで時間を無駄にすることがなくなります。また、チェックイン時に競合を発見するだけでなく、シェルブセットのコンテンツと最新のサーバー リビジョンとの間の競合を事前に解決する必要もあります。

于 2010-02-25T15:08:24.440 に答える
4

私はシェルフを使用して進行中のコードをバックアップします。ハード ドライブがクラッシュした場合などに備えてです。コードの構築について心配する必要さえありません。作業を気にする必要はありません。私のチームの他の開発者がその作業を見ることはないからです (彼らが探しに行かない限り)。

Unshelve は、変更をワークスペースに戻します。サーバーからシェルブセットを削除することは削除です。

Richard Berg が言ったことに続いて、電動工具のバージョンの unshelve には、実際には get と resolve が含まれています。

于 2010-03-04T21:56:09.053 に答える