2010-06-25 2 views
3

Я хочу сделать эквивалент svn export REMOTE_URL с ртутным хранилищем. То, что я хочу в конце, - это неверсированный снимок репозитория на удаленном URL-адресе, но без клонирования всех наборов изменений на моем локальном компьютере.Каков наилучший способ получить копию наконечника ртутного хранилища?

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

Возможно ли это? Как бы это сделать?

ответ

3

Его обычно проще (если удаленный HG использует интерфейс hgweb), чтобы просто посетить репозиторий в вашем браузере и загрузить .tgz/.zip/.bz2 пересмотра подсказки. Вы увидите ссылки, если это поддерживает удаленный HG.

Если вам нужен репозиторий, вам нужны все ревизии, которые вошли в текущий tip, чтобы он был вообще функциональным.

Есть варианты для hg clone, которые позволяют получать хранилище до определенного пересмотра, но ни (что я мог найти), что позволит вам получить только пересмотр наконечника. То, что вы по существу запрашиваете, - это моментальный снимок репо.

Edit: Для того, чтобы получить снимок

hg clone http[s]://url.to.repo repo.hg 
cd repo.hg 
hg archive ../repo-snapshot 
cd .. 
rm -rf repo.hg 

Снимок теперь в Репо снимка.

Да, это связано с клонированием репо, поэтому я предложил посмотреть, поддерживает ли удаленный hgweb «на лету» загрузку любой конкретной версии. Если это так, ваша проблема решается с помощью чего-то вроде curl или wget вместо HG.

Если нет, то полезно, чтобы исходное репо «живое», так как вы можете обновить его позже через hg pull, а затем создать еще один снимок будущей версии. Это экономит необходимость начинать с нуля при клонировании, особенно для больших хранилищ с большим количеством изменений.

Кроме того, Linux ориентирован, но вы получаете суть. Конечно, замените http [s] требуемым протоколом по мере необходимости.

+0

Это именно то, что я хочу; моментальный снимок удаленного репозитория, в конкретном хеше тега/ревизии. У меня нет желания самому репозиторию; это никогда не будет в пакете релиза :) –

+0

@Chris R - см. мои правки. В идеале, удаленный hgweb поддерживает загрузку моментальных снимков любой версии. Еще ... вам нужно сделать одноразовый клон, чтобы создать его. –

+0

Я вижу их; Я специально стараюсь избегать локального клона, так что это не стартер. Скорее всего, загрузка с HTTP-архива. –

1

Есть ли причина, по которой вы не можете поддерживать зеркало (обновленное в фоновом режиме, как вам часто требуется) удаленного репозитория на вашем локальном компьютере, а затем запустить средство управления выпуском на вашем локальном компьютере hg archive из локального клонировать по мере необходимости? Если ваша проблема связана с пользователем, а не с общей пропускной способностью/потреблением памяти, это компенсирует «медленную» часть там, где вы ее не увидите.

Tim Post отметил, что если у вас есть доступный интерфейс CGI hgweb, вы можете настроить его на сжатие сжатых архивов и распаковать их (и интерфейс достаточно согласован, чтобы вы могли создавать скрипты через wget), но если вы 't, у ядра Mercurial нет большого количества инструментов, которые могли бы вам помочь, а разработчики высказались против попытки превратить Mercurial в общий клиент типа rsync.

Если вы не боитесь играть с неофициальными надстройками, вы можете взглянуть на FTP Extension. Однако это заставит вас нажать с сервера.

+0

hgweb может быть билетом, хотя я уверен, что мы планировали использовать модель доступа ssh. Тем не менее, это может оказаться лучшим способом сделать это. Спасибо, мне нужно посмотреть, можно ли его заставить работать. –

Смежные вопросы