Tati, Aslesh wrote on Fri, May 06, 2016 at 21:33:40 +0000:
> Hi,
>
> I have a question about the behavior of svn checkout. Here is the scenario:
> I have a standard trunk, branches, tags structure for one of my apps in a repo and I created a branch, say at revision 500 of trunk.
> Later, I delete the branch and the recreate another branch with the same name and at the same revision 500 of trunk.
>
> Now I'm trying to check out the branch at revision 500. I know that the branch doesn't exist at r500 (it will be some higher revision), only trunk does and it probably doesn't make sense to check out a branch at that revision; but I'm interested in knowing why this behavior occurs and if it is expected.
>
> svn co <REPO_URL>/branches/<BRANCH>@500 --> svn info on that gives the URL as expected i.e. <REPO_URL>/branches/<BRANCH>
>
> svn co -r 500 <REPO_URL>/branches/<BRANCH> --> svn info on that gives an unexpected result i.e. <REPO_URL>/trunk
>
> Shouldn't subversion complain that the branch doesn't exist at revision 500?
No.
«svn checkout -r 500 <REPO_URL>/branches/<BRANCH>» means "Look what
BRANCH is in rHEAD, trace copies back to r500, then operate on that",
which is why it checks out trunk_at_r500.
«svn checkout -r 500 <REPO_URL>/branches/<BRANCH>@500» will do what you
expect (error out with "does not exist at that revision").
The peg revision of URLs defaults to HEAD. The operative revision
defaults to the peg revision.
http://svnbook.red-bean.com/en/1.8/svn.advanced.pegrevs.html#svn.advanced.pegrevs.algorithm
Cheers,
Daniel
> If it has checked out without complaining, why does svn info using the second way of checkout show the unexpected result?
Received on 2016-05-10 00:15:13 CEST