Question

Normalement, j'activer les extensions en ajoutant ce qui suit à .hg/hgrc:

[extensions]
hgext.win32text=
[encode]
** = cleverencode:
[decode]
** = cleverdecode:

Cependant, je veux que cette configuration soit versionné, à savoir une partie du dépôt, de sorte qu'il est permis pour quelqu'un d'autre (collègues, construire des machines) cloner le dépôt. Notez que le dépôt des clones devrait quel que soit leur ne soit pas tenu de le faire quoi que ce soit pour activer ces extensions.

Il semble qu'il est impossible de la documentation , mais personne ne sait tout astuces intéressantes qui peuvent me aider?

Était-ce utile?

La solution

Vous voulez mercurial faire quelque chose automatiquement lorsque vous clonez un repo (mise à jour des crochets ou config). Documentation indique qu'il est impossible et donne de très bonnes raisons:

Hooks do not propagate

In Mercurial, hooks are not revision controlled, and do not propagate when you clone,
or pull from, a repository. The reason for this is simple: a hook is a completely    
arbitrary piece of executable code. It runs under your user identity, with your 
privilege level, on your machine. No comments

It would be extremely reckless for any distributed revision control system to 
implement revision-controlled hooks, as this would offer an easily exploitable way to 
subvert the accounts of users of the revision control system. No comments

Il est donc clair, Mercurial se ne résoudra pas votre problème. Vous déclarez clairement que vous voulez, mais rien Mercurial pour résoudre votre problème, donc la réponse est: ce que vous demandez est impossible

.

La seule façon de résoudre votre problème est que tous vos utilisateurs devront exécuter / installer au moins une fois un script donné qui exécutent les actions que vous voulez, quelque chose comme l'installation des crochets du droit.

Si vous voulez être intelligent à ce sujet:

  • créer un script unique pour exécuter qui va installer un crochet pour copier la configuration à droite dans le .hg ou l'utilisateur
  • Assurez-vous que le crochet, une fois installé, peut mettre à jour le script pour distribuer des mises à jour de configuration aux utilisateurs
  • le crochet ajouter une marque spéciale pour commettre des messages
  • refuser le dépôt central engager qui ne portent pas le message spécial

Un peu compliqué, mais qui est le plus proche, je peux imaginer à vos besoins:

  • utilisateur exécuter une fois un script et ils oublient
  • vous pouvez vous assurer que si le ne l'ont pas fait, ils ne peuvent pas engager à votre repo central

Autres conseils

La version actuelle du développement de Mercurial (à paraître comme Mercurial 1.3 le 1er Juillet) soutient une directive dans ses %include fichiers de configuration.

Cela signifie que vous pouvez demander aux gens de mettre

%include ../common-hgrc

dans .hg/hgrc. Après avoir fait cela, vous pouvez contrôler efficacement leurs paramètres Mercurial en engageant des changements à common-hgrc. Quand ils tirent le changement, les nouveaux paramètres prennent effet.

Prenez note que ceci est dangereux: quelqu'un qui peut vous amener à tirer des changements dans votre référentiel peut maintenant insérer des crochets arbitraires dans hg status et vous les exécuter sur la commande suivante Mercurial (même une ligne de commande « safe » < =>).

Vous pourriez être en mesure de résoudre ce problème via le ProjRC l'extension .

« Cette extension donne un look Mercurial et analyser .hg / projrc pour les paramètres de configuration supplémentaires. Le fichier est transféré sur le clone et tirer (mais jamais sur la poussée) »

Qu'en est-il de créer un lien de par exemple à .hg/hgrc customhg/hgrc afin qu'il soit versionné. Ensuite, vous devez créer un certain crochet qui copie de nouveau à <=> - par exemple après chaque mise à jour.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top