2010-04-16 25 views
2

Je suis récemment passé de Subversion à Mercurial pour le contrôle des sources et, ce faisant, j'ai divisé un dépôt en plusieurs. J'ai utilisé des sous-éléments pour gérer les dépendances entre les référentiels. Le problème est que pull n'est pas conscient de suprepo donc je dois aller dans chaque subrepo et tirer des changements afin de mettre à jour un référentiel. Y a-t-il une meilleure manière de faire cela?Comment puis-je obtenir des modifications à propager à tous les sous-états dans Mercurial?

Répondre

0

traction ne doit être suprepo conscient subrepo conscient

hg pull, à condition qu'il soit utilisé avec l'option -u (--update).

Le hg update devrait, quand il comes to subrepos, les prendre en compte:

Chaque fois que les nouvelles versions Mercurial rencontrent ce fichier .hgsubstate lors de la mise à jour de votre répertoire de travail, ils vont tenter de tirer les subrepos spécifiés et les mettre à jour l'état approprié.

Les sous-états peuvent également contenir leurs propres sous-états et Mercurial se recurera si nécessaire.


Le OP CoreyD ajoute:

Cela n'a pas fonctionné pour moi.
Je crée deux repos /repo et /sub et je clone sous dans repo (/repo/sub).
Ensuite, je crée un fichier .hgsub dans /repo avec cette ligne comme ceci sub = ../sub et validez-le.
Lorsque je fais des changements à /sub, puis faire une mise à jour dans /repo /repo/sub est inchangé.
Est-ce que je fais quelque chose de mal?

Cela semble correcte:
SubRepos ou sous-modules (pour Git) sont tous sur referening une configuration précise (changeset ref pour hg, ou de commettre ref pour Git, comme cela est expliqué dans ce SO question)

Lorsque vous changez quoi que ce soit en dehors de /repo, vous ne modifiez pas le fichier .hgsubstatedans les/repo enregistrement de la configuration exacte (référence changeset).
Donc pas de changement du tout.

Vous pouvez faire vos changements /sub directement dans /repo/sub, les valider, puis valider /repo.
Puis, un clone de /repo aurait la nouvelle configuration.

+0

Cela n'a pas fonctionné pour moi. Je crée deux repos/repo et/sub et je clone sub dans repo (/ repo/sub). Ensuite, je crée un fichier .hgsub dans/repo avec cette ligne comme ceci sub = ../sub et je le commets. Lorsque je fais des changements dans/sub et que je fais une mise à jour dans/repo/repo/sub est inchangé. Est-ce que je fais quelque chose de mal? – CoreyD

+0

@CoreyD: Je viens de terminer ma réponse pour mieux expliquer pourquoi il n'y avait pas de changements à la mise à jour. La question à laquelle je me réfère dans ma réponse éditée (http://stackoverflow.com/questions/1979167/git-submodule-update/1979194#1979194) concerne Git, mais reste importante à lire, car le véritable but d'un SubRepo/submodule est décrit ici. – VonC