Ich habe eine Verzeichnisstruktur, die eine Reihe von Konfigurationsdateien für eine Anwendung enthält. Die Struktur wird in Subversion gepflegt, und dann haben einige Systeme diese Verzeichnisstruktur ausgecheckt. Entwickler nehmen Änderungen an der Struktur im Repository vor, und ein Skript auf den Servern führt regelmäßig ein "svn update" durch.Wie erzwinge ich ein Verzeichnis, um genau mit dem Subversion-Server zu synchronisieren
Manchmal haben wir jedoch Leute, die unbeabsichtigt ein .svn-Verzeichnis unter einem der Verzeichnisse entfernen, oder eine Datei anheften, die nicht dazugehört. Ich tue, was ich kann, um die Hände des Verfahrens untreu zu schneiden, aber ich würde immer noch lieber für mein Update-Skript, um in der Lage zu sein, diese Änderungen (gut, automatisch) zu behandeln.
Also, was ich brauche, ist eine Möglichkeit, Dateien zu löschen, die nicht in Subversion sind, und eine Möglichkeit, in einem lokalen Verzeichnis zu stampfen, die auf dem Weg von etwas im Repository ist. So, wie Warnungen
Fetching external item into '/path/to/a/dir'
svn: warning: '/path/to/a/dir' is not a working copy
und
Fetching external item into '/path/to/another/dir'
svn: warning: Failed to add directory '/path/to/another/dir': an unversioned directory of the same name already exists
automatisch aufgelöst werden.
Ich bin besorgt, dass ich entweder die SVN-Statusausgabe in einem Skript analysieren muss, oder die SVN C-API verwenden und mein eigenes "Bereinigungs" -Programm schreiben, damit dies funktioniert (und ja, es muss funktionieren auf diese Weise; rsync/tar + scp und was auch immer noch keine Optionen für eine Vielzahl von Gründen sind). Aber wenn jemand eine Lösung (oder Teillösung) hat, die sich um das Problem kümmert, würde ich mich freuen, davon zu hören. :)
... und nach einer Weile, was ich getan habe, war ein Python-Skript schreiben mit der Svn-API direkt (nicht Pysvn) zu duplizieren Änderungen in einem Dateisystem auf der Grundlage der Post-Commit und Post-Revprop-Change-Hooks im Repo. Im Moment habe ich einfach einen geplanten Export alle 6 Stunden nicht autorisierte Änderungen zu handhaben, aber ich schreibe einen Dateisystem-Monitor (inotify über pyinotify), um alle nicht-Haken-generierte Änderungen am Dateisystem zu fangen. Jede andere erkannte Dateisystemänderung erzeugt eine Warnung und ersetzt, was auch immer geändert wurde, mit einer Kopie von svn. Details schließlich bei http://blog.dannysauer.com/?tag=subversion – dannysauer