Den ons 28 sep. 2022 kl 10:29 skrev Harald Oehlmann <
harald.oehlm...@elmicron.de>:

> ( I have chosen the same title as SVN-2516, as it addresses the same issue
> )
>
> Thank you for great subversion. I am a happy user with TortoiseSVN on
> Windows with a Linux server since 20 years.
>
> I was hit by a quality department request to restore a revision, I have
> tagged before. Unfortunately, this does not work, if there are externals
> on externals.
>
> I have only one repository and the externals all go to the same repository.
>
> There are hints on stack overflow to run over the files and search for
> any ".svn" folder and call "svn up -r 123" if they are found.
> That is great. Unfortunately, I use a lot of externals only to one file
> (typically image files for buttons).
>
> I find it really sad, that there is no command:
>
> "svn up -r 123 -propage-externals", which will checkout also the
> externals, as if "-r 123" would be set for the externals.
> For me, this is the main point missing in SVN and a blocker for any use,
> as a tagged version may never be restored and the quality department
> will say to you: you are not able to reproduce the source code.
>

I assume your externals property doesn't specify a PEG revision (see the
SVN book [1]). If you did, then the external would update to that
particular peg revision, otherwise the peg revision defaults to HEAD.

In /trunk it is probably tempting to have the externals tracking HEAD. But
when you tag a release it should be part of your process to freeze all
externals to a certain point in time (either to switch them to a specific
tag or pegging them to a revision). That way you can easily go back in time
to and restore the complete working copy. The TortoiseSVN repository [2] is
using this for all release tags, they are updating all externals to the
desired tag in the external repository.

As for your use case, I can see a point in having the externals definition
default to the same revision as the rest of the working copy (since they
are in the same repository and share the same revision number sequence).
But I feel the same way as C. Michael Pilato in his first comment: "The
disparity between behaviors for externals that happen to point to the
same repository and those that point to a different repository bothers
me.". It will for sure make things more difficult to explain if externals
pointing to another repository default to HEAD while intra-repository
externals point to "same revision" (that would be BASE, I think).

Kind regards,
Daniel


[1] https://svnbook.red-bean.com/en/1.7/svn.advanced.externals.html
[2] https://osdn.net/projects/tortoisesvn/scm/svn/

Reply via email to