You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@subversion.apache.org by Daniel Shahaf <d....@daniel.shahaf.name> on 2010/07/19 14:37:54 UTC
File externals, 1.5 client, and 1.7 client: dies with with "In
file 'subversion/libsvn_wc/adm_ops.c' line 2343: assertion failed
(external_repos_relpath != NULL)"
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
]]]
Re: File externals, 1.5 client, and 1.7 client: dies with with "In
file 'subversion/libsvn_wc/adm_ops.c' line 2343: assertion failed
(external_repos_relpath != NULL)"
Posted by 'Daniel Shahaf' <d....@daniel.shahaf.name>.
Bert Huijben wrote on Mon, Jul 19, 2010 at 22:21:55 +0200:
> As noted on IRC, I fixed the assertion in r965523. But note that this
> doesn't make the scenario work as libsvn_wc can't determine if two different
> urls point to the same repository.
>
Thanks.
> I would recommend using repository relative urls for file externals, until
> we have a new and proper design on how we want to handle file externals.
>
Well, in this case the file external is used to pull configuration from
svn.us.a.o to svn.eu.a.o, so a repos-relative URL might not have the same
semantics.
(My workaround was to relocate that dir in my wc to svn.us.)
> Bert
>
Re: File externals, 1.5 client, and 1.7 client: dies with with "In
file 'subversion/libsvn_wc/adm_ops.c' line 2343: assertion failed
(external_repos_relpath != NULL)"
Posted by 'Daniel Shahaf' <d....@daniel.shahaf.name>.
Bert Huijben wrote on Mon, Jul 19, 2010 at 22:21:55 +0200:
> As noted on IRC, I fixed the assertion in r965523. But note that this
> doesn't make the scenario work as libsvn_wc can't determine if two different
> urls point to the same repository.
>
Thanks.
> I would recommend using repository relative urls for file externals, until
> we have a new and proper design on how we want to handle file externals.
>
Well, in this case the file external is used to pull configuration from
svn.us.a.o to svn.eu.a.o, so a repos-relative URL might not have the same
semantics.
(My workaround was to relocate that dir in my wc to svn.us.)
> Bert
>
RE: File externals, 1.5 client, and 1.7 client: dies with with "In file 'subversion/libsvn_wc/adm_ops.c' line 2343: assertion failed (external_repos_relpath != NULL)"
Posted by Bert Huijben <be...@qqmail.nl>.
> -----Original Message-----
> From: Daniel Shahaf [mailto:d.s@daniel.shahaf.name]
> Sent: maandag 19 juli 2010 16:38
> To: dev@subversion.apache.org
> Subject: File externals, 1.5 client, and 1.7 client: dies with with "In
> file 'subversion/libsvn_wc/adm_ops.c' line 2343: assertion failed
> (external_repos_relpath != NULL)"
>
> 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.
As noted on IRC, I fixed the assertion in r965523. But note that this
doesn't make the scenario work as libsvn_wc can't determine if two different
urls point to the same repository.
I would recommend using repository relative urls for file externals, until
we have a new and proper design on how we want to handle file externals.
Bert