Hi there,
It seems that svn 1.9 changed the behaviour of the "svn lock" and the "svn
unlock" commands with regards to the fate of the corresponding
pre-lock/pre-unlock hooks.
Up to svn 1.8, when those hooks failed (exit code != 0) the commands (svn
lock/unlock) failed too.
Now, on svn 1.9, the commands always succeed.
To reproduce you can execute the atached script, which creates a temporary
directory, cd to it, creates a repository and a working copy, commits a
file and then tries to lock the file, before and after installing a hook
that always fail. With svn 1.8 in you path the results would be like this:
$ ./repro-lock.sh
The files will be left in the /tmp/tmp.xoidDWLkub directory
+ cd /tmp/tmp.xoidDWLkub
+ svnadmin create repo
+ svn --version
+ head -1
svn, version 1.8.10 (r1615264)
+ svn co file:///tmp/tmp.xoidDWLkub/repo wc
Checked out revision 0.
+ cd wc
+ touch file.txt
+ svn add file.txt
A file.txt
+ svn ci -mx
Adding file.txt
Transmitting file data .
Committed revision 1.
+ svn up
Updating '.':
At revision 1.
+ svn lock file.txt
'file.txt' locked by user 'gustavo'.
+ echo lock succeeded without a hook
lock succeeded without a hook
+ cat
+ chmod +x ../repo/hooks/pre-lock
+ svn lock file.txt
svn: E165001: Lock blocked by pre-lock hook (exit code 1) with no output.
+ echo lock failed with a failing hook
lock failed with a failing hook
Now, with svn 1.9 in your path the results are like this:
$ ./repro-lock.sh
The files will be left in the /tmp/tmp.qGx4oqIlNo directory
+ cd /tmp/tmp.qGx4oqIlNo
+ svnadmin create repo
+ svn --version
+ head -1
svn, version 1.9.0 (r1692801)
+ svn co file:///tmp/tmp.qGx4oqIlNo/repo wc
Checked out revision 0.
+ cd wc
+ touch file.txt
+ svn add file.txt
A file.txt
+ svn ci -mx
Adding file.txt
Transmitting file data .done
Committing transaction...
Committed revision 1.
+ svn up
Updating '.':
At revision 1.
+ svn lock file.txt
'file.txt' locked by user 'gustavo'.
+ echo lock succeeded without a hook
lock succeeded without a hook
+ cat
+ chmod +x ../repo/hooks/pre-lock
+ svn lock file.txt
svn: warning: W165001: Lock blocked by pre-lock hook (exit code 1) with no
output.
+ echo lock succeeded with a failing hook
lock succeeded with a failing hook
The problem was reported to me by the Debian maintainers of my SVN::Hooks
Perl module at https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=795756.
--
Gustavo.
Received on 2015-08-22 22:02:53 CEST