2008-10-31 6 views
141

Je cherche une expression pour le fichier .hgignore, pour ignorer tous les fichiers sous un dossier spécifié.Comment puis-je ignorer tout sous un dossier dans Mercurial

par exemple: Je voudrais d'ignorer tous les fichiers et dossiers sous bin

En fait, des conseils sur la façon dont les expressions sont formés serait grand

Répondre

159

Alternativement:

syntax: glob 
bin/** 
+0

c'est beaucoup plus facile je pense :) – Xian

+2

On dirait que "bin" (sans guillemets) fonctionne ... – PhiLho

+0

PhiLho, je pense que cela permettrait également de filtrer les fichiers nommés bin –

2

de Nevermind, je l'ai

syntax: regexp 
bin\\* 

expressions suivre la syntaxe d'expression régulière perl standard.

+2

En effet, et votre expression signifie « fichier ou un dossier se terminant par bin et suivi de 0 ou plus antislashs » ... Il fonctionne parce que la barre oblique inverse est réduit à néant par le *, mais il vaut quoi que ce soit avec "bin" à l'intérieur. Sous Windows, hg remplace \ par/avant la correspondance. – PhiLho

8

ces deux filtrera également un répertoire appelé cabin, ce qui pourrait ne pas être ce que vous voulez. Si vous êtes le filtrage de haut niveau, vous pouvez utiliser:

^/bin/ 

Pour bin répertoires sous votre racine, vous pouvez omettre le ^. Il n'est pas nécessaire de spécifier la syntaxe, regexp est la valeur par défaut.

+3

Cela n'ignorera rien. Le curseur ne dit que des choses dans la racine du repo mais la barre oblique n'attrape que les dirs qui ne sont pas dans la racine du repo. –

0

à ignorer les fichiers .class

syntax: regexp 
?\.class 
+1

Syntaxe regex incorrecte ... – PhiLho

48

Je l'ai fait quelques expériences et j'ai trouvé que la syntaxe regex sous Windows applique au chemin commençant par le référentiel actuel, avec des barres obliques inverses transformées à barres obliques. Donc, si votre dépôt est dans E: \ Dev par exemple, hg status appliquera les motifs à foo/bar/file1.c et autres. Les ancres s'appliquent à ce chemin.

Alors:

  • Glob applique aux éléments de chemin et s'enracine à des parties d'éléments
  • foo correspond à un dossier (ou fichier) foo nommé (pas "foobar" ni "barfoo")
  • * foo * correspond à un dossier ou un fichier avec "foo" au nom
  • foo/bar * correspond à tous les fichiers dans le dossier "foo" en commençant par "bar"


  • Regex est sensible à la casse, non ancré
  • Bien sûr, backslash regex caractères spéciaux tels que. (point)
  • /correspond \ séparateur de chemin d'accès sur Windows. \ ne correspond pas à ce séparateur ...
  • foo correspond à tous les fichiers et dossiers avec "foo" dans
  • foo/correspond uniquement les dossiers se terminant par "foo"
  • /foo/correspond au dossier "foo" quelque part dans le chemin
  • /foo/bar/correspond au dossier « bar » dans le dossier « foo » quelque part dans le chemin
  • ^foo correspond fichier ou un dossier à partir de foo à la racine du dépôt
  • foo matches $ fichier se terminant par foo

J'espère que cela aidera, j'ai trouvé la page HGIGNORE(5) un peu succincte.

+0

+1 c'est ce que j'appelle une bonne réponse, applaudissements – NSGaga

+0

J'ai le modèle '' [Dd] ebug */'' en cours d'utilisation et l'étrange Chose est, qu'il filtre aussi ** fichiers * * comme '' debug.txt '' –

0

Syntaxe: glob bin/**

Cette réponse est indiqué ci-dessus, mais je voudrais aussi ajouter que * et ** sont traités différemment. ** est récursif, * ne l'est pas.

Voir Hg Patterns

Questions connexes