Перенос локального Mercurial репозитория на удаленный сервер или клонирование на сервере с локального - PullRequest
4 голосов
/ 30 декабря 2010

У меня есть локальный репозиторий, который я сейчас решил отправить на удаленный сервер (например, у меня есть хост, на котором разрешены ртутные репозитории, и я также пытаюсь передать в битбакет). Репозиторий имеет много файлов и составляет чуть более 200 МБ. Локально я могу без проблем клонировать хранилище.

Теперь у меня много изменений в этом репозитории, и я потратил пару дней, пытаясь выяснить, как заставить удаленный сервер клонировать мой репозиторий. Я не могу заставить hg serve работать за пределами локальной сети. Я перепробовал все. Поэтому вместо этого я создал новый репозиторий на удаленных серверах (как на хосте, так и на битбакете), в котором ничего нет. Теперь я отправляю полный репозиторий, который у меня есть, в эти удаленные места. До сих пор это было безуспешно, поскольку операция push зависла на searching for changes и не дает никаких других полезных выходных данных. Я оставил это в течение часа без изменений.

Теперь мои вопросы: что я делаю неправильно, когда дело касается hg serve? Я могу получить к нему доступ локально, но не удаленно (через DynDns - я настроил его правильно, и маршрутизатор правильно перенаправляет порты), чтобы я мог заставить сервер клонировать хранилище в первый раз, после чего я буду нажимать на него. Мой второй вопрос: если предположить, что клон на сервере не работает (например, если мне нужно перенести мой текущий репозиторий в bitbucket), создает ли пустой репозиторий на сервере, а затем передает локальный репозиторий в новый удаленный репозиторий, хорошо? Это источник проблемы searching for changes?

Любая помощь в этом отношении будет принята с благодарностью.

Ответы [ 5 ]

4 голосов
/ 30 декабря 2010

Что я делаю не так, когда дело касается hg serve?

Трудно сказать, но hg serve обычно не тот способ, которым я бы хотел создать удаленный клон в сторонней службе. Что касается меня, я бы не проделал дыру в моем брандмауэре, если бы мне не пришлось.

Создание пустого хранилища на сервере, а затем отправка локального хранилища в новый удаленный хранилище, хорошо?

Да. Вот как я создаю удаленный клон в Kiln. Создайте новое пустое хранилище в Kiln, возьмите URL-адрес нового хранилища, а затем отправьте его с моего компьютера.

Это источник проблемы поиска изменений?

Не уверен, но этот отчет предполагает, что действительно большой толчок может быть проблемой. Они предлагают толкать меньшие патроны (например, несколько оборотов за раз). Другое соображение заключается в том, можете ли вы жить без истории изменений (можете ли вы создать новый репозиторий из текущей версии файлов и запустить этот репозиторий. В отчете также указывается, что проверка подлинности была источником некоторых проблем (но, похоже, другое сообщение об ошибке).

В противном случае вам нужно будет выполнить дополнительную отладку, чтобы попытаться изолировать проблему для этого конкретного репо, вашего подключения к удаленному или удаленному репо. Некоторые мысли:

  1. Похоже, вы уже пробовали другой хост, но, возможно, попробуйте еще один?
  2. Можете ли вы перенести пустой репозиторий или другой репозиторий с вашего компьютера на удаленный?
  3. Есть ли у вас доступ к другому устройству / сети (например, ноутбуку и локальной кофейне с бесплатным Wi-Fi), к которому вы можете попытаться подтолкнуть целевое или тестовое репо?
2 голосов
/ 30 декабря 2010

Да, вы можете без проблем перейти в пустой репозиторий.Когда вы нажимаете или извлекаете, Mercurial проверит, связаны ли репозитории источника и назначения друг с другом.Это не позволяет мне вытягивать наборы изменений, связанные, скажем, с OpenOffice, в мой клон Mozilla Firefox.

Новый пустой репозиторий связан со всеми репозиториями, поэтому вы всегда можете создать пустой репозиторий и перенести / перенести измененияit.

На самом деле, когда вы делаете

hg clone http://example.net/my-repository

, это то же самое, что и

hg init my-repository
cd my-repository
hg pull http://example.net/my-repository

, за исключением того, что для вас не будет установки пути по умолчанию- см. комментарий Барджака о том, как это сделать.

1 голос
/ 08 августа 2014

рт.ст. Mercurial можно использовать с протоколом защищенной оболочки. Есть два варианта пути:

$ hg clone localrepo ssh://user@server.url:port/relative_remote_path
$ hg clone localrepo ssh://user@server.url:port//absolute_remote_path
1 голос
/ 25 апреля 2012

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

Но другой вариант, если ваш сервер доступен по ssh, это сделать быстрый обратный туннель с замазкой на локальных окнах. Не требует смены брандмауэра.

в putty ищите ssh >> туннелирует это меню и выбирает дистанционную кнопку для обратного туннеля.

Или в локальной системе Linux что-то вроде:

ssh -fnNTR <any port you want to forward to your remote>:localhost:<port for local hg serv> <and then here type what you would normally to ssh to your remote ssh sever>

Вы обошли свой брандмауэр и можете клонировать!

Я должен добавить, что вы можете создать обычный прямой туннель для передачи, просто изменив R на L (локальный) и изменив номера портов, если это так.

0 голосов
/ 31 января 2012

Вы можете попробовать нажать набор изменений.Это поможет, если проблема с памятью.Это также может помочь вам определить, какая ревизия вызывает проблему.

...