Задача: поднять для личного hg-репозитория постоянный (приватный) адрес в интернете.

Для публичных репозиториев это легко сделать на Google Code или github или SourceForge. Как быть, если кодом делиться не хочется?

UPD. Инструкция верна, но есть путь проще - см. в конце.

1. Регистрируемся на BitBucket (можно зайти через гугл-аккаунт). Подтверждаем почту, выбираем пароль для доступа к репозиториям.
BitBucket позволяет сделать сколько угодно частных репозиториев, но к каждому доступ не больше пяти человек. Бесплатно.

2. Запускаем командную строчку. Если меркуриал не в %PATH%, делаем cd C:\Program Files\TortoiseHg (например) и set PATH=%CD%;%PATH%.

3. Переходим в папку с репозиторием cd C:\Path\Repo и запускаем hg serve.

Приложение А. Если у компа нет постоянного адреса в интернете, регистрируйтесь на DynDNS и полученные логин с паролем засуньте в рутер - почти все рутеры сейчас умеют сами обновлять DynDNS.

4. Пробросьте порт 8000 на рутере на свой компьютер. Убедитесь, что http://your-pc-name:8000 открывается.

5. В BitBucket сделайте "Импорт репозитория" и укажите этот адрес. Подождите немного. Ура, репозиторий со всеми правками сдублирован на битбакет.

UPD. Как показал в комментариях korrshun, гораздо проще создать пустой репозиторий и сделать из домашнего туда push. Оказывается, в репозиторий меркуриала можно пушить сколько угодно независимых веток 0__0, то есть, можно в один репозиторий слить несколько.

@темы: Компьютеры

Комментарии
27.01.2013 в 18:24

дрыхнущий
а разве нельзя создать на битбакете пустой репозиторий, запихать его как default в .hg/hgrc в секцию paths у текущего и сделать push?
27.01.2013 в 18:38

korrshun, может и можно, а трекер примет? Так ведь, получается, любой репозиторий можно в любой запихать. Разве что на случай совсем пустого есть особый код.
27.01.2013 в 18:53

дрыхнущий
для теста сделал hg1 и hg2 и закоммитил в них разные файлы.

igel@desunote:~/work/hg1$ hg push ssh://[email protected]/igelko/bububu
проталкиваем в ssh://[email protected]/igelko/bububu
ищем изменения
отдалённо: adding changesets
отдалённо: adding manifests
отдалённо: adding file changes
отдалённо: added 1 changesets with 1 changes to 1 files
отдалённо: bb/acl: igelko is allowed. accepted payload.
igel@desunote:~/work/hg1$

igel@desunote:~/work/hg2$ hg push ssh://[email protected]/igelko/bububu
проталкиваем в ssh://[email protected]/igelko/bububu
ищем изменения
прервано: хранилище не связано с текущим

igel@desunote:~/work/hg2$ hg push --force ssh://[email protected]/igelko/bububu
проталкиваем в ssh://[email protected]/igelko/bububu
ищем изменения
внимание: хранилище не связано с текущим
отдалённо: adding changesets
отдалённо: adding manifests
отдалённо: adding file changes
отдалённо: added 1 changesets with 1 changes to 1 files (+1 heads)
отдалённо: bb/acl: igelko is allowed. accepted payload.
igel@desunote:~/work/hg2$

по большому счету все как в гите =) я же не rebase делаю, а всего-то делаю push всех коммитов, которых там нет, на сервер.
сейчас в репозитории 2 головы - каждая со своим файлом и по хорошему надо делать им merge.

PS битбакет сам предлагает сделать push в пустой репозиторий сразу после создания.
28.01.2013 в 10:15

korrshun, понятно. Всё довольно универсально. Значит, я полез через голову :)
28.01.2013 в 15:02

дрыхнущий
можно-то можно, но лучше все равно думать прежде чем делать, потому что если ты запушишь несколько раз ветку master из разных локальных репозиториев, угадай, что приедет другому человеку, когда он сделает pull? =)
28.01.2013 в 16:26

korrshun, всё, что ли?

Расширенная форма

Редактировать

Подписаться на новые комментарии