¿Cuál es la diferencia entre git-tf y git-tfs?

76

Recientemente, me he estado hartando mucho de TFS. Sin embargo, escuché que hay una luz al final del túnel. Aparentemente, puedo usar git-tf o git-tfs y tratar mi código como si fuera administrado por git, pero poder empujar / tirar hacia / desde un servidor TFS central.

Mi pregunta principal es que no estoy seguro de cuál de estos debería usar. Existe git-tf que es oficialmente compatible con Microsoft, y hay git-tfs que existe desde hace mucho más tiempo. ¿Cuáles son las diferencias entre estos y cuál debería probar primero?

Earlz
fuente
2
Lo siento por ti. Cuanto antes pueda volcar TFS, mejor. Luego, vaya directamente a la línea de comandos con MSysGit. No se moleste con nada más. Me funcionó bien durante los últimos 5 años.
Adam Dymitruk
6
@AdamDymitruk Trabajo con un equipo bastante abierto y demás, por lo que podría suceder algún día, pero por ahora es demasiado caro dejarlo ya que tenemos muchas otras cosas en TFS además del código fuente
Earlz

Respuestas:

91

Descargo de responsabilidad: comencé el git-tfproyecto y, aunque el proyecto ahora está en manos muy capaces sin mí como colaborador frecuente, debe considerar absolutamente que mis opiniones sobre esto están fuertemente sesgadas. (Y, asumiendo que estás en Windows, quizás inesperado).

Hay dos diferencias fundamentales entre las dos herramientas:

  • git-tfsfue creado para usuarios de Windows y escrito sobre .NET TFS SDK. El SDK de TFS no se ejecutará en Mono, por lo que git-tfsno es adecuado para uso multiplataforma.

  • git-tffue creado para usuarios multiplataforma y escrito sobre Java TFS SDK. Por lo tanto, se ejecutará en cualquier lugar que sea compatible con Java TFS SDK (Windows, Mac, Linux, AIX, HP-UX, Solaris, etc.) que git-tfse creó explícitamente para permitir que los usuarios de Xcode accedan a TFS.

En Windows, por supuesto, puede usar cualquiera. No voy a decir necesariamente que uno sea mejor que el otro. Pero diré:

  1. Mi mayor queja git-tfses que no funcionará en Mac OS. Si hubiera una forma de hacer git-tfsmultiplataforma, es git-tfcasi seguro que no existiría.

  2. git-tfses más rápido en algunos casos que git-tf. El rendimiento no fue nuestra prioridad en las primeras revisiones, la corrección sí lo fue.

  3. Debido a que git-tftiene una amplia matriz de soporte de plataforma, esto significa que su funcionalidad está necesariamente restringida. Por ejemplo, no hay IU. git-tfs, por otro lado, tiene un checkintoolcomando que abrirá el diálogo de registro de TFS normal. Esto puede ser excepcionalmente útil para visualizar sus cambios. (Si mal no recuerdo, puede abrir una diferencia visual adecuada desde allí, etc.)

  4. git-tffunciona rellenando el repositorio de git directamente, descargando objetos TFS directamente en la base de datos de objetos de git. git-tfsfunciona creando una asignación de carpeta de trabajo TFS en una carpeta oculta, luego completando el repositorio de git a partir de eso. Aquí hay una penalización de disco, por lo que si tiene repositorios gigantescos, es posible que sienta esto.

  5. git-tfspuede intentar mapear sus ramas de TFS a sus ramas de git. Mucha gente verá esto como algo positivo git-tfs, aunque yo no: el modelo de ramificación de git (a nivel del repositorio) y el modelo de ramificación de TFS (representado como carpetas en el repositorio) son tan radicalmente diferentes que causan problemas en todo menos los flujos de trabajo más simplistas. Pero tu kilometraje puede variar.

  6. git-tfses desarrollado activamente por una comunidad. git-tfno ha tenido la adopción comunitaria.

No quiero que parezca que estoy diciendo que git-tfes malo. No es. Creo que en realidad es bastante bueno. Pero puede que no sea su mejor opción.


Actualización: git-tfha llegado al final de su vida útil . Microsoft ya no lo mantiene ni lo admite. Recomendamos git-tfssi desea una solución bidireccional TFS <-> git.

Edward Thomson
fuente
2
Entonces, básicamente, ¿usa git-tf en no Windows y git-tfs en Windows?
Earlz
9
Parece que iré con git-tfs. Nunca instalaré Java en mi caja de desarrollo bajo ninguna circunstancia.
ATL_DEV
Más de un año después, ¿cuánto de esto sigue siendo cierto?
João Portela
Para repositorios más grandes, git-tfs no se encuentra con las excepciones de falta de memoria que hace git-tf. Prácticamente el único argumento para git-tf es que es xplat.
Andrew Clear
Ahora que .Net se ejecuta en todas partes, ¿tal vez es hora de migrar el tuyo? :)
Mrchief
30

Descargo de responsabilidad: soy un desarrollador del proyecto git-tfs

Editar: git-tf ya no se mantiene ...

Editar: git-tfs no se mantiene activamente .

Hay un soporte para la ramificación TFS en git-tfs (buscar ramas existentes, crear ramas, fusionar ramas más fácilmente que con TFS, ... usando branch comando). Funciona la mayor parte del tiempo, pero no con el flujo de trabajo de ramas TFVC complejas ...

Ver:

git-tfs también es quizás la única herramienta que le permite migrar de TFS (VC) a TFS (Git), administrar elementos de trabajo si es necesario, o un repositorio simple de git.

Y algunas otras buenas características ...

(Y es más activo y más apoyado )

Philippe
fuente
6

Para cualquiera que encuentre este hilo:

Git-TFha sido descontinuado oficialmente después de no haber sido actualizado después de 2013 y ahora se sugiere explícitamente Git-TFScomo alternativa.

Fin de vida de Git-TF

Git-TF ha llegado al final de su vida útil. No tendrá más actualizaciones y ya no será compatible con Microsoft.

Microsoft Visual Studio Team Services ahora proporciona una herramienta de importación simple para importar un repositorio de Control de versiones de Team Foundation a un repositorio de Git. Le recomendamos que use esto para convertir los repositorios TFVC a Git.

Si necesita necesidades de conversión más avanzadas o si desea crear un puente entre un repositorio TFVC y trabajar con un repositorio local de Git, le recomendamos el proyecto git-tfs .

Git-TF no debe usarse para nuevos proyectos, pero permanecerá en el archivo de Codeplex para usuarios heredados.

(Sección agregada a la página del codeplex del proyecto en abril de 2017 por Edward Thomson, su iniciador y autor de la respuesta aceptada)

Git-TFSparece mantenerse activamente: https://github.com/git-tfs/git-tfs/commits/master

J Jones
fuente