Wie importiert man SVN-Zweige und Tags in git-svn?
Habe ich einen zentralen SVN-repository muss ich Begehen, aber ich habe eine Leidenschaft für git (wie jeder andere Entwickler, den ich kenne). Der Fall ist bekannt.
Dann Las ich über git-svn und gab es zu versuchen. Da brauche ich nicht die volle Geschichte, die nur aus zwei Monaten oder so, ich habe dieses:
git svn clone -r 34000 -s https://svn.ourdomain.com/svn/repos/Project/SubProject
Teilprojekt hatte, wie üblich, die Unterverzeichnisse trunk
, tags
und branches
. Toll.
Dann, um sich der letzten überarbeitung habe ich
git svn rebase
Einige downloads später, großer. Letzte revision, Protokolle, etc. Ok, ich werde jetzt wechseln, um meinen feature-branch.
$ git branch
* master
$ git branch -r
trunk
$ git branch -a
* master
remotes/trunk
Die Fragen sind: Wo sind meine Filialen? Habe ich etwas falsch gemacht? Wie soll ich tun, damit meine Zweige sich in das neue git-repo?
git-svn, wo ich gelesen habe, befasste sich mit bedacht mit Zweigen und tags, aber das Verhalten ist nicht das, was ich erwartet hatte. Danke!
BEARBEITEN: ich habe gerade herausgefunden, dass git svn fetch
wird es tun. Aber es werden alle Revisionen, die ist etwas, was ich nicht möchte.
--stdlayout
, wie in git svn clone --stdlayout svn://...
- siehe stackoverflow.com/questions/5361559/... --stdlayout
war, was ich brauchte -s
eine Abkürzung für --stdlayout
? InformationsquelleAutor der Frage Luís Guilherme | 2010-02-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie mehrere Schritte.
Versorgung ordnungsgemäße Stamm, Zweige und tags, Ordnernamen und Holen svn-repo:
Da tags im svn sind echte Zweige, erstellen Sie ein git-tags von tag Zweige:
Löschen tag-Filialen
Da tags markiert, die im vorherigen Schritt zeigen Sie auf einen commit "create tag", müssen wir ableiten, "real" - tags, also die Eltern der "create tag" verpflichtet.
Alles, was wir jetzt tun müssen, ist zu entfernen Sie die alten tags.
InformationsquelleAutor der Antwort Vanuan
Diese stützt sich auf Vanuan die Antwort von oben, aber es bewahrt die Nachricht der ursprünglichen
svn
tag in der neuengit
tag.InformationsquelleAutor der Antwort n.r.
Dies ist das gleiche wie nicolai.rostov ' s Antwort oben, aber ich habe gerade die refs Weg
Ich ersetzte
refs/remotes/tags
durchrefs/remotes/origin/tags
Ich bin mit der git-version
2.1.1
incygwin
terminal.InformationsquelleAutor der Antwort Mohamed EL HABIB
Ihnen sagen, dass Sie nicht bekommen, Ihre Zweige in Ihre Kasse.
Dies ist wahrscheinlich ein problem mit dem layout Ihres svn-repo.
Den "standard-layout" ist:
branches/
tags/
trunk/
Wenn du dein layout so:
branches/user1/
branches/user2/
Dann verlieren Sie Ihre Filialen, wenn du git svn fetch /clone.
Um dies zu beheben, sollten Sie sich mit dem argument
--branches=branches/*/*
zu git clone.InformationsquelleAutor der Antwort rmk
Wenn Sie möchten, um zu sehen, Ihre Zweige, wenn ein git-Zweig nach einem import aus svn, sollten Sie das ruby-Skript svn2git (und git2svn)
Nach
svn2git
ist fertig mit Ihrem Projekt bekommen Sie dieses anstatt:InformationsquelleAutor der Antwort VonC
Ich hatte das gleiche problem - tags und Zweige waren verschwunden, als ich angegeben revision:
Das Update war zum angeben eines Bereichs von Revisionen zu erstellen,
-r 34000:HEAD
:Den git-Mailingliste gab mir den Tipp.
InformationsquelleAutor der Antwort cweiske
Für diejenigen, die arbeiten müssen, auf Windws bei der Arbeit, hier ist eine Lösung, die up-to-date mit der git-version 2.17.0 (und theoretisch funktioniert auch für Versionen vor)
InformationsquelleAutor der Antwort Qianlong