Forum Linux.général git: utiliser les remotes d'un autre repository

Posté par  .
Étiquettes :
0
22
nov.
2012

Bonjour !

Je galère un peu avec git et les remotes. J'utilise les remotes pour suivre les développements du noyau Linux dans différents sous-systèmes. Ensuite, avec git pull --all, le contenu des remotes (que je n´ai pas déjà) est récupéré, et je peux faire un check-out de n´importe quelle branche de chaque remote. Tout vas bien. :-)

Par contre, si je clone mon propre clone avec git clone my-linux my-linux-for-tests, le nouveau clone ne contient aucune des remotes présentes dans my-linux/.

+--------------------+     +-------------+  +---------+  +------------+
| torvalds/linux.git |     | arm-soc.git |  | kvm.git |  | kbuild.git |
+--------------------+     +-------------+  +---------+  +------------+
         |                        |               |             |
         | clone                  |               |             |
         v                        |               |             |
    +-----------+                 |               |             |
    | my-linux/ | <---------------+---------------+-------------+
    +-----------+       remote add [name] [url]
         |
         | clone
         v
+--------------------+
| my-linux-for-tests |
+--------------------+

Comme je peux être en mode déconnecté, je veux pouvoir garder une référence locale intacte, et donc je ne fais aucune modification dans my-linux/ (sauf des pull --all pour le mettre à jour).

Donc, je fais mes développements dans un second clone jetable my-linux-for-tests. Comme je peux travailler sur différents sous-systèmes, je voudrait avoir toutes les remotes aussi présentes dans ce nouveau clone.

Hé bien, git ça a beau être une tuerie, le meilleur DVCS de tous les temps, que ça poutre sa maman ours, etc… pas la moindre bribe d'info dans la doc sur le comment faire ça. A croire que c´est pas possible…

Donc, je me tourne vers vous, chères moules : des suggestions ? Merci par avance de vos lumières ! :-)

Hop,
Moi.

PS. Je n'utilise pas n clones, pour économiser de la place sur le HDD, et de la bande passante lors de mises à jour.

  • # cp

    Posté par  (site web personnel) . Évalué à 0.

    cp my-linux my-linux-for-tests
    
    

    éventuellement suivi de :

    cd my-linux-for-tests
    git remote add origin ../my-linux
    
    

    Matthieu Gautier|irc:starmad

    • [^] # Re: cp

      Posté par  (site web personnel) . Évalué à 1.

      Je comprend pas pourquoi tu veux pas faire un :

      git checkout -b branch-for-test
      
      

      La branche master reste inchangée. Tu as donc ta référence locale intacte.

      Matthieu Gautier|irc:starmad

      • [^] # Re: cp

        Posté par  . Évalué à 2.

        git checkout -b branch-for-test
        

        La branche master reste inchangée. Tu as donc ta référence locale intacte.

        Pas tout à fait. Comme je peux jouer sur les branches des remotes (par exemple, préparer un merge ou un rebase pour vérifier si la prochaine intégration va bien se passer), ça peut modifier le dépôt.

        En fait, j'utilise déjà des branches suiveuses (tracking branch) pour les évolutions (bug-fix ou fonctionnalités), mais ça ne me suffit pas pour le reste.

        Hop,
        Moi.

        • [^] # Re: cp

          Posté par  (site web personnel) . Évalué à 1.

          Je doit être stupide mais je vois toujours pas où est le problème.

          Tu veux faire un test:

          git checkout -b mon-test
          
          

          Tu codes, tu commit dans la branche mon-test (ni master ni remotes/* sont modifiés)

          Tu veux tester un merge avec kvm.git/master :

          git merge kvm/master
          
          

          Ça modifie la branche mon-test, pas kvm/master.

          Un fois le test de merge fait:

          git reset --hard ORIG_HEAD
          
          

          En aucun cas les branches remote sont modifiées (elles pointent toujours sur le même commit)
          D'ailleurs tu ne dois pas les modifier puisqu'elles sont sur un dépôt distant.

          Matthieu Gautier|irc:starmad

  • # Une espèce de solution …

    Posté par  . Évalué à 2.

    Bon, j´ai réussi à faire un truc qui semble fonctionner …

    $ git clone my-linux my-linux-for-tests
    $ cd my-linux-for-tests
    $ cat <<_EOF_ >>.git/config
    [remote "local-remotes"]
    >     url = ../upstream/linux
    >     fetch =  +refs/remotes/*:refs/remotes/*
    > _EOF_
    $ git pull --all
    
    

    Et voilà. C´est pas très-très git-aware, mais cela semble fonctionner …

    Si quelqu´un a mieux, je suis preneur.

    Hop,
    Moi.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.