Какой лучший способ получить копию кончика ртутного хранилища? - PullRequest
3 голосов
/ 25 июня 2010

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

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

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

Ответы [ 2 ]

3 голосов
/ 25 июня 2010

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

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

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

Редактировать: для получения снимка

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] нужным протоколом.

1 голос
/ 25 июня 2010

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

Тим Пост отметил, что если у вас есть доступный интерфейс CGI hgweb, вы можете настроить его так, чтобы он сжимал сжатые архивы и распаковывал их (и интерфейс был достаточно последовательным, чтобы вы могли писать это через wget), но если вы В ядре Mercurial не так много инструментов, чтобы помочь вам, и разработчики высказались против попытки превратить Mercurial в обычного клиента типа rsync.

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

...