Una alternativa para casos especiales
A veces un repositorio de código está alojado en Team Foundation Server - y no puede cambiarse esa decisión - pero uno necesita interactuar desconectado del mismo durante un lapso más o menos prolongado (en términos de la cantidad de modificaciones aplicadas). O simplemente, las preferencias personales por Git - fácilmente entendibles - hacen que para una serie de cambios que requieran un manejo flexible del control de código, se busque la forma de aprovechar las ventajas de Git.
git-tfs
Para resolver las tareas de identificar los cambios realizados sobre el repositorio Git (agregados, eliminaciones y modificaciones) y expresarlos en uno o más "changesets" de TFS, Matt Burke desarrolló un conector que funciona como puente entre los dos sistemas de control de cambios: git-tfs
Despues de instalar el conector copiando los ejecutables a alguna carpeta y agregando la misma al PATH, se dispone de una serie de comandos 'git tfs' que funcionan como extensiones al git; eso permite:
- Crear un repositorio Git a partir de un proyecto o carpeta de TFS, ya sea con su "última foto" o con su historial completo de cambios.
- Sobre eso puede operarse con todas las facilidades de Git (branches, etc) haciendo "commits" (de Git) sobre el repositorio
- Para generar un "changeset" de TFS se utiliza el comando 'git tfs checkintool'
- Tambien pueden traerse cambios subidos al TFS despues de la bifurcacion inicial, mediante las secuencia de comandos 'git tfs fetch' y 'git tfs merge' (o 'git tfs rebase')
La información más detallada puede leerse en el proyecto git-tfs en GitHub, y tambien en esta entrada de blog (en inglés) de Jeremy Skinner.