2010-06-29 9 views
5

Ich starte einen SVN Server auf einem Linux Server. Ich gehe für eine Woche irgendwo raus ohne Internetzugang und daher auch keinen SVN-Zugang.Kopiere nur bestimmte SVN Revisionen von einem Repository in ein anderes

Also, um herauszufinden, ich versuche, wie mit mir auf meinem Laptop einen Schnappschuss des Endlagers zu nehmen, und dann die neuen Versionen wieder in das vorhandene Repository zusammenführen, wenn ich zurückkomme ...

  • Mein Laptop läuft Windows 7, also erstmal, ich denke, dass VisualSVN Server ist wahrscheinlich der Server, den ich lokal ausführen werde.

  • ich meine aktuellen Repository-Dump der Lage sein, und es dann

  • auf meinem Laptop in ein neues Repository laden Aber was ich nicht sicher bin, ist, wenn ich aus der Stadt zurück. Ich werde alle diese neuen Überarbeitungen auf dem SVN-Server auf meinem Laptop haben. Wie kann ich nur diese neuen Versionen in das Repository auf meinem Linux-Server laden und dann laden?

  • Wenn ich >svnadmin dump --revision 50:75 verwende (unter der Annahme, dass die Revisionen 50 bis 75 die neuen Revisionen darstellen, die ich auf meinem Laptop gemacht habe), kann ich diese Datei einfach in mein bestehendes Repository auf meinem Linux-Server laden? Ist das so einfach? Ich weiß, es gibt einige Sachen in Bezug auf Repository-UUIDs, die einige Probleme verursachen könnten ...

  • Noch ein Hinweis, ich bin der einzige Entwickler, der im Moment zu diesem SVN-Repository beiträgt. Daher wird kein Code Merging benötigt.

UPDATE

war mir nicht bewusst, dass ich ein Repository lokal einfach file:/// mit zugreifen konnte. Das funktioniert wahrscheinlich besser, als VisualSVN Server ausführen zu müssen. Die primäre Frage bleibt jedoch: Wie bekomme ich die neuen Revisionen von einem Repository zum anderen?

+0

Schauen Sie in Git. Es hat eine Brücke zu Subversion, damit Sie lokal committen können und dann alle commits zurück zu SVN schieben. Ich poste das nicht als Antwort, denn es bedeutet ein bisschen eine Lernkurve, die Sie möglicherweise nicht machen können, bevor Sie die Stadt verlassen. –

Antwort

2

Wenn Sie der einzige Entwickler sind, könnten Sie das Repository einfach mitnehmen.

Greifen Sie mit dem Protokoll file: /// zu, wenn Sie unterwegs sind, und legen Sie es bei der Rückkehr wieder auf den Server. . .

+0

Ich nehme es mit, was ich mir vorgenommen habe. Aber wie kopiere ich nur die neuen Revisionen aus dem Repository auf dem Laptop zurück in den ursprünglichen svn Server? Oder schlägst du vor, dass ich den vorhandenen SVN-Server lösche und das gesamte Repository von meinem Laptop in ein neues auf meinem Server dump/lade? –

+0

Ich schlug vor, Sie könnten die ganze Sache mitnehmen ... d. H. Das Verzeichnis auf dem Server, das die Verzeichnisse conf, db, hooks usw. enthält - kopieren Sie einfach dieses Verzeichnis vom Server auf Ihren Laptop. Greifen Sie darauf wie "svn checkout file: /// c:/svn/repos" zu. Wenn Sie zurückkehren, löschen Sie das Repository-Verzeichnis auf dem Server und kopieren Sie Ihre lokale Kopie vom Laptop. –

+0

... Art von einem Do-it-yourself verteilten SVN-Quellcode-Kontrollsystem. :) –

0

Ich würde empfehlen, ein git oder mercurial lokales Repository direkt über Ihrer lokalen Arbeitskopie zu machen.

Sie können die .svn-Ordner und die Artefakte den Dateien .hgignore oder .gitigore hinzufügen, um das Repository sauber zu halten. Wenn Sie dann zurück sind, können Sie einfach die Änderungen mit svn übernehmen oder wenn Sie möchten Um eine phantastische Arbeitseinheit zu entwickeln, die du in mercurial/git eingecheckt hast, während du unterwegs warst.

Diese beiden Repos machen es sehr einfach, Ihre eigene lokale Arbeitskopie in der Versionskontrolle zu behalten und einfach mit definierten Check-in-Punkten im Verlauf zu synchronisieren.

+0

Ich würde sogar weiter gehen und Werkzeuge wie Hgsvn oder Git-Svn verwenden, die in der Lage sind, den lokalen Verlauf automatisch in Subversion zu kopieren. – Rudi

1

Um einen Satz von Revisionen (nn bis mm) aus einem Repository zu extrahieren:

svnadmin dump --incremental -r nn:mm /path/to/repository > /path/to/dumpfile.svn 

Die --incremental Option können Sie diesen Satz von Änderungen zusammenführen, ohne zusammen mit dem Import die gesamte Grundlinie zu bringen.

Um diese Änderungen an einem Repository gelten:

svnadmin load --ignore-uuid /path/to/repository < /path/to/dumpfile.svn 

Die --ignore-uuid Option ermöglicht den Import UUID-Informationen aus dem Quellcode-Repository Streifen aus.

Ich würde diese Operation auf Repositories mit einer gemeinsamen Revision Erbe beschränken, sonst würde die Last wahrscheinlich fehlschlagen.

0

Ein nicht ausgeklügelter Ansatz wäre, einfach alles zu checken, was du brauchst, etwas zu arbeiten, etwas zu spielen, etwas mehr zu arbeiten, deine Umgebung zu genießen, neue Leute kennenzulernen, mehr zu arbeiten und dann, wenn du zurückkommst, verpflichten. Eine Woche kann wie eine lange Zeit erscheinen, ohne zu gehen, aber wenn ich weg bin, besonders jene Nicht-Internet-Orte, tendiere ich dazu, nicht so viel Arbeit zu erledigen, wie ich beabsichtigt hatte.

WinZip kann helfen, wenn Sie ab und zu einen Schnappschuss machen müssen.