J'essaie de faire en sorte que Mercurial ignore un fichier de configuration, mais je n'arrive pas à le faire fonctionner.
J'ai créé un référentiel sur mon serveur avec hg init
et cloné ce référentiel sur mon ordinateur. Je veux ensuite pouvoir modifier le fichier configurationj mais ne pas valider ces modifications sur le serveur.
J'ai essayé de créer un .hgignore
à la racine de mon clone, mais Mercurial marque le fichier avec un ?
et que je le valide ou non, il continue d'enregistrer mes modifications de configuration.
Suis-je en train de créer le .hgignore
fichier au mauvais endroit, ce fichier doit-il être validé? Doit-il être créé avant de lancer le référentiel sur le serveur?
Initiez le dépôt:
$ mkdir test
$ cd test
$ hg init
Créer un fichier
$ touch foo
$ hg st
? foo
Créez maintenant un .hgignore, dans le répertoire racine de votre dépôt:
$ echo 'foo' > .hgignore
foo
est maintenant ignoré:
$ hg st
? .hgignore
Notez que .hgignore n'a pas besoin d'être validé pour que cela fonctionne.
Si le fichier de configuration et un .hgignore (ignorant le fichier de configuration) sont validés dans le référentiel, alors oui, les modifications du fichier de configuration seront suivies (en d'autres termes, .hgignore n'aura aucun effet)
Créer une configuration et la valider
$ touch config
$ hg ci config -Am 'adding conf'
Ignorez-le:
$ echo 'config' >> .hgignore
Validez .hgignore:
$ hg ci .hgignore -Am '.hgignore'
Ensuite, si vous clonez le référentiel:
$ cd ..
$ hg clone test other-user
$ cd other-user
et modifiez la configuration:
$ echo 'new config param' >> config
alors hg montrera les changements:
$ hg st
M config
Vous voulez probablement avoir un fichier de configuration par défaut principal, qui est versionné, dans le référentiel, global.cfg
Et vous demanderez aux utilisateurs de créer un local.cfg
où ils mettront leurs paramètres locaux. Et votre script source le local.cfg
si présent: les paramètres locaux remplacent les paramètres globaux. Bien sûr, ajoutez une ligne à .hgignore
ignorer local.cfg
;)
Alternative: pas de fichier de configuration global, seulement un config.example
que les utilisateurs copient et modifient localement. Le problème ici est que vous ne suivrez pas facilement les changements entre les versions.
Même si vous avez ignoré les fichiers, Mercurial les suivra une fois qu'ils auront été ajoutés au référentiel.
Pour supprimer votre fichier de configuration du référentiel, vous pouvez utiliser
hg remove -Af file.cfg
Cela supprimera le fichier du référentiel (une fois validé) sans supprimer votre fichier local. Voir hg help remove
Cependant, il y a maintenant une suppression enregistrée dans le dépôt, et Mercurial supprimera ce fichier lorsque votre ou quelqu'un d'autre mettra à jour cette révision.
Vous pouvez également le renommer et demander aux utilisateurs de copier le masque dans leur fichier local, mais vous devrez coordonner les mises à jour du fichier local.
hg rename file.cfg file.cfg.example
Ajoutez le fichier .hgignore lui-même au fichier .hgignore:
syntax: glob
.hgignore
ou, vérifiez simplement le fichier .hgignore dans votre clone local ...