6 votes

Pousser vers deux dépôts qui ne peuvent pas se joindre l'un à l'autre

La mise en place :

  • un ordinateur portable L
  • un serveur bureautique hébergeant divers référentiels SOffice
  • le serveur de base de données d'un client SCustomer

J'écris du code sur L pour un client, et je veux régulièrement le pousser à la fois sur SOffice et sur SCustomer.

Je sais que je pourrais utiliser un changegroup crochet pour pousser vers un troisième dépôt à partir du deuxième (tel que décrit dans cette réponse ), mais il faut pour cela que le deuxième puisse atteindre le troisième sur le plan du réseau.

Dans mon cas, chacun d'eux se trouve derrière un pare-feu, et seul mon ordinateur portable accède généralement aux deux par le biais d'un VPN (ou en étant physiquement présent). Je pourrais configurer le VPN sur SOffice pour accéder à SCustomer, mais je ne préfère pas.

Y a-t-il un moyen pour que je puisse, disons, mettre default à deux des dépôts ?

7voto

krtek Points 15497

Vous ne pouvez pas default à deux référentiels, mais vous pouvez définir plus d'un référentiel dans votre fichier de référence. hgrc fichier :

[paths]
default= /path/to/first/repo
scustomer = /path/to/second/repo

Vous pouvez ensuite pousser vers le scustomer dépôt de manière explicite :

hg push scustomer

Si vous voulez automatiser le processus de pousser vers les deux dépôts à la fois, je ne suis pas au courant d'une méthode Mercurial pour le faire, mais il est vraiment facile de créer un shell script, un alias ou autre chose pour exécuter les deux commandes l'une après l'autre.

Vous pouvez même utiliser un crochet sur le dépôt pour pousser automatiquement vers l'autre, mais vous devrez faire la distinction entre une poussée "manuelle" et la poussée automatique dans le crochet, et je suppose que cela sera vraiment désordonné.

5voto

Neil Points 24938

Pourriez-vous créer un second clone du référentiel avec un hook qui pousse automatiquement vers les deux référentiels externes ? Puis pousser depuis votre clone de travail vers le second clone.

3voto

Ry4an Points 56453

Il y a un MultirepoExtension qui ajoute des commandes pour effectuer n'importe quelle opération sur plusieurs dépôts.

Ou vous pourriez créer un alias à pousser vers les deux comme :

[aliases]
pushboth = !$HG push http://first ; $HG push http://second

ou vous pourriez créer un crochet de pré-poussée qui pousse vers l'autre. Quelque chose comme :

[hooks]
pre-push = hg push http://second

Mais c'est la réponse de krtek que j'aime le plus (et que j'ai upvoted). Il suffit de donner à chacun un alias de chemin et de lancer push deux fois avec les noms courts au lieu des URLs.

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