[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Inconsistent locks between working copy and repository

From: Michalis Karatzas <michalis.karatzas_at_gmail.com>
Date: 2006-04-10 12:20:53 CEST

------
setup
------

I setup a svn repository accessible throw apache2 http for the
needs of a project.The project has a lot of binary files so we
end up using the Lock/Modify/Unlock mode and this lead me to
write some hook scripts to force the users to work in that mode
(e.g. All file in the repository has to have a needs-lock
property set, every change on the repository must be on files
locked by the transaction owner, etc)
All the svn clients access the repository throw http and apache2

------------
The problem:
------------

A repository user locks a file ( fileA ) and moves to fileB:
>svn lock fileA
>svn move fileA fileB

So far all is ok.

When the user commits the changes and the pre-commit fails, so
the transaction fails, the locks between the working copy and
the repository are inconsistent. ( e.g. the lock on
the fileA at repository have been released ! )

My first thought has that I have some bug in the pre-commit script.
After some time messing with the script, I found that there is no
error in the pre-commit script, but for some reason, the command
"svnlook lock filaA" informs no lock on the file.

So I replace the pre-commit code with this just the one line:
            exit 1

The same happened. If the transactiopn fails, but the lock is released.
Is something that I don't understand?
If the commit fails why lock is released?
And the worst is that before the end of the transaction
(inside pre-commit hook) the lock is already released.

Below is a unix shell script for reproduce the problem:
--script start------------------
################################################################
# CHANGE the REPO , UTL_REPO and WC variales
# to meet your configuration
################################################################
#
REPO=/svn/repos/repoTest
URL_REPO=http://146.124.244.185/svn/repoTest
WC=`pwd`/wc
#

rm -rf $REPO $WC
svnadmin create $REPO

svnadmin load $REPO <<EOF
SVN-fs-dump-format-version: 2

UUID: 7dad8dd4-cd10-0410-9524-cf8073a4e8f7

Revision-number: 0
Prop-content-length: 56
Content-length: 56

K 8
svn:date
V 27
2006-04-07T02:15:27.237635Z
PROPS-END

Revision-number: 1
Prop-content-length: 128
Content-length: 128

K 7
svn:log
V 30
First Commit added file a.txt

K 10
svn:author
V 3
svn
K 8
svn:date
V 27
2006-04-07T02:20:55.871982Z
PROPS-END

Node-path: a.txt
Node-kind: file
Node-action: add
Prop-content-length: 36
Text-content-length: 25
Text-content-md5: 1555971975b5d6a8a18b74c53b67838f
Content-length: 61

K 10
needs-lock
V 5
a.txt
PROPS-END
This is the file 'a.txt'

EOF

svn co $URL_REPO $WC

cat > $REPO/hooks/pre-commit <<EOF
echo "this is for test only" >&2
exit 1
EOF

chmod 777 $REPO/hooks/pre-commit

cd $WC
svn lock a.txt
svn move a.txt ren.txt
svn ci -m "rename file a.txt to ren.txt"

echo
echo
echo
echo Running svnlook lock a.txt
echo
svnlook lock $REPO a.txt

--script end------------------

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@subversion.tigris.org
For additional commands, e-mail: users-help@subversion.tigris.org
Received on Mon Apr 10 16:47:23 2006

This is an archived mail posted to the Subversion Users mailing list.

This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.