Alors que la majeure partie du monde semble utiliser personne drôle Pour le contrôle de version, Mozilla continue d’utiliser Mercurial (hg
) pour gérer Code source Firefox. En tant que fan de git et de GitHub, j’ai mis du temps à m’habituer à Mercurial. je ne me considère pas comme un hg
Un expert mais j’en sais assez pour accomplir 99% des tâches requises… ce qui est probablement lié à ma connaissance de git. Juste assez pour être dangereux, je suppose.
Cet article couvrira certaines des tâches que j’accomplis souvent avec Mercurial.
Créer un message d’engagement
Vous pouvez ajouter des fichiers -m
Pour ajouter le message depuis la ligne de commande au lieu d’entrer dans VIM ou l’éditeur de votre choix :
hg commit -m "Bug #### - This is the commit message"
C’est le même format que git.
correction d’importation
Mercurial vous permet d’importer des correctifs à partir de fichiers locaux et d’URL :
# From local file hg import /path/to/code.patch # From URL hg import https://bugzilla.mozilla.org/attachment.cgi?id=32894.patch
Obtenez les derniers engagements généraux
les engagements que vous prenez localement à l’état « brouillon » ; Les commits « publics » sont des commits dans le dépôt officiel. Vous pouvez extraire de nouveaux commits du référentiel principal en utilisant pull
:
# Pull down new commits and check out latest hg pull && hg update --clean # Only checkout latest hg checkout "last(public())"
Supprimer tous les fichiers non suivis
Mercure est né .orig
Lorsque vous annulez les fichiers modifiés, juste au cas où vous auriez besoin de ces modifications à l’avenir. Lorsque vous souhaitez vous débarrasser des fichiers non suivis, vous pouvez utiliser purge
:
hg purge
Modifier la règle d’engagement
le rebase
Le concombre vous permet de fournir une grande variété d’options :
# Provide a source and destination revision (123 onto 200) # hg rebase -s <REV> -d <REV> hg rebase -s 12345 -d 12400 # Rebase the currently checked out revision onto a destination hg rebase -d 200 # Rebase onto the last public commit hg rebase -s 12345 -d 'last(public())`
Supprimer un commit
Parfois, vous devez supprimer un commit :
# hg strip <REV> hg strip 12345
Vérifier qu’un commit contient une chaîne de recherche
Dans le cas où mon correctif est révisé et nécessite des mises à jour, je dois trouver le commit avec le numéro de bogue que j’ai fourni dans le message de commit :
# Format: hg checkout "grep(SEARCH STRING)" # Find the revision with message containing a search string hg checkout "grep(Bug 1565318)"
Créer et supprimer des signets
Les signets sont ce qui se rapproche le plus des branches git – vous pouvez appliquer un signet textuel pour valider :
# Create a bookmark hg bookmark bug-12345 # Delete a bookmark -- doesn't delete commit hg bookmark -d bug-12345
Changer l’auteur du commit
De temps en temps, je dois extraire un correctif de GitHub vers mon référentiel Mozilla Central pour la conformité, mais je ne veux pas voler le crédit d’un correctif de grand contributeur.
hg commit -u "User Name <username@domain.com>" -m "The commit message"
Gestion de l’historique
le histedit
La directive fournit une liste des commits d’un parent et vous permet de modifier les messages de commit, de fusionner les commits, de supprimer les commits, de réorganiser les commits, etc. :
hg histedit
En fait, si vous apprenez ces commandes, vous serez capable de faire presque tout ce que vous devez faire avec Mercurial. J’apprécie que Mercurial et git soient incroyablement puissants, mais 99 % des développeurs ont besoin de l’essentiel !
N’hésitez pas à poser des questions dans ce post – j’ajouterai plus de commandes lorsque les questions viendront !