すべてが可能です:)
編集:急いで品質につながることはなく、質問のすべてのWindows参照が欠落している私の答えもありませんでした。ここでは、Windows で同期を機能させる方法について説明します。
この場合、2 台のマシンがあります。
- マシン A: リポジトリが現在実行されている場所。
- マシン B: 同期先。
A から同期したい B に新しいリポジトリを作成します。このリポジトリが空である (rev0 で実行されている) ことは非常に重要です。
B で、新しく作成されたリポジトリの SVN フォルダーで、/hooks を参照し、次の BAT ファイルを作成します。
start-commit.bat
IF "%2" == "someusername" (goto :label1) else (echo "Only the someusername account may commit new revisions" >&2 )
exit 1
goto :eof
:label1
exit 0
pre-revprop-change.bat
IF "%3" == "someuser" (goto :label1) else (echo "Only the someuser user may change revision properties" >&2 )
exit 1
goto :eof
:label1
exit 0
someuser
マシン A のリポジトリに存在する syncuser であり、マシン B のリポジトリで権限を持つ唯一のユーザーです。マシン B のリポジトリに対して手動でコミットを行わないことが非常に重要です。
/hooks
マシン A のリポジトリのフォルダー内
post-commit.bat
CD PATH_TO_SUBVERSION\bin
svnsync sync svn://machineB/repos --non-interactive --no-auth-cache --source-username machineAusername --source-password machineApassword --sync-username machineBusername --sync-password machineBpassword
これらのバッチ ファイルが配置されたら、B のリポジトリに同期するように指示する必要があります。
svnsync initialize svn://
マシンB/repos svn://
マシンA/repos --non-interactive --no-auth-cache --source-username
マシンAユーザー名 マシンAパスワード マシンバスユーザー名 --source-password
マシン --sync-username
B --sync-password
パスワード
次のようなものが返されます。Copied properties for revision 0.
これで、マシン A のリポジトリにコミットするたびに、マシン B のリポジトリにコピーされます。
Google Codeまたは別のオンライン リポジトリに同期する場合は、trunk/branches/tags 構造をリビジョン 1 にコミットすることに注意することが非常に重要です。これらのサード パーティのリポジトリを使用する場合は、それらに連絡してリポジトリをリセットする必要があります。同期リポジトリとしての場所。
当然のことながら、 http: //www.svnforum.org/2017/viewtopic.php?t=5745&sid=06551a22d9c0b5780cf1faab6b0e8ce9 から pre-revprop-change.bat と start-commit.bat をコピーしました。
これを自分でテストリポジトリに実装したところ、魅力的に機能するようです。svnsync は私の頭蓋骨の奥深くに沈んでしまいましたが、この質問に気づいてよかったです。仕事でsvnをセットアップするときにセットアップするつもりでした。だから、明日の仕事で最初に何をするかはわかっています。ありがとうございます!
編集2:
私のように、大量のリポジトリを持っている場合、この一般的な post-commit.bat が魅力的です。
SET REPOS=%1
SET REV=%2
SET REPOS=%REPOS:D:\SVN=%
CD "C:\Program Files\Subversion\bin"
svnsync sync svn://machineB/%REPOS%-sync --non-interactive --no-auth-cache --source-username usernameA --source-password passwordA --sync-username usernameB --sync-password passwordB
これにより、リポジトリ名がキャッチされ、それを使用して同期 URL が動的に決定されます。-sync
わかりやすくするために、マシン B のすべての同期リポジトリに接尾辞を付けました。この汎用 BAT ファイルはmachineAD:\SVN
の svnserve ルートの /hooks に配置する必要がありますが、ビットはmachineBの svnserve ルートです。