個人用のリポジトリがいくつかあり、それらをメインサーバーにバックアップしています。かなりの数があり、すべてのリポジトリでプル操作を実行するにはかなりの時間がかかります。
Mercurial は複数のリポジトリのバッチプルをサポートしていますか? もしそうなら、どうすればいいですか?そうでない場合、比較的簡単な解決策はありますか?
私は Windows を使用しており、TortoiseHg を使用しています (ただし、コマンド ラインの使用には問題はありません)。
個人用のリポジトリがいくつかあり、それらをメインサーバーにバックアップしています。かなりの数があり、すべてのリポジトリでプル操作を実行するにはかなりの時間がかかります。
Mercurial は複数のリポジトリのバッチプルをサポートしていますか? もしそうなら、どうすればいいですか?そうでない場合、比較的簡単な解決策はありますか?
私は Windows を使用しており、TortoiseHg を使用しています (ただし、コマンド ラインの使用には問題はありません)。
リポジトリが静的である場合、簡単な解決策は、それらすべてのリポジトリからプルするバッチ ファイルを作成することです。いいえ、mercurial はこれを直接サポートしていません。
hook
マスター サーバーで を使用してスレーブ サーバーにプッシュしないのはなぜですか? これをプロジェクトの に追加しますhgrc
:
[hooks]
changegroup = hg push -f https://hg.server2.com/TheRepo
参考changegroup
までに、hgrc
ヘルプ ファイルから:
changegroup: プッシュ、プル、またはアンバンドルによってチェンジグループが追加された後に実行します。最初の新しい変更セットの ID は $HG_NODE にあります。変更元の URL は $HG_URL にあります。
したがって、変更グループがサーバーに到着するとhg push
、さらに別のサーバーに変更されます。
いくつかのバッチ ファイルと、すべてのリポジトリを含むテキスト ファイルを含むトップ レベルのリポジトリがあります。
つまり 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