Entonces tomé un trabajo donde la empresa usa SVN (pero se mudará a Git en algún momento en el futuro). El problema es que no conozco SVN. He probado numerosas consultas de Google y todo lo que puedo encontrar son tutoriales SVN-> Git, blogs "¿Por qué Git es mejor que SVN?" Y una "hoja de trucos" particular que proporciona (algunos) comandos comparables ...
Además de leer el libro de O'Reilly sobre SVN, ¿cuáles son las instrucciones breves (pero no demasiado breves) para SVN para los usuarios de Git?
Respuestas:
La referencia canónica es el Subversion RedBook . Independientemente de sus habilidades pasadas, lea esto desde nuevo y obtendrá toda la información de uso que necesita. No es difícil ni completamente extraño, la mayoría de la gente dice que SVN es mucho más fácil de entender que git, por lo que debería estar bien con solo leer un poco los comandos principales. El capítulo de uso básico debería ponerlo en funcionamiento sin problemas.
Hay 2 diferencias principales:
La ramificación es trivial, la fusión no es tan mala como quieren distinguir los apologistas de DVCS, especialmente si se adhiere al trío "estándar" de carpetas de nivel superior (llamadas troncales, ramas y etiquetas).
Hay algunos bits en los que SVN supera a git, me vienen a la mente directorios dispersos, en los que solo paga una parte de su repositorio. Cuando necesita más piezas, actualiza solo lo que necesita. Si tiene un gran repositorio (por ejemplo, un producto central y un montón de complementos), esto es genial.
Hay algunos bits que no son tan buenos como git, me viene a la mente el temido conflicto del árbol, donde tienes un conflicto a nivel de directorio (es decir, alguien ha eliminado un archivo que has editado)
Si estás en Windows, usa TortoiseSVN. Se mece mayormente.
fuente
git mv
. SVN lo ha hechosvn move
, pero dado que ramificarse y fusionarse en SVN es una especie de truco, no creo que pueda resolver automáticamente los conflictos de los árboles como lo hace git ...git mv
se implementa como agregar + eliminar. git usa la heurística para determinar si se realizó un movimiento o una copia durante una confirmación (creo que el valor predeterminado es "¿el 80% + del archivo es el mismo?")Use git svn si es posible. He estado en su situación y después de medio año de frustración me cambié a git svn y he estado feliz desde entonces.
Git svn le permite usar el repositorio localmente y luego se encarga de comprometerse con el servidor SVN mediante una
git svn rebase
reorganización de sus cambios locales en el tronco de subversión y luegogit svn dcommit
que confirma las confirmaciones reestructuradas.Tal vez no sea óptimo para el uso avanzado de Subversion, pero dado que está utilizando git localmente, todo está bien.
Cuando use git clone, no debe clonar la carpeta raíz de subversión sino su directorio de destino directamente (clonar
trunk
). Esto hará que git se ejecute mucho más rápido, de lo contrario, su copia de trabajo puede volverse enorme.Descargo de responsabilidad : no sé cómo es la situación cuando desea crear ramas de Subversion, etc. Los equipos con los que trabajé no usaban ramas (solo yo, las ramas locales de git).
fuente