Wie füge ich einen von SVN erstellten untergeordneten Zweig in git-svn hinzu?

474
Alain O'Dea

Ich habe zwei Zweige in einem Git-Repository von SVN verfolgt. Abzweig B wurde in SVN in r6 erstellt, indem R5 von Abzweig A kopiert wurde. Als ich Abzweig B zu git-svn hinzufügte, wird nur bis zu R6 zurückverfolgt. Ich hatte erwartet, dass es das Git-Commit von r6 in Ast B mit dem Git-Commit von r5 in Ast A verbindet.

Ich habe es versucht git rebase $(git svn find-rev r6 git-svn-BranchA) master-BranchB, aber es hat für mich in diesem Szenario nicht funktioniert, da es nachfolgende git svn rebaseVersuche bricht . Es glaubt, dass es sich verschmelzen muss und es scheint, als würde es versuchen, von git-svn-BranchA anstelle von git-svn-BranchB zu rebasieren.

Wie füge ich einen von SVN erstellten untergeordneten Zweig in git-svn hinzu?

1

1 Antwort auf die Frage

0
Alain O'Dea

Durch Hacken und Re-Hacken hatte ich einen Durchbruch :)

  1. Suchen Sie die Fernbedienung erneut an den Verzweigungspunkt in SVN:

    git rebase $(git svn find-rev r5 git-svn-BranchA) git-svn-BranchB 
  2. Schreiben Sie den SHA der git-svn remote für Branch B direkt um:

    git rev-parse HEAD > .git/refs/remotes/git-svn-BranchB 
  3. Löschen Sie die Zweigverfolgung BranchB aus SVN:

    git branch -D BranchB 
  4. Holen Sie sich einen neuen Tracking-Zweig für BranchB von SVN:

    git checkout -b BranchB git-svn-BranchB 
  5. Erstellen Sie die Tracking-Informationen neu:

    git svn rebase 

    Sie sollten folgende Ausgabe sehen:

    Partial-rebuilding .git/svn/refs/remotes/git-svn-BranchB/.rev_map.########-####-####-####-############ ... Currently at 9 = ######################################## r6 = ######################################## r7 = ######################################## r8 = ######################################## r9 = ######################################## Done rebuilding .git/svn/refs/remotes/git-svn-BranchB/.rev_map.########-####-####-####-############ Current branch BranchB is up to date. 

Ich hoffe wirklich, dass jemand eine weniger hässliche Version von Schritt 2 hat. Es erscheint mir wie ein grotesker Hack.