Frage

Für eine Reihe von Gründen, die kanonische Quelle einiger Dateien Ich habe nicht eine Arbeitskopie des Repositorys sein kann (der Subversion-Server hinter einer unzugänglichen Firewall und die Daten existieren nicht nativ im Dateisystem in meine bevorzugte Struktur). Also schrieb ich ein Tool, das die Daten herunterlädt, erzeugt eine Verzeichnisstruktur aus, und dann verwendet SharpSvn das Ergebnis in das Repository zu importieren. Dies funktioniert ... das erste Mal. Das zweite Mal, natürlich, ein Verzeichnis dieses Namens existiert bereits im Repository, und ich kann nicht wieder importiert werden.

Stattdessen könnte ich:

  1. Löschen Sie das Verzeichnis, und Import. Ich habe nicht getestet, aber abgesehen davon, klingt dumm, ist es wahrscheinlich löscht auch die Revisionshistorie der jeweiligen Dateien in Bezug auf die neuen, wie ganz anders aus.
  2. Prüfen Sie, ob das Verzeichnis vorhanden ist, check it out, löscht remote die Dateien, die nicht mehr in der kanonischen Quelle vorhanden ist, dann den Rest ersetzen und begehen. Dies würde wahrscheinlich funktionieren, aber klingt fehleranfällig und unnötig schwer.

Ist meine Annahme richtig, dass das Löschen von Dateien markieren wird neue der gleichen Art und Weise wie andere Dateien? Gibt es einen einfacheren Weg, als der zweite Ansatz?

War es hilfreich?

Lösung

1), wird die Revisionshistorie nicht gelöscht, aber die neuen Dateien werden als völlig unabhängig von den alten zu behandeln. Sie könnten immer noch die alten Dateien jedoch zurück.

2), das wäre der empfohlene Weg. Aber nach ‚SVN delete'ing die vorhandenen Dateien und das Hinzufügen der neuen, Sie haben auch zu‚svn add‘diese neuen Dateien, bevor sich.

Aber es scheint, sollten Sie mit dem svn-load-dirs.pl Skript betrachten. Sie können dazu im Subversion Buch lesen, Kapitel „ Anbieter Zweige “.

Andere Tipps

Subversion hat eine lose Verbindung zu den Dateien. Für Dateien in einem Ordner können Sie ganz einfach ein get / Update tun, machen massive Veränderungen (einschließlich Löschen, Ersetzen oder Hinzufügen von Dateien), dann die Unterschiede begehen. Das Dateiebene Verhalten ist typisch Subversion-Nutzung.

Die Verzeichnisse sind etwas anders. Subversion speichert die Repository-Informationen auf Ordnerebene. Also, wenn Sie einen neuen Ordner erstellen, wird es nicht automatisch eine Verbindung zu Subversion hat. (Mit so etwas wie TortoiseSVN, es kümmert sich viel davon für Sie.)

Wenn Sie gehen, um das Hinzufügen und Löschen von Verzeichnissen während des Generierungsprozesses werden Sie einige etwas andere Probleme haben als mit den Dateien selbst. Aber kann man noch erreichen Sie Ihr Ziel über die Befehlszeile, SharpSvn, tortoisesvn oder ähnliche Werkzeuge.

Da Sie die Verzeichnisse nicht überschrieben werden können, oder Sie werden die .svn Verzeichnis zerstören und verlieren alle Repository-Informationen, müssen Sie die Dateien über kopieren, sondern nur neue Verzeichnisse erstellen. Dies ist, wie ich das tun würde, aus dem Subversion-Arbeitskopie Sie aktualisieren möchten:

(cd <newdirectory> ; tar -cf - * ) | tar -xf -

Zugegeben benötigen Sie ein Unix-y-System. Es sollte funktionieren mit Cygwin , es sei denn, Windows-etwas besonders bizarr macht mit Ordnern auf Systemebene zu überschreiben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top