Ответ 1
Используйте -R
-switch:
hg pull -u -R /path/to/repository
См. hg -v help pull
для всех параметров командной строки hg pull
(переключатель -v
указывает, чтобы помощь включала глобальные параметры).
У меня есть несколько меркуриальных репозиториев и используется 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
в другом каталоге?
Используйте -R
-switch:
hg pull -u -R /path/to/repository
См. hg -v help pull
для всех параметров командной строки hg pull
(переключатель -v
указывает, чтобы помощь включала глобальные параметры).
Нашел этот вопрос совсем немного позже из-за 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
}
}