Отправка локального репозитория Mercurial на удаленный сервер или клонирование на сервере с локального

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

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

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

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


person Samaursa    schedule 30.12.2010    source источник
comment
Я думаю, вам следует поговорить с нами в списке рассылки пользователей Mercurial: [email protected] - подобные проблемы с настройкой требуют обсуждения, а не простого вопроса и ответа. Это лучшее использование вашего времени и времени сообщества Mercurial, из которого лишь небольшая часть пытается не отставать от StackOverflow.   -  person Martin Geisler    schedule 30.12.2010


Ответы (5)


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

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

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

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

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

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

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

  1. Похоже, вы уже пробовали другой хост, но, может быть, попробовать еще один?
  2. Можете ли вы перенести пустой репозиторий или другое репозиторий со своего компьютера на удаленный?
  3. Есть ли у вас доступ к другому с компьютера / сети (например, к ноутбуку и местной кофейне с бесплатным Wi-Fi), который вы можете попробовать отправить целевое репо или тестовое репо?
person Bert F    schedule 30.12.2010
comment
Я отметил это как правильный ответ просто потому, что было предоставлено много полезной информации. Однако я не смог найти решение моей конкретной проблемы. - person Samaursa; 21.03.2011

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

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

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

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

тогда это то же самое, что делать

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

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

person Martin Geisler    schedule 30.12.2010
comment
В случае hg clone также будет установлен псевдоним по умолчанию. Добавьте это во второй список: echo "[paths] default=http://example.net/my-repository" > .hg/hgrc - person barjak; 31.12.2010

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

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

в 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 (локальный) и изменив номера портов, если это необходимо.

person Community    schedule 25.04.2012
comment
Многие люди не понимают, что вы можете отправлять туннели через ssh, а не просто использовать его для доступа к оболочке. - person sabgenton; 25.04.2012

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

$ hg clone localrepo ssh://[email protected]:port/relative_remote_path
$ hg clone localrepo ssh://[email protected]:port//absolute_remote_path
person Serge Stroobandt    schedule 08.08.2014

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

person Ben Mathews    schedule 31.01.2012