19

私は複数の水銀リポジトリを持ってhg cloneおり、ファイルサーバー上にそれらのバックアップを作成するために使用しました。hg pull -u次に、各サブディレクトリで実行して1日1回更新するバッチファイルを作成します。

このバックアップスクリプトをできるだけ汎用的にしたいので、H:\ BACKUPS\REPOSフォルダーに保存されているすべてのバックアップリポジトリを更新する必要があります。これは、同じフォルダに保存されている私のhgbackup.batです。

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

問題:hg pullは現在の作業ディレクトリでのみ動作しているようで、プルのターゲットリポジトリを指定するスイッチがないようです。Windowsバッチスクリプトが嫌いなので、.batをできるだけシンプルに保ち、別のディレクトリにcdするのは避けたいと思います。

hg pull -u別のディレクトリで実行する方法はありますか?

4

2 に答える 2

36

-R-switchを使用します。

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

hg -v help pullのすべてのコマンドラインオプションについては、を参照してくださいhg pull-vスイッチはヘルプにグローバルオプションを含めるように指示します)。

于 2009-11-23T09:49:02.213 に答える
0

この質問は、自分のコンピューター用に作業していたスクリプトが原因でかなり後で見つかりました。バッチスクリプトではなく、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
    }
}
于 2010-09-09T19:42:31.520 に答える