Подтвердить что ты не робот

Как перенести частный репозиторий Mercurial на центральный сервер?

Я только начал работать с Mercurial, и я прочитал Joel Spolskys учебник Hg Init, который мне понравился.

Мне интересно: скажем, у меня есть частный репозиторий, и я работаю над ним около месяца. Затем я решил, что хочу централизовать его или сделать его общедоступным, например, bitbucket.org. Я хочу сохранить всю историю.

Интуитивно понятным было бы использовать hg clone, но в соответствии с документами:

Местоположение источника добавляется к новый файл репозитория .hg/hgrc, как по умолчанию будет использоваться для будущего тянет.

Я не думаю, что это то, чего хочет Id, поскольку источником является мой локальный частный репозиторий, а пункт назначения - это общедоступный сервер. Я не хочу, чтобы публичный сервер пытался вытащить из моего личного репозитория в будущем, думая, что он центральный. Надеюсь, это имеет смысл.

Нужно ли мне вручную настраивать файл .hg/hgrc на сервере? Правильно ли я подхожу к этому?

4b9b3361

Ответ 1

BitBucket help говорит, что это так же просто, как сделать пустой репо на 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-адреса.

Ответ 2

Выполнение этой операции с использованием "hg push", как описано, вероятно, является лучшим способом сделать это в целом.

Однако в других случаях было бы удобно или уверенно отметить, что все Hg-состояние содержится в каталоге .hg, поэтому просто перемещать этот каталог достаточно, чтобы переместить репозиторий.

Например, если у вас есть ssh-доступ к машине в example.com, вы можете tar (или zip) поместить свой .hg-каталог в репозиторий 'private', распакуйте его, скажем, ~/repo/foo на удаленном компьютере machine (создав таким образом каталог ~/repo/foo/.hg), а затем просто клонируем это:

$ hg clone ssh://example.com/repo/foo

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