237 votes

Mercurial pour les débutants : The Definitive Guide pratique

Inspiré par Git pour les débutants: The definitive guide pratique.

C'est une compilation d'informations sur l'utilisation de Mercurial pour les débutants pour pratique d'utilisation.

Débutant - un programmeur qui a touché de contrôle à la source, sans comprendre très bien.

Pratique - s'applique à des situations que la majorité des utilisateurs rencontrent souvent - la création d'un référentiel, de branchement, de la fusion, en tirant/poussant à partir de/vers un dépôt distant, etc.

Notes:

  • Expliquer comment faire quelque chose, plutôt que la façon dont quelque chose est mises en œuvre.
  • Face à une question par une réponse.
  • Répondez clairement et de façon aussi concise que possible.
  • Modifier/étendre une réponse existant plutôt que de créer une nouvelle réponse sur le même sujet.
  • Veuillez fournir un lien vers l' Mercurial wiki ou le HG Livre pour les personnes qui veulent en savoir plus.

Questions:

Installation/Configuration

En travaillant avec le code

Le marquage, les branchements, les rejets, les lignes de base

D'autres

D'autres Mercurial références

16voto

Joakim Lundborg Points 2650

Comment le configurer pour ignorer les fichiers?

L'ignorer est configuré normales dans un fichier texte appelé .hgignore à la racine de votre dépôt. Ajouter juste comme un fichier normal avec:

hg add .hgignore

Il existe deux options de syntaxe disponible pour les fichiers de correspondance, glob et regexp. glob est de type unix, le nom de fichier de l'expansion et de la regexp est d'expressions régulières. Vous activez chaque par l'ajout d' syntax: glob ou syntax: regexp sur une ligne par lui-même. Toutes les lignes suivantes qui va utiliser cette syntaxe, jusqu'à la prochaine syntaxe marqueur. Vous pouvez avoir autant de syntaxe marqueurs que vous le souhaitez. La syntaxe par défaut est regexp, donc si vous n'utilisez regexp vous n'avez pas besoin de toute la syntaxe de marqueur.

Vous pouvez ajouter des commentaires avec #

Exemple:

# python temporary files
syntax: glob
*.pyc

#editor autosaves
*~

# temporary data
syntax: regexp
temp

Ignorer s'applique uniquement aux fichiers non gérés (c'est à dire des fichiers qui ne sont pas déjà enregistré). Pour ignorer les fichiers sous contrôle de version, vous pouvez utiliser les options-I et -X.

7voto

Steve Losh Points 11958

Comment voyez-vous ce qui est engagé, ou l'état de votre base de code?

Pour voir une liste des fichiers qui ont été modifiés:

$ hg status

Cela permettra d'imprimer chaque fichier qui a été modifié avec son statut, ce qui peut inclure:

  • M - Modifié. Le fichier a été modifié et les changements n'ont pas été commis.
  • A - Il ajouté. Le fichier n'a pas été suivi avant, mais si vous vous engagez Mercurial va commencer le suivi.
  • R - Supprimé. Le fichier a été suivi avant, mais si vous vous engagez Mercurial cessera d'assurer un suivi dans le présent et le futur s'engage.
  • ? - Inconnu. Le fichier n'est pas actuellement suivis par l'Mercurial. Commettre n'aura aucun effet sur elle, sauf si vous utilisez hg add pour l'ajouter.
  • ! - Manquant. Le fichier a été suivi Mercurial mais ne peut pas trouver dans la copie de travail.

Pour voir les modifications qui ont été réalisés pour les fichiers:

$ hg diff

5voto

quark Points 7773

Comment puis-je l'interface avec Subversion?

Il y a trois façons:


Le convertir extension permet de cloner un existant dépôt Subversion dans un Mercurial. Il est livré avec Mercurial. Il fonctionne à peu près comme ceci:

hg convert <Subversion URL or directory> <path to new Mercurial repository>

Par exemple, cela va saisir le tronc de l'SixApart memcached référentiel.

hg convert http://code.sixapart.com/svn/memcached/trunk

