私はSVNに不慣れで、それを学ぼうとしています。SVNサーバーをセットアップし、チェックイン/チェックアウトできます
それからのファイル。次のステップとして、私はそれにアクセス制御を行おうとしています。また、いくつかのコミットフックを追加しようとしています。
一部の不要なチェックインを防止します。
これが私のsvnリポジトリです:
/svnrepos/repo1
/svnrepos/repo2
/svnrepos/test >>>>>>> My test repository for playing around with SVN
今、私はpre-commitを使用して次のことを行おうとしています。
1. Preventing some users to check-in to a directory or any of its sub-folders
2. Preventing some files (say .class files) to be checked in by all users
これが私の環境です:
Perl: v5.14.2 (linux 32-bit )
SVN: 1.7.4 (r1295709)
OS: Linux svnserver 2.6.18-164.el5 #1 SMP Tue Aug 18 15:51:54 EDT 2009 i686 i686 i386 GNU/Linux
コマンド「svnserve-d-r/ svnrepos--log-file/var/log/svn.log」を使用してsvnサーバーを実行しています
現在、リポジトリ/ svnrepos/testへのアクセス制限を提供しようとしています。commit-access-control.cfgファイルを編集して、アクセス制限を提供しようとしています。この構成ファイルの内容は次のとおりです。
[Make everything read-only for all users]
match = .*
access = read-only
[Make test project read-write for admin users ]
match = ^trunk/svnrepos/test/samplefile.txt
users = PR111319
access = read-write
次の一致パターンは機能していないようです。
match=^trunk/svnrepos/test/samplefile.txt
match=^/svnrepos/test/samplefile.txt
match=/svnrepos/test/samplefile.txt
match=/test/samplefile.txt
match=^/samplefile.txt
どのような一致パターンを指定しても、ファイルsamplefile.txtのコミット中に次のエラーが発生します。
org.apache.subversion.javahl.ClientException: A repository hook failed
svn: Commit failed (details follow):
svn: Commit blocked by pre-commit hook (exit code 1) with output:
/svnrepos/test/hooks/commit-access-control.pl: user `PR111319' does not have permission to commit to
these paths:
/
samplefile.txt
ただし、一致を。*として指定すると、正常にコミットできます。このことから、問題は「一致」にあることがはっきりとわかります。
pre-commitファイルの内容は次のとおりです。
68 REPOS="$1"
69 TXN="$2"
70
71 # Make sure that the log message contains some text.
72 SVNLOOK=/opt/CollabNet_Subversion/bin/svnlook
73 $SVNLOOK log -t "$TXN" "$REPOS" | \
74 grep "[a-zA-Z0-9]" > /dev/null || exit 1
75
76 # Check that the author of this commit has the rights to perform
77 # the commit on the files and directories being modified.
78 /opt/ActivePerl-5.14/bin/perl "$REPOS/hooks/commit-access-control.pl" "$REPOS" "$TXN" "$REPOS/hooks/commit-access-control.cfg" || exit 1
79
80 # All checks passed, so allow the commit.
81 exit 0
さらに情報が必要な場合はお知らせください。
よろしくお願いいたします。Parasuraman.R