2009-12-08 6 views
73

J'ai récemment goûté au hg/mercurial, notamment en conjonction avec Fogcreek's Kiln, et j'essaie de comprendre quelles sont les extensions indispensables. Il est un peu difficile de passer au crible leur liste d'extensions car je ne suis pas intéressé par le test d'extensions boguées ou peu pratiques, même si leur description semble géniale.Quels sont les meilleurs et incontournables extensions hg/mercurial?

Alors, quelles extensions hg utilisez-vous?

Voir Using Extensions

+0

Probablement PAS "deps" - mon test initial le rend trop buggé/nouveau à utiliser –

+0

A la liste j'ajouterais aussi [task extension] (https://bitbucket.org/alu/hgtasks/wiki/Home) pour gérer les "tâches de codage" et [l'extension d'invite] (http://mercurial.selenic.com/wiki/PromptExtension) pour afficher les informations du référentiel à l'invite du shell. Invite peut utiliser l'extension de tâche. Les deux ne sont pas livrés avec hg. – Paolo

Répondre

97

ma propre liste de succès:

Les simples vous devez avoir:

  1. color: coloriser sortie de commandes comme diff et status, ce qui le rend plus facile à évaluer.
  2. pager: parcourez la sortie longue d'une page à la fois.
  3. fetch: tirer, mettre à jour et fusionner à partir d'un autre référentiel en une seule étape.
  4. graphlog: affiche des graphiques de révision dans votre shell, incroyablement utile pour regarder les branches dans votre historique de journal.
  5. hgk: parcourir le référentiel avec une interface graphique (voir aussi TortoiseHg et Murky)

Si vous activez pager, vous devez configurer pour ne pas interférer avec certaines commandes:

[pager] 
pager = LESS='FSRX' less 
ignore = version, help, update, serve, record 

L'intermédiaire extensions je recommande fortement (et utiliser fréquemment):

  1. record: vous permet interactive Sélectionne des centaines de fichiers à valider - parfait pour quand vous êtes au milieu d'un ensemble de changements, et vous finissez par réparer quelque chose qui devrait avoir son propre commit.
  2. extdiff: configurer un outil de comparaison externe (comme meld)
  3. share: avoir plusieurs clones utiliser la même histoire repo

Les extensions avancées Je ne serais pas sans:

  1. mq : gérer une pile de patchs. Très puissant, permet la superposition de patchs sur le dessus de l'arbre.
  2. notify: envoyer des notifications par e-mail quand un repo est modifié.
  3. rebase: réapplique les modifications locales au-dessus d'une nouvelle révision parent.
  4. largefiles: travailler avec de gros fichiers binaires en dehors du magasin hg

Tous les ci-dessus sont fournis avec Mercurial, et sont stables et bien testés. Je recommande fortement chacun d'entre eux.

extensions non essentielles: enquête sur une valeur

  1. shelve: sélectivement mis de côté les changements (à la granularité des chunks) et les restaurer.
  2. acl: permettre sélectivement l'accès aux différentes parties de l'arbre de dépôt

extensions obsolètes et ont migré à noyau (info de @ durin42):

  • forest a été remplacée par le support subrepo introduit dans v1.3
  • bookmarks est dans le noyau et toujours activé , une commande de base
  • histedit est dans le noyau à partir de v2.3, mais il est désactivé par défaut
  • inotify n'est pas recommandé, car il y a apparemment un bug à cause d'une condition de course
+0

Avez-vous d'autres commentaires sur Subrepo vs. Forest? Je ne suis pas sûr que l'un ou l'autre soit réellement utile/utilisable - ce qui pourrait impliquer que je ne fais que le faire mal. Je suis particulièrement intéressé par une amélioration robuste de l'extern ' –

+0

