2010-06-16 3 views
5

Ich erstelle eine Ignorierliste auf einem Windows-Rechner mit der folgenden Befehlszeile:Wie erstelle ich eine Ignorierliste mehrerer Elemente in SVN?

svn propset svn:ignore "bin" Fardis.Test 

Die Verzeichnisstruktur lautet:

\src\ 
\src\Fardis.Test\ 
\src\Fardis.Test\bin\ 
\src\Fardis.Test\obj\ 

Ich führe diesen Befehl aus, während mein aktuelles Verzeichnis \src ist . Das funktioniert gut, aber ich möchte einen weiteren Ordner, \src\Fardis.Test\obj\, zur Liste der ignorierten Dateien hinzufügen, aber es schlägt fehl. Ich habe folgendes versucht:

svn propset svn:ignore "bin obj" Fardis.Test 
svn propset svn:ignore "bin, obj" Fardis.Test 
svn propset svn:ignore "bin; obj" Fardis.Test 

Nach dem Ausgeben welcher von ihnen zeigt svn status, dass keiner der Ordner bin oder obj der Ignore-Liste hinzugefügt wurde.

Wie kann ich das lösen?

Antwort

7

Verwenden Sie svn propedit anstelle von svn propset und legen Sie jedes Muster in eine separate Zeile im Editorfenster.

Werfen Sie auch einen Blick auf setting global-ignores in your config für Dateien und Verzeichnisse, die in beliebige Arbeitskopie ignoriert werden sollte. Das ist normalerweise eine bessere Möglichkeit, Debug- und Binärausgaben von Verzeichnissen auszuschließen, die viele Projekte enthalten.

+0

+1 für global-ignores nennen – 010110110101

24

Ich erstelle normalerweise eine .svnignore Datei. Siehe svn:ignore Dann tun:

$ svn propset svn:ignore -F .svnignore . 
    property 'svn:ignore' set on '.' 

.svnignore:

*.pyc 
*~ 

EDIT: ich fügen Sie den .svnignore zu dem Repo auch Überblick zu behalten.

+0

Ihre Lösung scheint zu stark. tnks. –

+2

Leider funktioniert das nicht rekursiv wie bei Git. Sie müssen wahrscheinlich den Parameter '-R' hinzufügen, um den Dateiinhalt auf alle derzeit vorhandenen (nicht zukünftigen!) Unterverzeichnisse anzuwenden, aber die Muster sind wahrscheinlich falsch für die Unterverzeichnisse. – ygoe

+0

Oder verwenden Sie 'svn: global-ignores', wenn Sie in Subversion 1.8 sind. – Dormouse

0

Methode

Es ist flexibel, ohne global-ignores zu verwenden.

Zum Beispiel können Sie zwei Dateien erstellen: .svn-ignore und .svn-ignore-recur.

.svn-ignore-wiederholen

.idea 
*.pyc 
*.aux 
*.out 
*.ilg 
*.toc 
64bit-Debug 

.idea 
*.pyc 
*.aux 
*.out 
*.ilg 
*.toc 
64bit-Debug 
# below is difference 
base 
ta.txt 
ta.html 

Dann .svn-ignorieren sollten Sie zwei Befehle aufrufen (Sequenz ist wichtig).

svn propset svn:ignore -F .svn-ignore-recur . --recursive 
svn propset svn:ignore -F .svn-ignore . 

So erhalten Sie die Möglichkeit, einige Dateien rekursiv, und einige andere Dateien in das Stammverzeichnis Ihres Repository zu ignorieren.

Zur Vereinfachung ein Problem es vernünftig ist .sh oder/und .bat Dateien zu erstellen:
svn-Ignor.!

svn add .svn-ignore* !svn-ignor.* 

Zusätzliche

Es ist klar, dass Sie Katze: Fledermaus

svn propset svn:ignore -F .svn-ignore-recur . --recursive 
svn propset svn:ignore -F .svn-ignore . 


svn-ignor.sh

#!/bin/sh 

sh ./!svn-ignor.bat 

Natürlich sollten Sie Datei hinzufügen Erstelle Datei wie .svn-ignore-some-subdir

*.dvi 
*.cot 
seven_doo 

und

svn propset svn:ignore -F .svn-ignore-some-subdir ./sub/sub1/sub2