2010-09-02 4 views
2

J'essaie de convertir un ancien référentiel CVS suivi d'une branche fournisseur à git, et je suis en train de courir dans un problème de fusion.fusion git: repo distant existe dans un sous-répertoire

Le référentiel est structuré comme suit:

dir1/ 
dir2/ 

dir2 vient de la branche amont. Upstream est déjà converti en git, et dir2 dans notre repo est la racine de leur repo git. Je veux les ajouter en tant que distant et fusionner leur racine dans le sous-répertoire dir2.

La fusion simple ne fonctionnera pas: git traite leur racine comme notre racine et ne trouve aucun fichier en commun.

La fusion de sous-arborescence ne fonctionne pas: vous ne pouvez pas fusionner une sous-arborescence dans un répertoire existant. J'ai suivi le guide How to use the subtree merge strategy, et cette commande échoue:

git read-tree --prefix=dir2/ -u upstream/master 

Le problème est qu'il détecte les fichiers « contradictoires » qui existent déjà dans dir2. Je sais que les fichiers existent, je veux fusionner ces fichiers.

Tout conseil serait apprécié.

Répondre

2

L'astuce est de faire une fusion récursive normale avec l'option sous-arbre:

git merge -s recursive -Xsubtree=dir2 upstream/master