La syntaxe .hgignore pour ignorer uniquement les fichiers, pas les répertoires?
Question
J'ai un problème que je n'arrive pas à comprendre. J'utilise TortoiseHg (version 0.7.5) sous Windows, mais j'ai le même problème sous Linux. La voici:
Mon .hgignore
fichier:
syntax: regexp
^[^\\/]+$
Ce que je cherche à faire est d’ajouter à la liste des fichiers ignorés les fichiers qui se trouvent à la racine du référentiel hg.
Par exemple si j'ai comme ceci:
.hg
+mydir1
+mydir2
-myfile1
-myfile2
-anotherfile1
-anotherfile2
.hgignore
Je veux que monfichier1 (2) et un autrefichier1 (2) soient ignorés (les noms ne servent que pour cet exemple - ils n'ont pas une simple règle qui puisse être facilement insérée dans le fichier hgignore)
Y a-t-il quelque chose qui me manque parce que je suis à peu près sûr que l'expression rationnelle est bonne (je l'ai même testée)? Des idées?
Existe-t-il un moyen plus simple d'y parvenir? [pour ajouter à la liste des fichiers ignorés qui se trouvent à la racine du référentiel mercurial]
La solution
J'ai relayé cette question dans #mercurial
sur irc.freenode.net et la réponse a été que vous ne pouvez pas distinguer les fichiers et les répertoires & # 8212; le répertoire est mis en correspondance sans la barre oblique que vous recherchez dans votre expression rationnelle.
Toutefois, si vous pouvez supposer que vos répertoires ne contiendront jamais un <-> arrêt complet, mais que vos fichiers le seront, quelque chose comme cela semble fonctionner:
^[^/]*\..*$
Je l'ai testé dans un référentiel comme celui-ci:
% hg status -ui ? a.txt ? bbb ? foo/x.txt ? foo/yyy
Ajouter le fichier .
donne:
% hg status -ui ? bbb ? foo/x.txt ? foo/yyy I .hgignore I a.txt
indique que le fichier .hgignore
est correctement ignoré dans votre répertoire racine, mais que a.txt
dans le sous-répertoire x.txt
ne l’est pas. Vous pouvez également constater qu'un fichier nommé juste foo
dans le répertoire racine n'est pas ignoré. Mais peut-être pouvez-vous ajouter vous-même ces fichiers au bbb
fichier.
Si vous avez un répertoire tel que bar.baz
dans votre répertoire racine, alors ce répertoire et tous les fichiers qu'il contient seront ignorés. J'espère que cela aide un peu.
Autres conseils
Voici un truc sale:
Créez un fichier vide ". .hidden " dans votre répertoire, que d'ajouter à .hgignore:
^mydir/(?!\.hidden).+$
Ceci ignorera tous les fichiers du répertoire sauf " .hidden ".
.