Mercurial периодическая операция вытягивания - PullRequest
0 голосов
/ 31 марта 2011

У меня есть несколько репозиториев для личного использования, и я создаю их резервные копии на своем главном сервере.Их довольно много, и для каждого из репозиториев требуется много времени.

Mercurial поддерживает пакетную загрузку нескольких репозиториев?Если да, то как мне это сделать?Если нет, то есть ли относительно простое решение?

Я использую Windows и использую TortoiseHg (но у меня нет проблем с использованием командной строки).

Ответы [ 3 ]

2 голосов
/ 31 марта 2011

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

0 голосов
/ 31 марта 2011

У меня есть репозиторий верхнего уровня, где у меня есть несколько командных файлов и текстовый файл, содержащий все репозитории.

т.е. repolist.txt

Repo1
# Comment
Folder\Repo2
Repo3

и командный файл hgrpull.bat выглядит так:

REM First pull top level repository to get updated repolist etc
hg pull --update --quiet

REM Find path to server repository
FOR /F %%x IN ('hg showconfig paths.default') DO SET HGSERVER=%%x

REM Now pull or clone each repository
FOR /F "delims=; eol=#" %%x IN (repolist.txt) DO (
    If EXIST "%%x\.hg" (
        ECHO Pull %%x
        hg pull --update --quiet --repository "%%x"
    ) ELSE (
        ECHO Clone %%x
        IF NOT EXIST "%%x" MKDIR "%%x"
        hg clone --pull "%HGSERVER%\%%x" "%%x"
    )
)

Я также получил несколько командных файлов для выполнения действий со всеми хранилищами. (статус / входящий / исходящий и т. д.). Все они основаны на следующем hgr.bat:

FOR /F "delims=; eol=#" %%x IN (repolist.txt) DO (
    ECHO ** %%x
    hg %1 --repository "%%x" %2 %3 %4 %5 %6
)

Извлечь / клонировать все репозитории: hgrpull

Проверка статуса во всех репозиториях: hgr st -mard

0 голосов
/ 31 марта 2011

Почему бы не использовать hook на главном сервере для отправки на подчиненный сервер? Добавьте это к проекту hgrc:

[hooks]
changegroup = hg push -f https://hg.server2.com/TheRepo

FYI о changegroup из hgrc файла справки:

changegroup: Запустить после добавления группы изменений с помощью push, pull или unbundle. Идентификатор Первая новая ревизия находится в $ HG_NODE. URL, с которого пришли изменения, находится в $ HG_URL.

Таким образом, когда на сервер приходит группа изменений, она hg push вносит изменения на еще один сервер.

...