Kann ich den Verlauf eines SVN-Repos von einem lokalen git-svn-Repo wiederherstellen?

1047
James

Unser Entwicklungsteam verwendet derzeit SVN zur Verwaltung unserer Webanwendungsentwicklung. Der Entwickler, der den SVN-Server verwaltet, versucht, ihn von einem älteren Win XP-Server auf einen anderen Server zu migrieren, der Versuch, einen Speicherauszug des Repositorys auszugeben, schlägt jedoch fehl (Beschädigung oder etwas anderes). Warum es versagt, ist eine ganz andere Frage.

Der Entwickler des SVN-Repos schlug vor, den aktuellen HEAD des alten Repos als Basis für das neue SVN-Repo zu exportieren, aber wir werden alle unsere SVN-Historie verlieren. Ich verwende git-svn lokal, was bedeutet, dass ich 1,5 Jahre Commit-Informationen lokal gespeichert habe. Gibt es eine Möglichkeit, diese Commits aus git-svn herauszuholen und in ein neues SVN-Repo aufzunehmen?

1
Schieben Sie die Commits stattdessen in ein neues Git-Repository. : D grawity vor 12 Jahren 0

1 Antwort auf die Frage

0
Darth Android

Wenn Sie ein neues, leeres SVN-Repo erstellen, können Sie alle Commits von git-svn direkt in das Repo verschieben? (habe nicht git oder git-svn verwendet, aber das würde ich mit einem meiner hg-repos tun, wenn ich es in ein svn-repo bringen müsste)

Edit: Ich habe es geschafft, dies mit der manuellen Umbasierung via Mercurial zu erreichen. Das einzige, was speziell erscheint, ist die manuelle Erneuerung anstelle der automatischen svn-Ersetzung. Sie könnten das in git-svn versuchen, bevor Sie Quecksilber in die Mischung ziehen.

  1. Neues SVN-Repo erstellen: svnadmin create targetSVN
  2. Erstes Commit für neues SVN-Repo durchführen:

    svn co file://targetSVN svnCopy cd svnCopy
    touch test
    svn add test; svn commit -m "Initial Import"

  3. Überprüfen Sie den Repo-Versand über hg:hg clone file://targetSVN hgCopy; cd hgCopy
  4. Änderungen von git (via hg-git) einlesen :hg pull git://yourrepo.git
  5. Manual rebase: hg rebase -s tip -d 0( 0sollte das erste SVN-Commit sein und tipder Kopf des Materials sein, das Sie aus git gezogen haben. Stellen Sie sicher, dass die Git-Changesets linear sind (keine Zusammenführungen!). Ersetzen Sie tipdie tatsächliche Changeset-Nummer des Git-Kopfs (gefunden via hg heads) falls erforderlich). Akzeptieren Sie alle Remote-Änderungen, wenn Sie nach Konflikten gefragt werden.
  6. hg pushbis alle Änderungen im svn repo sind. Es wird jeweils 1 Änderungssatz gedrückt.
git-svn scheint mehrere Remote-svn-Repos nicht so gut zu beherrschen. Ich möchte meine Änderungen nicht für mein zweites svn-remote Repo übernehmen. Ich weiß nicht, ob es alle Commits ordnungsgemäß auf das Basis-Commit des neuen Repos umbasiert. James vor 12 Jahren 0
Was passiert, wenn Sie ein neues Repo erstellen, es mit git-svn überprüfen, Änderungen aus dem ersten git-svn-Repo übernehmen, rebase und dann drücken? Darth Android vor 12 Jahren 0
Nachdem der Master-Zweig vom ersten git-svn-Repo auf den zweiten Zweig des zweiten git-svn-Repos umbasiert wurde, schlägt 'git svn dcommit' fehl mit "Konnte Upstream-SVN-Informationen aus dem HEAD-Verlauf nicht ermitteln. Möglicherweise ist das Repository leer. At / usr / lib / git-core / git-svn Zeile 522. " "git svn info" funktionierte ebenfalls nicht mehr mit dem gleichen Fehler. James vor 12 Jahren 0
Versuchen Sie es mit einem ersten Commit im svn-Repo und ziehen Sie es zuerst. Berühren Sie einfach eine Datei, legen Sie sie fest und löschen Sie sie, nachdem Sie die Daten importiert haben. Darth Android vor 12 Jahren 0
Kein Glück, ich konnte immer noch nicht die überarbeiteten Commits aus dem ursprünglichen Git-Svn übernehmen. James vor 12 Jahren 0
Ich habe es über hgsubversion zum Laufen gebracht, aber das wäre ein verrückter Workflow. Ich werde es in meiner Antwort bearbeiten, falls Sie es verwenden möchten. Darth Android vor 12 Jahren 0
Danke für die Hilfe bei einer Lösung. Ich hatte ein Problem mit Schritt # 5, aber das hatte ich auch, weil ich auch ein Verzeichnis namens test hatte. Ich habe es stattdessen mit einer `touch svn-file 'redidiert. Schritt # 6 schlägt jedoch für mich fehl, mit "Abort: Sorry, ich kann svn übergeordnetes Element einer Merge-Revision nicht finden." James vor 12 Jahren 0
Das hört sich an, als hätten Sie irgendwo in der Geschichte Merges (Sie können Merges von hgsubversion oder git-svn nicht in SVN verschieben). Wenn Sie die Historie in einem Tool wie tortoisehg anzeigen, zeigt es dann Verzweigungen und Verschmelzungen in der Repogeschichte? Darth Android vor 12 Jahren 0
Ja, das kommt mir bekannt vor. Ich nehme an, es ist eine ziemlich schwierige Aufgabe, und leider haben wir gerade die Kugel gebissen und die Geschichte verworfen. Ich entschied mich dafür, mein Git Repo mit jedem meiner Kollegen zu teilen, der die alte Geschichte brauchte. James vor 12 Jahren 0