2010-11-09 15 views
10

Estoy usando mercurial para control de fuente. Quiero tener una rama de desarrollo principal, y luego tengo puntos en el tiempo que se alinean con decir "v1.0" "v1.01" y "v2.0", por lo que en cualquier momento puedo desplegar decir "v2.0 "y aplastar algunos errores". He oído que algunas personas dicen que necesito etiquetas, otras dicen que necesito marcadores, otras dicen que necesito sucursales con nombre, y otras dicen que solo necesito mantener varios repositorios clonados.Mercurial Release Management

Desde mi punto de vista, varios repositorios clonados parecen ser una mala elección porque una cosa que me gusta de DVCS es que una vez que clona "el" repositorio, tiene todo el historial y puede restaurar totalmente desde el portátil de alguien si su central el servidor se apaga. Si su repositorio se divide por todas partes, siento que pierde este beneficio, a menos que espere que las personas clonen 5 repositorios y los mantengan localmente en sus computadoras. Esto me preocupa porque la mayoría de la gente dice que esta es una buena manera de hacerlo, pero lógicamente no tiene sentido para mí. (Entiendo que esta no es una forma adecuada de hacer copias de seguridad, pero no tener acceso completo a una parte del repositorio sin volver al servidor me parece extraño)

Para mí, la forma de mantener todo unido sean etiquetas, ramas con nombre o marcadores. Sin embargo, no puedo diferenciarlos. La gente tiende a explicar los marcadores como "etiquetas algo parecidas, con algunas advertencias" y denominadas ramas como una especie de etiqueta móvil que probablemente esté mejor hecha con clones.

Me gusta mucho la bifurcación de estilo git (repo único, ramas múltiples de ella), sin embargo, no quiero recurrir a plugins o hacks extraños para que se vea como git. Quiero entender el camino correcto mercurial.

Bonificación: ¿cómo caben las ramas "a pequeña escala" en la mezcla, es decir, si desea trabajar en una función pequeña en su propia rama?

Respuesta

0

DVCS como Mercurial o Git hace que sea fácil clonar un repositorio. Eso no significa que lo use para el propósito de su flujo de trabajo de administración de versiones.

Que cada uno tenga un repositorio mercurial completo es solo un efecto secundario de DVCS. Significa que hay una redundancia cuando el repositorio principal está algo perdido.

Puede trabajar con DVCS de forma que pueda tener un repositorio principal donde pueda realizar cambios y obtener cambios, como un VCS cliente-servidor (subversión) con la ventaja añadida de que podría trabajar sin conexión.

Para su flujo de trabajo de gestión de la liberación, aún debe mirar a

  1. marcadores, etiquetas y ramas.

Hay suficiente discusión sobre SO en cada uno de estos temas.

A continuación se proporciona una buena información breve sobre la ramificación con el clon, marcadores y ramas nombradas

2

rama llamada - en cada confirmación haces hay un campo para el cual la rama es contra el compromiso. Aparte de eso, no hay diferencia entre un repositorio con una sucursal con nombre y un repositorio con múltiples jefes.Cuando fusionas ramas con nombre, es como una combinación regular y el nombre de la sucursal se toma de la sucursal actualmente activa. Es más que probable lo que quiere para la rama v1.x a largo plazo.

marcadores - etiquetas flotantes muy parecidas a las sugerencias en su repositorio. Local solo a menos que realice algún tipo de sincronización de banda lateral. Es bueno para hacer ramas de características o algo en lo que necesita hacer un seguimiento de lo que está sucediendo, pero no necesita compartirlo con otros.

Etiquetas - Un llamado cometen bueno si lo que necesita saber exactamente lo que se libera en v1.0

me gustaría utilizar ramas de nombres para el desarrollo de una rama 1.x una rama 2.x, etc. A continuación, utilice una etiqueta para etiquetar lo que en realidad salió, ya que la versión 1.0, 1.1 se haría en el árbol 1.x, entonces la versión 1.1 sería una etiqueta de lo que contenía. No convertiría los marcadores en parte del flujo ya que tiene que sincronizarlos manualmente. (La nota en las versiones más recientes de marcadores mercuriales se puede sincronizar remotamente aunque todavía requiere la intervención del usuario.)

2

Nunca he entendido la idea de haber clonado repos como ramas anónimas.

hg branch feature-name es cómo me gusta rodar.

0

Estoy usando mercurial para control de fuente. Quiero tener una rama de desarrollo principal, y luego tengo puntos en el tiempo que se alinean con decir "v1.0" "v1.01" y "v2.0", por lo que en cualquier momento puedo desplegar decir "v2.0 "y aplastar algunos errores".

Te recomiendo que etiquetes cada versión de lanzamiento.

Si necesita liberar una corrección de error a una versión anterior, primero debe crear una rama con nombre o clonar un nuevo repositorio basado en la etiqueta de la versión. Una vez que haya trabajado en el error, fusionaría la corrección de errores en su rama de desarrollo principal.

Realmente no importa si usa una rama con nombre o un clon ya que el resultado es el mismo: el error es fijo, el arreglo se libera a la versión anterior, el arreglo se incorpora a la rama de desarrollo principal. Lea other answers, pruebe ambos métodos y use el que prefiera. Personalmente, utilizo las ramas con nombre para estas ramas de versiones de larga duración para que todo el historial de cada versión de la aplicación se almacene en un único repositorio.

Así que ... marque cada lanzamiento y bifurque "a pedido".

0

Necesita etiquetas para marcar las versiones de v1.0, v1.01, y v2.0 etc. Para el desarrollo de ramas (corrección de errores, ramas de características, etc.), puede usar marcadores: ya están muy bien admitido en uso colaborativo (ver http://mercurial.aragost.com/kick-start/en/bookmarks/#sharing-bookmarks). Si necesita tener sucursales de larga duración (es decir, estarán en el repositorio en el futuro previsible), use las sucursales con nombre. Serían una buena opción, por ej. por tener v1, v2, ... ramas de desarrollo.

Usted podría utilizar exclusivamente marcadores o ramas exclusivamente con nombre para ambas ramas de corta duración y de larga vida, pero se está convirtiendo en una práctica estándar para preferir marcadores cuando pueda.

Consulte también mercurial: mix named branches and bookmarks para obtener una respuesta rápida y gráfica sobre cómo los marcadores y las ramas con nombre son diferentes.