Y at-il une option ignore-on-commit dans Mercurial?
Question
Est-il possible d'ignorer les modifications à certains fichiers sur un commit avec Mercurial?
J'ai une situation particulière où nous avons un oracle par défaut fichier tnsnames.ora qui pointe vers 127.0.0.1, mais certains développeurs modifierai pour pointer vers d'autres systèmes, mais nous ne voulons pas changer le fichier par défaut .
Dans la subversion, j'ai simplement ajouté à la validation ignore-on-changelist. Est-il possible de le faire dans Mercurial?
La solution
Si les fichiers que vous souhaitez omettre de la commande « hg commit » sont déjà « suivi », vous devez utiliser l'option -X. Le modèle est passé à -X est assez souple, permettant d'exécuter par exemple:
% hg stat
A etc/foo.conf
M src/bar.c
M lib/libbar/loader.c
% hg commit -X '**.conf'
pour éviter de commettre un fichier avec une extension « .conf », quelle que soit la profondeur dans l'arbre source, il vit. Dans l'espace de travail ci-dessus cela engagerait "src / bar.c" et "lib / libbar / loader.c" mais pas "etc / foo.conf".
Pour exclure plusieurs modèles de noms de fichiers, utilisez plusieurs options -X, i.e.:.
% hg commit -X '**.conf' -X '**.sh'
Autres conseils
Traditionnellement, ce problème résolu en ne versioning le fichier lui-même, mais par versioning une copie de celui-ci comme modèle pour les autres à utiliser.
Alors vous hg mv tnsnames.ora tnsnames.ora-template
, puis engager, puis faire une copie du système de fichiers directement de tnsnames.ora-modèle pour tnsnames.ora et ajouter tnsnames.ora au fichier .hgignore.
Toute modification ultérieure du modèle seront encore repoussées, mais ils changeront pas vraiment l'environnement de travail à moins que quelqu'un copie le modèle du fichier réel.
Vous pouvez alias engager à quelque chose comme « hg commit -X excluded_file.ext » Je ne l'ai jamais utilisé mercurial, donc je vais juste par la page de manuel ici.
Recherchez .hgignore fichier dans la documentation de Mercurial.
est un exemple ici ignorer le fichier.
# use glob syntax.
syntax: glob
*.elc
*.pyc
*~
# switch to regexp syntax.
syntax: regexp
^\.pc/