Originally I had a file external which pointed to the same repository but under
a different server name.  (i.e., under a CNAME rather than under the name I
used during checkout.)  I then checkout'd (rather: svn up --set-depth'd) with
1.5, which complained about the external being a file external.  So I 'svn
upgrade'd and ran 'up --set-depth' again.  It died with an assertion.

Reproduction recipe attached:

[[[
0:% cat ../repro2.sh 
#!/bin/sh

svn15=/usr/bin/svn
svn17=$HOME/src/svn/trunk.d/subversion/svn/svn

rm -rf r r2 wc
svnadmin create r
ln -s r r2
$svn15 mkdir -q file://`pwd`/r/A file://`pwd`/r/B -m "r1"
$svn15 co -q file://`pwd`/r wc
touch wc/B/iota
$svn15 add -q wc/B/iota
$svn15 ci -q wc -m "add B/iota"
$svn15 ps -q svn:externals "iota file://`pwd`/r2/B/iota" wc/A
$svn15 ci -q wc -m "add external on A"
rm -rf wc
$svn15 co -q --depth=empty file://`pwd`/r wc

set -x

echo "=== This errors:"
$svn15 update --set-depth=infinity wc

echo "=== This doesn't error:"
$svn17 upgrade wc

echo "=== This segfaults:"
$svn17 update --set-depth=infinity wc
]]]


[[[
0:% ../repro2.sh 
+ echo === This errors:
=== This errors:
+ /usr/bin/svn update --set-depth=infinity wc
A    wc/A
A    wc/B
A    wc/B/iota

Fetching external item into 'wc/A/iota'
svn: URL 'file:///tmp/daniel/svn/r2/B/iota' refers to a file, not a directory
+ echo === This doesn't error:
=== This doesn't error:
+ /home/daniel/src/svn/trunk.d/subversion/svn/svn upgrade wc
Upgraded 'wc'.
Upgraded 'wc/A'.
Upgraded 'wc/B'.
+ echo === This segfaults:
=== This segfaults:
+ /home/daniel/src/svn/trunk.d/subversion/svn/svn update --set-depth=infinity wc

Fetching external item into 'wc/A/iota'
subversion/libsvn_subr/sqlite.c:1017: (apr_err=235000)
svn: In file 'subversion/libsvn_wc/adm_ops.c' line 2343: assertion failed 
(external_repos_relpath != NULL)
Aborted
]]]

Reply via email to