L'extension peut progressivement mettre en place de nouvelles révisions à partir d'un référentiel Subversion dans l'Mercurial l'autre (un peu comme tirer). Cependant, il ne prend pas en charge la prise Mercurial révisions et de les envoyer vers Subversion (pas de pression). [XXX: Corriger si c'est faux].


L' extension hgsubversion. Il est à bien des égards les plus sophistiquées de la solution, car il utilise la Subversion de l'API pour communiquer avec le référentiel Subversion. Il vise à devenir le hg-svn pont. Il permettre la pleine aller-retour de révisions (full clone, tirer, pousser), Mais de cette écriture [XXX: Modifier cela si/quand il devient incorrect] il est toujours en développement et il n'y a pas encore les versions officielles. En conséquence, il travaille uniquement avec les plus up-to-date Mercurial (1.3 de cette écriture).

  • Il cartes les étiquettes et les branches (précédant toutes les balises avec tags/ pour les distinguer de manière équivalente les branches nommées).
  • Il maintient une division spéciale de la closed-branches pour la fermeture des branches qui sont supprimées dans la Subversion.
  • Il exige que le dépôt Subversion être établies conformément à la convention de trunk/branches/tags.
  • La commande set est typiquement hg svn <subcommand> si elle vise à être intégré, au point que vous n'avez pas besoin de la 'svn' partie (c'est à dire qu'il veut traiter une Subversion cloner autant que possible comme tout autre dépôt Mercurial).;

Il fonctionne comme ceci:

clone:

hg svnclone <Subversion URL>

OU (uniquement pour svn:// Url)

hg clone <svn:// URL>

pull:

hg svn pull

push:

hg svn push

entrants:

hg svn incoming

sortant:

hg svn outgoing

De vérifier la totalité d'un référentiel:

hg svnclone http://code.sixapart.com/svn/memcached


Le hgsvn utilitaire (bitbucket de l'arbre). Jusqu'à récemment, cela ne vous permettent de cloner et de tirer un dépôt Subversion, mais comme d' hgsvn 0.1.7 il prend en charge push. [Je ne sais pas comment bien il le fait de repousser. Quelqu'un avec plus d'expérience devraient mettre à jour cette.] Voici les principales caractéristiques:

  • Elle génère Mercurial balise pour chaque tag SVN.
  • Il met un local tag sur chaque ensemble de modifications à l'occasion de sa révision SVN.
  • Il met tous les Mercurial révision sur une branche nommée nommée d'après sa branche SVN. Par exemple branches/some-feature serait comme hg branch some-feature. Il met le tronc sur trunk (c'est à dire rien n'est sur l'Mercurial branche par défaut, à moins que le consentement explicite de l'utilisateur bascule vers elle.)
  • Il va essayer d'identifier les branches et les tags, et de créer eux, mais si elle ne peut-il pas simplement ignore. Cela est pratique lorsque le dépôt Subversion n'est pas à la suite de la classique trunk/branches/tags de mise en page.

Il fonctionne comme ceci:

clone:

hgimportsvn <Subversion URL>

pull:

hgpullsvn

push:

hgpushsvn

entrants:

hgpullsvn -n

sortant:

hgpushsvn -n

De vérifier la totalité d'un référentiel:

hgimportsvn http://code.sixapart.com/svn/memcached

De vérifier juste le tronc:

hgimportsvn http://code.sixapart.com/svn/memcached/trunk

5voto

NawaMan Points 615

Comment comparer deux révisions d'un fichier, ou que votre fichier actuel et une version précédente?

Les deux utilisent l' hg diff. Lors de l' hg diff est utilisé toutes les modifications dans la copie de travail et la pointe (le dernier commit) est affiché.

Pour "Comment voulez-vous comparer deux révisions d'un fichier?"

$ hg diff -r{rev1} -r{rev2} {file.code}

La commande ci-dessus va afficher différentes entre rev1 et rev2 de fichier".code".

Pour "Comment pouvez-vous comparer votre fichier actuel et une version précédente?"

$ hg diff {file.code}

La commande ci-dessus va afficher différents entre la version actuelle du fichier".code" et la dernière révision (la plus performante).

:D

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X