On Fri, Jun 22, 2012 at 7:47 PM, Les Mikesell <lesmikes...@gmail.com> wrote:
> On Fri, Jun 22, 2012 at 12:00 PM, Ruhe Julian <jr...@axway.com> wrote:
>>
>>> I'm sort of surprised a checkout works that way either.
>>
>> I hope this is an argument for expecting svn:externals to do the same.
>
> No, it is an argument for you to more closely align your
> expectations/usage to what subversion actually does.

Interesting thread. Like Les, I was convinced at first that you were
asking something that SVN simply cannot do (given its current design).

However, then I noticed that you said: "I want an error on my request
"-rHEAD path@peg" if the object was deleted, moved or recreated." So I
wondered what the actual behavior of checkout or update would be in
those cases (since you compared with behavior of those two
subcommands). A quick test:

[[[
C:\Temp\svntest>svnadmin create testrepos

C:\Temp\svntest>svn mkdir -mm file:///C:/Temp/svntest/testrepos/dir

Committed revision 1.

C:\Temp\svntest>svn mv -mm file:///C:/Temp/svntest/testrepos/dir
file:///C:/Temp/svntest/testrepos/dir2

Committed revision 2.

C:\Temp\svntest>svn checkout -rHEAD file:///C:/Temp/svntest/testrepos/dir@1
svn: E160013: File not found: revision 2, path '/dir'
]]]

Aha, so checkout cannot follow moves either. That's expected, because
svn doesn't know how to do forward history traversal (as already
discussed in this thread).

But if I understand correctly, that's perfectly valid behavior for
your use case: same behavior as checkout. If the object has moved etc,
an error is fine.

Just to be sure, I checked what happens if you don't move the target
of the checkout, but perform some other change below it. Sure enough,
checkout does the right thing: it checks out the correct item, at the
operative revision:

[[[
C:\Temp\svntest>svn mkdir -mm file:///C:/Temp/svntest/testrepos/dir2/subdir

Committed revision 3.

C:\Temp\svntest>svn co -rHEAD file:///C:/Temp/svntest/testrepos/dir2@2
A    dir2\subdir
Checked out revision 3.

C:\Temp\svntest>dir /b dir2
subdir
]]]

Since externals (dir externals at least) are much like an embedded
checkout with some sugar on top, I think it should be doable to
implement this behavior for externals too.

Conclusion: I think you have a valid feature request. Go ahead and
file an issue.

-- 
Johan

Reply via email to