24

TFS でブランチを切り替えることはできますか

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

回避策がない場合、可能ですか??

4

5 に答える 5

16

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

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
于 2012-04-20T19:22:19.533 に答える
6

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

たとえば、次の場合:

  • プロジェクト [フォルダ]
    • ProjectA [フォルダ]
      • 開発【支店】
      • V1 [分岐]
    • ProjectB [フォルダ]
      • 開発【支店】
      • V1 [分岐]

「Dev」のコンテンツのみで「Projects」レベルを取得したい場合は、ワークスペース定義でマッピングを作成して、ProjectA と B の V1 ブランチをクロークできます。

于 2012-04-20T05:20:11.327 に答える
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 に保存し、マシンの任意のディレクトリから実行します。

于 2013-05-08T11:57:31.257 に答える
1

Team Explorer Everywhere には "Switch to branch" コマンドがあり、これはおそらくあなたが探しているものです。

一方、Visual Studioには同じコマンドがありません...

于 2012-04-20T23:54:38.230 に答える
-1

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

于 2012-04-20T09:36:06.893 に答える