Как переместить частный репозиторий 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

Я согласен, что у этого есть небольшое заднее чувство. Однако здесь ничего не происходит, и редактирование файлов конфигурации не требуется. Когда я делаю это, я нахожу это менее запутанным, чем "правильный" способ.

Другие вопросы по тегам