2010-10-06 6 views
0

Vous avez lutté avec .hgignore de Mercurial pendant un certain temps sous Windows.Mercurial ignorer une partie d'un répertoire

J'ai un dossier nommé Télécharger qui est actuellement vide. Je veux le suivre donc j'ai ajouté un fichier .empty qui fonctionne bien. Je veux ceci pour que les nouveaux développeurs faisant un clone hg obtiennent le document de téléchargement requis pour l'application. Je ne veux jamais que le dossier soit rempli avec quoi que ce soit sur le contrôle de la source lui-même (test de téléchargement à partir d'une machine de développement).

Exemple: Si j'ajoute Public/image.jpg, il ne sera pas suivi.

En outre, je voudrais que le sous-répertoire soit suivi. Donc, si développeur ajoute

Upload/users/.empty Je souhaite que cela soit suivi. Est-ce possible avec regex vaudou?

Est-ce possible avec regex vaudou?

Répondre

4

(et contrairement à svn et cvs) l'ajout d'un fichier remplace le fichier .hgignore, de sorte que vous pouvez mettre ce dans votre .hgignore:

^Uploads/.* 

et votre Upload/.empty que vous avez ajouté sera toujours créé à la mise à jour et ainsi ils obtiendront le répertoire.

Obtenir à ignorer les fichiers en téléchargement, mais pas de ne pas ignorer les fichiers dans les sous-répertoires Upload pourrait être fait avec:

^Uploads/[^/]*$ 

qui dit: ignorer tout ce qui commence par Uploads et n'a pas d'autres barres obliques en elle. Vraiment, vous devriez créer des uploads avec votre script build/install/configure quand c'est possible, pas avec le clone/update.

+0

Vous ne savez pas si j'ai^Téléchargements /.* ne sera pas Uploads/.empty être ignoré? Bon point sur le script de construction ... – jfrobishow

+0

Il serait ignoré * sauf * vous l'ajoutez manuellement. C'est ce que je voulais dire dans cette première phrase. Vous n'avez pas besoin de rendre vos modèles si intelligents que d'exclure vos exceptions, il suffit d'ajouter l'exception et il remplace complètement .hgignore. –

+0

Ah je l'ai maintenant, je ne le savais pas. Cela fonctionne mais j'ai décidé d'arrêter de combattre l'outil de toute façon et d'utiliser un script configure comme vous l'avez suggéré ... – jfrobishow

1

Essayez de mettre

Uploads/(?!.empty) 

dans .hgignore dans In mercurial racine du dépôt

+0

Ne fonctionne pas. J'ai essayé d'ajouter .hgignore avec. * À/Upload et hg st | grep Le téléchargement a montré Upload/.hgignore et Upload/image.jpg – jfrobishow

+0

Ah, désolé, je me suis trompé sur l'endroit où vous pourriez mettre les fichiers hgignore. Essayez ma réponse éditée? Ça marche pour moi maintenant. – rescdsk

+0

Ok cela a fonctionné pour le répertoire de téléchargement racine. Y at-il de toute façon que je puisse autoriser des sous-répertoires? Par exemple, je voudrais que Uploads/users/.empty soit suivi et la même idée pas le reste. – jfrobishow

0

Essayez

^Uploads\b.*/(?!\.empty)[^/]+$ 

Il doit correspondre à tout chemin commençant par Uploads où le texte après la dernière barre oblique (= nom de fichier) est tout sauf .empty.

+0

Fonctionne pour le répertoire principal et les sous-répertoires masqués avec .empty (Uploads/Users/.empty) – jfrobishow

+0

Est-ce bon ou pas? ? –

+0

Eh bien ce que j'essayais de faire est de permettre Uploads \ .empty et rien d'autre à l'intérieur, mais d'autres répertoires (avec des fichiers .empty.Un moyen de préserver une structure de répertoire sans suivre les fichiers en eux. – jfrobishow

Questions connexes