Pregunta

Intenté usar el control de código fuente para un par de proyectos, pero todavía no lo entiendo.Para estos proyectos, utilizamos TortoiseSVN y solo tuvimos una línea de revisiones.(Sin troncal, rama ni nada de eso). Si existe una forma recomendada de configurar sistemas de control de fuente, ¿cuáles son?¿Cuáles son las razones y los beneficios de configurarlo de esa manera?¿Cuáles son las diferencias subyacentes entre el funcionamiento de un sistema de control de fuente centralizado y distribuido?

¿Fue útil?

Solución

Recomiendo consultar lo siguiente de Eric Sink:

http://www.ericsink.com/scm/source_control.html

Tener algún tipo de sistema de control de revisiones es probablemente la herramienta más importante que tiene un programador para revisar los cambios de código y comprender quién hizo qué y a quién.Incluso para proyectos de una sola persona, es invaluable poder comparar el código actual con la versión funcional anterior conocida para comprender qué pudo haber salido mal debido a un cambio.

Otros consejos

Piense en el control de fuente como un botón gigante de "Deshacer" para su código fuente.Cada vez que te registras, agregas un punto al que puedes retroceder.Incluso si no utiliza bifurcación/fusión, esta característica por sí sola puede ser muy valiosa.

Además, al tener una versión "autorizada" del control de fuente, resulta mucho más fácil realizar una copia de seguridad.

Centralizado vs.repartido...En realidad, la diferencia es que en el sistema distribuido no existe necesariamente una versión "autorizada" del control de fuente, aunque en la práctica la gente normalmente todavía tiene el árbol maestro.

La gran ventaja del control de código fuente distribuido es doble:

  1. Cuando utiliza el control de código fuente distribuido, tiene todo el árbol de código fuente en su máquina local.Puede confirmar, crear ramas y trabajar prácticamente como si estuviera solo, y luego, cuando esté listo para impulsar sus cambios, puede promoverlos desde su máquina a la copia maestra.Si trabaja mucho "sin conexión", esto puede ser un gran beneficio.

  2. No es necesario pedir permiso a nadie para convertirse en distribuidor del control de fuente.Si la persona A está ejecutando el proyecto, pero las personas B y C quieren realizar cambios y compartirlos entre sí, resulta mucho más fácil con el control de fuente distribuida.

Aquí hay dos artículos que son muy útiles para comprender los conceptos básicos.Más allá de ser informativo, la compañía de Sink vende un excelente producto de control de fuente llamado Vault que es gratuito para usuarios individuales (no estoy afiliado de ninguna manera con esa compañía).

http://www.ericsink.com/scm/source_control.html

http://betterexplained.com/articles/a-visual-guide-to-version-control/

Información de la bóveda en www.vault.com.

Incluso si no realiza una bifurcación, puede resultarle útil utilizar etiquetas para marcar los lanzamientos.

Imagine que ayer lanzó una nueva versión de su software y comenzó a realizar cambios importantes para la próxima versión.Un usuario te llama para informarte de un error grave en la versión de ayer.No puedes simplemente arreglarlo y copiar los cambios desde tu tronco de desarrollo porque los cambios que acabas de hacer hacen que todo sea inestable.

Si hubiera etiquetado la versión, podría consultar una copia de trabajo y usarla para corregir el error.

Luego, puede optar por crear una rama en la etiqueta y verificar la corrección del error en ella.De esa manera, puede corregir más errores en esa versión mientras continúa actualizando el tronco.También puede fusionar esas correcciones en el tronco para que estén presentes en la próxima versión.

El estándar común para configurar Subversion es tener tres carpetas bajo la raíz de su repositorio:tronco, ramas y etiquetas.La carpeta troncal contiene su línea de desarrollo "principal" actual.Para muchas tiendas y situaciones, esto es todo lo que usan...solo un único repositorio de código funcional.

La carpeta de etiquetas va un paso más allá y le permite "marcar" su código en determinados momentos.Por ejemplo, cuando lanza una nueva versión o, a veces, incluso cuando simplemente hacer una nueva compilación, "etiqueta" una copia en esta carpeta.Esto simplemente le permite saber exactamente cómo era su código en ese momento.

La carpeta de ramas contiene diferentes tipos de ramas que podrías necesitar en situaciones especiales.A veces, una rama es un lugar para trabajar en funciones experimentales que pueden tardar mucho tiempo en estabilizarse (por lo tanto, no deseas introducirlas en tu línea principal todavía).Otras veces, una rama puede representar la copia de "producción" de su código que se puede editar e implementar independientemente de su línea principal de código que contiene cambios previstos para una versión futura.

De todos modos, este es sólo un aspecto de cómo configurar su sistema, pero creo que es importante pensar un poco en esta estructura.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top