0

個人用のリポジトリがいくつかあり、それらをメインサーバーにバックアップしています。かなりの数があり、すべてのリポジトリでプル操作を実行するにはかなりの時間がかかります。

Mercurial は複数のリポジトリのバッチプルをサポートしていますか? もしそうなら、どうすればいいですか?そうでない場合、比較的簡単な解決策はありますか?

私は Windows を使用しており、TortoiseHg を使用しています (ただし、コマンド ラインの使用には問題はありません)。

4

3 に答える 3

2

リポジトリが静的である場合、簡単な解決策は、それらすべてのリポジトリからプルするバッチ ファイルを作成することです。いいえ、mercurial はこれを直接サポートしていません。

于 2011-03-31T12:06:14.637 に答える
0

hookマスター サーバーで を使用してスレーブ サーバーにプッシュしないのはなぜですか? これをプロジェクトの に追加しますhgrc:

[hooks]
changegroup = hg push -f https://hg.server2.com/TheRepo

参考changegroupまでに、hgrcヘルプ ファイルから:

changegroup: プッシュ、プル、またはアンバンドルによってチェンジグループが追加された後に実行します。最初の新しい変更セットの ID は $HG_NODE にあります。変更元の URL は $HG_URL にあります。

したがって、変更グループがサーバーに到着するとhg push、さらに別のサーバーに変更されます。

于 2011-03-31T13:28:35.340 に答える
0

いくつかのバッチ ファイルと、すべてのリポジトリを含むテキスト ファイルを含むトップ レベルのリポジトリがあります。

つまり repolist.txt

Repo1
# Comment
Folder\Repo2
Repo3

バッチ ファイル hgrpull.bat は次のようになります。

REM First pull top level repository to get updated repolist etc
hg pull --update --quiet

REM Find path to server repository
FOR /F %%x IN ('hg showconfig paths.default') DO SET HGSERVER=%%x

REM Now pull or clone each repository
FOR /F "delims=; eol=#" %%x IN (repolist.txt) DO (
    If EXIST "%%x\.hg" (
        ECHO Pull %%x
        hg pull --update --quiet --repository "%%x"
    ) ELSE (
        ECHO Clone %%x
        IF NOT EXIST "%%x" MKDIR "%%x"
        hg clone --pull "%HGSERVER%\%%x" "%%x"
    )
)

また、すべてのリポジトリでアクションを実行するためのバッチ ファイルもいくつか取得しました。(ステータス/着信/発信など)。これらはすべて、次の hgr.bat に基づいています。

FOR /F "delims=; eol=#" %%x IN (repolist.txt) DO (
    ECHO ** %%x
    hg %1 --repository "%%x" %2 %3 %4 %5 %6
)

すべてのリポジトリをプル/クローンします。hgrpull

すべてのリポジトリのステータスを確認します。hgr st -mard

于 2011-03-31T13:59:26.960 に答える