2011-04-04 4 views
4

J'ai un grand système avec beaucoup de composants que je veux étaler sur plusieurs dépôts mercuriels différents (ainsi les gens travaillant sur des parties du système n'ont pas à vérifier l'ensemble du système). Il doit fonctionner à la fois sur UNIX et Windows.Travailler avec des sous-états dans Mercurial

Dans le système, j'ai un répertoire qui doit être partagé à plusieurs endroits (contient des choses communes comme les fichiers CSS et les images).

Je l'ai configuré, de sorte que chacun des composants ait un sous-dépôt dans le référentiel partagé, et que le repo soit également extrait à un niveau supérieur. Je l'ai fait parce que je veux que les programmeurs soient capables de faire un 'hg pull' depuis le dépôt principal, mais pas un 'hg push' (tout changement est tiré par un 'hg serve' de leur travail et vérifié avant d'aller retour dans le dépôt principal).

Donc, au niveau supérieur, un programmeur peut vérifier:

de base style ComponentSetA ComponentSetB etc.

Tous ces points Retour à http://machine/hg/RepoName (via clone).

et moi avons subrepos à:

ComponentSetA/web/de style (avec style = ../../Style dans web/.hgsub) ComponentSetB/web/type etc.

Mon Le problème est que sur un 'clone hg', je n'arrive pas à obtenir les sous-états pour se créer automatiquement. J'aimerais qu'ils soient transparents. Si l'un des programmeurs ne fait pas de changements, ils ne devraient pas remarquer qu'ils sont là ...

C'est OK si je dois d'abord vérifier le style Repo, puis faire l'un des composants, mais je J'aime le niveau supplémentaire d'indirection pour le repo de haut niveau pour permettre aux programmeurs de pousser leurs changements de niveau inférieur dans un repo commun.

Des suggestions?

Répondre

2

Corrigez-moi si je me trompe, mais il semble que vous ayez un fichier .hgsub dans un sous-répertoire web et pas à la racine du repo. Si vous voulez web/style d'être un subrepo, vous l'ajoutez à votre racine .hgsub comme ceci:

web/style = ../../Style 
+0

Oui, vous avez raison. Mais j'ai aussi eu quelques autres problèmes en cours. A la fin j'ai mis .hgsub à la racine avec chaque chemin de composant inclus. Je l'ai pointé vers le haut et vers le haut relativement à une copie locale, mais le point de .hg/hgrc au serveur à cause du clone. Ainsi, les modifications apportées aux sous-éléments retournent au serveur par défaut (au lieu de la copie locale), j'ai donc perdu le niveau d'indirection que je cherchais. J'ai aussi dû me contenter de 1 niveau de subrepos au lieu de 2. –