On Wed, Mar 28, 2018 at 10:36 AM, Nathan Hartman
<hartman.nat...@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.

Reply via email to