4

外部 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 へのアクセス権はありません。

おそらく特定のリビジョンでレプリケーションを開始するために、これを克服する方法はありますか? どんな提案でも大歓迎です。

4

1 に答える 1

2

svnsync の問題に関するアドバイスはありませんが、あなたはやろうとしています

"I'm trying to make a partial mirror of an external svn repository.". 

svkを試しましたか。打ち切られたプロジェクトなのに。これは、Subversion リポジトリの部分ミラーを作成するための非常に優れたツールです。サブプロジェクトの部分的な履歴を取得するために時々使用しました。次の Subversion ディレクトリ構造があるとします。

トランク
  メインプロジェクト
  ヘルパーツール
    ImportantToolAsSubProject
枝
タグ

svk は、/trunk/HelperTools/ImportantToolAsSubProject のみのサブバージョン履歴を作成できます。このディレクトリに 100 件のコミットしかない場合。作成された Subversion リポジトリには 100 件のコミットしかありません。

于 2013-01-27T10:57:14.227 に答える