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).

6voto

Fedir RYKHTIK Punkte 9464

Bash Oneliner für mehrfaches Ignorieren:

svn propset svn:ignore ".project"$'\n'".settings"$'\n'".buildpath" "yourpath"

0 Stimmen

Seit $'somestring' ein Zeichenfolgenliteral mit Escape-Sequenzen angibt, können Sie dies kürzer und einfacher schreiben als svn propset svn:ignore $'.project\n.settings\n.buildpath' "yourpath"

5voto

brainycat Punkte 51

Ich hatte Probleme, verschachtelte Verzeichnisse zu ignorieren; das oberste Verzeichnis, das ich ignorieren wollte, wurde nicht mit "svn status" angezeigt, aber alle Unterverzeichnisse schon. Dies ist wahrscheinlich für alle anderen selbstverständlich, aber ich dachte, ich würde es teilen:

BEISPIEL:

/Stamm

/trunk/cache

/trunk/cache/subdir1

/trunk/cache/subdir2

cd /trunk
svn ps svn:ignore . /cache
cd /trunk/cache
svn ps svn:ignore . *
svn ci

4voto

Sam Watkins Punkte 7162

"Danke" svn für eine so abscheuliche, falsche und schwierige Art, Dateien zu ignorieren.

Also habe ich ein Skript geschrieben svn-ignore-all :

#!/bin/sh

# svn-ignore-all

# usage: 
#   1. run svn status to see what is going on at each step 
#   2. add or commit all files that you DO want to have in svn
#   3. remove any random files that you don't want to svn:ignore
#   4. run this script to svn:ignore everything marked '?' in output of `svn status`

svn status |
grep '^?' |
sed 's/^? *//' |
while read f; do
    d=`dirname "$f"`
    b=`basename "$f"`
    ignore=`svn propget svn:ignore "$d"`
    if [ -n "$ignore" ]; then
        ignore="$ignore
"
    fi
    ignore="$ignore$b"
    svn propset svn:ignore "$ignore" "$d"
done

Um eine bestimmte Liste von Dateien/Pfadnamen zu ignorieren, können wir auch diese Variante verwenden svn-ignore . Ich denke, svn-ignore-all sollte eigentlich wie xargs svn-ignore sein.

#!/bin/sh

# svn-ignore

# usage:
#   svn-ignore file/to/ignore ...

for f; do
    d=`dirname "$f"`
    b=`basename "$f"`
    ignore=`svn propget svn:ignore "$d"`
    if [ -n "$ignore" ]; then
        ignore="$ignore
"
    fi
    ignore="$ignore$b"
    svn propset svn:ignore "$ignore" "$d"
done

Und noch etwas: Ich neige dazu, meine svn-Checkouts mit vielen zufälligen Dateien zu verschmutzen. Wenn es Zeit zum Übertragen ist, verschiebe ich diese Dateien in ein Unterverzeichnis "old" und sage svn, dass es "old" ignorieren soll.

0 Stimmen

Hey Sam, das ist ein schönes Drehbuch. Mir ist eine Frage in den Sinn gekommen: Könnte es sein, dass das Problem daher rührt, dass das Ignorieren eines ganzen Ordners, der Teil des Repositorys ist, nicht funktioniert, so dass wir am Ende mit diesen '?'-Dateien dastehen, die im Grunde genommen geänderte Dateien in Ordnern sind, die wir zur Ignorierliste hinzugefügt haben? Ich frage mich nur, ob es einen Weg gibt, Ihr Skript zu umgehen, da es mühsam wäre, es immer wieder auszuführen. Können Sie das?

0 Stimmen

Nein, ich benutze es nicht wirklich! Ich versuche nur, meine Dateien aufzuräumen.

4voto

The Digital Gabeg Punkte 2725

Wenn Ihr Projektverzeichnis /Projekt heißt und Ihr Cache-Verzeichnis /Projekt/Cache, dann müssen Sie eine Subversion-Eigenschaft auf /Projekt setzen. Der Eigenschaftsname sollte "svn:ignore" und der Eigenschaftswert "Cache" lauten.

Siehe diese Seite im Subversion-Handbuch für weitere Informationen zu Eigenschaften.

4voto

harpo Punkte 39680

Die Antwort von Jason wird ausreichen. Anstatt jedoch svn:ignore auf "." für das Cache-Verzeichnis zu setzen, sollten Sie "cache" in die Datei Elternteil Eigenschaft des Verzeichnisses svn:ignore, falls das Cache-Verzeichnis nicht immer vorhanden ist. Ich mache das bei einer Reihe von "Wegwerfverzeichnissen".

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