103 votes

Comment ajouter des dépôts distants dans Mercurial ?

Je travaille avec des dépôts Git de la manière suivante :

  • J'ai le dépôt principal et plusieurs dépôts distants sur les différentes machines de production.
  • Je pousse le code de production vers les serveurs distants et redémarre les services pour que les changements soient pris en compte.

Je suis sur le point de passer de Git à Mercurial et j'aimerais savoir à l'avance comment je peux réaliser quelque chose comme ça.

133voto

Ry4an Points 56453

Vous ajoutez des entrées au [paths] de votre clone local .hg/hgrc fichier. Voici un exemple de section à insérer dans le fichier .hg/hgrc fichier :

[paths]
remote1 = http://path/to/remote1
remote2 = http://path/to/remote2

Vous pouvez ensuite utiliser des commandes telles que hg push remote1 pour envoyer des modifications à ce repo. Si vous voulez que ce repo distant mette à jour son répertoire de travail, vous devez mettre un fichier changegroup en place sur ce site distant qui effectue une mise à jour. Cela ressemblerait à quelque chose comme :

[hooks]
changegroup = hg update 2>&1 > /dev/null && path/to/script/restart-server.sh

Tout le monde n'est pas fan de la mise à jour automatique des répertoires de travail des dépôts distants lors d'une poussée, et ce n'est certainement pas la solution par défaut.

23 votes

Pour ceux qui veulent simplement voir l'utilisation des télécommandes hg paths ce qui est équivalent pour git remote -v .

5 votes

Default-push (au lieu de remote1 par exemple) permet de taper simplement "hg push". Le dépôt default-push est alors utilisé. Très utile.

6 votes

@Christian default-push n'est nécessaire/utile que si votre cible habituelle de push diffère de votre source habituelle de pull. Si elles sont identiques (ou si vous ne tirez jamais), alors default suffit.

10voto

Akash Points 5697

Si vous souhaitez ajouter un chemin par défaut, vous devez utiliser la fonction default dans votre ~project/.hg/hgrc dossier. Comme suit :

[paths]
default = https://path/to/your/repo

Bonne chance.

5voto

VonC Points 414372

Vous pouvez consulter hg-git GitHub plugin :

hg-git general idea

ajout de la possibilité de pousser vers et de tirer depuis un dépôt Git depuis Mercurial. Cela signifie que vous pouvez collaborer sur des projets basés sur Git à partir de Mercurial, ou utiliser un serveur Git comme point de collaboration pour une équipe de développeurs utilisant à la fois Git et Mercurial.

Note : Je n'ai pas testé cet outil avec les dernières versions de Mercurial.

1 votes

J'ai la possibilité de tout porter sur mercurial, j'aimerais n'utiliser qu'un seul outil pour ma gestion des sources. Convertir une fois le dépôt construit les structures appropriées et ensuite seulement les commandes mercurial pour la production. Je sais que git et mercurial peuvent collaborer mais je n'ai jamais essayé.

2 votes

^Chris : ta question est donc : "comment convertir des dépôts Git en dépôts Mercurial ?", ou "comment déclarer/mettre en place un dépôt Hg distant ?". ( comme dans superuser.com/questions/43686/ ), ou "où une télécommande est déclarée en Hg ?" ( crazythinking.wordpress.com/2009/03/07/ )

0voto

Jason R. Coombs Points 11130

Si vous êtes sous Unix et que vous avez installé Git, vous pouvez utiliser cette fonction bash pour ajouter facilement un chemin aux remotes sans éditeur de texte :

add-hg-path() {
    git config -f $(hg root)/.hg/hgrc --add paths.$1 $2
    awk '{$1=$1}1' $(hg root)/.hg/hgrc > /tmp/hgrc.tmp
    mv /tmp/hgrc.tmp $(hg root)/.hg/hgrc
}

Puis l'invoquer avec :

$ add-hg-path remote1 https://path.to/remote1

Si quelqu'un souhaite créer un équivalent Powershell, j'aimerais l'inclure également. D'autres améliorations potentielles incluent la vérification des erreurs sur les paramètres et la factorisation de l'appel à $(hg root) .

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