外部 svn リポジトリの部分ミラーを作成しようとしています。http://svnbook.red-bean.com/en/1.7/svn-book.html#svn.reposadmin.maint.replication.svnsync-partialによると、これは svn 1.5 以降で可能になるはずです。
「svnsync」ユーザーを使用しなかったことを除いて、 http://svnbook.red-bean.com/en/1.7/svn-book.html#svn.reposadmin.maint.replication.svnsyncで説明されているすべての手順に従いました. 代わりに、すべてのコマンドはローカル ユーザー 'svn' として実行され、ローカル リポジトリは file:// プロトコルを使用してアクセスされます。
だから、これが私がしたことです:
$ svnadmin create /var/svn/mirrors/foreign-mirror
$ cat > /var/svn/mirrors/foreign-mirror/hooks/pre-revprop-change <<EOF
#!/bin/sh
USER="$3"
if [ "$USER" = "svn" ]; then exit 0; fi
echo "Only the svn user may change revision properties" >&2
exit 1
EOF
$ chmod +x /var/svn/mirrors/foreign-mirror/hooks/pre-revprop-change
$ cat > /var/svn/mirrors/foreign-mirror/hooks/start-commit <<EOF
#!/bin/sh
USER="$2"
if [ "$USER" = "svn" ]; then exit 0; fi
echo "Only the svn user may commit new revisions" >&2
exit 1
EOF
$ chmod +x /var/svn/mirrors/foreign-mirror/hooks/start-commit
$ svnsync initialize \
file:///var/svn/mirrors/foreign-mirror \
https://svn.foreign.com/svn/Projects/X/Y \
--source-username #### --source-password ####
$ svnsync synchronize \
file:///var/svn/mirrors/foreign-mirror \
--non-interactive --source-username #### --source-password ####
Committed revision 1.
Copied properties for revision 1.
Committed revision 2.
Copied properties for revision 2.
...
Committed revision 80089.
Copied properties for revision 80089.
Committed revision 80090.
Copied properties for revision 80090.
svnsync: Path 'Projects' not present
svnログを見る:
$ svn log https://svn.foreign.com/svn/Projects/X/Y -v -r80091
------------------------------------------------------------------------
r80091 | John.Doe | 2011-09-27 06:42:21 +0200 (Tue, 27 Sep 2011) | 1 line
Changed paths:
A /Projects/X/Y
これを正しく理解している場合、コミット #80091 の再生は失敗します。これは、/Projects が見つからないためです。これは私を混乱させます。存在しないパスをスキップすることが部分レプリケーションのポイントではないでしょうか。
ubuntu Linux(宛先リポジトリ)でsvn 1.6.6を実行しており、それを完全に制御できます。ソース リポジトリを制御することはできず、ユーザー名とパスワードは /Projects/X/Y 以下にしかアクセスできません。/Projects または /Projects/X へのアクセス権はありません。
おそらく特定のリビジョンでレプリケーションを開始するために、これを克服する方法はありますか? どんな提案でも大歓迎です。