Aller au contenu

Conseils Hg

Logo de personne folle

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 !

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *