2012-02-10 1 views
5

私は別のリモートリポジトリのミラーであるSubversionリポジトリを持っています。私は毎週リポジトリをミラーリングするためにsvnsyncを使います。ミラーリングされたリポジトリ(ローカルコピー)はバックアップ用にのみ存在します。Subversion - すべてのコミットを無効にして、リポジトリを読み取り専用にすることはできますか?

私はミラーリングされたリポジトリを読み取り専用のままにしておきたいと思います。つまり、誰もこのリポジトリへの変更をコミットすることはできませんが、ソースリポジトリをリモートリポジトリより速く読み込むために使用できます。

私はGoogleで周りを見ていたし、フックはおそらく最良の選択肢であると思われます。唯一の問題は、Googleで見ているすべての例がUnixベースであり、ミラー化されたリポジトリがWindows Server上で実行されているため、Windowsに適した例が見つからないということです。

アイデア?

答えて

5

理由だけ=アノン・アクセスを設定読んでのauth-アクセス= svnserve.confとでは読んでいませんか?

+0

私はそれを試みましたがコミットを許可しています - ファイル/myrepository/conf/svnserve.confの両方のプロパティのコメントを外しました – ziggy

+0

anon-accessのデフォルトが読まれているので、 auth-accessのための書き込みはwriteなので、それを明示的に読み取るように設定する必要があります。 – mac

+0

はい私はちょうど読むために認証アクセスを変更しようとしましたが、私はまだコミットできます。私はCollabnet Subversion edgeを使用しています。それはGUIを介してアクセスを制限するオプションがありますが、手動でsvnserveを変更すると推測しても動作するはずです。 – ziggy

6

まずは、チェックアウトURLにhttp://またはsvn://を使用していますか?

svn://を使用している場合は、空のファイルを渡すだけで、許可されたアクセスを削除するようにリポジトリのsvnserve.confファイルを設定できます。匿名アクセスは、既定では「読み取り専用」なので、svnserve.confファイルの設定を変更しない限り、問題はないはずです。または、匿名アクセスをオフにして、承認されたアクセスをread-onlyに変更することもできます。あなたがhttp://を使用している場合

はしかし、あなたが書き込みアクセスを許可しないようにSubversionサーバ上のApacheののhttpdの設定を設定する必要があります。 Apacheのhttpdの認証を設定し、システムに応じて、複数の方法があるので、トリッキー取得

は、Apacheのhttpdが複数の場所に保存することができます。

別の可能性は、リポジトリへのすべての読み書きアクセスをオフにするpre-commit hookを使用することです。

ちなみに、古いsvnsyncコマンドは、同期していた変更をコミットするためにsvnの読み書きアクセスだけでなく、pre-revprop-changeフックも設定する必要があるため、svnsyncコマンドも変更できますsvn:logsvn:date、およびsvn:authorのプロパティを元のリポジトリと一致させる必要があります。つまり、リポジトリを読み取り専用のにすると、svnsyncが破損する可能性があります。 svnsyncがどのように機能しているか、そしてこれがまだ当てはまるかどうかを読む必要があります。私のプリコミットフックもその問題を解決することができます。

関連する問題