質問

私のチームの開発者がブランチ A で行った変更を棚上げしたと仮定します。そして私はブランチBに取り組んでいます。彼の変更をブランチ B にアンシェルブすることはできますか?(GUIまたはコマンドプロンプトによる)

役に立ちましたか?

解決

Visual Studio パワーツール これをやらせるべきだ。

C:\src\2\Merlin\Main>tfpt unshelve /?
tfpt unshelve - Unshelve into workspace with pending changes

Allows a shelveset to be unshelved into a workspace with pending changes.
Merges content between local and shelved changes. Allows migration of shelved
changes from one branch into another by rewriting server paths.

Usage: tfpt unshelve [shelvesetname[;username]] [/nobackup]
                     [/migrate /source:serverpath /target:serverpath]

 shelvesetname          The name of the shelveset to unshelve
 /nobackup              Skip the creation of a backup shelveset
 /migrate               Rewrite the server paths of the shelved items
                        (for example to unshelve into another branch)
 /source:serverpath     Source location for path rewrite (supply with /migrate)
 /target:serverpath     Target location for path rewrite (supply with /migrate)
 /nobackup              Skip the creation of a backup shelveset

たとえば、Branch1 で作成された「Shelve Set Name」という名前のシェルブ セットを Branch2 にマージするには、次を使用します。

>tfpt unshelve "Shelve Set Name";domain\userName /migrate /source:"$/Project/Branch1/" /target:"$/Project/Branch2/"

他のヒント

各ファイルを手動でマージする必要を回避する tfpt の代替ソリューション

tfs パワーツールの問題点は、 「ベースレスマージ」を行っているため、すべてのファイルを確認する必要があります. 。私は 800 を超えるファイルを含むシェルブセットを持っていましたが、「自動マージ」ボタンは決して信頼できず、各ファイルを順番に調べたくなかったので、別の方法を見つける必要がありました。

  • ダウンロードしてインストールします TFS シェルセット サイドキック.
  • このツールは VS2010 の「ツール」の下に表示されます。
  • 「Shelveset Sidekick」ツールを実行し、「検索」をクリックしてシェルフセットを表示します
  • シェルフセットを右クリックし、「シェルフセットのエクスポート」を選択します。
  • 次のような空の場所に保存します。 C:\temp\shelveset-name
  • 新しいファイルだけを含む完全なディレクトリ構造が完成しました。

(注記:エクスポート中に進行状況バーは表示されません。そのため、エクスポートに時間がかかる大規模なシェルフセットがある場合は、ファイルがフリーズしていると思われる場合は、Windows エクスプローラー ([ファイル] > [プロパティ] > [サイズ]) でファイルがまだダウンロードされていることを確認するだけです。 )。

あとは、Windows エクスプローラーを使用してそれらを新しいブランチにコピーするだけです。

これは私にとってはうまくいきました:

  • 最初にソリューション全体をチェックアウトします (新しいブランチで)
  • そのソリューションを閉じます
  • VS 内から TFS をオフラインにする (これを行うためのツール) - これが重要な理由については以下を参照してください...
  • Windows エクスプローラーでファイルをコピーします。のディレクトリ構造は、 c:\temp\shelveset-name 新しいブランチに対応するように名前を変更する必要があります。 ヒント:必ず正しい場所にコピーしてください。
  • VS をオンラインにする
  • すべての変更が検出され、新しいファイルが追加されるはずです
  • ソースコントロールをバインドするように求められた場合は、新しいブランチのパスが正しいことを必ず確認してください。
  • テスト - 新しいファイルをチェックインします

重要:最初に TFS をオフラインにしないと、(アンシェルフ変更セットからの) 新しいファイルが小さな赤いチェック マークなしで表示されることになり、取得するにはそれらを再度除外して含める必要があることがわかりました。それらを追加します。誰かがこの問題に対する別の解決策を持っているなら、私は知りたいです - リフレッシュは機能しないようです。

シェルフ情報には、シェルフが移動する特定のパスが含まれます。残念ながら、シェルブされた場所以外の場所に自動的にアンシェルブルする方法を私は知りません。これを実行したいときは、新しいブランチ内の同等のファイルをチェックアウトし、古いブランチからシェルブして、ファイルを手動でコピーする必要がありました。

編集:まあ、私はそれを難し​​い方法でやったと思います。Curt の解決策を試してみる必要があります。:)

これを完了するのにかなりの時間を費やしましたが、克服すべき問題はほとんどありませんでした。可能ですが、ここではいくつかの問題と、これらの問題を回避するために従うべきルールがほとんどありません

エラー:

ワークスペースを決定できません

この特定の問題は、次のコマンドを実行することで解決されました。 ソース ブランチのルートフォルダー。これは、「ターゲット」ブランチを使用すると言っているSOのいくつかの回答とは異なります - いいえ、「ソース」を使用します。

cd [your !!source!! branch root]
tfpt unshelve /migrate /source:"$/MyCollection/Development/Maint1.1" /target:"$/MyCollection/Development/Maint1.2" "myShelveset;UserName"

この後第2号が出ました。TFSサーバーに接続できなかったようです。私が気づいたのは、複数の VS がインストールされ、異なる TFS サーバーに接続されているということです。私はVS12を使用していて、ワークスペースとサーバーに接続していました。しかし、TFPT2013 が機能するには、同じ接続を VS13 で複製する必要があるとは知りませんでした。同じサーバーとワークスペースに接続します。

TFPT2015を使用して実行しようとしましたが、インストールしてもTFPT.exeがインストールされなかったため、役に立ちませんでした。そこで、TFPT2013からTFS2015まで試してみたところ、この特定のコマンドでは機能しました。VS12/13 が TFS2015 に対して正常に動作するのであれば、なぜそうではないのでしょうか?

要約する

  • CMD または DevCMD を使用します - 関係ありません
  • からコマンドを実行 ソース ブランチルートフォルダー
  • 特定の VS の Team Explorer Server 接続を確認する
  • TF Power Tools 2013 は、少なくとも TFS v15 に対して動作します。 移行する オプションは機能します
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top