SVN checkout gefiltert nach Datei-Erweiterung?
Ich habe eine home-grown-automatisierte build-Skript in form einer DOS-batch-Datei. Teil des Skripts, ich check out (mit "svn checkout") einen Abschnitt von unserem SVN-repository enthält eine Reihe von third-party-Sachen, die sich auch in unseren Projekten. Diese batch-Datei ausgeführt ziemlich gut für eine lange Zeit, aber jetzt sind die Leute eingecheckt haben viele Flusen (docs, Beispiel-code, etc.) in den third-party-Bereich und der Kasse Teil dieses Skripts ist mittlerweile viel langsamer. Ich würde gerne, diese zu mildern, indem Sie nur die Sachen, die wir benötigen-meist dll-Dateien in unserem Fall. So, meine Frage ist: was ist der beste Weg, um zu überprüfen heraus ein SVN-repository, gefiltert nach Datei-Erweiterung?
Ich sehe keine offensichtliche Weg, dies zu tun in der svn-Hilfe. Ich habe eine .NET utility library, wraps svn.exe in gewisser Weise, und ich war das denken von der Ausdehnung dieses nur abrufen von Inhalten, der auf meiner Erweiterungen von Interesse. Aber ich würde lieber einen einfacheren oder bereits bestehende Methode, wenn eine vorhanden ist.
Nein, es ist nicht. Bezieht es sich auf das svn.exe.
InformationsquelleAutor Chris Farmer | 2008-10-10
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist möglich: Sie können
svn checkout
ein leeres Verzeichnis, und dannsvn update filename
für jede Datei, die Sie tun wollen.Ihrem Skript kann etwas wie:
svn checkout svn://path/to/repos/directory --depth empty
svn list --recursive svn://path/to/repos/directory
grep
svn update --parents
jede DateiGeben Sie Ihre gewünschte Ergebnis einer Arbeitskopie ohne bestimmte Dateien oder Datei-Erweiterungen.
Natürlich gibt es auch das Problem, dass Sie erwähnen von den "Leute [prüfen] in vielen fluff", aber das ist eine separate Angelegenheit.
was bedeutet eine Umsetzung dieser Aussehen?
Ich habe versucht, die Umsetzung dieses Ansatzes selbst, aber ich denke, ich mache es falsch. Ich bin immer übersprungen Pfad Konflikte.
um alle text-Dateien, #2-#4 ist ein 1-liner...
svn up `svn list svn://svn.foo.com:3690/svn/somerepo/somedir/ | grep txt`
... Sie können einfach verwenden Sie #2 in backticks zu verwenden, die resultierende Liste von txt-Dateien direkt zusvn up[date]
.InformationsquelleAutor Michael Hackner
Als ich sagte hier, es ist nur eine option bauen in SVN selbst: Eine neue Funktion im SVN 1.5 genannt sparse checkout, aber Sie können nur wählen Sie Kasse auf directory-Ebene, so haben Sie zum Sortieren der Dateien brauchen Sie nicht in ein anderes Verzeichnis.
Also in anderen Worten, Nein es gibt keine Möglichkeit zu filtern, ein svn checkout durch die Erweiterung.
InformationsquelleAutor Peter Parker
Können Sie nicht, check out, nur ein paar bestimmte Dateien -- Sie können nur check-out einen ganzen Ordner. Sie können die Anordnung der Organisation, was Sie heraus überprüfen, oder Sie können einfach kopieren Sie eine Arbeitskopie von einem anderen Ort und zu aktualisieren.
InformationsquelleAutor Mike Benza
Für ein powershell-spezifische Implementierung der Antwort von Michael Hackner, versuchen Sie so etwas wie:
Meinen speziellen use-case-hier ist das finden einer Reihe von ähnlich benannten Dateien (in diesem Fall *special.xml) und dumping Sie alle in einem einzigen Ordner, mit im wesentlichen einzigartigen Namen. Benutzt habe ich eine temporäre Datei zum speichern des gesamten repo-Liste, aber all dies könnte inlined auch wenn das besser für Sie.
InformationsquelleAutor eddie.sholl
Ich habe gerade versucht den Ansatz, vorgestellt von Michael Hackner. Unten ist die Umsetzung für ein DOS-system. Beachten Sie, dass an der Kasse die leeren Ordner vor dem ausführen dieses Skripts.
InformationsquelleAutor Kamyar
Den meisten einfachen und einen richtigen Weg, dies zu tun: TUN Sie ES NICHT!
Wenn es irgendein crap in den Dritten Ordner, wo es wohl sein .dll-Dateien, die benötigt werden, um die checkout - entfernen Sie diesen Mist an einem anderen Ort! Es gehört nicht hier jedenfalls.
InformationsquelleAutor Dandikas