Search code examples
svntortoisesvn

Update to revision does not work for relative externals


The directory test_externals contains a real file "original.txt" and an external originating from it: ../test_externals/original.txt external.txt

An "update to revision" to a former revision does not select the former revision for the external.txt. Here evidence from the command line:

D:\test_externals>dir
27.06.2019  16:33    <DIR>          .
27.06.2019  16:33    <DIR>          ..
27.06.2019  16:27                 8 external.txt
27.06.2019  16:27                 8 original.txt
               2 Datei(en),             16 Bytes
               2 Verzeichnis(se), 128.625.299.456 Bytes frei

D:\test_externals>svn ls
original.txt

D:\test_externals>svn pg svn:externals .
../test_externals/original.txt external.txt

D:\test_externals>svn info external.txt |findstr Revision
Revision: 578

D:\test_externals>svn info original.txt |findstr Revision
Revision: 578

D:\test_externals>svn update -r 577
Updating '.':
U    original.txt

Fetching external item into 'external.txt':
Updated external to revision 578.

At revision 577.

D:\test_externals>svn info external.txt |findstr Revision
Revision: 578

D:\test_externals>svn info original.txt |findstr Revision
Revision: 577

I would have expected that external.txt should also be updated to revision 577. I used:

TortoiseSVN 1.11.1, Build 28492 - 64 Bit , 2019/01/08 21:40:39
ipv6 enabled
Subversion 1.11.1, -release
apr 1.6.5
apr-util 1.6.1
serf 1.3.9
OpenSSL 1.1.0j  20 Nov 2018
zlib 1.2.11
SQLite 3.23.1

Solution

  • I would have expected that external.txt should also be updated to revision 577

    Wrong. In your definition you don't use PEG-revision, thus it will be always HEAD (AFAICR). Re-read SVN Book sections Externals Definitions + Peg and Operative Revisions