Подтвердить что ты не робот

Работает ли hg только в текущем рабочем каталоге?

У меня есть несколько меркуриальных репозиториев и используется hg clone для создания резервных копий их на нашем файловом сервере. Теперь я хочу написать пакетный файл, который обновляет их один раз в день, запустив hg pull -u в каждом подкаталоге.

Я хочу, чтобы эта резервная копия script была как можно более общей, поэтому она должна обновлять все резервные репозитории, хранящиеся в моей папке H:\BACKUPS\REPOS. Это мой hgbackup.bat, который хранится в той же папке:

for /f "delims=" %%i in ('dir /ad/b') do hg pull -u

Проблема: hg pull, похоже, работает только с текущим рабочим каталогом, похоже, нет переключателя для указания целевого репозитория для pull. Поскольку я ненавижу Windows Batch Scripting, я хочу, чтобы мой .bat был как можно более простым и избегал cd'ing в разные каталоги.

Любые идеи о том, как я могу запустить hg pull -u в другом каталоге?

4b9b3361

Ответ 1

Используйте -R -switch:

hg pull -u -R /path/to/repository

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

Ответ 2

Нашел этот вопрос совсем немного позже из-за script, над которым я работал, для своего собственного компьютера, а не для пакета script, я сделал это в PowerShell (так как вы упомянули об этом на сервере, я предположил PS был доступен). Это обрабатывает как Subversion, так и Mercurial репозитории:

$path = "c:\users\mattgwagner\Documents\Code"

foreach($fi in get-childitem $path)
{
    if(test-path $path\$fi\.svn)
    {
        "Updating " + $fi + " via Subversion..."
        svn update $path\$fi
    }
    elseif(test-path $path\$fi\.hg)
    {
        "Updating " + $fi + " via Mercurial..."
        hg pull -u -R $path\$fi
    }
}