2009-10-21 5 views
39

Ich habe eine Arbeitskopie, die automatisch über Nacht mit einem Skript in SVN festgeschrieben wird.Fügen Sie alle unversionierten Dateien zu SVN hinzu

Ich verwende die SVN-Befehlszeile dazu.

Nach einem frustrierenden Kampf mit Google, ich habe nicht in der Lage gewesen, herauszufinden, wie, um automatisch alle unversionierte Dateien in der Arbeitskopie in das Repository hinzufügen, bevor der Commit.

Weiß jemand, wie ich das machen könnte?

Güte und Dank im Voraus,

Dan

Antwort

68
svn --force --depth infinity add . 

Seien Sie aber vorsichtig, da dies auch alle svn:ignore ‚d-Dateien hinzufügen.

+2

Nach weiteren Tests scheint es '--depth' nicht notwendig ist, aber es kann nicht schaden. –

+0

die --force war was ich vermisst wurde ... muchos gracias! –

+4

Dies wird auch aktuell ignorierte Dateien hinzufügen, pass auf! –

0

Sie haben für jede unversionierte-Datei für ein Shell-Skript wie folgt -Etwas vor svn commitsvn add in Ihrem Skript aufrufen:

for file in `svn st | grep '^\?' | awk '{ print $2; }'`; do 
    svn add $file 
done 
+2

Eww. Die Verwendung von '--force' im Stammverzeichnis des Arbeitsverzeichnisses fügt automatisch alle nicht versionierten Dateien darunter hinzu. –

+0

Während Ihre Antwort technisch korrekt ist, ist sie bei den Alternativen sehr übertrieben. –

+1

Dies schlägt fehl, wenn Sie Leerzeichen in Ihren Dateinamen haben. –

14

versuchen diese für Größe - viel eleganter als Zwingen durch eine svn hinzufügen:

$ svn add `svn status|grep '\?'|awk '{print $2}'` 
+8

Oder versuchen Sie es. Es akzeptiert Leerzeichen im Pfad: 'svn st | grep '^ \?' | sed 's/^ \? * // '| xargs -I% svn add% ' – nickiaconis

+3

Ich habe den Vorschlag von codefox421 benutzt und einen Alias ​​zu ~/.bashrc hinzugefügt:' alias svn-add-unversioned = "svn st | grep '^ \?" | sed 's/^ \? * //' | xargs -I% svn add% "' Jetzt gebe ich einfach 'svn-a' ein und drücke Tab, gib ein! –

25

Die akzeptierte Lösung

svn --force hinzufügen .

werden auch alle ignoriert unversionierte Dateien hinzufügen. Die meisten Benutzer bevorzugen wahrscheinlich , um nur alle nicht versionierten, aber nicht ignorierten Dateien hinzuzufügen.

alle Dateien, codefox421 Antwort ist richtig unversionierte aber nicht außer Acht gelassen hinzu:

svn st | grep '^ \?' | sed 's/^ \? * // '| xargs -I% svn hinzufügen%

als svn st zeigt keine ignorierten Dateien.

0

In meinem Fall muss ich angeben:

svn --force add dir/*/*/* 

* Ebene des Baums ist, dass ich hinzufügen möchten.

Überprüfen Sie das Ergebnis mit

svn status --no-ignore 
Verwandte Themen