Inspiré par Git pour les débutants: Le guide pratique définitif .
Il s'agit d'une compilation d'informations sur l'utilisation de Mercurial pour les débutants à des fins pratiques .
Débutant - un programmeur qui a touché le contrôle des sources sans très bien le comprendre.
Pratique - couvrant les situations que la majorité des utilisateurs rencontrent souvent - création d'un référentiel, branchement, fusion, extraction / transfert depuis / vers un référentiel distant, etc.
Remarques :
- Expliquez comment faire quelque chose plutôt que comment quelque chose est mis en œuvre.
- Traitez une question par réponse.
- Répondez de façon claire et aussi concise que possible.
- Modifier / étendre une réponse existante plutôt que de créer une nouvelle réponse sur le même sujet.
- Veuillez fournir un lien vers le wiki Mercurial ou le livre HG pour les personnes qui souhaitent en savoir plus.
Des questions:
Installation / configuration
- Comment installer Mercurial?
- Comment configurer Mercurial?
- Comment créez-vous un nouveau projet / référentiel?
- Comment le configurez-vous pour ignorer les fichiers?
Travailler avec le code
- Comment obtenez-vous le dernier code?
- Comment extrayez-vous le code?
- Comment commettez-vous des changements?
- Comment voyez-vous ce qui n'est pas engagé ou l'état de votre base de code actuelle?
- Comment supprimer des fichiers du référentiel?
- Comment détruisez-vous les commits indésirables?
- Comment comparez-vous deux révisions d'un fichier, ou votre fichier actuel et une révision précédente?
- Comment voyez-vous l'historique des révisions d'un fichier ou d'un référentiel?
- Comment gérez-vous les fichiers binaires (visio docs, par exemple, ou les environnements de compilation)?
- Comment fusionner des fichiers modifiés en "même temps"?
- Comment annuler un ensemble de modifications?
- Comment revenir à une version précédente du code?
- Comment extraire un correctif d'un ensemble de modifications spécifique?
- Comment enregistrez-vous que vous avez renommé ou supprimé un fichier sans utiliser la commande Mercurial?
Marquage, branchement, versions, lignes de base
- Comment «marquer» «tag» ou «publier» un ensemble particulier de révisions pour un ensemble particulier de fichiers afin de pouvoir toujours le récupérer plus tard?
- Comment tirez-vous une «version» particulière?
- Comment branchez-vous?
- Comment fusionnez-vous les succursales?
- Comment fusionner des parties d'une branche dans une autre branche?
Autre
- Bon plugin GUI / IDE pour Mercurial? Avantages désavantages?
- Y a-t-il d'autres tâches courantes qu'un débutant devrait connaître?
- Comment puis-je interfacer avec Subversion?
Autres références Mercurial
- Mercurial: Le guide définitif
- Mercurial Wiki
- Rencontrez Mercurial | Screencast Peepcode
- Maîtriser Mercurial | TekPub Screencast
- Hg Init - Tutoriel Mercurial de base
hg add
ignoré manuellement les fichiers, Mercurial les suivra. Par exemple, si vous avez un tas de fichiers commedeploy-test.conf
,deploy-production.conf
, etc et ne veulent pas à la version eux (ils pourraient avoir des mots de passe en eux) , mais vous ne voulez à la version quedeploy-template.conf
vous pouvez simplement ignorerdeploy*
et ajouter manuellementdeploy-templace.conf
.Comment voyez-vous ce qui n'est pas engagé ou l'état de votre base de code actuelle?
Pour voir une liste des fichiers qui ont été modifiés:
Cela imprimera chaque fichier qui a été modifié avec son état, qui peut inclure:
M
- Modifié. Le fichier a été modifié et les modifications n'ont pas été validées.A
- Ajoutée. Le fichier n'a pas été suivi auparavant, mais si vous validez, Mercurial commencera à le suivre.R
- Supprimé. Le fichier a été suivi auparavant, mais si vous validez, Mercurial cessera de le suivre dans ce cas et dans les futurs validations.?
- Inconnue. Le fichier n'est actuellement pas suivi par Mercurial. La validation n'aura aucun effet à moins que vous ne l'utilisiezhg add
pour l'ajouter.!
- Disparu. Le fichier a été suivi mais Mercurial ne le trouve pas dans la copie de travail.Pour voir les modifications réellement apportées aux fichiers:
la source
Comment créez-vous un nouveau projet / référentiel?
la source
Comment puis-je interfacer avec Subversion?
Il existe trois façons:
L' extension convert convertira un dépôt Subversion existant en un dépôt Mercurial. Il vient avec Mercurial. Cela fonctionne à peu près comme ceci:
Par exemple, cela récupérera le tronc du référentiel memcached SixApart.
L'extension peut apporter progressivement de nouvelles révisions d'un référentiel Subversion dans le référentiel Mercurial (un peu comme tirer). Cependant, il ne prend pas en charge la prise de révisions Mercurial et leur renvoi à Subversion (sans push). [XXX: Corrigez cela si c'est faux] .
L' extension hgsubversion . C'est à bien des égards la solution la plus sophistiquée car elle utilise l'API Subversion pour communiquer avec le référentiel Subversion. Il vise à devenir le pont hg-svn. Il permet un déclenchement complet des révisions (clone complet, pull et push). Cependant, à ce jour [XXX: Modifiez ceci si / quand il devient incorrect] il est toujours en développement et il n'y a pas encore de versions officielles. En conséquence, il ne fonctionne qu'avec le Mercurial le plus récent (1.3 au moment de la rédaction).
tags/
pour les distinguer des branches nommées de manière équivalente).closed-branches
pour fermer les branches qui sont supprimées dans Subversion.hg svn <subcommand>
bien qu'il vise à être intégré au point que vous n'avez pas besoin de la partie «svn» (c'est-à-dire qu'il veut traiter un clone Subversion autant que possible comme tout autre référentiel Mercurial).Cela fonctionne comme ceci:
cloner:
OU (uniquement pour les
svn://
URL)tirer:
pousser:
entrant:
sortant:
Extraire un référentiel entier:
L' utilitaire hgsvn ( arborescence bitbucket ). Jusqu'à récemment, cela ne vous permettait que de cloner et d'extraire un référentiel Subversion, mais à partir de maintenant
hgsvn 0.1.7
il prend en charge push. [Je ne sais pas comment bien il fait pousser. Quiconque ayant plus d'expérience devrait le mettre à jour.] Il présente les caractéristiques notables suivantes:branches/some-feature
serait commehg branch some-feature
. Il met le coffretrunk
(c'est-à-dire que rien ne se trouve sur la branche par défaut de Mercurial, sauf si l'utilisateur y passe explicitement.)Cela fonctionne comme ceci:
cloner:
tirer:
pousser:
entrant:
sortant:
Extraire un référentiel entier:
Vérifier juste le coffre:
la source
hg convert
et cela prend vraiment beaucoup de temps lorsque vous avez un dépôt svn avec de nombreux commits. La configuration d'un référentiel localsvnsync
permet d'accélérer considérablement les choses, en particulier lorsque vous devez le faire plusieurs fois, car vous aviez des options erronées dans votre commande de conversion.svnsync
fallait accéder aux fichiers réels du référentiel, pas seulement à l'URL.Comment comparez-vous deux révisions d'un fichier, ou votre fichier actuel et une révision précédente?
Les deux utilisent
hg diff
. Quandhg diff
est utilisé tous les changements dans la copie de travail et le conseil (le dernier commit) est affiché.Pour "Comment comparez-vous deux révisions d'un fichier?"
La commande ci-dessus montrera différent entre rev1 et rev2 de "file.code".
Pour "Comment comparez-vous votre fichier actuel et une révision précédente?"
La commande ci-dessus affichera une différence entre la version actuelle de "file.code" et la dernière révision (la dernière validée).
:RÉ
la source
Comment «marquer» «tag» ou «publier» un ensemble particulier de révisions pour un ensemble particulier de fichiers afin de pouvoir toujours le récupérer plus tard?
Vous pouvez également cloner votre référentiel pour créer un référentiel de balises spécial .
la source
hg tag my-tag
?Comment branchez-vous?
$ hg branch my-branch
ou
$ hg clone original-repository my-branch
Bien qu'il soit à noter que la branche crée un répertoire "virtuel" (c'est-à-dire que les fichiers restent les mêmes, mais hg les traite comme s'ils étaient différents à l'intérieur du système), tandis que le clone crée une copie complète et réelle. À strictement parler, le clone ne se ramifie pas.
la source
hg branch my-branch
Bon plugin GUI / IDE pour Mercurial?
GUI
Plugins
la source
Comment commettez-vous des changements?
Appelez cette commande à partir du référentiel mercurial local * actuel
alias: ci
Où l'option peut être:
Un exemple de commande serait:
REMARQUES :
la source
Comment configurer Mercurial?
Mercurial stocke ses informations de configuration
~/.hgrc
sur les systèmes * nix et%UserProfile%\mercurial.ini
sur les systèmes Windows. (%UserProfile%
est généralement"C:\Documents and Settings\[username]\"
sur les systèmes Windows 2000 ou Windows XP, et généralementC:\Users\[username]\
sur les systèmes Windows Vista et Windows 7.)Comme point de départ, vous devez définir votre nom d'utilisateur Mercurial en plaçant ce qui suit dans votre
.hgrc
oumercurial.ini
:Les utilisateurs de TortoiseHg sur les systèmes Windows peuvent également exécuter
hgtk userconfig
Voir également « Création d'un fichier de configuration Mercurial » dans le chapitre 2 de « Mercurial: The Definitive Guide ».
la source
Comment fusionnez-vous les succursales?
la source
Comment installer Mercurial?
Veuillez bien éditer si vous avez installé à partir des sources sur Linux, ou utilisé les installateurs Windows.
Mac OS X 10.4 (Tiger), 10.5 (Leopard)
Utilisez easy_install de Python (avec Setuptools ):
Cela trouve la dernière version (1.3.1 au moment de la rédaction) et installe à:
Avec Python 2.6, cela contourne également le package d'installation de Mercurial OS X (à la version 1.2.1 du 26 juillet 2009) se plaignant d'avoir besoin de Python 2.5. D'après la documentation , il apparaît que Fink et Macports installent la version 1.2.
Linux
La plupart des packages Linux explicites semblent être en retard sur la version actuelle, alors utilisez easy_install (comme ci-dessus) ou téléchargez l' archive tar Mercurial , extrayez l'archive, accédez au répertoire mercurial et exécutez:
(de Introducing Mercurial, un système de contrôle de version distribué )
les fenêtres
Il existe un package binaire de la dernière version de Mercurial . TortoiseHg est une extension shell Windows pour et installe Mercurial. Cygwin peut également installer Mercurial.
Alternativement (instructions trop longues donc liées ici), vous pouvez créer une version Python optimisée ou pure de Mercurial à partir des sources.
la source
Comment obtenez-vous le dernier code?
Mercurial se souvient d'où un référentiel a été cloné (en .hg / hgrc) afin que vous puissiez simplement exécuter:
pour extraire le dernier code du référentiel d'origine. (Cela ne met pas à jour le répertoire de travail)
pour mettre à jour le répertoire de travail.
pour effectuer à la fois un pull et une mise à jour.
la source
.hg/hgrc
lorsque vous faites un clone, vous n'avez donc pas à le spécifier lorsque vous tirez / poussez. Vous pouvez ajouter plus de chemins d'accès à la[paths]
section dans.hg/hgrc
si vous le souhaitez.Comment extrayez-vous le code?
Où l'option peut être:
Où source est la source des fichiers d'origine situés dans le référentiel, où il peut s'agir d'une URL distante ou d'un répertoire de système de fichiers. Par exemple:
Et la destination est l'endroit où le code source sera situé dans votre système de fichiers local.
la source
Comment commettez-vous des changements?
la source
Comment voyez-vous quelles modifications seront envoyées au référentiel en amont lorsque vous poussez?
Utilisez
hg outgoing
pour obtenir la liste des changements qui seront définis sur le référentiel par défaut:Pour obtenir les changements de code réels, utilisez
-p
(--patch
). Cela affichera chaque ensemble de modifications dans son intégralité:la source
Comment supprimer un fichier du référentiel?
Pour supprimer un fichier du référentiel et le supprimer lors du prochain commit:
Pour supprimer un fichier du référentiel, mais ne pas le supprimer
ou de Mercurial 1.3
la source
Comment revenir à une version précédente du code?
De cette question
@van: Si plus tard vous vous engagez, vous créerez effectivement une nouvelle branche. Ensuite, vous pouvez continuer à travailler uniquement sur cette branche ou éventuellement fusionner la branche existante en elle.
la source
Comment annuler un ensemble de modifications?
Quelques options disponibles
Easy Way (sauvegarde d'un seul jeu de modifications)
Hard Way (diff manuellement et appliquer)
Étape 1 : Créez un fichier de correctif pour annuler ce qui a changé entre la révision 107 et 108:
(alternativement, hg diff -r108 -r107 sans --reverse fera la même chose)
Étape 2 : appliquez le fichier de patch:
Certaines différences peuvent ne pas s'appliquer, par exemple:
Le fichier .rej contiendra le contenu du diff qui n'a pas pu s'appliquer, vous devrez y jeter un œil.
la source
hg backout
?Comment voyez-vous l'historique des révisions d'un fichier ou d'un référentiel?
Pour afficher l'historique des révisions de l'ensemble du référentiel ou des fichiers
ou
Et pour voir la liste dans l'ordre inverse
la source
Comment fusionner des parties d'une branche dans une autre branche?
Activez l'extension 'transplant' dans votre .hg / hgrc
Chargez la branche cible puis transplantez la révision cible.
ex: cerise sur le gâteau révision 81 de la branche 'foo' dans la branche courante
la source
graft
commande intégrée pour faire de même.hg help graft
pour plus d'informationsComment extraire un correctif d'un ensemble de modifications spécifique?
Vous pouvez ensuite l'importer dans une autre branche avec:
la source