Changed handling of output of pre-lock hook in SVN 1.6

One of our customers reported a funny issue with the pre-lock.bat hook
script. Yes, when he used Subversion Server on Windows system. The
customer is using a custom pre-lock.bat script to explicitly lock the
file before every commit.

Why does he explicitly lock the file while svn commit itself locks the file implicitly? He has a valid reason to do so.

earlier releases (v1.6), Subversion discarded the stdout messages
printed in hook scripts. It is applicable for all hook scripts
including pre-lock.bat script. Starting with v1.6, it behaves the same with all
hook scripts, except the pre-lock.bat script. The message printed in this
hook script is used as a UID for the lock. It should be unique across
the repository. The best part about Subversion is that it is clearly
documented in the Subversion 1.6 Release Notes.

what? The customer complained that the custom pre-lock.bat script
worked very well in prior releases, but it do not work with Subversion
1.6. When he performed a file commit, he faced a 423 Locked Error error. We attempted to release the lock obtained by a different user, if any, using svnadmin rmlocks and svn unlock –force commands, but they did not help. When we investigated if it has to do with any stdout messages, we discovered that NO it didn't.
The hook script does not print any message to stdout.


The issue is that the customer has set echo on
globally in his Windows system. It prints all the commands we execute
in the hook script to stdout, including the comments as in rem command.

The solution is to set echo off in his system, and he no longer faces the problem!

Tagged with: , ,
Posted in Subversion
2 comments on “Changed handling of output of pre-lock hook in SVN 1.6
  1. Duncan Booth says:

    Given that every Windows system has ‘echo on’ by default wouldn’t it be simpler just to change the pre-lock script to turn echo off for that script alone?
    It is conventional in batch scripts to include the line ‘@echo off’ near the beginning: the leading ‘@’ character suppresses echo for that line and the command then turns echo off for the duration of the script (Windows will then restore the default setting when the script exits).

  2. Duncan Booth, yes, adding the line “@echo off” in the beginning of the pre-lock.bat script is simpler.

Leave a Reply

Your email address will not be published. Required fields are marked *