2009-05-15 30 views
2

Ich versuche den Prozess der Erstellung neuer Projekte aus bestehenden Projekten mit Skripten zu automatisieren. Meine erste Idee ist, dass es zwei Skripte geben sollte:Muss mein Skript den svn Server aktualisieren?

1: checken Sie ein vorhandenes Projekt aus dem Svn-Repository und benennen Sie es dann um (dh suchen und Ersetzen von ExistingProjectName => NewProjectName in allen Dateien, dann "Svn rename" alle Dateien und Verzeichnisse die Zeichenfolge ExistingProjectName)

2 enthält: nachdem der Benutzer war die Zusammenstellung geprüft, usw., erstellen Sie das neue Projekt auf dem Repository (zB mit dem „svn switch“ Befehl)

die Idee, dass Das Repository sollte nicht geändert werden, bis der Benutzer die Möglichkeit hatte, Prüfungen durchzuführen.

Allerdings wurde auf ein potenzielles Risiko hingewiesen. Nachdem # 1 ausgeführt wurde, ist die lokale Arbeitskopie weiterhin mit dem vorhandenen Projekt verknüpft. Jemand, der in dieser Phase achtlos vorangeht, wird das bestehende Projekt durcheinander bringen.

Kann jemand an einige svn Tricks denken, die den Benutzer stoppen können, der nach # 1 festlegt? Ich kann mir nichts einfallen lassen, nachdem ich die Dokumentation durchgelesen habe.

Vielen Dank.

Andy

(Wenn es nicht möglich ist die Begehung zu stoppen, dann müssen wir mit dem kleineren von zwei Übeln zu gehen, und das Drehbuch zu schreiben, so dass es das Repository aktualisiert werden, bevor der Benutzer die Möglichkeit hat, zu prüfen.)

Antwort

1

Möglicherweise konnten Sie einen speziellen Wert zu den geänderten Dateien schreiben, um den Zustand anzuzeigen. Verwenden Sie dann einen Svn-Commit-Hook, um zu prüfen, ob jemand versucht, sich an das falsche Repository zu binden ...

1

wahrscheinlich möchten Sie vielleicht einen SVN-Export durchführen.

+0

Leider, wenn Sie Svn-Export verwenden, erhalten Sie nicht die gesamte Geschichte für das Projekt. svn würde es effektiv als ein brandneues Projekt behandeln (Informationen über alle Änderungen in dem alten Projekt werden nicht vorhanden sein), wenn Sie sich verpflichten. – Andy

0

Der Trick, das Festschreiben zu stoppen, ist, im ersten Schritt svn export zu verwenden. Wenn die Änderungen bereit sind, verwenden Sie svn import.

+0

Leider, wenn Sie Svn-Export verwenden, erhalten Sie nicht den gesamten Verlauf für das Projekt. svn würde es effektiv als ein brandneues Projekt behandeln (Informationen über alle Änderungen in dem alten Projekt werden nicht vorhanden sein), wenn Sie sich verpflichten. – Andy

1

Um eine neue Verzweigung in Svn zu erstellen, verwenden Sie den Befehl svn copy. Sobald dies abgeschlossen ist, haben Sie 2 Projekte im Repository und Sie können beide in Ihrer Freizeit ändern.

Also, wenn Sie Svn das Projekt trotzdem umbenennen wollen - warum nicht die Verzweigung machen und dann die Dateien umbenennen (und den Inhalt aktualisieren). Job erledigt!

Die Alternative wäre, Ihr vorhandenes Projekt auszuchecken, umzubenennen und zu bearbeiten und dann die Arbeitskopie zu svn hinzuzufügen. Das wäre "atomar" und würde verhindern, dass das Umbenennen im Protokoll angezeigt wird.

Das Hinzufügen eines brandneuen Zweigs ist genauso gut wie das Kopieren, außer dass Sie nicht den Vorteil von svns "billigen Kopien" bekommen, aber wenn Sie signifikante Änderungen vornehmen (und umbenennen!), Wäre das nicht besser Ansatz in erster Linie?

+0

Das Skript kann nur als "atomar" bezeichnet werden, wenn es die Arbeitskopie entfernt, wenn es nicht kompiliert werden kann (d. H. Nach dem Auschecken und Umbenennen). Wenn die Arbeitskopie erhalten bleibt, kann der Benutzer das Projekt trotzdem begehen und durcheinanderbringen. Auf der anderen Seite möchte der Benutzer möglicherweise debuggen, so dass das Entfernen der Arbeitskopie nicht populär sein wird! Beginnend mit einer Kopie im Repository, um zwei Projekte zu erstellen, ist auch die Lösung, die wir erreichen. Je mehr ich darüber nachdenke, desto mehr bin ich davon überzeugt, dass es der kleinste aller Teufel ist. – Andy

+0

Wenn der Prozess fehlschlägt, löschen Sie den Zweig vom Server. Die Arbeitskopie muss nicht gelöscht werden, da der Versuch, sie einzuchecken, fehlschlägt, weil die Verzweigung nicht mehr existiert. – Don

Verwandte Themen