Wie ignoriere ich Dateien in Subversion?
Frage
Wie ignoriere ich Dateien in Subversion?
Auch, wie finde ich Dateien, die nicht unter Versionskontrolle sind?
Lösung
(Diese Antwort wurde aktualisiert SVN übereinstimmen 1.8 und 1.9 Verhalten)
Sie haben 2 Fragen:
Marking-Dateien als ignoriert:
Mit dem „ignoriert Datei“ meine ich die Datei in Listen nicht einmal als „unversionierte“ erscheint. Ihr SVN-Client wird die Datei so tun, als gar nicht existiert im Dateisystem
Ignoriert Dateien werden durch ein „Dateimuster“ angegeben. Die Syntax und das Format von Dateimustern werden in SVN Online-Dokumentation erklärt: http://svnbook.red-bean.com/nightly/en/svn.advanced.props.special.ignore.html "File Patterns in Subversion".
Subversion, ab Version 1.8 (Juni 2013) und später unterstützt 3 verschiedene Arten von Dateimuster angeben. Hier ist eine Zusammenfassung mit Beispielen:
1 - Runtime Configuration Area - global-ignores
Option:
- Dies ist eine Client-Seite nur Einstellung, so dass Ihre
global-ignores
Liste wird nicht von anderen Benutzern geteilt werden, und es gilt für all repos Sie auf Ihren Computer Kasse. - Diese Einstellung wird in der Runtime-Konfigurationsbereich-Datei definiert:
- Fenster (dateibasiert) -
C:\Users\{you}\AppData\Roaming\Subversion\config
- Fenster (Registry-basiert) -.
Software\Tigris.org\Subversion\Config\Miscellany\global-ignores
sowohlHKLM
undHKCU
- Linux / Unix -
~/.subversion/config
- Fenster (dateibasiert) -
2 - Die svn:ignore
Eigenschaft, die auf Verzeichnisse (keine Dateien) festgelegt ist:
- Dies wird im Repo gespeichert, so dass andere Benutzer die gleichen ignorieren Dateien. Ähnlich wie
.gitignore
funktioniert. -
svn:ignore
wird auf Verzeichnisse angelegt und ist nicht rekursiven oder vererbt. Jede Datei oder sofort Unterverzeichnis des übergeordneten Verzeichnisses, das die Dateimuster übereinstimmt, werden ausgeschlossen. -
Während SVN 1.8 das Konzept der "vererbten Eigenschaften", fügt die
svn:ignore
Eigenschaft selbst in nicht-unmittelbaren Nachkommen Verzeichnisse ignoriert wird:cd ~/myRepoRoot # Open an existing repo. echo "foo" > "ignoreThis.txt" # Create a file called "ignoreThis.txt". svn status # Check to see if the file is ignored or not. > ? ./ignoreThis.txt > 1 unversioned file # ...it is NOT currently ignored. svn propset svn:ignore "ignoreThis.txt" . # Apply the svn:ignore property to the "myRepoRoot" directory. svn status > 0 unversioned files # ...but now the file is ignored! cd subdirectory # now open a subdirectory. echo "foo" > "ignoreThis.txt" # create another file named "ignoreThis.txt". svn status > ? ./subdirectory/ignoreThis.txt # ...and is is NOT ignored! > 1 unversioned file
(also die Datei
./subdirectory/ignoreThis
nicht ignoriert wird, obwohl "ignoreThis.txt
" auf der.
Repo-Wurzel angewandt). -
Daher eine Ignore-Liste anwenden rekursiv müssen Sie
svn propset svn:ignore <filePattern> . --recursive
verwenden.- Dadurch wird eine Kopie des Objekts auf jedem Unterverzeichnis erstellen.
- Wenn der
<filePattern>
Wert unterscheidet sich in einem Unterverzeichnis dann Wert des Kindes vollständig die Eltern außer Kraft gesetzt, so dass es keine „additive“ -Effekt. - Wenn Sie also das
<filePattern>
auf der Wurzel.
ändern, dann müssen Sie es mit--recursive
ändern Sie es auf das Kind und Nachkomme Verzeichnisse zu überschreiben.
-
Ich nehme zur Kenntnis, dass die Befehlszeilensyntax ist kontraintuitiv.
- Ich begann-off davon aus, dass Sie so etwas wie
svn ignore pathToFileToIgnore.txt
, indem Sie dies ist jedoch nicht, wie SVN die Funktion funktioniert ignorieren. eine Datei im SVN ignorieren
- Ich begann-off davon aus, dass Sie so etwas wie
3- Die svn:global-ignores
Eigenschaft. Benötigt SVN 1.8 (Juni 2013):
- Dies ist ähnlich
svn:ignore
, außer es Verwendung von SVN 1.8 der „vererbten Eigenschaften“ Funktion macht. - Vergleichen auf
svn:ignore
wird das Dateimuster in jedem Nachkommen Verzeichnis (nicht nur unmittelbare Kinder) automatisch übernommen.- Das bedeutet, dass nicht erforderlich ist
svn:global-ignores
mit dem--recursive
Flag zu setzen, wie ignorieren Dateimuster vererbt werden automatisch angelegt, wie sie vererbt sind.
- Das bedeutet, dass nicht erforderlich ist
-
Ausführen des gleichen Befehlssatz wie im vorherigen Beispiel, aber mit
svn:global-ignores
statt:cd ~/myRepoRoot # Open an existing repo echo "foo" > "ignoreThis.txt" # Create a file called "ignoreThis.txt" svn status # Check to see if the file is ignored or not > ? ./ignoreThis.txt > 1 unversioned file # ...it is NOT currently ignored svn propset svn:global-ignores "ignoreThis.txt" . svn status > 0 unversioned files # ...but now the file is ignored! cd subdirectory # now open a subdirectory echo "foo" > "ignoreThis.txt" # create another file named "ignoreThis.txt" svn status > 0 unversioned files # the file is ignored here too!
Für TortoiseSVN Nutzer:
Diese ganze Anordnung für mich war verwirrend, weil TortoiseSVN Terminologie (wie in ihrem Windows-Explorer-Menüsystem verwendet wird) wurde zunächst mir irreführend - ich war nicht sicher, was die Bedeutung des Menüs Ignorieren „Add rekursiv“, „hinzufügen *“ und „hinzufügen“, opgen. Ich hoffe, dieser Beitrag wird erläutert, wie die Funktion Bindungen-in zum SVN-Eigenschaften Funktion ignorieren. Das heißt, ich schlage vor, die Befehlszeile ignorierten Dateien zu setzen, so dass Sie ein Gefühl dafür bekommen, wie es funktioniert, anstatt die GUI verwenden, und nur die GUI-Eigenschaften zu manipulieren, nachdem Sie mit der Kommandozeile vertraut sind.
Listing-Dateien, die ignoriert werden:
Der Befehl svn status
wird ignoriert Dateien verstecken (das heißt, Dateien, die ein RGA global-ignores
Muster entsprechen, oder ein sofortiges svn:ignore
Muster übergeordnetes Verzeichnisses des Übereinstimmen oder jedes svn:global-ignores
Muster der ancesor Verzeichnisses entsprechen.
Mit der Option --no-ignore
die Dateien aufgelistet, um zu sehen. Ignoriert Dateien einen Status I
haben, dann leiten Sie die Ausgabe, um nur Linien grep
beginnend mit „I“.
Der Befehl lautet:
svn status --no-ignore | grep "^I"
Zum Beispiel:
svn status
> ? foo # An unversioned file
> M modifiedFile.txt # A versioned file that has been modified
svn status --no-ignore
> ? foo # An unversioned file
> I ignoreThis.txt # A file matching an svn:ignore pattern
> M modifiedFile.txt # A versioned file that has been modified
svn status --no-ignore | grep "^I"
> I ignoreThis.txt # A file matching an svn:ignore pattern
ta-da!
Andere Tipps
Verwenden Sie den folgenden Befehl, um eine Liste nicht unter Versionskontrolle von Dateien zu erstellen.
svn status | grep "^\?" | awk "{print \$2}" > ignoring.txt
Dann bearbeiten Sie die Datei auf verlassen nur die Dateien, die Sie eigentlich zu wollen, ignorieren . Dann diese benutzen, um die Dateien zu ignorieren in der Datei aufgelistet:
svn propset svn:ignore -F ignoring.txt .
Beachten Sie den Punkt am Ende der Zeile. Es sagt SVN, dass das Eigentum auf dem aktuellen Verzeichnis festgelegt wird.
Datei löschen:
rm ignoring.txt
Schließlich verpflichten,
svn ci --message "ignoring some files"
Sie können dann überprüfen, welche Dateien ignoriert über:
svn proplist -v
Wenn Sie mit TortoiseSVN der rechten Maustaste auf eine Datei und wählen Sie dann TortoiseSVN / Den ignorieren Liste . Dadurch wird die Datei / Wildcard in der svn:ignore
Eigenschaft hinzuzufügen.
svn:ignore
wird geprüft werden, wenn Sie in Dateien werden überprüft, und passende Dateien werden ignoriert. Ich habe die Liste für ein Projekt von Visual Studio .NET folgende ignorieren:
bin obj
*.exe
*.dll
_ReSharper
*.pdb
*.suo
Sie können diese Liste im Kontextmenü finden Sie unter TortoiseSVN / Eigenschaften .
Sie können eine Datei oder ein Verzeichnis wie .gitignore ignorieren. Erstellen Sie einfach eine Textdatei der Liste der Verzeichnisse / Dateien möchten Sie ignorieren und den Code auszuführen unter:
svn propset svn:ignore -F ignorelist.txt .
oder, wenn Sie nicht über eine Textdatei verwenden möchten, können Sie es tun wie folgt aus:
svn propset svn:ignore "first
second
third" .
Quelle: Karsten Blog - Set svn: ignore für mehrere Dateien von der Kommandozeile
ich den Artikel gefunden .svnignore Beispiel für Java .
Beispiel: .svnignore für Ruby on Rails,
/log
/public/*.JPEG
/public/*.jpeg
/public/*.png
/public/*.gif
*.*~
Und danach:
svn propset svn:ignore -F .svnignore .
Beispiele für .gitignore. Sie können für Ihre .svnignore verwenden
Wie niemand scheint es, erwähnt zu haben ...
svn propedit svn:ignore .
Dann wird der Inhalt der Datei bearbeiten, um die Muster angeben, um den Editor zu ignorieren, verlassen und Sie sind alles getan.
Wenn propedit verwenden, stellen Sie sicher, dass keine Leerzeichen haben wie die bewirkt, dass die Datei von der Ignore-Liste ausgeschlossen werden.
Diese werden automatisch eingefügt, wenn Sie verwenden Tabula die automatische Vervollständigung auf Linux haben die Datei zu erstellen beginnen mit:
svn propset svn:ignore 'file1
file2' .
Eine andere Lösung ist:
svn st | awk '/^?/{print $2}' > svnignore.txt && svn propget svn:ignore >> svnignore.txt && svn propset svn:ignore -F svnignore.txt . && rm svnignore.txt
oder Zeile für Zeile
svn st | awk '/^?/{print $2}' > svnignore.txt
svn propget svn:ignore >> svnignore.txt
svn propset svn:ignore -F svnignore.txt .
rm svnignore.txt
Was es tut:
- Ruft die Statusdateien aus dem SVN
- Speichert alle Dateien mit ? in der Datei "svnignore.txt"
- Ruft die bereits ignoriert Dateien und fügt sie in die Datei „svnignore.txt“
- Weist den SVN die Dateien in "svnignore.txt" zu ignorieren
- Entfernt die Datei
Auch wenn Sie Tortoise SVN verwenden Sie können dies tun:
- Im Kontextmenü wählen Sie "TortoiseSVN", dann auf "Eigenschaften"
- Im erscheinenden Fenster klicken Sie auf "Neu", dann auf "Erweitert"
- Im erscheinenden Fenster gegenüber „Eigenschaftsname“ wählen oder „svn: ignore“ geben, gegenüber dem „Eigenschaftswert“ Typ gewünschte Dateinamen oder Ordnernamen oder Dateimaske (in meinem Fall war es „* / target“), klicken Sie auf „Eigenschaft rekursiv“
- Ok. Ok.
- Commit
Eine lesbare Version von bkbilly Antwort:
svn st | awk '/^?/{print $2}' > svnignore.txt
svn propget svn:ignore >> svnignore.txt
svn propset svn:ignore -F svnignore.txt .
rm svnignore.txt
Was es tut:
- Ruft die Statusdateien aus dem SVN
- Speichert alle Dateien mit ? in der Datei "svnignore.txt"
- Ruft die bereits ignoriert Dateien und fügt sie in die Datei „svnignore.txt“
- Weist den SVN die Dateien in "svnignore.txt" zu ignorieren
- Entfernt die Datei
- cd ~ / .subversion
- open Config
- finden Sie die Zeile wie 'global-ignores'
- set Dateityp wie diese ignorieren. Global-ignores = * .o * .lo * .la * .al .libs * .so .so [0-9] * .pyc * .pyo 88 * .rej ~ # #. # *. *. Swp .DS_Store node_modules Ausgang
Sie können auch ein globales ignorieren Muster in SVN der Konfigurationsdatei festgelegt.
svn status
wird Ihnen sagen, welche Dateien nicht in SVN, als auch, was sich geändert hat.
Schauen Sie sich die SVN Eigenschaften für die ignore Eigenschaft.
Für alle Dinge SVN, die Red Book Lesung erforderlich ist .
ein Verzeichnis Subversion Hinzufügen, und ignorieren Sie das Verzeichnis Inhalt
svn propset svn:ignore '\*.*' .
oder
svn propset svn:ignore '*' .
SVN ignore
ist einfach in TortoiseSVN zu verwalten. Öffnen Sie TortoiseSVN und Rechtsklick auf Datei-Menü wählen Sie dann hinzufügen Liste ignorieren.
Dadurch werden die Dateien in der svn:ignore
Eigenschaft hinzufügen.
Wenn wir in den Dateien dann diese Datei überprüft, die mit svn:ignore
abgestimmt ist, die ignoriert werden und wird nicht begehen.
In Visual Studio-Projekt haben wir folgende Dateien hinzugefügt zu ignorieren:
bin obj
*.exe
*.dll
*.pdb
*.suo
Wir verwalten Quellcode auf SVN von Comparetrap mit dieser Methode erfolgreich
Mit dem Befehl svn status auf der Arbeitskopie den Status von Dateien anzuzeigen, Dateien, die noch nicht unter Versionskontrolle sind (und nicht ignoriert) wird neben ihnen ein Fragezeichen.
Wie für Dateien ignorieren müssen Sie die SVN bearbeiten: ignore Eigenschaft, lesen Sie das Kapitel Ignorieren Unversioned Angebote im svnbook unter http://svnbook.red-bean.com/en/1.5/svn.advanced.props.special.ignore.html . Das Buch beschreibt auch mehr über SVN-Status verwendet wird.
- Öffnen Sie verwenden JetBrains Produkt (d. PyCharm)
- klicken Sie dann auf die ‚commit‘ -Taste auf der oberen Symbolleiste oder verwenden Abkürzung ‚ctrl + k‘ screenshot_toolbar
- auf der Schnittstelle verpflichten, Ihre unerwünschten Dateien auf einem anderen Änderungsliste bewegt wie folgt. screenshot_commit_change
- nächstes Mal, wenn Sie nur Standard-Änderungsliste begehen können.