mercurial - tesorero - que hace una secretaria de actas y acuerdos
Mejores Prácticas Mercuriales-¿Rama en Función/Tarea? (5)
Guía básica: https://www.mercurial-scm.org/guide/
Una guía sobre la ramificación: http://stevelosh.com/blog/2009/08/a-guide-to-branching-in-mercurial/
Prefiero shelving para soluciones rápidas, sucursales anónimas para cambios de cambios de dos a tres y clonación para cualquier cosa más grande que eso.
Acabo de cambiar a Mercurial de SVN. He hecho algunas cosas básicas (importar mi código, hacer confirmaciones, obtener el bloqueo de log / commit / revert / etc) y leer algunos tutoriales sobre ramificación / fusión.
Mi pregunta ahora es: ¿Cuál es la mejor manera ("Mercurial") de usar Mercurial? " No quiero seguir los paradigmas de SVN; quiero hacer las cosas de la manera" correcta ".
Debo mencionar que soy un único desarrollador en la mayoría de mis proyectos, y estoy usando prácticas ágiles / scrum. Tal vez mi pregunta debería ser realmente ¿ Debería ser una clonación / ramificación por función? ¿Por tarea? Recuerdo haber leído que este debería ser el caso de Git, y esto le permite esencialmente mantener múltiples copias trabajando al mismo tiempo y funciones separadas frente a correcciones de errores frente a cualquier otra cosa (es decir, mantener su copia de trabajo separada para cada cosa diferente que usted necesita). estamos haciendo). Y también es aparentemente parte de las mejores prácticas de Mercurial .
O simplemente podría guardar una copia, hacer mis cambios y cometer de forma prolífica. Lo que sea.
Si esta pregunta es demasiado subjetiva, no me importa cerrarla, siempre que alguien pueda vincularme a algunos materiales de lectura sobre cómo utilizar mejor Mercurial. Eso es lo que busco.
Hablando como (en su mayoría) desarrollador en solitario, creo que mi respuesta es ... sí. Cuando sé que estoy haciendo un cambio rápido, lo hago en mi directorio de desarrollo "principal", pero si tengo alguna duda sobre qué tan largo / complicado será algo, me dirijo al principio. Lo bueno es que realmente puedes hacerlo de cualquier manera (y en cualquier orden) que funcione para ti. Si estás trabajando en tu directorio principal de desarrolladores en un mod longish y alguien entra y necesita una solución rápida ahora, simplemente clonar el tronco, arreglarlo, registrarlo, ¡y Bob es tu tío!
Recuerdo mis días con tristeza en SCCS / RCS / CVS.
Estoy a punto de llevar a 3 diseñadores a la Tierra Prometida. Son de la vieja escuela y han estado usando Dreamweaver en directorios compartidos (¡el horror!) Durante años. Este fin de semana los estamos trasladando a un mundo de XAMPP, TortiseHG, rsync y deve / staging / production.
Actualización: Expresé mi respuesta de una manera muy ambigua. Gracias por llamarme al respecto, Michael E.
Mi "directorio principal de desarrollo" es en realidad un clon de master de producción. Cuando digo "rama", quiero decir que voy a trabajar en algo por un tiempo, a menudo durante varios días a un mes o más, pero aún es un clon de "algo". Sé que eso suena impreciso, pero a veces estoy trabajando con otros desarrolladores y estamos pasando cosas de un lado a otro y simplemente no nos preocupamos demasiado por la fusión a la troncal hasta que es hora de ir a la puesta en escena. (E incluso entonces a menudo es bastante indoloro).
Por lo tanto, una "solución rápida" para mí significa actualizar mi directorio de desarrollo "principal" al tronco, piratear, probar, presionar para poner en escena en la máquina principal (y probar), y luego presionar para producir (y probar). La mayoría de las veces las correcciones rápidas se realizan como una rama anónima.
Por cierto, la clonación contra un repositorio local es tan rápida que no hay razón (en mi opinión) para hacer otra cosa. Tengo un proyecto mediano con algo más de 7,000 archivos y aproximadamente 4 años de confirmaciones casi diarias de 4 desarrolladores: el repositorio tiene aproximadamente 200 MB. El tiempo de clonación (en una máquina vieja y lenta en mi garaje) es de 10 segundos. Mantengo un clon local del maestro de producción remota y hago búsquedas de hora con cron. HTH.
Siga este enlace. http://hginit.com/
Joel Spolsky explica claramente la diferencia entre un VCS centralizado heredado y un DVCS.
También lo guía a través de los pasos para familiarizarse con el flujo de trabajo mercurial, proveniente del fondo de subversión.
No En lugar de una rama, clonaría el directorio / repositorio de trabajo para una rama de características.
Estoy siguiendo la excelente descripción en a-successful-git-branching-model .
Tenga en cuenta que el artículo al que se hace referencia es para git no para hg. Sin embargo, el modelo de bifurcación es universal, pero la sintaxis entre git y hg es diferente.
[actualización 2013-01-31] Gracias @Alex por tu comentario. No estaba al tanto de las diferencias entre hg y git . ¿Hay alguien por ahí con experiencia en hg que pueda verificar que el modell branching git es aplicable a hg o necesita modificadores para trabajar con hg (excite la sintaxis de la línea de comandos)?
He encontrado que las ramas con nombre son preferibles a la clonación en un par de casos. Si los ajustes del proyecto que no están marcados en la fuente controlan, la clonación requiere que yo copie estos ajustes a todos mis clones. La mayor parte de mi trabajo está en Django, donde tener un local_settings.py
no local_settings.py
en control de código fuente es un lenguaje común. También me parece que compartir clones no es tan fácil como compartir ramas con nombre. Si soy el único desarrollador que trabaja en una característica, la clonación está bien. La segunda vez que necesito que alguien me ayude en una función, una sucursal nombrada hubiera sido la mejor opción.
@ k3b mencionó gitflow y hay un complemento hg en desarrollo para hacer lo mismo en hg, que utiliza ramas con nombre. https://bitbucket.org/yinwm/hgflow/wiki/Home