TFSでブランチを切り替えることはできますか
私が欲しいのは、作業コピーをダウンロードしましたが、今はすべてをダウンロードせずに別のブランチに切り替えたいと思っています。大規模なプロジェクトでは、開発者がダウンロードに多くの時間を費やすため、時間がかかるためです。
回避策がない場合でも可能ですか?
ワークスペースのマッピングを変更し、/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
TFSブランチは、ソース管理に「物理的に」存在し、「特別なフォルダー」のようなものです。したがって、取得に適したフォルダをターゲットにすることで、ローカルで取得するブランチを完全に選択できます。
たとえば、次の場合:
「Dev」のコンテンツのみを使用して「Projects」レベルに到達したい場合は、Workspace定義にマッピングを作成して、ProjectAおよびBのV1ブランチをクロークできます。
知識ベースを補足するためだけに-私の同僚 Isak Savo そのような目的のために有用なバッチを作成しました。正しいソースコードの場所と適切なブランチを指すように、スクリプト内(上部)で編集を行う必要があります。コアは基本的にEdwardThomsonの回答と同じですが、インタラクティブなロジックがいくつか追加されています。いくつかの小さな変更を加え(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に移動し、マシンの任意のディレクトリから実行します。
Team Explorer Everywhereには、「ブランチに切り替える」コマンドがあります。これはおそらくあなたが探しているものです。
一方、VisualStudioには同じコマンドがありません...