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

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

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

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

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

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

2 ответов


использовать -R-переключатель:

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

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


нашел этот вопрос немного позже из-за сценария, над которым я работал для своего собственного компьютера, и вместо пакетного сценария я сделал это в 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
    }
}