¿Dónde puedo encontrar recursos "SVN para usuarios de Git"? [cerrado]

18

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?

agente154
fuente
3
En resumen: a) no hay índice, b) svn up = git pull, c) svn commit = git commit && git push d) las ramas son emuladas por directorios ... ;-)
johannes
1
No estoy seguro de cómo puedo hacer esto más sobre el tema ...
agent154
55
De ninguna manera. Al lado de cualquier cosa es offtopic en P.SE.
JensG
@ agent154 no nos pida que seamos un motor de búsqueda para usted. Identifique el problema que está teniendo: el problema no es "dónde puedo encontrar cosas en svn" sino "Estoy tratando de hacer algo y no puedo entender cómo hacerlo". Si ese algo es específico del comando 'svn' y está trabajando para escribirlo, pregunte en Desbordamiento de pila. Si ese algo se trata del flujo de trabajo y la organización de svn (cuándo ramificarse, cuándo fusionarse, cómo trabajar con otros desarrolladores), pregúntelo aquí.
2
Creo que el problema identificado es la falta de recursos, incluso algo remotamente disponibles para entender a SVN como usuario de Git. Francamente, encontraría una discusión sobre este súper útil después de haber revisado varias páginas de resultados de Google / DuckDuckGo sin encontrar nada más que lo que mencionó el OP.
Metagrapher

Respuestas:

8

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:

  • commit = empujar al repositorio central. No hay rebase ni commit local, tampoco tiradores.
  • la ramificación es por directorio. Lo mejor es pensar en todo el repositorio como una estructura de directorio, ramificar es como hacer un enlace simbólico con una semántica de copiar en escritura. Mientras que en git ramifica todo el repositorio y cambia entre ellos para que la nueva sucursal 'superponga' su copia de trabajo, con SVN puede intercambiar partes de su repositorio. En general, las personas se ramifican en una carpeta de nivel superior (generalmente llamadas ramas), por lo que cambiar se parece mucho más al estilo de trabajo 'superpuesto' de git.

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.

gbjbaanb
fuente
Depende La fusión con SVN se vuelve mala, cuando alguien ha movido los archivos (que es esencialmente una forma educada de eliminar + agregar administrada por el propio SVN) y alguien más los ha cambiado. Aparte de eso, buena respuesta.
JensG
1
Mencioné el problema del conflicto del árbol ... Tal estado es un problema para otros scms, aunque entiendo que git usa una heurística para detectar si el archivo movido es el mismo, aún puede equivocarse si los cambios son significativos ( por ejemplo, el archivo se divide en 2).
gbjbaanb
Git no necesita heurística para detectar cambios en el árbol: necesita que el usuario mueva el archivo git mv. SVN lo ha hecho svn 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 ...
Idan Arye
3
@IdanArye git mvse 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?")
Izkata
3

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 rebasereorganización de sus cambios locales en el tronco de subversión y luego git svn dcommitque 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).

wirrbel
fuente