2009-12-04 8 views
1

J'ai cloné un git repo dans lequel se trouvent mes fichiers de configuration emacs. Je voudrais ajouter pylookup dans un sous-répertoire. Quelle est la bonne façon de faire cela?Comment combiner deux référentiels Git distincts?

Voici les options auxquelles je peux penser.


  1. Si je clone dans ~/.emacs.d/pylookup/ et ajouter ce dossier à mon repo, emacs sera cette mise à jour correctement lorsque je fais:

    cd ~/.emacs.d/pylookup/ 
    git pull 
    cd ~/.emacs.d 
    git commit -a -m "updates to pylookup" 
    git push 
    

    -à-dire quand je tire ces changements sur mes autres machines aurai-je la nouvelle version de pylookup? Est-ce que j'obtiens simplement mon repo d'emacs pour ignorer pylookup/* et pour le mettre à jour sur chaque machine chaque fois que pylookup est mis à jour. Cela serait ennuyeux s'il y avait quelques repo et quelques machines mais je peux vivre avec.

  2. Existe-t-il des astuces intelligentes avec git submodule. Si oui, pourriez-vous fournir une explication que je n'ai pas vraiment compris le documentation. Comment puis-je tirer des modifications pour emacs et pour pylookup. Est-ce que je vais avec la réponse 2, mais faites un script pour mettre à jour tous les sous-dépôts. Si je le faisais, je pourrais l'exécuter une fois sur chaque machine chaque fois que le pylookup changerait.


Couple de messages connexes possibles.

Répondre

5

Si vous créez un Git submodule:

$ git submodule add git://github.com/tsgates/pylookup.git pylookup 
$ git submodule init pylookup 
$ git submodule update pylookup 

Disons qu'il ya des changements à pylookup et que vous voulez les obtenir:

$ cd pylookup 
$ git pull origin master 
$ cd .. 
$ git add pylookup 
$ git commit -m "Track new commit of pylookup" 
+0

Bonne réponse. Que se passe-t-il sur mon autre ordinateur lorsque je retire les modifications d'emacs? c'est-à-dire que je dois mettre à jour le pylookup sur chaque machine. –

0

J'ai utilisé la fusion de sous-arborescence avec un problème similaire - http://git-scm.com/book/en/Git-Tools-Subtree-Merging. Quelque chose comme:

$ git remote add -f pylookup /path/to/pylookup 
$ git merge -s ours --no-commit pylookup/master 
$ git read-tree --prefix=pylookup/ -u pylookup/master 
$ git ci -m "merging pylookup into pylookup subdirectory" 

Bon guide ici: http://jasonkarns.com/blog/merge-two-git-repositories-into-one

+0

Est-ce que "git ci" est un alias pour git commit? Il vaudrait mieux éviter l'alias non standard. – dxvargas

+1

C'est. Merci pour l'information – Natasha

Questions connexes