2010-03-02 19 views
24

Estoy experimentando con Hg con miras a alejarme de SVN pero quería algunas opiniones sobre cómo debería estructurar mi repositorio Hg. Vengo de un fondo SVN (que pueden DE manchado mi visión de cómo debería funcionar!) Y mi repositorio actualmente se ve algo como esto:Estructura recomendada de depósito/carpeta Mercurial para un usuario SVN

Project1 
    trunk 
    branches 
    1.0 
    1.1 
Project2 
    trunk 

etc. Esta parece ser la forma 'tradicional' para estructurar una Repositorio SVN

¿Cómo debo reproducir esto con Hg? Para darle más sabor a esto, me gusta la idea de repositorios/carpetas 'estables', 'qa' y 'dev' y me gustaría presentar esto si es posible.

Soy un principiante Hg así que cualquier ayuda o consejo es bienvenido.

Respuesta

26

Hay varias diferencias estructurales entre un Subversion (SVN) y Mercurial repositorio (HG), o repo, para abreviar, implica cómo va a "diseñar" su jerarquía:

  • Mercurial funciona mejor con un solo proyecto por repositorio: como siempre debe clonar todo el repositorio, tener múltiples proyectos en un único repositorio puede tener un gran impacto en el tiempo de clonación y en las operaciones de empuje/extracción, ya que Tendrás que sincronizar todo el trabajo que se realizó en otros proyectos distintos al tuyo cada vez.
  • SVN no tiene una noción "fuerte" de etiquetado/ramificación, mientras que Mercurial lo hace: en SVN (en el momento de escribir), cada rama, cada etiqueta, es básicamente una copia de un proyecto/carpeta/lo que sea. La estructura recomendada trunk/branches/tags está ahí para ayudarlo a recuperar sus "copias", nada más. Por otro lado, las ramas y las etiquetas están bien definidas en mercurial. Una etiqueta es realmente un nombre que usted pone en una revisión particular, y puede solicitar todas las etiquetas existentes. Para las sucursales, verá que hay MANY ways para manejarlas, pero la que mejor se ajusta a la filosofía de SVN se denomina ramas.

Con esto en mente, y el acoplamiento con usted idea de, garantía estable de calidad (QA), y el proceso de desarrollo (DEV), esto es lo que recomendaría:

  • Un repositorio llamado " Estable "por proyecto.Varios repositorios "QA" por proyecto y toneladas de "Dev" por proyecto.
  • Las etiquetas y los nombres de las ramas solo están definidos por el repositorio "Estable" o, eventualmente, por el "QA". Los repositorios "Dev" pueden manejarlos de manera diferente sin dañar.
  • Nunca hace un empujón a un repositorio "QA" o "Estable", lo extraen, o integran paquetes o parches, y hay una persona responsable de cada uno.

Ejemplo: MyProject-1,0

[STABLE Repository, pulls from any/all QA] 
    - MyProject-1.0 

[QA Repositories, branched from STABLE, pulls from any/all DEV ] 
    - QA_MyProject-001 (Person A) 
    - QA_MyProject-002 (Person B) 
    - QA_MyProject-003 (Person C) 
      ... 
    - QA_MyProject-### (Person #) 

[DEV Repositories, branched from STABLE or QA] 
    - DEV_MyProject-001 (Feature X) 
    - DEV_MyProject-002 (Feature Y) 
    - DEV_MyProject-003 (Feature Z) 
      ... 
    - DEV_MyProject-### (Feature #) 

    1. DEV completes feature(s) 
    2. QA pulls feature(s) from DEV 
    3. STABLE pulls from all approved QA(s) (consolidating all changes) 
9

Mercurial está muy bien documentado. Solo tienes que saber dónde buscar en la Wiki.

Puede consultar el artículo de wikipedia de Mercurial RepositoryNaming para encontrar algunas de sus respuestas.

También debe leer el manual de Mercurial oficial: Mercurial: The Definitive Guide

Buena suerte!

19

Pero antes de hacer eso - mira esto: hginit.com - es una lectura de ½ hora, y tiene una sección para usuarios de svn.

Me hizo mucho más sabio, y decidí abandonar la estructura/trunk/tag, y usar mercurial de una manera diferente. Ahora tengo un repositorio para cada proyecto, que solo contiene la estructura del proyecto, y lo etiqueto usando el comando mercurial tag.

.Jesper Hauge

+0

me gusta la idea de un repositorio separado por proyecto. – Rob

Cuestiones relacionadas