32 votes

ignorer les dossiers dans mercurial

Attention : J'essaie toutes les possibilités énumérées ici : Comment ignorer tout ce qui se trouve sous un dossier dans Mercurial ? .
Aucun ne fonctionne comme je l'espère.

Je veux ignorer tout ce qui se trouve sous le dossier test . Mais ne pas ignorer srcProject\test\TestManager

J'essaie

syntax: glob
test/**

Et il ignore test et srcProject\test\TestManager

Avec :

syntax: regexp
^/test/

C'est la même chose.

Aussi avec :

syntax: regexp
test\\*

J'ai installé TortoiseHG 0.4rc2 avec Mercurial-626cb86a6523+tortoisehg, Python-2.5.1, PyGTK-2.10.6, GTK-2.10.11 sous Windows.

45voto

Ry4an Points 56453

Essayez-le sans la barre oblique après le signe d'insertion dans la version regexp.

^test/

Voici un test :

~$ mkdir hg-folder-ignore
~$ cd hg-folder-ignore
~/hg-folder-ignore$ echo '^test/' > .hgignore
~/hg-folder-ignore$ hg init
~/hg-folder-ignore$ mkdir test
~/hg-folder-ignore$ touch test/ignoreme
~/hg-folder-ignore$ mkdir -p srcProject/test/TestManager
~/hg-folder-ignore$ touch srcProject/test/TestManager/dont-ignore
~/hg-folder-ignore$ hg stat
? .hgignore
? srcProject/test/TestManager/dont-ignore

Remarquez que ignoreme n'apparaît pas et que dont-ignore apparaît.

0 votes

@JaKXz oui, cela fonctionne dans toutes les versions de Mercurial. Ce que vous avez dans votre .hgignore n'est pas passé. Assurez-vous que votre fichier ignore est interprété comme une regex au lieu d'un glob, et ne comptez pas sur ignore pour ignorer des fichiers que vous avez déjà hg add ed. Ignorer n'affecte que la façon dont les fichiers non ajoutés sont listés/traités.

0 votes

Et al. La solution que j'ai trouvée est d'utiliser ceci : syntax: regexp ^SourceFolder\bin ^SourceFolder\gen et pour un fichier nommé .classpath : ^SourceFolder\.classpath

4voto

Nathan Kitchen Points 2729

Vous pouvez utiliser des assertions négatives de type "look-ahead" et "look-behind" de largeur nulle pour spécifier que vous souhaitez ignorer les éléments suivants test uniquement lorsqu'il n'est pas précédé de srcProject et non suivi par TestManager :

syntax: regexp
(?<!srcProject\\)test\\(?!TestManager)

Mercurial utilise des expressions régulières Python, vous pouvez donc trouver plus d'informations sur les assertions de largeur zéro dans la documentation Python : https://docs.python.org/library/re.html#regular-expression-syntax

0 votes

Bien plus compliqué que nécessaire pour résoudre un problème simple. La solution de Ry4an accomplit la même chose d'une manière beaucoup plus simple.

4voto

Dziamid Points 3735

Les deux cas ont fonctionné pour moi (sous linux et Windows) :

syntax: regexp
^backup/     #root folder
nbproject/   #any folder

ou

syntax: glob
./backup/*   #root folder
nbproject/*  #any folder

Cependant, ce n'était pas le cas avant que j'ajoute un lien vers le fichier .hgignore au fichier .hgrc dans mon répertoire :

[ui]
ignore = .hg/.hgignore

Il convient également de mentionner que mercurial ignore les fichiers pour lesquels il est pas de suivi actuellement qui sont ceux qui ont été ajoutés avant que vous ne les ayez configurés pour les ignorer. Donc, ne vous laissez pas décourager par le statut hg qui dit que certains fichiers sont M (modifiés) ou ! (missing) dans les dossiers que vous venez d'ajouter à la liste des ignorés !

4 votes

.hgignore est normalement dans le répertoire racine du référentiel, et non sous .hg .

0voto

Mani Points 444

Créer un fichier .hgignore dans le répertoire racine du référentiel.

Maintenant, ajoutez le contenu suivant dans le fichier .

syntaxe : glob

bin/**

*.DS_Store

Cela supprimera le répertoire bin et tous les fichiers *.DS_Store du référentiel.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X