Am 28.09.2022 um 11:43 schrieb Daniel Sahlberg:
Den ons 28 sep. 2022 kl 10:29 skrev Harald Oehlmann <harald.oehlm...@elmicron.de <mailto: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 <https://svnbook.red-bean.com/en/1.7/svn.advanced.externals.html> [2] https://osdn.net/projects/tortoisesvn/scm/svn/ <https://osdn.net/projects/tortoisesvn/scm/svn/>


Dear Daniel,

thank you for the answer.
No, there are no PEG-revisions in the externals. I don't want them. I have two use-cases, where SVN is apparently not the solution:

R1) always have the head in externals (normal developping mode)
R2) be able to check-out an exact version, as it was checked out with a distinct version later on (mode to get again, what was true before for quality/archiving/documentation purposes.

The advice "use a versioned external" does not help, as this contradicts R1). Tagging a version works for externals, but not for externals on externals.

For me, it is hard to understand that this is wanted like that. For me, a revision system should have the capability to checkpoint. But it has not. I can understand, that multiple repositories is another story. But the power of SVN is, to have one exact revision number which gives everything. And it is sad, that this great tool is not usable for externals.

Thank you again,
Harald

Attachment: OpenPGP_signature
Description: OpenPGP digital signature

Reply via email to