как сделать автоматическое зеркало git для репозитория hg

1867
Powerman

У меня есть проект плагина Vim для GoogleCode, использующий Mercurial, но пользователи хотят, чтобы он был на github, чтобы облегчить его использование в качестве git subrepo (чтобы оставить свои ~ / .vim / на github со всеми плагинами внутри).

Лично я предпочитаю googlecode и hg, а не github и git, поэтому я не люблю переносить свой проект на github и предпочитаю использовать своего рода автоматическое зеркало git для моего репозитория hg. Я прочитал это: плагин Hg-Git Mercurial, синхронизация зеркала git с hg-git и Create Git Mirror. Похоже, с некоторой дополнительной головной болью это может работать с использованием двух команд вместо одной:

hg push hg push githubmirror 

Но, знаете ли, большинство из нас забудут hg pushвремя от времени бегать вторыми . Итак, можно ли каким-то образом автоматизировать это (используя хуки и т. Д.)?

Другой вопрос - есть ли лучший способ сделать такие зеркала? Может быть, GoogleCode уже предоставил git доступ к своим репозиториям hg? Или, возможно, возможно создать клон git для репозитория hg и автоматически синхронизировать его с оригинальным репозиторием hg, даже не уведомив об этом владельца репозитория hg?

2
создать сценарий с обоими, сохранить его и запустить, когда вам нужно синхронизировать? Journeyman Geek 12 лет назад 0
У меня много репозиториев, и необходимость запускать собственный сценарий для некоторых из них ничуть не лучше, чем запуск второго `hg push`: это меняет мой рабочий процесс и, следовательно, приводит к ошибкам. Powerman 12 лет назад 0

1 ответ на вопрос

1
Karolos

Вы можете сделать что-то вроде зацепки после фиксации. Посмотрите на http://www.selenic.com/mercurial/hgrc.5.html

крючки

Команды или функции Python, которые автоматически выполняются различными действиями, такими как запуск или завершение фиксации. Для одного и того же действия можно запустить несколько хуков, добавив к действию суффикс. Заменить хук всего сайта можно, изменив его значение или установив пустую строку. Для хуков можно установить приоритет, добавив префикс приоритета к имени хука в новой строке и установив приоритет. Приоритет по умолчанию равен 0, если не указан.

Использование post-commit - плохая идея, потому что commit! = Push. Использование post-push также плохая идея, потому что post-push = hg push git приводит к бесконечному циклу. Но похоже, что «исходящий» крючок работает нормально. Powerman 12 лет назад 2
@Powerman Вы можете написать более сложную ловушку, которая проверяет удаленную цель, см. Http://hgbook.red-bean.com/read/handling-repository-events-with-hooks.html, раздел «Где происходят изменения - удаленно» URL репозитория. schlamar 11 лет назад 1
@schlamar Что не так с «исходящим» крючком? Зачем мне нужны более сложные крючки для решения этой проблемы? Powerman 11 лет назад 0

Похожие вопросы