Як я можу додати віддалені сховища в Mercurial?


99

Я працюю зі сховищами Git наступним чином:

  • У мене є головне сховище та кілька віддалених на різних виробничих машинах.
  • Я підштовхую виробничий код до віддалених та перезапускаю служби, щоб зміни вступили в силу.

Я збираюся перейти з Git на Mercurial, і я хотів би знати заздалегідь, як я можу досягти чогось такого.

Відповіді:


130

Ви додаєте записи до [paths]розділу .hg/hgrcфайла вашого локального клону . Ось приклад розділу, який міститиметься у .hg/hgrcфайлі:

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

Потім можна використовувати команди, як hg push remote1надіслати набори змін до цього репо. Якщо ви хочете, щоб віддалене репо для оновлення працювало в каталозі, вам потрібно поставити changegroupгачок на тому віддаленому місці, яке здійснює оновлення. Це виглядатиме приблизно так:

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

Не кожен є великим прихильником того, щоб віддалені репости автоматично оновлювали свої робочі каталоги під час натискання, і це, звичайно, не за замовчуванням.


23
Для тих, хто просто хоче бачити віддалене використання, hg pathsяке еквівалентно git remote -v.
Кейо

5
тиск за замовчуванням (замість, наприклад, віддалений1) дозволяє просто ввести "hg push". Потім використовується репозиторій push-push за замовчуванням. Дуже корисний.
Крістіан

6
@ Християн default-pushнеобхідний / корисний лише у тому випадку, якщо ваша звичайна ціль відштовхування відрізняється від звичайного джерела тяги. Якщо вони однакові (або ти ніколи не тягнеш), ​​то defaultдостатньо.
Ry4an Brase

2
Просто додамо ще більше про це: якщо у вас є default-pushі defaultв конфігураційному файлі, і перше буде використовуватися для натискання, а останнє для витягування. Якщо ви хочете натиснути і витягнути з того самого віддаленого репо (що ви, мабуть, робите, якщо ви використовуєте Mercurial централізованим способом), тоді лише покладіть defaultу файл. Було б так здорово, якби вони додали невеликий варіант командного рядка, щоб просто зробити це під час першого натиску ... (а може, я занадто
сильна

У мене на комп'ютері Mac встановлений Mercurial v2.6.2, а файл для встановлення шляхів знаходиться в .hg/hgrc(немає DOT перед назвою файлу).
Regis Zaleman

9

якщо ви хочете додати шлях за замовчуванням, вам доведеться працювати з defaultвашим ~project/.hg/hgrcфайлом. Як слідує:

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

Щасти.


5

Ви можете подивитися плагін GgHit GitHub :

hg-git загальна ідея

додаючи можливість натискання та витягування із сховища сервера Git з Mercurial.
Це означає, що ви можете співпрацювати над проектами на базі Git від Mercurial або використовувати сервер Git як точку співпраці для команди з розробниками, що використовують і Git, і Mercurial.

Примітка. Я не перевіряв цей інструмент із останніми версіями Mercurial.


1
У мене є можливість передати все на меркурій, я хотів би використовувати лише один інструмент для управління джерелами. Перетворити, як тільки сховище побудує відповідні структури, а потім лише вимірювальні команди для виробництва. Я начебто усвідомлюю, що і git, і mercurial можуть співпрацювати, але ніколи не пробували цього.
топлес

2
^ Кріс: так це ваше питання: як перетворити Git repos в Mercurial? "Або" як оголосити / налаштувати віддалений Hg repo? "(Як у superuser.com/questions/43686/… ), або" де дистанційне оголошено в Hg? "( crazythinking.wordpress.com/2009/03/07/… )
VonC

0

Якщо ви перебуваєте на Unix і у вас встановлений Git, ви можете використовувати цю функцію bash, щоб легко додати шлях до віддалених без текстового редактора:

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
}

Потім викликайте його за допомогою:

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

Якщо хтось хотів би створити еквівалент Powershell, я також хотів би включити це. Інші вдосконалення потенціалів включають перевірку помилок у параметрах та виділення факту виклику $(hg root).

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.