J'importe actuellement un référentiel SVN dans Git. La structure du référentiel SVN est un peu compliquée, je dois donc le convertir en trois dépôts Git distincts, puis les fusionner tous ensemble.Introduire des fusions dans l'historique Git greffé
Si ceux-ci était un projet simple avec trois parties à une seule histoire, alors je pourrais juste les rebasage au-dessus de l'autre, par exemple:
cd part3
git remote add -f part1 url_to_part1
git remote add -f part2 url_to_part2
git rebase part2/master
git rebase part1/master
Cependant part3
dans mon exemple ci-dessus contient des dizaines de balises et trois branches. Si les parties 1 et 2 avaient été fusionnées proprement en master
(puits, tronc) dans SVN, alors je ferais quelque chose comme this pour greffer correctement la branche dans l'historique. Cela a l'avantage que tous les tags restent en place, contrairement à un rebase.
Mais l'une des branches a un commit orphelin que nous aimerions fusionner dans l'historique. Maintenant, si j'essaie de réparer l'historique avec le greffon, les modifications de la validation orpheline sont perdues. Dans l'exemple ci-dessous, la fusion de X à C s'est produite dans SVN et je peux donc créer le lien avec un greffon. Mais je veux fusionner les orphelins à cause de commettre O entre C et D, tout en préservant les balises sur commits E, G, etc.
A-B-C-[ ]-D-E-F-G-H-...
\//
X--O
Est-il possible que je peux préciser la structure graphique en utilisant quelque chose comme fichier les greffes mais alors effectivement exécuter les fusions implicites? Ou y a-t-il une commande filter-branch que je devrais utiliser ici?
La [note sur cette question] (http://stackoverflow.com/questions/3810348/setting-git-parent-pointer-to-a-different-parent/3811028#3811028) suggère que cela n'est pas possible avec greffes. Je suppose que je vais devoir rebaser puis déplacer manuellement les tags. – jkeirstead