Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Tfs Team Foundation服务器在分支之间切换_Tfs_Branch - Fatal编程技术网

Tfs Team Foundation服务器在分支之间切换

Tfs Team Foundation服务器在分支之间切换,tfs,branch,Tfs,Branch,我们可以在TFS中的分支之间切换吗 我想要的是我下载了一个工作副本,现在我想切换到不同的分支,而不下载所有内容,因为对于大型项目来说,这将需要很多时间,因为开发人员需要花很多时间下载 如果TFS中没有任何解决方法,那么源代码管理中的分支是“物理”存在的,它们就像“特殊文件夹”。因此,您可以完全选择您在本地获得的分支,方法是将目标指向正确的文件夹 例如,如果您有: 项目[文件夹] ProjectA[文件夹] 发展〔科〕 V1[分行] ProjectB[文件夹] 发展〔科〕 V1[分行]

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

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

如果TFS中没有任何解决方法,那么源代码管理中的分支是“物理”存在的,它们就像“特殊文件夹”。因此,您可以完全选择您在本地获得的分支,方法是将目标指向正确的文件夹

例如,如果您有:

  • 项目[文件夹]
    • ProjectA[文件夹]
      • 发展〔科〕
      • V1[分行]
    • ProjectB[文件夹]
      • 发展〔科〕
      • V1[分行]

如果您只想在“项目”级别使用“开发”的内容,您可以在工作区定义中创建映射以关闭ProjectA和B的V1分支。

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

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

TeamExplorer Everywhere有一个“切换到分支”命令,这可能就是您正在寻找的


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

仅用于补充知识库-我的同事为此创建了有用的批处理。您需要在脚本内部(顶部)进行一些编辑,以指向正确的源代码位置和适当的分支。核心与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

保存它,例如切换_branch.cmd并从计算机的任何目录执行。

我可以解除当前项目的绑定并绑定到另一个分支右??您的项目将被复制,每个分支将有一个版本。要加载项目,您将首先找到要使用的分支,然后加载内部的项目。您最后做了什么?是否也可以从IDE中执行此操作?e、 g.将同一代码库的所有分支设置为同一映射本地工作区文件夹,并切换使用哪一个?无耻插件:我创建该项目是为了让这样的事情变得更容易<代码>tf开关[TFS分支路径]是您所需要的全部。我是否正确理解前两行映射并获取初始分支,因此,如果我已经在本地拥有它,则不需要运行它们?第3行取消映射我需要切换到的分支,所以如果我从未在本地映射它,我也不需要它?因此,在第4行中,我将Branch2映射到Branch1已映射的文件夹(无需取消映射?),然后在第5行中实际切换本地版本。对不起,这是一个输入错误,我已更正它;取消映射原始分支,然后映射新分支。TFS将记住您在本地拥有的文件,即使在为此目的取消映射后也是如此。嗯,我只做了第一步和最后一步,而且似乎工作正常:
tf workfold/map“$/NewBranch”C:\Work
然后
tf get C:\Work/remap/version:T/recursive
@Maurizio在丹麦我相信Jehan33可能正在谈论通过Eclipse使用TFS切换分支,这是可能的。OP没有指出他们正在使用什么IDE