git vs Subversion - pros y contras [cerrado]

11

He sido usuario de SVN durante muchos años y no puedo decir que estoy totalmente feliz por eso. Hace unos días, mi compañero me pidió que echara un vistazo a git diciendo que "tiene un mejor rendimiento, es más fácil fusionarse y ramificarse".

He estado leyendo algunos artículos de comparación de git vs. SVN y estaría feliz si la gente pudiera resumir los pros y los contras usando ambos sistemas de control de versiones.

Ahora estoy buscando personas que hayan cambiado de un sistema a otro y escuchen opiniones subjetivas.

Sé por mí mismo que realmente me gusta la forma en que funciona SVN, ya que tengo un repositorio central desde el cual las personas pueden pagar, sabiendo que puedo implementar desde él una copia de desarrollo en vivo y una copia de producción en vivo, pero a veces tenemos dolores de cabeza al clasificar conflictos u otros errores y cada vez que necesitamos diferenciar o examinar el historial de un archivo, tenemos que lidiar con la latencia de la red.

Por otro lado, tener una plataforma distribuida también parece un dolor de cabeza, ¿cómo puede controlar los accesos? ¿tiene un repositorio central desde el que empuje y actualice?

Gracias por arrojar algo más de luz sobre el tema.

Adam Benayoun
fuente

Respuestas:

15

¿Estás tratando de comparar las dos herramientas desde la percepción del administrador del sistema o como programador? Si está viendo esto desde la perspectiva de los programadores, tal vez debería preguntar esto en stackoverflow. O incluso mejor, quizás deberías mirar lo que ya se ha preguntado sobre " git svn ".

Lo que pasa con git y svn es que no se trata de una propuesta. Puede ejecutar un repositorio SVN, y sus desarrolladores pueden usar git-svn para interactuar con él si creen que git es una herramienta mejor en un caso particular.

Zoredache
fuente
2

Realmente no hay pros para subversión sobre git, realmente. Mientras se distribuye git, todos pueden trabajar desde un repositorio central utilizando ramas de seguimiento remoto. git es más rápido, más flexible y la fusión realmente funciona. Además, puede trabajar de manera realista sin conexión, mientras que con la subversión, no puede confirmar los cambios si no los tiene. Puede trabajar más fácilmente con confirmaciones individuales en git en lugar de tener una sola ID de confirmación que represente el estado del repositorio en svn.

El acceso se controla mediante cuentas de usuario / grupo en el servidor git (debe inicializar el repositorio de origen con 'git init --bare --shared' para que los permisos se establezcan adecuadamente) o mediante el uso de claves ssh. Se puede configurar un control de acceso muy granular mediante el uso de 'gitosis', que es un complemento de terceros.

Lleva un tiempo acostumbrarse a trabajar con git cuando está acostumbrado a svn (acabamos de pasar por esto en mi oficina), pero git es mucho más poderoso.

Si necesita un gran tutorial, consulte http://progit.org : es una copia completa en línea de un libro de código abierto.

Aaron Brown
fuente
svn puede manejar archivos más grandes que git
Joshua
No sabía que git tenía un tamaño máximo de archivo: ¿cuál es el límite?
Aaron Brown el
2
Es sobre todo porque dado que Git lleva la historia con cada copia de trabajo, un archivo grande y muy editado ocupará mucho espacio. Si el archivo grande es esencialmente inmutable, está bien
Phil Miller
Diría que el comentario de Joshua es engañoso. Los archivos que se retiraron son del mismo tamaño para SVN y git. Lo que sucederá es que debido a que git mantiene una copia de la información del repositorio localmente, el espacio total en disco requerido para todos los archivos más el historial del repositorio crecerá a medida que edite los archivos, pero para SVN este espacio es fijo (ya que el historial del repositorio no es almacenado localmente).
Walter
1

En mi equipo, estamos en medio de cambiar nuestros sistemas de versiones de control de svn a git. Git tiene una curva de aprendizaje un poco más dura, así que comencé a familiarizarme con ella y luego les enseñé a los desarrolladores cómo usarla. Necesitan conocer todas las ventajas de un sistema de versión de control distribuido: múltiples ramas, sin depósito central, velocidad, etc.

Al igual que usted, teníamos un sistema para implementar nuestros sitios, por lo que guardamos algo así como un servidor central de git donde los cambios se extraen y se envían desde y hacia las máquinas de los desarrolladores. Nuestros sitios extraen los cambios de este "servidor central", y el resto del proceso de implementación es similar al que usa svn.

Intentamos no mezclar los repositorios svn y git, comenzando a migrar nuestros sitios menores y crear nuevos repositorios git para los sitios principales como si fueran una nueva versión. El acceso se gestiona con claves ssh. También usamos gitweb como interfaz web (nuestro sistema svn está basado en http)

Está funcionando, no es un cambio de un día para otro y estamos tratando de que los desarrolladores no tomen este cambio como una molestia, sino como una nueva habilidad para aprender una herramienta que al final mejorará nuestro propio sistema.

hdanniel
fuente