Как переместить частный репозиторий Mercurial на центральный сервер?
Я только начинаю работать с Mercurial, и я прочитал учебник Джоэла Спольски по Hg Init, который мне понравился.
Мне интересно: скажем, у меня есть частный репозиторий, и я работаю над ним около месяца. Затем я решаю, что хочу централизовать или сделать его общедоступным, как на http://bitbucket.org/. Я хочу сохранить всю историю.
Интуитивно понятным было бы использовать hg clone, но в соответствии с документами:
Местоположение источника добавляется в файл.hg/hgrc нового репозитория по умолчанию, который будет использоваться для будущих извлечений.
Я не думаю, что это то, чего я хочу, так как источником является мой локальный частный репозиторий, а местом назначения является публичный сервер. Я не хочу, чтобы общедоступный сервер пытался извлечь из моего частного хранилища в будущем, думая, что это центральный сервер. Я надеюсь это имеет смысл.
Нужно ли настраивать файл.hg/hgrc на сервере вручную? Я правильно подхожу к этому?
2 ответа
Справка BitBucket гласит, что это так же просто, как сделать пустое репо в BitBucket, а затем нажать на него:
... создать новый пустой репозиторий на странице "Создать репозиторий". Предположим, что этот репозиторий называется blonk и находится по http://bitbucket.org/jespern/blonk.
Теперь просто нажмите на него:
$ cd ~/Work/blonk # our existing hg repository $ hg push http://bitbucket.org/jespern/blonk ...
Готово!
Вы можете отредактировать.hg / hgrc в своем репозитории, чтобы включить путь по умолчанию к Bitbucket:
$ cat .hg/hgrc [paths] default = http://bitbucket.org/jespern/blonk
Теперь вы можете просто ввести hg push и hg pull без указания полного URL.
Выполнение этой операции с использованием 'hg push', как описано, вероятно, является наилучшим способом сделать это в целом.
Однако в других обстоятельствах может быть удобно или утешительно отметить, что все состояние Hg содержится в каталоге.hg, и поэтому достаточно просто переместить этот каталог, чтобы переместить хранилище.
Например, если у вас есть ssh-доступ к машине на example.com, вы можете заархивировать (или заархивировать) свой каталог.hg в хранилище 'private ', распаковать его, скажем, в ~/repo/foo
на удаленной машине (таким образом, создавая каталог ~/repo/foo/.hg
там), а затем просто клонировать это:
$ hg clone ssh://example.com/repo/foo
Я согласен, что у этого есть небольшое заднее чувство. Однако здесь ничего не происходит, и редактирование файлов конфигурации не требуется. Когда я делаю это, я нахожу это менее запутанным, чем "правильный" способ.