65 votes

Mercurial ignore file

Je vais essayer d'obtenir Mercurial ignorer un fichier de configuration, mais je ne suis pas pour le faire fonctionner.

J'ai créé un dépôt sur mon serveur avec hg init et cloné qui référentiel de mon ordinateur. Je veux être en mesure de modifier le configurationj fichier, mais pas commettre ces modifications sur le serveur.

J'ai essayé de créer un .hgignore à la racine de mon clone, mais Mercurial drapeaux le fichier avec l' ? et si je m'engage ou pas, il continue de journal de mes changements de configuration.

Suis-je de la création de l' .hgignore le fichier au mauvais endroit, ce fichier doit être engagée? Est-il besoin d'être créé avant que je initialisation du référentiel sur le serveur?

69voto

NicDumZ Points 5566
  • .hgignore n'a pas besoin d'être créé avant d'init
  • Le fichier de configuration sera utilisée par les autres, vous feriez mieux de commettre l' .hgignore alors que d'autres n'ont pas à le créer, mais ce n'est pas nécessaire pour mercurial ignorer vos fichiers locaux (voir l'exemple)
  • Oui .hgignore doit être dans le répertoire racine

Exemple Simple.

Init le repo:

$ mkdir test 
$ cd test 
$ hg init

Créer un fichier

$ touch foo 
$ hg st 
? foo

Maintenant, créez une .hgignore, dans le répertoire racine de votre repo:

$ echo 'foo' > .hgignore

foo est maintenant ignorée:

$ hg st 
? .hgignore

Notons que .hgignore n'a pas besoin d'être engagé pour que cela fonctionne.

Un peu plus compliqué

Si le fichier de configuration et un .hgignore (en ignorant le fichier de config), se sont engagés dans l'opération, alors oui, le fichier de configuration changements seront suivis (en d'autres mots, .hgignore n'aura aucun effet)

La création de config et de la commettre

$ touch config
$ hg ci config -Am 'adding conf'

L'ignorer:

$ echo 'config' >> .hgignore

Commettre .hgignore:

$ hg ci .hgignore -Am '.hgignore'

Alors si vous cloner le repo:

$ cd ..
$ hg clone test other-user
$ cd other-user

et modifier la config:

$ echo 'new config param' >> config

puis hg montrera les changements:

$ hg st
M config

La façon de traiter ce problème?

Vous souhaitez probablement l'un des principaux fichiers de configuration par défaut, qui est versionné, dans le référentiel, global.cfg

Et vous demandez aux utilisateurs de créer un local.cfg où ils vont mettre leur milieu local. Et le script sera source de l' local.cfg le cas échéant: les paramètres locaux de remplacer le. Bien sûr, ajouter une ligne d' .hgignore d'ignorer local.cfg ;)

Alternative: aucun fichier de config, seulement un config.example que les utilisateurs de copier et de modifier localement. Le con ici c'est que vous n'aurez pas à garder une trace facilement des modifications entre les versions.

29voto

Justin Love Points 3073

Même si vous avez les fichiers ignorés, Mercurial allons les suivre une fois qu'ils ont été ajoutés au référentiel.

Pour supprimer votre fichier de configuration à partir du référentiel, vous pouvez utiliser

hg remove -Af file.cfg

Cela permettra d'éliminer le fichier à partir du référentiel (une fois) sans supprimer votre fichier local. Voir hg help remove Cependant, il est maintenant de supprimer un enregistrement dans le repo, et Mercurial permettra de supprimer ce fichier lorsque vous ou quelqu'un d'autre les mises à jour dans le cadre de cette révision.

Vous pouvez également renommer, et que les gens de copier le maître à leurs fichiers local, mais vous aurez besoin de coordonner la mise à jour du fichier local.

hg rename file.cfg file.cfg.example

15voto

John Weldon Points 19132

Ajoutez le fichier .hgignore lui-même au fichier .hgignore:

 syntax: glob

.hgignore
 

ou, il suffit de vérifier le fichier .hgignore dans votre clone local ...

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: