Team Foundation Server在分支之间切换

时间:2012-04-20 04:17:27

标签: tfs branch

我们可以在TFS中的分支之间切换

我想要的是我下载了一个工作副本,现在我想切换到不同的分支而不下载所有内容,因为对于大型项目,由于开发人员花费大量时间下载需要很多时间

是否有可能,如果不是任何解决方法?

5 个答案:

答案 0 :(得分:14)

您可以通过更改工作区映射并使用/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

答案 1 :(得分:5)

在TFS分支中“物理”存在于源代码管理中,它们就像“特殊文件夹”。因此,您可以通过定位获取的正确文件夹来完全选择您在本地获得的分支。

如果你有:

  • 项目[文件夹]
    • ProjectA [文件夹]
      • Dev [Branch]
      • V1 [分店]
    • ProjectB [文件夹]
      • Dev [Branch]
      • V1 [分店]

并且您希望仅使用“Dev”的内容进入“Projects”级别,您可以在Workspace定义中创建映射以隐藏ProjectA和B的V1分支。

答案 2 :(得分: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

保存它,例如to switch_branch.cmd并从你机器的任何目录执行。

答案 3 :(得分:1)

Team Explorer Everywhere有一个“切换到分支”命令,这可能就是你要找的。 另一方面,

Visual Studio没有相同的命令......

答案 4 :(得分:-1)

只要您使用相同的工作区并且工作目录包含分支,您就可以在多个分支之间切换。