2012-04-20 160 views
18

我們能否在TFSTeam Foundation Server的開關

分支之間切換

我要的是我下載了一個工作拷貝,現在我想切換到不同的分支,而無需下載的一切,因爲對於大型項目將需要大量的的時間,因爲開發人員花費很多時間下載

是否有可能,如果沒有任何解決方法?

+0

你最終做了什麼? – granadaCoder 2013-11-06 20:13:04

回答

4

在TFS分支「物理」出現在源代碼管理中,它們就像「特殊文件夾」。所以你可以完全選擇你在本地獲得什麼分支,通過爲你的獲取定位正確的文件夾。

如果您有例如:

  • 項目[文件夾]
    • 項目A [文件夾]
      • 開發[科]
      • V1 [科]
    • 項目B [folder]
      • 開發[科]
      • V1 [科]

,你想在與「開發」的唯一內容「項目」級別,可以在創建映射您的工作空間定義將對ProjectA和B的V1分支進行修剪。

+0

我可以解除綁定當前的proj並綁定到另一個分支吧? – user804401 2012-04-20 12:10:30

+0

您的項目將被複制,每個分支會有一個版本。要加載項目,您將首先找到要使用的分支,然後加載其中的項目。 – Nock 2012-04-20 12:30:06

-1

只要您使用相同的工作空間並且工作目錄包含分支,就可以在多個分支之間切換。

+6

是的,但你怎麼能這樣做? – 2014-07-10 13:24:12

+0

@Maurizio在丹麥,我相信Jehan33可能會談論使用TFS通過Eclipse切換分支,這是可能的。 OP沒有指出他們使用的是什麼IDE – ethesx 2016-03-23 17:55:00

13

你可以通過改變你的工作空間的映射,並使用/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

是否可以從IDE執行此操作?例如將相同代碼庫的所有分支設置爲同一個映射的本地工作區文件夾,並切換使用哪個分支? – 2013-11-29 15:28:43

+1

無恥插件:我創建了[TfDash](https://bitbucket.org/Sumo/tfdash)項目,使得* *更容易。 'tf-switch [TFS分支路徑]'是你所需要的。 – Sumo 2014-09-25 22:33:14

+0

我的理解是否正確,前兩行映射並得到初始分支,所以如果我已經在本地擁有它,我不需要運行它們? 而第3行取消映射我需要切換到的分支,所以如果我從未在本地映射它,我也不需要它嗎? 因此,在第4行中,我將Branch2映射到Branch1已經映射的文件夾(不需要取消映射?),然後切換第5行的本地版本。 – ElDog 2014-10-29 10:54:11

1

團隊資源管理器無處不有「切換到分支「命令,這可能是你正在尋找的。

Visual Studio中,在另一方面,不具有相同的命令

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並從您的機器的任何目錄執行。