32 votes

Mercurial avec plusieurs projets

J'ai un couple de projets avec différents cycles de publication assis dans mon dépôt svn. Les rejets sont créés à l'aide de la classique des balises de structure dans le svn. Quand il y a des bugs à corriger dans les rejets d'une branche est créée à partir d'une étiquette, le bug est corrigé et a ensuite fusionné à partir de là dans le tronc.

Maintenant, pour de multiples raisons, je veux changer de svn, mercurial, avec un poussoir central du site.

Question: quelle est la meilleure façon mercurial pour organiser de multiples projets qui partagent peu de code entre eux? Dois-je créer plusieurs pousser les sites, un pour chaque projet?

Veuillez inclure dans la réponse d'une description sur la façon de recréer ma libération-tag, correction de la branche, ... avec votre préféré la version du référentiel de conception.

Edit: je voudrais installer comme peu d'extensions que possible.

Edit2:

Compte tenu de cette svn mise en page:

.
|-- project-a
|   |-- branches
|   |   |-- 1.x
|   |   `-- feature-1
|   |-- tags
|   `-- trunk
`-- project-b
    |-- branches
    |-- tags
    |   |-- 1.0
    |   `-- 1.1
    `-- trunk

(merci @bendin! :) )

Est-il préférable de travailler avec plusieurs hg push dépôts

project_a-trunk
project_a-1.x
project_a-feature-1
project_b-trunk

pour les branches. Les balises sont repliés dans la branche appropriée.

Ou préférez-vous aller avec deux boutons dépôts dans cet exemple

project_a
project_b

avec les branches nommées et, par conséquent, plusieurs chefs au sein de l'un des pensions.

L'avantage que je vois avec l'utilisation de plusieurs têtes de repos, c'est que je n'ai pas à aller chercher une balise dans plusieurs titres. L'inconvénient que je vois est que le hg livre semble décourager plusieurs tête de repos. Ce serait/faites-vous?

12voto

bendin Points 6651

Certains les dépôts subversion groupe logiquement sans rapport avec les choses (c'est à dire des projets avec différents numéros de version et les cycles de publication) sous un même tronc:

.
|-- branches
|   |-- project-a-1.x
|   `-- project-a-feature-1
|-- tags
|   |-- project-a-1.0
|   |-- project-b-1.0
|   `-- project-b-1.1
`-- trunk
    |-- project-a
    `-- project-b

Ce genre de disposition n'a pas d'analogue dans mercurial. Chaque projet a son propre cycle de publication et propres numéros de version doit avoir son propre référentiel.

Certains dépôts subversion sont structurés de manière à le faire en donnant à chaque projet son propre tronc, les étiquettes et les branches:

.
|-- project-a
|   |-- branches
|   |   |-- 1.x
|   |   `-- feature-1
|   |-- tags
|   `-- trunk
`-- project-b
    |-- branches
    |-- tags
    |   |-- 1.0
    |   `-- 1.1
    `-- trunk

Vous pouvez penser à chaque projet comme un référentiel logique à l'intérieur de votre dépôt subversion. Chaque projet a son propre tronc, les étiquettes et les branches. Cela a aussi l'avantage que vous pouvez garder une balise et les noms de branche plus courte parce que vous savez déjà quel projet ils appartiennent.

Cette disposition est aussi trivial à s'exprimer avec un outil comme mercurial. Chaque "projet" devient un dépôt mercurial. Les étiquettes et les branches à l'intérieur de ce référentiel sont les tags et branches de ce projet.

8voto

Martin Geisler Points 44779

Comme bendin dit, vous devez créer plusieurs référentiels, un pour chaque projet indépendant comme un début.

Mercurial s'engage sont un référentiel à l'échelle et vous ne pouvez pas checkout un seul sous-répertoire. C'est différent de la Subversion qui vous permet de mettre en cohérence s'engage par la validation seulement quelques fichiers, mais il permet également d'extraire un seul sous-répertoire.

Lorsque vous effectuez un communiqué vous sera généralement ajouter un tag à votre dépôt Mercurial (hg tag). Vous pouvez librement décider si vous voulez garder une correction référentiel autour de chaque version, si vous souhaitez créer si nécessaire la première fois. Le truc, c'est que

% hg clone -r 1.0 projet-un projet-un-1.0.x

peut être utilisé pour créer un référentiel project-a-1.0.x qui n'a de l'histoire jusqu'à la balise 1.0. Vous pouvez alors corriger le bug en project-a-1.0.x et le pousser à revenir à l' project-a. Outre des corrections de bogues peuvent être effectués dans l' project-a-1.0.x référentiel.

2voto

dfa Points 54490

Je pense que vous voulez essayer l' extension de la forêt de mercure

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X