2012-04-20 27 views
18

私たちはTFSTeam Foundation Serverのスイッチ

に支店を切り替えることができます

私は大規模なプロジェクトのために、それは多くかかりますので、私は、すべてをダウンロードせずに、私は別のブランチに切り替えたい、今作業コピーをダウンロードしている何をしたいです開発者がダウンロードに多くの時間を費やしてから時間がかかります

解決策はありませんか?

+0

あなたは何をやったのですか? – granadaCoder

答えて

4

TFSブランチでは、ソースコントロールに「物理的に」存在していますが、それらは「特別なフォルダ」のようなものです。だからあなたは、取得するための適切なフォルダをターゲットにすることによって、ローカルに取得するブランチを完全に選択することができます。

あなたは、インスタンスのために持っている場合:

  • プロジェクト[フォルダ]
    • PROJECTA [フォルダ]
      • のDev [支店]
      • V1 [支店]
    • ProjectBの[フォルダ]
      • のDev [支店]
      • V1 [支店]

、あなたは、あなたがでマッピングを作成することができます "のDev" の内容のみで、 "プロジェクト" のレベルで取得したいですProjectAとBのV1ブランチをクローキングするためのワークスペース定義。

+0

私は現在のprojをアンバインドし、別のブランチにバインドできますか? – user804401

+0

プロジェクトが複製されます。ブランチごとに1つのバージョンが存在します。プロジェクトをロードするには、最初に使用するブランチを見つけて、その中にあるプロジェクトをロードします。 – Nock

-1

同じワークスペースを使用し、作業ディレクトリにブランチが含まれている限り、複数のブランチを切り替えることができます。

+6

はい、どうしたらいいですか? –

+0

@Maurizio私はJehan33がEclipse経由でTFSを使ってブランチを切り替えることについて話している可能性があると思います。 OPは彼らが使用しているIDEを示していない – ethesx

13

あなたのワークスペースのマッピングを変更し、getコマンドに/remapフラグを使用して(唯一の違いをダウンロードする)コマンドラインクライアントから枝を切り替えることができます

tf workfold /map $/Branch1 C:\Work 
tf get C:\Work /version:T /recursive 
tf workfold /unmap $/Branch1 
tf workfold /map $/Branch2 C:\Work 
tf get C:\Work /remap /version:T /recursive 
+1

これもIDEから行うことは可能ですか?例えば同じコードベースのすべてのブランチを同じマップされたローカルワークスペースフォルダに設定し、どちらが使用されるのかを切り替えます。 –

+1

恥知らずのプラグ:このようなことをもっと簡単にするために[TfDash](https://bitbucket.org/Sumo/tfdash)プロジェクトを作成しました。 'tf-switch [TFS分岐パス]'はあなたが必要とするものです。 – Sumo

+0

最初の2行がマップされて最初の分岐が得られるので、ローカルに持っていれば実行する必要はありません。 そして、その3行目は私が切り替える必要があるブランチをアンマップします。もし私がそれをローカルにマップしなかったなら、私はそれを必要としませんか? 4行目でBranch2が既にマップされているフォルダにマップしています(マップを解除する必要はありません)。そして、5行目でローカルバージョンを実際に切り替えます。 – ElDog

1

チームエクスプローラーはすべての場所への「スイッチを持っていますおそらくあなたが探しているものです。

Visual Studioは、他の一方で、単に知識ベースを補うため...

3

を同じコマンドを持っていない - 私の同僚Isak Savoは、そのような目的のために有用なバッチを作成しました。正しいソースコードの場所と適切なブランチを指すように、スクリプトの内部(上部)にいくつかの編集を行う必要があります。コアは基本的にEdward Thomsonの答えと同じですが、いくつかのインタラクティブロジックが追加されています。私はいくつかのマイナーな変更を行わ(tfコマンド用スイッチングディレクトリコンテキストを、引数の引用 - ディレクトリ内にスペースがある場合に必要)と、以下のことを共有:

@echo off 
rem Command to switch the current source tree to a new branch. 
rem It's best to not have any pending changes. 
set DEVBRANCH=$/dir/src1 
set RELEASEBRANCH=$/dir/src2 
set SOURCEDIR=c:\sources directory\src 

if exist "%SOURCEDIR%" goto ASK 

echo Source code directory (%SOURCEDIR%) not found, please edit this script to point to the correct directory 
pause 
exit 

:ASK: 
set TARGET= 
echo Available branches are: 
echo Dev: %DEVBRANCH% 
echo Release: %RELEASEBRANCH% 
set /P ANSWER=Specify target branch? [Dev, Release] 
cls 
if /I "%ANSWER%"=="Release" set TARGET=%RELEASEBRANCH% 
if /I "%ANSWER%"=="Dev" set TARGET=%DEVBRANCH% 
if /I "%ANSWER%"=="quit" goto END 
if [%TARGET%] NEQ [] goto SWITCH 

echo "%ANSWER%" unknown, please answer Dev or Release. Specify quit to cancel 
GOTO ASK 

:SWITCH 
rem Navigate to the mapping source folder to avoid "Unable to determine the workspace..." error while invoking tf commands. 
echo Changing directory context 
pushd %SOURCEDIR% 

echo Switching to branch %TARGET% 
echo - Creating new mapping... 
tf workfold /map "%TARGET%" "%SOURCEDIR%" 
echo - Get latest version... 
tf get "%SOURCEDIR%" /remap /version:T /recursive 

popd 
goto END 

:END 

それ保存などswitch_branch.cmdを実行し、マシンの任意のディレクトリから実行します。

関連する問題