2012-04-20 10 views
18

Podemos cambiar entre las ramas de TFSinterruptor de Team Foundation Server entre las ramas

Lo que quiero es que he descargado una copia de trabajo y ahora quiero cambiar a diferentes rama sin tener que descargar todo, porque para grandes proyectos que tomará mucho de tiempo ya que los desarrolladores pasan mucho tiempo descargando

¿Es posible, si no hay alguna solución?

+0

¿Qué terminaste haciendo? – granadaCoder

Respuesta

4

En las sucursales de TFS están "físicamente" presentes en el control de código fuente, son como "carpetas especiales". Por lo tanto, puede elegir totalmente qué rama obtiene localmente al orientar la carpeta correcta para su obtención.

Si usted tiene por ejemplo:

  • proyectos [carpeta]
    • ProjectA [carpeta]
      • Dev [Poder]
      • V1 [Poder]
    • ProjectB [carpeta]
      • Dev [Poder]
      • V1 [Poder]

y desea obtener en el nivel "Proyectos", con sólo el contenido de "Dev", puede crear el mapeo de su definición de área de trabajo para bloquear las ramas V1 de ProjectA y B.

+0

Podría desvincular el proyecto actual y enlazar a otra rama ¿verdad? – user804401

+0

Su proyecto será duplicado, habrá una versión por rama.Para cargar el proyecto, primero encontrará la rama que desea usar y luego cargará el proyecto que está dentro. – Nock

-1

Puede alternar entre varias ramas, siempre que use el mismo espacio de trabajo y el directorio de trabajo contenga las ramas.

+6

sí, pero ¿cómo puedes hacer eso? –

+0

@Maurizio En Dinamarca, creo que Jehan33 podría estar hablando sobre cambiar de rama usando TFS a través de Eclipse, lo cual es posible. El OP no indicó qué IDE están usando – ethesx

13

Puede cambiar ramas desde el cliente de línea de comandos (sólo la descarga de las diferencias) cambiando las asignaciones de espacio de trabajo y el uso de la bandera /remap al comando 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

¿Es posible hacer esto desde el IDE también? p.ej. establecer todas las ramas de la misma base de código en la misma carpeta de espacio de trabajo local asignada, y cambiar ¿cuál se usa? –

+1

Plug Shameless: Creé el proyecto [TfDash] (https://bitbucket.org/Sumo/tfdash) para que hacer cosas como esta * mucho * más fácil. 'tf-switch [TFS Branch Path]' es todo lo que necesita. – Sumo

+0

¿Entiendo correctamente que las dos primeras líneas mapean y obtienen la rama inicial así que si ya la tengo localmente no necesito ejecutarlas? Y esa línea 3 elimina el mapeo de la rama a la que necesito cambiar, por lo que si nunca lo mapeé localmente tampoco lo necesito? Entonces en la línea 4 mapeo Branch2 a la carpeta donde Branch1 ya está mapeado (¿no es necesario desasignarlo?) Y luego cambio la versión local en la línea 5. – ElDog

1

Team Explorer En todas partes tiene un "interruptor de "rama", que es probablemente lo que estás buscando.

Visual Studio, por el contrario, no tiene el mismo comando ...

3

Sólo para complementar la base de conocimientos - mi colega Isak Savo lotes de utilidad creada para tal fin. Es necesario realizar algunas ediciones dentro del script (en la parte superior) para señalar la ubicación correcta del código fuente y las ramas correspondientes. El núcleo es básicamente el mismo que en la respuesta de Edward Thomson, pero con alguna lógica interactiva agregada. Hice algunos cambios menores (contexto de directorio de conmutación para tf comandos, cita de argumentos - necesarios si hay espacios en los directorios) y lo compartió a continuación:

@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 

Guardar que, por ejemplo, para cambiar_branch.cmd y ejecutar desde cualquier directorio desde su máquina.

Cuestiones relacionadas