• [^] # Re: Versionnage de fichier de conf privé possible ?

    Posté par (site web personnel) . En réponse à la dépêche Mercurial 2.1 : Les phases. Évalué à 2.

    # 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.