Dateien in Mercurial ignorieren

Wenn man Mercurial (Hg) als Sourcecode Management System verwendet, will man keine automatisch erzeugten Dateien in das Repository schreiben. Zum Beispiel Backup-Dateien von Texteditoren (die mit der Tilde), Objektdateien von C oder C++ usw. Dazu legt man in das Projektverzeichnis eine Datei namens .hgignore an, in der man die Dateien oder Verzeichnisse auflistet, die Hg ignorieren soll.

# eine .hgignore-Dummydatei
syntax: glob
bin
*.exe
*~

# zur Regexp-Syntax wechseln
syntax: regexp
^\.pc/

Die Syntax der Datei ist eigentlich ganz einfach. # leitet einen Kommentar ein. Mit syntax: wählt man den Pattern-Stil aus, glob steht für Shell-Stil, und regexp für Python/Perl-Regex. Innerhalb einer Datei kann man auch die syntax wechseln.
Pro Zeile kann ein Verzeichnisname, Dateiname oder ein Dateimuster stehen. Bei Dateimustern bedeutet * für „kann alles sein“.
Soll nicht ein komplettes Unterverzeichnis ignoriert werden, aber darin doch bestimmte Dateien, verweist man auf eine zusätzliche .hgignore Datei: subinclude:path/to/subdir/.hgignore

Mit den Kommandos hg help hgignore und hg help patterns gibt es weiter Hilfe.

Soll eine spezielle Datei, die laut Pattern ignoriert wird, doch unter die Verwaltung von Hg kommen, muss diese Datei explizit mit hg add X hinzugefügt werden (X ist die Datei).

Java EE Webprofile

Eine .hgignore für Java-EE-Projekte könnte so aussehen:

# .hgignore speziell fuer Java EE Web-Profile
syntax: glob
*~
.classpath
.project
target
.settings
.DS_Store
.faces-config.xml.jsfdia
MANIFEST.MF
.idea
*.iml

Wichtig ist das Verzeichnis target in welches z.B. die .class- und WAR-Dateien landen. Bei Java SE wäre es unter Eclipse das Verzeichnis bin.