792 Stimmen

Wie kann ich ein Verzeichnis mit SVN ignorieren?

Ich habe gerade angefangen, SVN zu benutzen, und ich habe ein Cache-Verzeichnis, das ich unter der Versionskontrolle nicht brauche. Wie kann ich das gesamte Verzeichnis/Ordner mit SVN ignorieren?

Ich verwende Versionen y テキストメイト unter OS X und auf der Kommandozeile.

3 Stimmen

Eine ähnliche Frage wurde hier beantwortet [SVN checkout ignore folder][1] [1]: stackoverflow.com/questions/192824/svn-checkout-ignore-folder

0 Stimmen

Mögliches Duplikat von Wie kann ich Dateien in Subversion ignorieren? (Mir ist es egal, in welche Richtung das Duplikat geht; keine der beiden Antwortmöglichkeiten ist offensichtlich besser als die andere).

831voto

Jason Cohen Punkte 78227

Setzen Sie die svn:ignore Eigenschaft des übergeordneten Verzeichnisses:

svn propset svn:ignore dirname .

Wenn Sie mehrere Dinge zu ignorieren haben, trennen Sie diese durch Zeilenumbrüche im Eigenschaftswert. In diesem Fall ist es einfacher, den Eigenschaftswert mit einem externen Editor zu bearbeiten:

svn propedit svn:ignore .

0 Stimmen

Es funktioniert nicht wie erwartet. tipi:/var/www/tipi# svn commit -m "More accents" * svn: '/var/www/tipi/tmp' ist keine Arbeitskopie svn: Can't open file '/var/www/tipi/tmp/.svn/entries': No such file or directory tipi:/var/www/tipi# svn propset svn:ignore tmp . property 'svn:ignore' set on '.' tipi:/var/www/tipi# svn commit -m "More accents" * svn: '/var/www/tipi/tmp' is not a working copy svn: Can't open file '/var/www/tipi/tmp/.svn/entries': No such file or directory

2 Stimmen

@Kouber: Ihr Problem ist, dass die Shell-Expansion die Eigenschaften von svn:ignore nicht kennt. Wenn Sie also '*' als Parameter verwenden, wird explizit tmp an den commit-Befehl übergeben. Versuchen Sie etwas wie 'svn commit -m "Weitere Akzente" .'

5 Stimmen

Vielen Dank für die Antwort. Pico als Editor: svn propedit svn:ignore . --editor-cmd pico

419voto

craigb Punkte 16711

Hier ist ein Beispiel für eine Verzeichnisstruktur:

\project
    \source
    \cache
    \other

Wenn in project sehen Sie, dass Ihr Cache-Verzeichnis nicht hinzugefügt ist und als solches angezeigt wird.

> svn st
M  source
?  cache

Um die Eigenschaft "Ignorieren" zu setzen, gehen Sie wie folgt vor

svn propset svn:ignore cache .

wobei svn:ignore ist der Name der Eigenschaft, die Sie einstellen, cache ist der Wert der Immobilie und . ist das Verzeichnis, für das Sie diese Eigenschaft festlegen. Es sollte das übergeordnete Verzeichnis des cache Verzeichnis, das die Eigenschaft benötigt.

Um zu überprüfen, welche Eigenschaften eingestellt sind:

> svn proplist
Properties on '.':
  svn:ignore

Um den Wert von svn:ignore :

> svn propget svn:ignore
cache

So löschen Sie zuvor eingestellte Eigenschaften:

svn propdel svn:ignore

20 Stimmen

Hier gibt es einen heiklen Punkt, über den ich gestolpert bin. Stellen Sie sicher, dass Sie no einen abschließenden Schrägstrich an dirname . Wenn Sie zum Beispiel Folgendes eingeben svn propset svn:ignore dirname Wenn Sie der (Bash-)Shell erlauben, den Verzeichnisnamen für Sie auszufüllen, fügt sie den abschließenden Schrägstrich hinzu, so dass Sie den folgenden Befehl erhalten svn propset svn:ignore dirname/ , was nicht dazu führt, dass der Ordner ignoriert wird. Zumindest war das meine Erfahrung.

7 Stimmen

Das 'cache'-Verzeichnis wird weiterhin in 'svn st' aufgeführt. Gibt es eine Möglichkeit, es aus der Ansicht zu entfernen? (ohne von der Festplatte zu löschen)

136voto

binco Punkte 1588

Wichtig zu erwähnen:

Auf der Kommandozeile können Sie nicht verwenden

svn add *

Dadurch werden auch die ignorierten Dateien hinzugefügt, denn die Befehlszeile erweitert * und daher svn add ist der Ansicht, dass alle Dateien hinzugefügt werden sollen. Verwenden Sie daher stattdessen dies:

svn add --force .

0 Stimmen

Genau das tun, was @binco gesagt hat: svn add --force * wird nicht funktionieren. Verwenden Sie den Punkt, nicht den Stern.

84voto

Kai Punkte 3947

Da ich eine Weile damit verbracht habe, dies zum Laufen zu bringen, ist zu beachten, dass Sie, wenn die Dateien bereits in SVN vorhanden sind, Folgendes tun müssen svn delete und bearbeiten Sie dann die svn:ignore Eigentum.

Ich weiß, das scheint offensichtlich zu sein, aber sie tauchten immer wieder als ? in meinem svn status Liste, obwohl ich dachte, es würde sie einfach lokal ignorieren.

9 Stimmen

Vergessen Sie nicht, beim Löschen der Dateien die Option --keep-local zu verwenden, wenn Sie die Dateien nur ignorieren und nicht wirklich löschen wollen.

77voto

Greg Punkte 10290

Wenn Sie dies mit dem svn-Befehlszeilentool tun, müssen Sie Folgendes eingeben:

svn propedit svn:ignore path/to/dir

was den Text-Editor Ihrer Wahl öffnet, dann geben Sie '*' ein, um alles darin zu ignorieren, und speichern+beenden - dies wird das Verzeichnis selbst in svn aufnehmen, aber alle Dateien darin ignorieren, um das Verzeichnis zu ignorieren, verwenden Sie den Pfad des Elternverzeichnisses und geben Sie dann den Namen des Verzeichnisses in die Datei ein. Führen Sie nach dem Speichern eine Aktualisierung durch ("svn up"), und geben Sie dann den entsprechenden Pfad ein.

8 Stimmen

Sehr guter Punkt, danke. Alle anderen Antworten haben den Fall der verschachtelten Verzeichnisse übersehen. Im obigen Beispiel (das funktioniert) tippt man also in den Editor ignored_directory (das eine Ebene unter path/to/dir liegt). Das funktioniert aber nicht: svn propedit svn:ignore . und dann im Editor path/to/dir/ignored_directory eintippen. D.h.: SVN gleicht Objekte jeweils eine Ebene tiefer ab.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X