Forum Programmation.autre Reconstruire un historique dans git

Posté par . Licence CC by-sa
Tags :
0
20
jan.
2017

Bonjour,

J'essaye de me mettre à git mais j'ai fait une "fausse manip" et je n'arrive pas à réparer.
J'ai un projet dans un dépôt Subversion sur lequel j'ai voulu testé une migration vers git (pendant que mes collègues continuaient à travailler avec Subversion).
J'ai suivi pour cela le tutoriel sur git-scm.com. Le problème est que dans ce tuto ils ajoutent la commande --no-metadata à l'import du dépôt subversion.
J'ai créé une branche sur ce dépôt importé pour la fonctionnalité que je développe.
Je suis donc dans la situation suivante :

O1 - O2 - O3
            \
             B1 - B2 - B3

Comme je n'ai pas les metadata pour faire la mise à jour depuis le dépôt Subversion j'ai fait un nouvel import, créant un nouveau dépôt :

N1 - N2 - N3 - N4 - N5

ou N1=O1, N2=O2…

J'aimerais maintenant fusionner les deux pour arriver à cette situation :

N1 - N2 - N3 - N4 - N5
            \
             B1 - B2 - B3

J'ai tenté des choses de ce style

cd new
git remote add old ../old
git remote update
git checkout mabranche
git rebase iddeN3

Mais je me retrouve toujours avec des conflits sur des tonnes de fichiers, même ceux non modifiés après le fork.

Un spécialiste git (je sais qu'il y en a plusieurs sur linuxfr) pourrait m'aider ?

Merci

  • # Je suis pas expert de git

    Posté par . Évalué à 1.

    … Mais tu peux recommencer ton import de svn vers git, le git est local tant que tu ne push pas vers un serveur de dépot.

    J'ai migré dernièrement mes projets de svn > GIT, avec passage de trac à gitlab : ça s'est très bien passé :)

    Ne perds pas courage !

    • [^] # Re: Je suis pas expert de git

      Posté par . Évalué à 1.

      J'ai déjà refait un import svn -> git (branche N1 -N2…), le problème c'est que je n'ai pas les ID svn dans mon ancienne branche (O1 - O2…) et je me retrouve donc avec deux branches contenant les mêmes commits, mais considérées comme non reliées par git.

  • # Tu y es presque avec le rebase

    Posté par . Évalué à 2.

    Tu dois effectivement faire un rebase, mais tu ne souhaites pas revenir jusqu'à l'ancêtre commun de ta nouvelle racine et de l'ancienne (ils n'en ont pas !), donc c'est un rebase « au-dessus » d'une autre branche :

    git rebase --onto iddeN3 old/master
    Si old/master correspond bien à ton O3. Cf deuxième exemple de « topic branch » dans man git-rebase(1).

Suivre le flux des commentaires

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