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