Подтвердить что ты не робот

Team Foundation Server переключается между ветвями

Можно ли переключаться между ветвями в TFS

что я хочу, я загрузил рабочую копию, и теперь я хочу переключиться на другую ветку, не загружая все, потому что для больших проектов потребуется много времени, так как разработчики тратят много времени на скачивание

Возможно ли, если не обходное решение?

4b9b3361

Ответ 1

Вы можете переключать ветки из клиента командной строки (только загружая различия), изменяя сопоставления рабочего пространства и используя флаг /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

Ответ 2

В ветвях TFS "физически" присутствует в Source Control, они похожи на "специальные папки". Таким образом, вы можете полностью выбрать, какую ветвь вы получаете локально, ориентируясь на нужную папку для получения.

Если у вас есть, например:

  • Проекты [папка]
    • ProjectA [папка]
      • Dev [Branch]
      • V1 [Branch]
    • ProjectB [папка]
      • Dev [Branch]
      • V1 [Branch]

и вы хотите попасть на уровень "Проекты" только с содержимым "Dev", вы можете создать сопоставление в своем определении рабочей области, чтобы скрыть ветки V1 ProjectA и B.

Ответ 3

Только для дополнения базы знаний - мой коллега Исак Саво создал полезную партию для этой цели. Вам нужно сделать некоторые изменения внутри script (вверху), чтобы указать правильное расположение исходного кода и соответствующие ветки. Ядро в основном такое же, как в ответе Эдварда Томсона, но с добавлением некоторой интерактивной логики. Я внес некоторые незначительные изменения (переключение контекста каталога для команд tf, кавычки для аргументов - необходимые, если в каталогах есть пробелы) и поделился им ниже:

@echo off
rem Command to switch the current source tree to a new branch.
rem It 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 и выполнить из любой директории с вашего компьютера.

Ответ 4

В Team Explorer Everywhere есть команда "Переключиться на ветку", которая, вероятно, вы ищете.

Visual Studio, с другой стороны, не имеет такой же команды...

Ответ 5

Вы можете переключаться между несколькими ветвями, если вы используете одно и то же рабочее пространство, а рабочий каталог содержит ветки.