Hi Bert,
Yes, the same recipe in 1.6.17 results in read-only files without the revert.
Actually, in that version, the files are read-only before the commit, which
isn't the desired behavior either - this thread seems to be related:
http://svn.haxx.se/users/archive-2010-10/0228.shtml
fergus
On 05/27/2012 10:53 AM, Bert Huijben wrote:
-----Original Message-----
From: Fergus Slorach [mailto:sug...@gmail.com]
Sent: zaterdag 26 mei 2012 23:57
To: dev@subversion.apache.org
Subject: File permissions are incorrect after directory copy in 1.7
In Subversion 1.7.5:
If a directory containing svn:needs-lock files is copied and
committed, the needs-lock files are left writeable.
The writeable state can be resolved by running 'svn revert' on
the files, even though the status indicates there is nothing to
revert.
Recipe and run-through results below.
Did you check if this is a regression.
If it is not, I'm not sure if we should call it a bug.
The copied files are no longer unmodified and have a new (future) URL that
is not locked and can't be locked.
I assume that they get the read only flag after a commit makes them
'unmodified'?
Bert
Thanks,
fergus
Recipe:
cd /tmp
svnadmin create repos
svn co file:///tmp/repos/ copy_test
cd copy_test
svn mkdir foo
touch foo/bar.txt
svn add foo/bar.txt
svn propset svn:needs-lock 1 foo/bar.txt
svn commit -m 'Added'
svn copy foo goo
svn commit -m 'Copied'
ls -l goo # goo/bar.txt is writeable
svn st -u -v goo # goo/bar.txt has no status
svn revert goo/bar.txt # goo/bar.txt is reverted
ls -l goo # goo/bar.txt is now read-only
Run of the recipe:
/tmp $ cd /tmp
/tmp $ svnadmin create repos
/tmp $ svn co file:///tmp/repos/ copy_test
Checked out revision 0.
/tmp $ cd copy_test
/tmp/copy_test $ svn mkdir foo
A foo
/tmp/copy_test $ touch foo/bar.txt
/tmp/copy_test $ svn add foo/bar.txt
A foo/bar.txt
/tmp/copy_test $ svn propset svn:needs-lock 1 foo/bar.txt
property 'svn:needs-lock' set on 'foo/bar.txt'
/tmp/copy_test $ svn commit -m 'Added'
Adding foo
Adding foo/bar.txt
Transmitting file data .
Committed revision 1.
/tmp/copy_test $ svn copy foo goo
A goo
/tmp/copy_test $ svn commit -m 'Copied'
Adding goo
Committed revision 2.
/tmp/copy_test $ ls -l goo
total 0
-rw-rw-r-- 1 fergus fergus 0 May 27 09:45 bar.txt
/tmp/copy_test $ svn revert goo/bar.txt
Reverted 'goo/bar.txt'
/tmp/copy_test $ ls -l goo
total 0
-r--r--r-- 1 fergus fergus 0 May 27 09:45 bar.txt
/tmp/copy_test $ svn revert goo/bar.txt