Git para usuarios de SVN

He sido un usuario de git muy ávido desde hace bastante time. Sin embargo, a menudo observo que los usuarios experimentados de SVN parecen tener muchos problemas con el uso de git. Ahora estoy buscando resources para hacer git más disponible para las personas que han estado acostumbradas a usar SVN durante mucho time y han desarrollado un hábito fuera de las peculiaridades de SVN.

Sé que está el curso acelerado de git svn , pero esto realmente no proporciona la información que necesito. Si bien esto mapea fácilmente los commands SVN comunes a commands similares de Git, las personas tienden a utilizar flujos de trabajo más complejos, que a menudo no se pueden mapear fácilmente simplemente asignando commands de una herramienta a la otra.

Por ejemplo, mucha gente que conozco generalmente tiende a mantener versiones múltiples de un software versionado en diferentes directorys, para poder cambiar fácilmente entre las revisiones. Para mí esto parece una solución arriesgada que Git maneja fácilmente a través de un git stash git checkout , el flujo de trabajo de git checkout . También he notado que las personas que usan SVN tienden a pensar de forma diferente sobre las twigs. Mientras que en SVN todas las confirmaciones de una twig pertenecen por completo a esa twig (porque conciernen a ese directory) en Git, realmente no existe tal cosa como "una confirmación desde una twig", porque cada twig includeá todas las confirmaciones accesibles desde ese estado de twig actual .

¿Hay algún tutorial que mapee estos conceptos para hacer que Git sea más accesible para los usuarios de SVN que se ven obligados a usarlo?

también viniendo de SVN, manejé git mejor después de terminar los laboratorios en gitimmersion.com

En mi opinión, intentar describir Git usando términos svn, o viceversa, será una tarea inútil. Creo que los dos son fundamentalmente diferentes.

El mejor enfoque, en mi opinión, es decirles a los usuarios que intenten olvidar lo que saben sobre svn y aprendan sobre Git con la mente abierta.

Acabamos de tener una migration de SVN a Git en el trabajo. Una de las cosas más importantes fue no asustar a los usuarios. Las herramientas desconocidas hacen que las personas se sientan incómodas. Es por eso que es esencial hacer la transición lo más suave posible.

  • ayuda con la configuration Los usuarios SVN probablemente no saben cómo configurar las keys ssh
  • cuéntales las similitudes primero. Estos commands son bastante similares
    • git commit
    • git log
    • git branch
    • git merge
  • después de un time, puede presentar temas más avanzados
  • brinde a las personas el time para usar su flujo de trabajo anterior en el nuevo sistema y cuando estén listos para pasar al siguiente nivel presenten temas avanzados

No todas las personas avanzarán a la misma velocidad, algunos incluso podrían usar Git como reemploop de SVN. Eso no es un problema per se. Es más importante que aquellos, que están dispuestos a aprender más y aquellos que desean utilizar la herramienta de la forma en que fue diseñado, obtengan el apoyo adecuado. Ayudarán a otros a hacer algún progreso.

Intentamos establecer un patio de recreo, que era bastante inútil. Casi todas las personas, que aún no conocían a Git, no probaron nada. Solo quieren hacer su trabajo. y no tienes time para jugar …

Aún así, en general, fue un gran éxito y hay muchas personas que comienzan a usar funciones avanzadas. No hubiera soñado que las personas trabajarán con múltiples controles remotos solo dos meses después del lanzamiento, pero lo son. Se están ramificando y fusionándose como profesionales, y cuando tienen problemas preguntan.

Para alojar nuestros repositorys, decidimos configurar un server interno de Gitorious . Esto tiene algunas grandes ventajas. Primero viene con una interfaz de usuario muy bien diseñada y en segundo lugar es solo Rails. Si conoce MVC, puede personalizarlo fácilmente según sus necesidades.

Creo que la diferencia key para alguien que viene de una mentalidad SVN es que git respeta el "código de input" y "compartir código con el equipo" como acciones distintas, donde SVN los mezcla en el subcommand commit (y un usuario SVN experimentado no incluso me doy count de que son acciones distintas, no lo hice). Esto es lo que permite la libertad de sucursal y la opción de reorderar y aplastar los compromisos, por lo que entender eso es crucial.

La otra cosa que realmente me ayudó fue la descripción de la estructura del repository, principalmente que las cabezas son solo pointers para cometer objects.

Hay muchos tutoriales, pero encontré que esta página tiene un buen mapeo 1-1: http://git.or.cz/course/svn.html