2009-06-26 10 views
11

J'ai un problème que je n'arrive pas à comprendre. J'utilise TortoiseHg (version 0.7.5) sous Windows mais sous Linux j'ai le même problème. Ici, il est:Syntaxe .hgignore pour ignorer uniquement les fichiers, pas les répertoires?

Mon fichier .hgignore:

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

Ce que je suis en train de réaliser est d'ajouter à la liste des éléments ignorés les fichiers qui sont à la racine du référentiel hg.

Par exemple, si je présente comme suit:

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

Je veux myfile1 (2) et anotherfile1 (2) à ignorer (les noms sont uniquement dans le but de cet exemple - ils n'ont pas règle simple qui peut être mise dans le fichier hgignore facilement)

Y at-il quelque chose qui me manque parce que je suis assez sûr que regexp est bon (je l'ai même testé)? Des idées?

Existe-t-il un moyen plus simple d'y parvenir? [pour ajouter aux fichiers ignorer la liste qui se trouvent à la racine du référentiel mercurial]

Répondre

11

J'ai relayé cette question dans sur irc.freenode.net et la réponse était que vous ne pouvez pas faire la distinction entre fichiers et répertoires - le répertoire est apparié sans la barre oblique que vous recherchez dans votre expression rationnelle.

Cependant, si vous pouvez supposer que vos répertoires ne contiennent jamais un arrêt complet ., mais vos fichiers, alors 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 

Ajout du fichier .hgignore donne:

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

qui indique que le fichier a.txt est correctement ignoré dans votre répertoire racine, mais x.txt dans le sous-répertoire foo ne l'est pas. Vous pouvez également voir qu'un fichier nommé juste bbb dans le répertoire racine est et non ignoré. Mais peut-être que vous pouvez ajouter ces fichiers vous-même au fichier .hgignore.

Si vous avez un répertoire comme 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.

+0

Merci beaucoup, cela confirme mes convictions. – INS

+0

Vous pouvez également le faire pour un sous-répertoire et ignorer les fichiers php comme: 'wpblog/[^ /] * \. Php $' – DynamicDan

7

Voici un sale tour:

Créez un fichier vide « .hidden » dans votre répertoire, que d'ajouter à .hgignore:

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

Ceci permet d'ignorer tous les fichiers du répertoire sauf ». caché".

Questions connexes