2009-11-23 15 views
16

私は複数の水銀リポジトリを持ち、hg cloneを使ってファイルサーバ上にバックアップを作成しています。今度は、サブディレクトリごとにhg pull -uを実行して、1日に1回更新するバッチファイルを作成します。hg pullは現在の作業ディレクトリでのみ動作しますか?

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

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

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

どのようにすればいいですか?hg pull -u別のディレクトリに実行することはできますか?

+0

バックアップとして保存するだけの場合、 '-u'pdateをプルするのはなぜですか?これは、あなたが保存しているデータ量を冗長に増やすだけです –

答えて

32

使用-R -switch:

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

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

+1

助けてくれてありがとう!はい、私は-Rオプションを打ちのめしましたが、私はリポジトリを指定すると思っていました。 – fbuchinger

+3

ありがとう!他のgooglerの説明として、-Rオプションは、現在のディレクトリ以外のディレクトリでhgコマンドを実行するグ​​ローバルオプションです。私はそれを使ってあるレポのコミットから関連するレポに変更を引き出しました。パッチ-p1'。パッチがない場合、 'hg import --no-commit'は似ています。 – undefined

0

私は自分自身のコンピュータで作業していたスクリプトのためにこの質問をかなり後で発見しました。バッチスクリプトではなく、PowerShellで行いました。 )。これは、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 
    } 
} 
関連する問題