Recientemente comencé a poner mi código bajo control de versiones (en el laboratorio en el que estoy trabajando, bajo SVN, y mis propios códigos en github (obviamente con git)). Antes de usar el control de versiones, solía hacer algo como esto. Tenía una carpeta con el nombre de la biblioteca, dentro de muchas carpetas con el número de versión. Cada vez que quería comenzar a trabajar en una versión más nueva, hacía una copia de la última versión, cambiaba el nombre a la nueva versión y comenzaba a implementarla.
Sin embargo, esto parece redundante cuando la carpeta se pone bajo control de versión. Además de la redundancia, si alguien quiere obtener la última versión, descargaría todas las versiones si solo fuera import
s / clone
s.
Ahora veo muchas formas de hacerlo con el control de versiones, pero como soy nuevo en esto, no sé cuál sería más fácil de mantener.
Método 1: uso de etiquetas
Si entendiera correctamente las etiquetas, tendría su rama principal, confirmará cualquier cambio que tenga y las etiquetará con una versión. Luego, cuando desea obtener una copia de trabajo de la misma, obtiene la que tiene una determinada etiqueta. (corrígeme si me equivoco)
Método 2: versiones de ramificación
En este método, la rama principal sería la rama de desarrollo. De vez en cuando se hace una versión estable (digamos v1.2.0
), se crea una rama para esa versión y nunca se compromete. De esa manera, si desea descargar una determinada versión, obtendrá el código de esa rama. Aunque dije que nunca se compromete a ello, es posible hacer correcciones de errores y comprometerse con la rama de una versión anterior para mantener la versión anterior en ejecución. Por ejemplo, si la versión actual es v2.0
, pero hay personas que quieren usar v1.2
, puede obtener otra rama v1.2
, a saber, v1.2.1
y confirmar las correcciones de errores, o simplemente mantener la versión igual v1.2
y simplemente confirmar las correcciones de errores.
Entonces las ramas se verían así:
v1.2.1 v1.2.2
/ /
v1.0.0 v1.2.0--------- v2.0.0
/ / /
-------------------------------------- dev
De esta forma, tiene sucursales para cada actualización de versión menor. (Tenga en cuenta que en el gráfico anterior, v1.2.1 y v1.2.2 o creado después de que se lanzó v2.0.0, por lo que no formaron parte del desarrollo entre v1.2.0 y v2.0.0. Piense en ello como soporte para versiones anteriores)
Método 3: desarrollo de ramificaciones
Este método es lo opuesto al anterior. La rama principal sería la última versión estable. Siempre que esté trabajando en una nueva versión, cree una rama (para el desarrollo), trabaje en su código y cuando sea estable, combínelo con la rama principal.
En este caso, las ramas se verían así:
________ ____ ________________ _____ dev
/ \/ \/ \/
---------------------------------- latest_version
Probablemente este debe hacerse junto con las etiquetas ¿verdad?
¡La pregunta!
De todos modos, mi pregunta es que, según su experiencia, ¿cuál de estos métodos resulta más práctico? ¿Existe un mejor método conocido por ahí (que posiblemente no descubrí yo mismo)? ¿Cómo se hacen comúnmente estas cosas?