SVN ne fonctionne pas sur Windows (http://mercurial.selenic.com/bts/issue1579) – Jerome

+0

@JJBigThoughts: J'ai récemment commencé à expérimenter avec le support subrepo, en vue de l'utiliser pour un très grand projet. Selon les auteurs de Mercurial, le soutien de subrepo est encore un peu expérimental. Actuellement, cela fonctionne un peu comme svn: externals, mais seulement quelques commandes sont au courant des sous-dépôts. Les bases semblent bien fonctionner, AFAICT. La principale différence est que la version de chaque subrepo est effectivement épinglée, car la mère stocke une référence à son numéro de révision ainsi qu'à sa localisation (ce qui n'est pas nécessairement une mauvaise chose). – gavinb

10

graphlog et mq sont particulièrement savoureux.

  1. Convert: convertir et d'autres systèmes
  2. Mq (Mercurial Queues): faire face aux changements comme une pile de plaques
  3. Forest: vous permet engager et mettre à jour de nombreux dépôts Mercurial imbriqués à la fois
  4. Partager: pour gagner du temps et de l'espace disque lorsque vous travaillez avec des dépôts similaires
  5. HGK: donne une vue graphique de l'histoire
  6. Graphlog: Je tape toujours « hg glog » non « hg log ». Une vue d'art ascii de l'histoire
  7. Transplant: Utile lorsque vous voulez seulement fusionner quelques changesets d'une autre branche. Le plus récent hg rebase peut avoir un certain chevauchement. Rebase: Une façon différente de gérer les modifications en tant qu'ensemble de modifications au-dessus d'une branche. git les utilisateurs aiment rebaser. Peut remplacer mq pour de nombreux cas d'utilisation. Shelf: Un endroit pour stocker les modifications de la copie de travail si vous devez travailler sur autre chose pendant un certain temps. Favoris: nomme le dernier commit sur une branche particulière. Semblable à git branches.
+0

graphlog est maintenant intégré et toujours activé avec '-g' pour la commande log (et l'entrée d'un IIRC sortant). –

+0

Ry4an: "maintenant" ce qui signifie dans la pointe? Pas dans 1.4.1 AFAICT. –

+1

L'indicateur '-g' pour log permet d'activer les différences de style git, ce qui est complètement différent de' graphlog'. – jamessan

7

Si vous Travailler avec un hôte lent comme Bitbucket, progress est essentiel.Sinon hg push ressemble il est accroché: \

1

Ma liste:

  1. graphlog. Je l'utilise beaucoup plus que hg log. (souhaite pouvoir limiter aux branches)

  2. purge. supprime tous les fichiers qui ne sont pas dans Mercurial. J'utilise ceci au lieu de ou comme une version plus propre de make clean.

moins utilisé, mais agréable:

  • enfants (vous permet de dire que "les enfants hg -r XXX")
  • parentrevspec: vous permet de dire des choses comme « foo ~ 2 = foo^1^1 = foo ^^ = premier parent du premier parent de foo "

Je continue d'essayer d'utiliser les outils d'édition de l'historique, mais je continue de rencontrer des limitations. Je veulent pour travailler.

  • effondrement
  • histedit
  • Je considère rebasage une tol d'édition de l'histoire et

Par ailleurs, méfiez-vous: hgk chercher sont "mal aimé": https://www.mercurial-scm.org/wiki/UnlovedFeatures. Mais alors, les SubRepos sont, non pas mal aimés, mais une caractéristique de dernier recours, et j'utilise des sous-états.

9

Pas encore mentionné: mercurial_keyring

https://www.mercurial-scm.org/wiki/KeyringExtension

« extension Keyring utilise les services de la bibliothèque de trousseaux pour enregistrer en toute sécurité des mots de passe d'authentification (HTTP/HTTPS et SMTP) système en utilisant la base de données de mot de passe spécifique (Gnome Keyring, KDE KWallet , OSXKeyChain, solutions dédiées pour Win32 et la ligne de commande). "

J'utilise ssh pour accéder à mes dépôts sur GitHub et Bitbucket, et ma phrase clé est conservée dans le trousseau. Cette extension permet à Mercurial de l'obtenir à tout moment.

nécessaire aussi pour moi: hg-git

http://hg-git.github.com/

plug-in Mercurial vous permettant de tirer et pousser repo git à l'aide hg en tant que client. Utilisez tout le temps.

Questions connexes