Vincent Lefevre <vincent-...@vinc17.net> writes: > On 2012-07-04 13:28:21 +0100, Philip Martin wrote: >> >> Where would the revision 3 come from? LastChangedRev is 2. That's what >> Subversion's cheap copy means. > > Yes, but I meant that LastChangedRev could be 3 after a move. > I don't think this contradicts cheap copy: when doing > > svn cat file:///tmp/my-test-svn/svn/dir2/file@3 > > Subversion gets the file via a COPY node or something like that > (I don't know the exact internals) as the file hasn't changed, > and it could get LastChangedRev from it.
No, it doesn't follow a copy. dir2@3 has a reference to the the same child object as dir1@2. dir2/file@3 is exactly the same object as dir1/file@2. That's what a cheap copy means. If you make a commit that explicitly modifies dir2/file then the node-rev-id of dir2/file will get a new copy-id but until that happens it's the same node as dir1/file. > My point is that <URL>@<LastChangedRev> should always be a valid > reference to the file, and it should be equivalent to <URL>@HEAD > or just <URL>. That's not the way it works. I think you want: -r<LastChangedRev> <URL>@<Revision> i.e. take the current URL@Revision and go back to LastChangedRev. -- Cerified & Supported Apache Subversion Downloads: http://www.wandisco.com/subversion/download