Есть ли эффективный рабочий процесс для отражения проекта, который в основном размещен на bitbucket с использованием Hg, на github?
Зеркальное отображение HG-проекта с Bitbucket на Github
Ответы (7)
Вы можете использовать такой инструмент, как hg-git
, чтобы:
- настроить репозиторий Git где-нибудь, к которому у вас есть push-доступ,
- а затем запустите
hg push [path]
из своего проекта. Например:
$ cd hg-git # (a Mercurial repository)
$ hg bookmark -r default master # make a bookmark of master for default, so a ref gets created
$ hg push git+ssh://[email protected]/schacon/hg-git.git
$ hg push
Это преобразует все наши данные Mercurial в объекты Git и отправит их на сервер Git.
Вы также можете поместить этот путь в раздел[paths]
файла.hg/hgrc
, а затем передать его по имени.
Если вы используете Mercurial для проекта, вы можете быстро и легко создать git-зеркало вашего проекта, чтобы пользователи git могли внести свой вклад. Я создал руководство по использованию hg-git
для управления зеркалами Mercurial на GitHub.
В нем рассказывается, как начать работу с учетной записью GitHub, как отправить проект с Mercurial на GitHub и как принимать взносы (запросы на вытягивание) от GitHub. Вот ссылка на сообщение в блоге: http://hgtip.com/tips/advanced/2009-11-09-create-a-git-mirror/ заархивировано на http://web.archive.org/web/20100811223113/http://hgtip.com/tips/advanced/2009-11-09-create-a-git-mirror/
'git-remote-hg' - это полуофициальный мост Mercurial из проекта Git, после установки он позволяет клонировать, извлекать и отправлять в репозитории Mercurial и из них, как если бы они были репозиториями Git:
Добавьте git-remote-hg в свой путь к корзине. Затем вы можете выполнить зеркальное отображение как , упомянутого на github.
git clone --mirror hg::https://bitbucket_repo
затем перейдите в свое клонированное репо
git remote set-url --push origin https://github.com/exampleuser/mirrored
наконец, синхронизируйте свое зеркало
git fetch -p origin
git push --mirror
dnf install -y git-remote-hg
- person Alec Istomin; 31.01.2020
По состоянию на июль 2013 года существует BitSyncHub, веб-сервис для автоматизации этого процесса с помощью перехватчика пост-получения BitBucket. Однако вам нужно будет предоставить службе разрешение на запись в ваш репозиторий GitHub (добавьте bitsynchub в качестве участника).
Я сообщаю с февраля 2019 года. Я только что столкнулся с этой проблемой, и последовал предложению @ vonc использовать hg-git и заполнил несколько недостающих шагов, чтобы заставить его работать. Здесь я дам более подробное руководство:
- Установите hg-git, клонировав его репозиторий где-нибудь и создав раздел 'extension' в вашем ~ / Файл .hgrc выглядит примерно так:
[extensions]
hggit = [path-to]/hg-git/hggit
Я нашел самые свежие инструкции по установке в исходном репозитории: https://bitbucket.org/durin42/hg-git. Так что следите за этим.
Установите dulwich, если это еще не сделано:
pip install dulwich
.Создайте новый пустой репозиторий на GitHub, например https://github.com/user/git-mirror < / а>.
Клонируйте исходный репозиторий hg и отправьте его в зеркало git:
$ hg clone https://bitbucket.org/user/hg-source
$ cd hg-source
$ hg push git+ssh://[email protected]/user/git-mirror.git
Еще одно доступное решение для быстрого преобразования: https://github.com/frej/fast-export
Для этого можно использовать службу Git-hg Mirror (включая зеркалирование репозитория GitHub в Bitbucket или двунаправленную синхронизацию) .