我们可以在TFS中的分支之间切换
我想要的是我下载了一个工作副本,现在我想切换到不同的分支而不下载所有内容,因为对于大型项目,由于开发人员花费大量时间下载需要很多时间
是否有可能,如果不是任何解决方法?
答案 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分支中“物理”存在于源代码管理中,它们就像“特殊文件夹”。因此,您可以通过定位获取的正确文件夹来完全选择您在本地获得的分支。
如果你有:
并且您希望仅使用“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有一个“切换到分支”命令,这可能就是你要找的。 p> 另一方面,
Visual Studio没有相同的命令......
答案 4 :(得分:-1)
只要您使用相同的工作区并且工作目录包含分支,您就可以在多个分支之间切换。