.hgignore Syntax für nur Dateien zu ignorieren, keine Verzeichnisse?
Frage
Ich habe ein Problem, das ich nicht zu verstehen scheinen. Ich verwende TortoiseHg (Version 0.7.5) auf Windows, sondern auf Linux Ich habe das gleiche Problem. Hier ist sie:
Meine .hgignore
-Datei:
syntax: regexp
^[^\\/]+$
Was ich versuche zu erreichen, um die Ignore-Liste die Dateien, die in der Wurzel der hg-Repository hinzuzufügen.
Zum Beispiel, wenn ich wie folgt aussehen:
.hg
+mydir1
+mydir2
-myfile1
-myfile2
-anotherfile1
-anotherfile2
.hgignore
Ich möchte myfile1 (2) und anotherfile1 (2) ignoriert werden (Namen sind nur für die Zwecke dieses Beispiel - sie keine einfache Regel, die in der hgignore Datei gesetzt werden kann leicht)
Gibt es etwas, ich vermisse, weil ich ziemlich sicher bin, dass regexp gut (ich es selbst getestet)? Ideen?
Gibt es einen einfacheren Weg, dies zu erreichen? [Auf die Ignore-Liste Dateien hinzufügen, die in der Wurzel des Mercurial-Repository sind]
Lösung
weitergeleitet ich diese Frage in #mercurial
auf irc.freenode.net und die Antwort war, dass man nicht zwischen Dateien und Verzeichnissen unterscheiden -. Das Verzeichnis ohne slash abgestimmt ist, die Sie in Ihrem regexp sind
Wenn Sie jedoch kann man davon ausgehen, dass Ihre Verzeichnisse werden nie eine voll-stop .
enthalten, aber Ihre Dateien werden, dann arbeiten so etwas wie dies scheint:
^[^/]*\..*$
Ich habe es getestet in einem Repository wie folgt aus:
% hg status -ui ? a.txt ? bbb ? foo/x.txt ? foo/yyy
Das Hinzufügen der .hgignore
Datei gibt:
% hg status -ui ? bbb ? foo/x.txt ? foo/yyy I .hgignore I a.txt
, die anzeigt, dass die a.txt
Datei korrekt in Ihrem Stammverzeichnis ignoriert wird, aber x.txt
im foo
Unterverzeichnis nicht. Sie können auch sehen, dass eine Datei mit dem Namen nur im Stammverzeichnis bbb
ist nicht ignoriert. Aber vielleicht können Sie solche Dateien hinzufügen, sich auf die .hgignore
Datei.
Wenn Sie ein Verzeichnis wie bar.baz
in Ihrem Stammverzeichnis haben passieren, dann ist dieses Verzeichnis und alle darin enthaltenen Dateien werden ignoriert. Ich hoffe, das hilft ein wenig.
Andere Tipps
Hier ist ein schmutziger Trick:
eine leere Datei in Ihrem Verzeichnis erstellen ".hidden", als in dem .hgignore:
^mydir/(?!\.hidden).+$
Damit werden alle Dateien im Verzeichnis mit Ausnahme von „.hidden“.
ignorieren