2010-06-12 26 views
5

Est-il possible de créer un référentiel Mercurial à l'intérieur d'un référentiel Mercurial existant?Repo Mercurial à l'intérieur d'un dépôt

L'idée est de gérer des sous-répertoires d'un dépôt sous différents référentiels, comment le faites-vous? Je ne parle pas de subrepos (du moins, si j'ai compris le but des sous-états ...), mais si c'est ainsi que les sous-états existent, je me suis trompé et je vais essayer de bien faire les choses :)

Merci ~ Aki

EDIT: pour être plus clair, je voudrais savoir ce qui se passe, les pratiques et les implications d'avoir un dépôt dans un autre, sans spécifier les modules/subrepos. Autrement dit: ce qui se passe si je fais juste:

hg init globalRepo 
hg init globalRepo/subRepo 

et d'utiliser ces deux référentiels comme-nous?

+2

La question évidente est, pourquoi voudriez-vous faire cela? –

+0

Je ne veux pas faire ça :) Je me demandais juste ce qui s'est passé, et comment mercurial se comporterait dans ce cas. Comme je l'imaginais, une telle utilisation serait un peu difficile, et j'utiliserais de toute façon des sous-états. – AkiRoss

Répondre

15

Cela fonctionne bien. Bien avant l'ajout du support de sous-filtre dans Mercurial 1.3, beaucoup de gens conservaient leurs répertoires personnels entiers dans un repo mercurial pour le suivi de leurs fichiers .bashrc et autres. Ensuite, dans leur répertoire personnel, ils auraient beaucoup de clones d'autres repos. Chaque fois que vous invoquez mercurial (sans l'option -R), il recherche dans le répertoire courant un répertoire .hg, puis continue à monter les répertoires jusqu'à ce qu'il en trouve un. Donc, si vous êtes dans un repo qui est dans un repo, vos commandes agissent toujours sur le repo le plus interne que vous êtes.

Le botte est que vous voulez vous assurer de ne pas avoir des fichiers ajoutés au repo externe. qui finissent dans le repo interne. Ensuite, vous aurez deux repos mettant à jour les mêmes fichiers.

+0

Réponse beaucoup détaillée que la mienne. +1 – VonC

0

Voici some docs sur des référentiels imbriqués.

+1

Déjà lu, j'ai dit que je ne parlais pas de sous-déclarations. Mais bon, ma faute: je devais être plus clair; Je vais ajouter quelques détails dans la question. Merci quand même :) – AkiRoss

+0

Généralement, les sous-dépôts sont des sous-dépôts. Autrement, vous voudrez probablement dire au repo de haut niveau d'ignorer le contenu de globalRepo/subRepo afin de séparer l'historique, ce qui va probablement à l'encontre de son but, à moins que vous ne soyez juste paresseux pour faire des repos indépendants. – TerryP

4

Comme vous pouvez le voir dans ce SO question, vous pouvez faire ce genre de hg init imbriquée, même si elle est habituellement réservé pour définir subRepo (qui est pas ce que vous recherchez).

Normalement cela devrait fonctionner comme deux repos indépendants, mais je conseillerais d'ajouter une règle hgignore dans le globalRepo afin d'ignorer complètement le contenu subRepo.

+0

Merci pour la réponse et désolé pour ce commentaire tardif. Donc, si je l'ai eu correctement, les sous-états sont presque comme des repos imbriqués, avec la différence qu'ils ont un .hgsub suivi dans le repo parent, non? Ce qui, je suppose, est une indication pour le repo parent qui agit un peu comme le .hgignore ou m'a suggéré. – AkiRoss

+1

@AkiRoss: "avec la différence qu'ils ont un' .hgsub' suivi dans le parent repo ": oui, le repo parent référence seulement le'.hgsub', qui est la référence exacte (commit) du subrepo. Mais dans le cas d'un repo imbriqué, il n'y a pas de repo "parent". Le premier repo ignore complètement le fait qu'il a un repo imbriqué à l'intérieur de lui-même. – VonC

+0

@Chris * mais je conseillerais d'ajouter une règle hgignore dans globalRepo afin d'ignorer complètement le contenu subRepo. * Ceci n'a absolument aucun effet. Tout sous-répertoire contenant un dossier .hg est ignoré par le référentiel externe. Et on ne peut pas changer ce comportement. Et c'est pourquoi j'ai abandonné sur mercurial, git garde le suivi à moins que j'ignore l'intérieur - ou le déclare un subrepo (ce qui est raisonnable et vous semblez l'impliquer comme donné pour hg aussi bien) –