2009-06-26 8 views
11

Ich habe ein Problem, das ich nicht zu verstehen scheinen. Ich verwende TortoiseHg (Version 0.7.5) unter Windows, aber unter Linux habe ich das gleiche Problem. Hier ist sie:.hgignore Syntax zum Ignorieren nur von Dateien, nicht Verzeichnisse?

Meine .hgignore Datei:

syntax: regexp 
^[^\\/]+$ 

Was ich versuche zu erreichen, um die Ignore-Liste die Dateien hinzufügen, die in der Wurzel des hg-Repository sind.

Zum Beispiel, wenn ich wie dieses:

.hg 
+mydir1 
+mydir2 
-myfile1 
-myfile2 
-anotherfile1 
-anotherfile2 
.hgignore 

Ich möchte myfile1 (2) und anotherfile1 (2) ignoriert (Namen nur zum Zwecke dieses Beispiels werden sollen - sie keine haben einfache Regel, die leicht in die hgignore Datei eingefügt werden kann)

Gibt es etwas, das ich vermisse, weil ich mir ziemlich sicher bin, dass regexp gut ist (ich habe es sogar getestet)? Ideen?

Gibt es einen einfacheren Weg, dies zu erreichen? [zu den Ignorierlistendateien hinzufügen, die sich im Stammverzeichnis des Merkur-Repository befinden]

Antwort

11

Ich habe diese Frage in #mercurial auf irc.freenode.net weitergeleitet und die Antwort war, dass Sie nicht zwischen Dateien und Verzeichnissen unterscheiden können - das Verzeichnis ist ohne den Schrägstrich, nach dem Sie in Ihrer Regexp suchen.

können jedoch, wenn Sie davon ausgehen, dass Ihre Verzeichnisse werden nie ein enthalten Voll stoppen ., aber Ihre Dateien werden dann so etwas wie dies scheint zu funktionieren:

 
^[^/]*\..*$ 

ich es in einem Repository wie folgt getestet :

 
% hg status -ui 
? a.txt 
? bbb 
? foo/x.txt 
? foo/yyy 

die .hgignore Datei hinzufügen gibt:

 
% hg status -ui 
? bbb 
? foo/x.txt 
? foo/yyy 
I .hgignore 
I a.txt 

, die angibt, dass die Datei a.txt in Ihrem Stammverzeichnis korrekt ignoriert wird, aber x.txt im Unterverzeichnis foo nicht. Sie können auch sehen, dass eine Datei mit dem Namen bbb im Stammverzeichnis nicht ignoriert wird. Aber vielleicht können Sie solche Dateien selbst zur Datei .hgignore hinzufügen.

Wenn Sie ein Verzeichnis wie bar.baz in Ihrem Stammverzeichnis haben, dann werden dieses Verzeichnis und alle darin enthaltenen Dateien ignoriert. Ich hoffe, das hilft ein bisschen.

+0

Vielen Dank, es bestätigt meine Überzeugungen. – INS

+0

Sie können es auch für ein Unterverzeichnis tun und php-Dateien wie: 'wpblog/[^ /] * \ .php $' ignorieren – DynamicDan

7

Hier ist ein schmutziger Trick:

Erstellen Sie eine leere Datei ".hidden" in Ihrem Verzeichnis, als .hgignore hinzufügen:

^mydir/(?!\.hidden).+$ 

alle Dateien außer“Dies wird ignoriert im Verzeichnis. versteckt".