web-dev-qa-db-fra.com

Comment puis-je ajouter des référentiels distants dans Mercurial?

Je travaille avec les référentiels Git de la manière suivante:

  • J'ai le référentiel maître et plusieurs télécommandes sur les différentes machines de production.
  • Je pousse le code de production vers les télécommandes et redémarre les services pour que les modifications prennent effet.

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.

97
topless

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

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

Vous pouvez ensuite utiliser des commandes comme hg Push remote1 pour envoyer des modifications à ce référentiel. Si vous voulez que le référentiel distant soit mis à jour dans le répertoire de travail, vous devez mettre un crochet changegroup en place à cet emplacement 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 un grand fan de la mise à jour automatique des référentiels distants sur Push, et ce n'est certainement pas la valeur par défaut.

127
Ry4an Brase

si vous voulez ajouter un chemin par défaut, vous devez travailler avec default dans votre ~project/.hg/hgrc fichier. Comme suit:

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

Bonne chance.

6
Akash

Vous pouvez voir plugin hg-git GitHub :

hg-git general idea

ajout de la possibilité de pousser vers et de tirer à partir d'un référentiel de serveur Git de 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 avec des développeurs utilisant à la fois Git et Mercurial.

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

5
VonC

Si vous êtes sous Unix et que vous avez installé Git, vous pouvez utiliser cette fonction bash pour ajouter facilement un chemin vers les télécommandes 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
}

Ensuite, invoquez-le avec:

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

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

0
Jason R. Coombs