On Wed, Mar 28, 2018 at 10:36 AM, Nathan Hartman
<hartman.nathan_at_gmail.com> wrote:
> Our requirements are: at any time in the future, if someone checks
> out code from the past, they should get exactly the same tree as what
> existed in the past. I assume that this is probably THE #1 use case
> and desired behavior for externals. Is that correct? If not, is there
> a good reason to want otherwise?
Then make tags. Tags need to be locked down, with no commits permitted
on top of the tag.
>
> My understanding is that:
>
> (1) ^/SVN/path/to/project/tags/specific_tag
>
> That will probably work most of the time but if someone commits
> to that tag, future checkouts of past revisions will not look
> exactly as they did in the past.
See above. "No commits permitted on top of the tag".
> (2) -r [number] ^/SVN/path/to/project/tags/specific_tag
>
> Subversion first goes to that path, then follows it back in time
> to the specified revision.
>
> So if someone commits to that tag, the future checkout of the
> past revision will get the past revision.
>
> But... if a tag is ever moved, removed, or renamed in the future,
> (the project is declared defunct and removed, for example), what
> Subversion finds at that path and tries to follow back in time
> won't lead to the right place.
>
> (3) ^/SVN/path/to/project/tags/specific_tag@[number]
>
> Subversion first goes back in time to that revision, then goes to
> that path.
>
> This is where I'm a bit foggy: Once it goes back in time and goes
> to that path, does it then follow it forward to HEAD? Or does it
> stay in the past?
>
> We've set up all of our externals like (3)... Do we need to go
> through our repo and change all externals to specify both the peg
> and operative revision?
>
> Thanks,
> Nathan Hartman
If you're permitting commits on top of tags, probably so.
Received on 2018-03-28 16:59:32 CEST