2009-12-31 12 views
15

Me gustaría ver cómo funcionará TFS para mi comando. Así que me gustaría mover nuestro repositorio GIT actual a la base de datos TFS. Hemos usado GIT para su soporte de bifurcaciones prevaleciente, así que me gustaría usar TFS 2010 para abordar ese problema.Migración de Git a control de fuente TFS

Ahora la pregunta es. ¿Cómo exporto nuestro repositorio de GIT a TFS? Obviamente es algún tipo de script. ¿Alguien ha hecho eso? ¿Alguna sugerencia?

Gracias.

+17

¿Por qué demonios pasaría alguien de git a tfs? – hasen

+14

Dos palabras: mejores herramientas. Sé que git tiene mucha exageración. Y el propio Sr. Torwalds escribió un lote de eso, pero interactuando con esta cosa CHUPA. Lo he usado durante 19 meses, lo presenté al equipo y no lo considero una bala de plata. Todas las herramientas de UI son cojas. La interfaz de la línea de comandos es detallada. Tengo el conjunto de scripts para respaldar mi flujo de trabajo, pero no es una solución de la que me enorgullezco. Más TFS es más que control de fuente. Es una solución compleja: rastreador de errores, sistema de compilación, integración VS, sitio SP para que ningún desarrollador pueda ver el proceso y enviar errores, etc. –

+0

Extensiones de Git https://code.google.com/p/gitextensions/ está haciendo rápidamente El comentario de Artem es obsoleto. Una interfaz de usuario mucho más agradable que las UI incluidas. –

Respuesta

9

Microsoft ha lanzado ahora su propio GIT < -> Extensiones de TFS para GIT: GIT-TF

Esto permite tirar de un nuevo repositorio GIT de TFS o configurar para permitir a GIT empuja TFS, que es lo que quiere hacer :

(a partir de la documentación)

para un equipo que trabaja con un repositorio git existente, un desarrollador compartir cambios a TFS usando Git-TF podría utilizar el siguiente flujo de trabajo.

# Configure the existing repo's relationship with TFS 
git tf configure http://myserver:8080/tfs $/TeamProjectA/Main 

# Fetch the latest changes from TFS and merge those 
# changes with the local changes. 
# Note, merging is important when working in a team configuration. 
# See "Rebase vs. Merge" below. 
git tf pull 

git commit -a -m "merge commit" 

# Check in the merge commit as a single TFS changeset 
git tf checkin 

# Push the merge commit to the origin 
git push 

Además, la solución preexistente de código abierto GIT-TFS se puede utilizar (de sólo Windows, la solución de Microsoft utiliza Java y es multiplataforma), descrito en una respuesta a Git to TFS 2008 one way migration (with history)

+0

Esta solución solo funcionará sin sucursales. Si tiene sucursales, una mejor solución será usar TFS2013 (Git) – Philippe

0

Puede exportar git a svn, y usar CS Converter para pasar de svn a TFVS. Nota: CS Converter se ha suspendido, pero parece que todavía puede descargarlo.

2

Configure un SVNBridge en TFS y luego use el clon git-svn.

+2

Es git svn update pero tiene razón. He hecho exactamente esto. –

+0

Ya no veo un comando 'git svn update' en [Git docs] (http://git-scm.com/docs/git-svn), aunque encontré' git svn dcommit', which " Commit [s] cada diff de la rama actual directamente al repositorio SVN, y luego rebase [s] o reinicie [s] (dependiendo de si hay una diferencia entre SVN y head) o no. Esto creará una revisión en SVN para cada compromiso en git ". Entonces, si esto supone ser lo mismo? –

5

he creado un archivo por lotes rápido, pero es necesario tener herramientas de la fundación del equipo de alimentación (tfpt.exe) en su camino y para (un comando de bucle de línea de comandos)

Visual Studio línea de comandos a la carpeta deseada git y ejecuta lo siguiente.

git log --pretty="'%%H',%%ci - %%s" --reverse > commits 

tf workspace temp /new /s:http://{TfsInstance} /i 
tf workfold /map %2 . /workspace:temp 

FOR /F "tokens=1* delims=','" %%a IN (commits) DO git checkout %%a && tfpt online /recursive /exclude:.git*,commits,*.obj,*.exe,_ReSharper*,obj,debug,*.user,*.suo,Bin /adds /deletes /i && tf checkin /author:"{AuthorName}" /comment:"%%b" /i 

tf workspace temp /delete /i 
  1. En primer lugar se crea un archivo de confirmaciones con toda la información comprometerse en orden inverso (la más antigua primero).
  2. Entonces se crea un espacio de trabajo de Team Foundation ... (asegúrese de reemplazar {TtsInstance} con su TFS URI.
  3. Entonces se crea una carpeta temporal en el espacio de trabajo.
  4. A continuación, se realiza un bucle a través de cada línea en el archivo compromete , hace un checkout desde git, utiliza TFPT para verificar los archivos actuales (nuevamente asegúrese de reemplazar {AuthorName} con su nombre de autor) el comentario incluirá la marca de tiempo de git (desafortunadamente no puede cambiar el tiempo de registro sin cambiar el tiempo del servidor TFS y lo recomendaría en contra de eso) y el nombre del autor original.

T el suyo funcionó bien, pero las ramas no serán conservadas. No me tomé el tiempo para descubrir las ramificaciones ya que no era un factor lo suficientemente grande para el trabajo en ese momento.

¡Espero que esto le pueda ahorrar a alguien algo de tiempo!

+0

Agregué 'Thumbs.db' a la lista de exclusión ** tfpt **. Lo había borrado del historial de git porque se agregó accidentalmente antes de haber incluido un archivo _.gitignore_, y estaba recibiendo errores cuando ejecuté el archivo '.bat'. –

-1

Esto es una vieja pregunta, y tal vez ya nadie está buscando esto, pero ahora es mucho más fácil.

  1. Crear un proyecto de equipo de TFS con Git como el control de código fuente

  2. Grab la url Git para el proyecto. Se verá algo así como ... https://YOURPROJECTS.visualstudio.com/DefaultCollection/_git/PROJECTNAME

  3. Introduzca el comando like y ejecútelo.

    git add remoto origen https://YOURPROJECTS.visualstudio.com/DefaultCollection/_git/PROJECTNAME

    git push-u origen --all

En caso de ser todo lo que necesita.

+0

No es realmente útil, ya que al usar GIT alojado en TFS, no obtiene el conjunto completo de controles que tendría a su disposición como lo haría con un proyecto completo administrado por TFS. –

Cuestiones relacionadas