# initialise des répos A et B$ hg init A &&cd A &&echo"A" > A.txt && hg ci -A -m "First commit in A"&&cd ..
$ hg init B &&cd B &&echo"B" > B.txt && hg ci -A -m "First commit in B"&&cd ..
# un main, qui va contenir mes subrépos$ hg init main &&cd main
# j'ajoute A$ echo A= ../A > .hgsub
$ hg add .hgsub
$ hg clone ../A A
$ hg ci -m "Add A as a sub repo"$ cat .hgsubstate
b48cea01eeae6bbb484e6062f8acc6b4924edfa6 A
# j'ajoute B$ echo B= ../B >> .hgsub
$ hg clone ../B B
$ hg ci -m "Add B as a sub repo"$ cat .hgsubstate
b48cea01eeae6bbb484e6062f8acc6b4924edfa6 A
de8150c86700e327cc1d4c9819b420b8fbe686dd B
# on clone le tout (histoire de faire comme si c'était distant)$ cd ..
$ hg clone A cloneA
$ hg clone B cloneB
$ hg clone main cloneMain
# je vais faire un commit dans le clone de A dans mon clone de main$ cd cloneMain
$ echo plop >> A/A.txt
$ hg st -S
M A/A.txt
$ cd A && hg ci -m "commit A"$ cd ..
# on pousse, tout est ok, on va bien pousser la modif dans A (le vrai, distant)$ hg push
pushing to ../main
pushing subrepo A to ../A
searching for changes
adding changesets
adding manifests
addinf file changes
added 1 changesets with 1 changes to 1 files
pushing subrepo B to ../B
searching for changes
no changes found
searching for changes
no changes found
# je vais dans mon clone de A, en dehors de main, et j'ai bien les modifs$ cd ../cloneA
$ hg pull
pulling from ../A
searching for changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files
(run 'hg update' to get a working copy)$ hg up
1 files updates, 0 files merged, 0 files removed, 0 files unresolved
# je fais un commit dans mon clone de A et je pousse$ echo plop >> A.txt
$ hg ci -m "Commit from cloneA"$ hg push
pushing to ../A
searching for changes
adding changests
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files
# je retourne dans mon clone de main : je n'ai aucune modification (normal il n'a pas été commité)$ cd ../cloneMain
$ hg pull
pulling from ../main
searching for changes
no changes found
# si je vais dans A j'ai bien accès à ma modif$ cd A
$ hg pull
pulling from ../A
searching for changes
adding changesets
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files
(run 'hg update' to get a working copy)$ hg up
1 files updates, 0 files merged, 0 files removed, 0 files unresolved
# en retournant dans le clone main, on voit qu'il y a eu des changements.# d'ailleurs on voit le changement alors que le fichier est ok (le status# est donc par rapport à l'état de .hgsubstate)$ cd ..
$ hg st -S
M A/A.txt
# un commit va me permettre de dire que mon main doit prendre en compte cette# nouvelle version de A$ hg ci -m "Update after pull A"
committing subrepository A
# je push, tout est bien commité$ hg push
pushing to ../main
pushing subrepo A to ../A
searching for changes
no changes found
pushing subrepo B to ../B
searching for changes
no changes found
searching for changes
adding changesets
adding manifests
adding file changes
adding 1 changesets with 1 changes to 1 files
# si je reprend un clone de main, j'aurais bien mes modifs$ cd ..
$ hg clone main main2
$ cd main2
$ cat A/A.txt
A
plop
plop
Voici donc ce qui me gène :
le pull n'est pas récursif et c'est lourd. Ok, on peut utiliser onsub mais ça ne me plait guère et ça ne règle pas tout
tant que je ne suis pas allé dans un clone de main, mis à jour chaque sous répo et commité l'ensemble, quiconque récupérera un clone de main ne sera pas à jour sur A
Ce que je voudrais c'est pouvoir dire dans mon main : tu track A/default dans A. Et donc lorsque je fais un pull tu pull A, de sorte que ce soit toujours à jour.
Après, peut-être que c'est une mauvaise idée, j'en sais rien. Peut-être que c'est un mauvais usage de l'outil, c'est possible aussi. Mais en l'état c'est quand même un peu lourd malheureusement.
[^] # Re: Versionnage de fichier de conf privé possible ?
Posté par CrEv (site web personnel) . En réponse à la dépêche Mercurial 2.1 : Les phases. Évalué à 2.
Voici donc ce qui me gène :
Ce que je voudrais c'est pouvoir dire dans mon main : tu track A/default dans A. Et donc lorsque je fais un pull tu pull A, de sorte que ce soit toujours à jour.
Après, peut-être que c'est une mauvaise idée, j'en sais rien. Peut-être que c'est un mauvais usage de l'outil, c'est possible aussi. Mais en l'état c'est quand même un peu lourd malheureusement.