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

例如,如果您有:

  • 项目 [文件夹]
    • 项目A [文件夹]
      • 开发 [分支]
      • V1 [分支]
    • 项目B [文件夹]
      • 开发 [分支]
      • V1 [分支]

并且您想获得仅包含“Dev”内容的“Projects”级别,您可以在 Workspace 定义中创建映射以覆盖 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 有一个“切换到分支”命令,这可能是您正在寻找的。

另一方面,Visual Studio 没有相同的命令......

于 2012-04-20T23:54:38.230 回答
-1

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

于 2012-04-20T09:36:06.893 回答