15

私はこれを仮定します:

tf.exe get $/project /recursive

...この奇妙なワークスペース マッピング、既知の TFS サーバーなどが必要です。

この最も簡単なことを行う方法はありますか:この一連の資格情報を使用してこのTFS サーバーに接続し、このプロジェクトの最新のソース コードを取得して、ここに配置しますか? すべてコマンドラインから。

4

6 に答える 6

22

まず、ソース管理されなくなった管理対象ファイルのコピー(SVNエクスポートなど)が必要ですか、それともファイルとTFSを引き続き使用したいですか?

オプション1:バインディングなし

最新のファイルのコピーが必要で、TFSに「バインド」しない場合は、自分で少し作業を行う必要があります。クレデンシャルを脇に置きます([/login:username,[password]]多くのコマンドラインメソッドのパラメーター)。

  1. TF次のコマンドを使用して、ファイルのリストを取得します。tf dir "$/YourSolution" /Recursive > files.txt
  2. files.txt巧妙なバッチファイルで処理する(またはスクリプト言語を使用する):
  3. で始まる行を読み取り$/、これがディレクトリです。宛先にディレクトリを作成します(最初の3文字と最後の文字であるコロンを削除します)。
  4. 次の行を(空白またはファイルの終わりまで)読み取ります。これらはそれぞれ、手順3で検出されたディレクトリ内のファイルを表します。変数%file%とディレクトリ%dir%にファイルがあると仮定して、次のコマンドを発行します(そのディレクトリ内のファイルごとに) )::

tf view "$/%DIR%/%FILE%" "/output:Your-Target-Path/%DIR%/%FILE%"

または、現在のディレクトリをターゲットとして使用することに満足している場合:

tf view "$/%DIR%/%FILE%" "/output:%DIR%/%FILE%"

出力部分にが必要であることに注意してください。そうしないと、%DIR%/%FILE%すべてのファイルが同じディレクトリにダンプされます。

注:これは非常に高い帯域幅で動作が遅い可能性があります!

オプション2:一時的なマッピング

  1. 一時的なワークスペースを作成します:(tf workspace /new /collection:<URL_TO_SERVER> /permission:Privateこれはプロンプトを表示します。プロンプトなしのオプションがありますが、ワークスペースの名前を決定することは演習として残されています)
  2. ファイル用のディレクトリを作成します。例:LOCALDIR
  3. フォルダのマッピングを作成します。tf workfold /map "$/SERVER_DIR" "LOCALDIR"
  4. に入るLOCALDIR
  5. ファイルを取得するtf get . /Recursive

この時点で、すべてのファイルが用意されているはずです。必要に応じて、TFSとのバインディングも用意して、変更をコミットできるようにします。または、コンテンツを別の場所にコピーして、マッピング/ワークスペースを分割することもできます。の正しいコマンドラインバリアントを使用tf workfold /unmapするtf workspace /deleteと、ワークフォルダーのマップが解除され、ワー​​クスペースが削除されます。

于 2012-08-07T09:45:14.813 に答える
9

TFS からフォルダをきれいにエクスポートしますか? 最後に、私が思う素晴らしい解決策を見つけました。

今はこれを完全に調査するつもりはありませんが、時間があるときに、非常に面倒なビルド サーバー ワークスペース同期スクリプトをこれに置き換えるつもりです。

解決:

Microsoft の Git-TF を使用して、ワークスペースなどを設定することなくソースをディスクに取得します。コマンドを試してみたところ、見事に機能しました。TFS 2010 および 2012 で機能すると思います。私が理解できることから、バインドやワークスペース、または後で問題を引き起こすようなものが残されることはありません。インストールする必要があるのは GIT と GIT-TF だけだと思います。

http://www.microsoft.com/en-us/download/details.aspx?id=30474

実際にファイルを GIT リポジトリに取得しますが、これはまったく問題ではありません。エクスポートしたフォルダー内に .git という名前の (隠し?) フォルダーが作成されます。これを削除して、GIT の痕跡を取り除くことができると思います。

誰かがこれを実装した場合、これは簡単なはずですが、期待どおりに動作することを確認してください。

于 2013-01-21T15:47:27.613 に答える
4

簡単な解決策
Ray Hayesのオプション 2の回答に基づいて、簡単で汚い解決策が必要な人が簡単に使用できる実際のスクリプトをまとめました。詳細については、彼の回答をお読みください。

使用するには:

  • 4 つの変数を作業環境に設定します
  • 特に将来からこれを読んでいる場合は、tf.exeが私が持っているのと同じディレクトリにない可能性があることを覚えておいてください:)

.

SET COLLECTION_URL="http://localhost:8080/tfs/<collection>"
SET SERVER_DIR="$/<REMOTE_SOLUTION_DIR>"
SET LOCAL_DIR="X:\<YourLocalDir>"
SET TF_DIR="C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE"

%TF_DIR%\tf workspace /new /collection:%COLLECTION_URL% /permission:Private /noprompt tmp_batchws
%TF_DIR%\tf workfold /map %SERVER_DIR% %LOCAL_DIR%
cd /d %LOCAL_DIR%
%TF_DIR%\tf get . /Recursive
%TF_DIR%\tf workspace /delete tmp_batchws /noprompt
于 2015-05-19T06:51:35.737 に答える
1

http://johannblais.blogspot.com/2014/07/tfs-equivalent-of-svn-export.html

http://tfs-server:port/tfs/Collection/TeamProject/Team/_api/_versioncontrol/itemContentZipped?repositoryId=&path=url-encoded-source-control-path

  • tfs-server は TFS サーバーのホスト名です
  • port は TFS ポート (通常は 8080) です。
  • Collection は、チーム プロジェクト コレクションの名前です。
  • TeamProject は、チーム プロジェクトの名前です。
  • チームはチームの名前です
  • url-encoded-source-control-path は、URL エンコードされたソース管理パスです (たとえば、$/Project1/Main/Sources/Folder/SubFolder は %24%2FProject1%2FMain%2FSources%2Folder%2FSubFolder になります)
于 2016-03-01T04:01:36.140 に答える
1

TFS コマンド ラインに関しては、「簡単な」オプションはありません。ほとんどの場合、非常に多くの入力が必要になります (単純にデフォルトを設定できないため、毎回コレクション URL を指定する必要がないなど)。指図)

TFS コマンド ラインを「シンプル」にする通常の方法は、毎回指定する必要があるすべての詳細 (サーバー URL や再帰フラグなど) を隠すバッチ ファイルを作成することです。

ただし、TF.exe ではほとんど何でも実行できるため、一時的なマッピングを作成し、Get を実行して、マッピングを再度削除する tf 呼び出しの非常に単純なシーケンスです。

于 2012-08-01T14:09:12.740 に答える