svn - usados - Aprendiendo Control de versiones, y aprendiendo bien
tortoise svn merge branch to trunk (13)
Creo que la documentación de Subversion es un buen lugar para comenzar. Descubrí que Wikipedia realmente no ayuda, ya que solo cubre un punto de vista "fundamental".
En el libro de Subversion que mencionó Alex, recomiendo especialmente el Capítulo 1, aunque podría estar en un nivel demasiado bajo si ya tienes experiencia con Svn. El Capítulo 4 cubre la bifurcación y la fusión en detalle, pero es bastante técnico.
Lo que me ayudó mucho es la Guía de uso diario en la documentación de TortoiseSVN ; cubre las operaciones más importantes en un estilo tutorial.
Supongo que las cosas más importantes que debes comprender son la ramificación, la fusión y el etiquetado . Comprenderlos requiere tiempo y práctica, por lo que recomiendo encarecidamente un proyecto de mascota pequeña en un repositorio local, para que pueda experimentar. Creo que es importante darse cuenta de que todo el sistema está basado en diferencias: una fusión no es más que aplicar automáticamente los cambios que se han realizado en una rama al código en otra rama, en lugar de corregir el código usted mismo. Cosas como conflictos (que me tomaron bastante tiempo entender) son solo consecuencias de eso.
Pero por supuesto, todavía estoy aprendiendo también :)
¿Dónde debería empezar a aprender sobre los sistemas de control de versiones? He usado SVN, Team Foundation y Sourcesafe en el pasado, pero realmente no siento que lo entiendo completamente, y mi equipo tampoco parece entenderlo.
¿Qué puntos son los más importantes para dominar? Me doy cuenta de que esto difiere de VCS a VCS, pero por el bien de esta pregunta podemos suponer que Subversion es el VCS que más me interesa conocer.
Además, si puede, recomiende cualquier libro sobre el tema que le parezca útil.
Creo que los puntos más importantes que uno tiene que aprender con respecto a los sistemas de control de fuente son los siguientes:
- el valor de check-ins / commits pequeños y frecuentes
- etiquetado, ramificación y fusión
- retrocesos
- la resolución de conflictos
- pago exclusivo vs. pago no exclusivo
- integración continua
- Desarrollo basado en pruebas y pruebas unitarias automatizadas en relación con los sistemas de control de fuente
- bifurcación
Si tiene estos conceptos principales cubiertos, esa es casi la mayoría de las cosas que necesitará saber para el control de fuente :)
El artículo de wikipedia sobre el Control de revisiones es un excelente lugar para comenzar
Al tratar de enseñar a mis colegas, encontré que hacer que entendiera el vocabulario al final fue una excelente manera de comenzar a introducirlo en las técnicas de control de código fuente.
¿No sabes lo que es una rama? Ve a buscar y cómo funcionan :)
Hay un libro de subversión en línea gratuito en Version Control con Subversion que proporciona una referencia inestimable.
En mi humilde opinión, el mejor recurso de red para la gestión de la configuración sería The ACME Project de Brad Appleton
Debería leer acerca de todos los patrones SCM y patrones Anti. Todos los términos técnicos de SCM están bien definidos en este sitio y hay muchos artículos sobre técnicas de ramificación, SCM ágil y otras cosas importantes.
Esto, probablemente, le proporcionará suficientes antecedentes teóricos para manejar cualquier herramienta de versión específica.
En cuanto a un libro de Subversion, es probable que sea el libro oficial de Subversion que se mencionó anteriormente. Está disponible en línea de forma gratuita o puede comprar una copia impresa.
En mi humilde opinión, este es EL libro : el libro de Berczuk sobre patrones SCM
Encontré este útil HOWTO de control de fuente de Eric sink
Hay un par de libros electrónicos gratuitos sobre el tema. Tratar:
Control de versiones con Subversion: control de versiones con Subversion
Control de versiones de Subversion (PDF): Control de versiones de Subversion
He leído y recomendaría el primero. No he leído "Control de versiones de Subversion", pero parece bastante profundo.
Lea esto: cómo evoluciona el software
No estoy seguro de cuánta experiencia tiene con los sistemas de control de versiones, pero para alguien que no tiene conocimientos previos sobre el concepto, le recomiendo leer los primeros capítulos del libro de Subversion . Algunas de las cosas descritas allí son específicas de Subversion, pero muchos de los conceptos son "universales" para los sistemas de control de versiones y cómo trabajar con ellos.
Creo que es muy importante que la gente haga un esfuerzo para tratar de comprender los conceptos principales y las razones detrás de los sistemas de control de versiones antes de comenzar a usarlos. Demasiado a menudo veo que los desarrolladores solo usan un pequeño subconjunto de las características de su sistema porque no entienden los conceptos subyacentes y, por lo tanto, no ven el sentido de usar lo que consideran características "avanzadas" o "innecesarias", o son simplemente temeroso de hacerlo por miedo a romper algo o causar problemas para el proyecto.
Habiendo experimentado este fenómeno con muchos desarrolladores en el pasado, recientemente escribí un resumen de lo que considero las mejores prácticas para el control de versiones en mi blog.
Para responder a su pregunta sobre: ¿Cuáles son los puntos más importantes para dominar? Le sugiero que, después de completar todo el proceso de verificación de entrada y salida, volviendo a las versiones anteriores y realizando diffs, eche un vistazo a las ramificaciones. La ramificación puede ayudarlo a lidiar con el dolor de estar en medio de un gran cambio y repentinamente necesita realizar una solución de error y desplegarlo en la producción sin la mezcla en la mitad de las cosas en las que está trabajando.
También, como usted, nunca me sentí realmente cómodo con SVN o SourceSafe.
Echa un vistazo a Mercurial . Cheatsheets Quickstart y Cheatsheets
también una gran trampa de DongWoo Lee (su sitio parece estar abajo, así que lo escaneé y lo subí al mío)
Con Mercurial todo parecía mucho más sencillo y fácil, no estoy seguro de por qué, porque no es tan diferente en los comandos a los demás.
El control de versiones por ejemplo de Eric Sink es bueno y fácil de seguir