Reproduction recipe: [[[ $ svnadmin create repo $ svn co file://`pwd`/repo wc Checked out revision 0. $ cd wc /Users/breser/copy-lock/wc echo foo > foo $ svn add foo A foo $ svn ci -mm Adding foo Transmitting file data . Committed revision 1. $ svn lock foo 'foo' locked by user 'breser'. $ svnadmin lslocks ../repo Path: /foo UUID Token: opaquelocktoken:9895d3c3-7d41-419f-b9b3-87d4b6b1de23 Owner: breser Created: 2013-10-03 08:36:25 -0400 (Thu, 03 Oct 2013) Expires: Comment (0 lines): $ svn cp foo bar A bar $ svn ci -mm Adding bar Committed revision 2. $ svnadmin lslocks ../repo ]]] Using a separate working copy to do the copy of the locked file doesn't free the lock. I don't think this makes sense. Removing locks automatically on commit really only makes sense when you've made a change to the locked file. I set the subcomponent to libsvn_repos, but I'm not sure what code is responsible for this since I haven't bothered to dig into this much.