RE: svn segfaults on relocate when having a not checked out external
From: Bert Huijben <bert_at_qqmail.nl>
Date: Tue, 6 Oct 2015 13:42:43 +0200
Hi,
It looks like this issue was already fixed since 1.9.0.
Backporting the fix to 1.8 is not trivial (but not that hard either). The relevant revision is r1627338.
The old code just assumes that svn:externals describes exactly what is in the working copy, while the new code checks what is really there. (Will even relocate working copies that are still there, but already removed from svn:externals)
Bert
From: Axel Kittenberger [mailto:axkibe_at_gmail.com]
Hello, below is my shell script that raises the svn segfault for me.
The issue is, doing a relocate while having an external that is not in the working copy. It raised for me, since I got one automated instance that automatically sets externals for a repository, but does not need to check it out itself, so it updates with "--ignore-externals", now I tried to relocate that daemons working copy, svn segfaulted. Its no big issue for me, since I can always revert to do a full checkout instead, or update without --ignore-externals, relocate and delete the externals in the working copy.
Still I guess, a segfault never should be not a bug, so I report it.
Operating System is Debian Jessie, if you no need any more info just ask.
Kind regards,
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~$ svn --version
svn, version 1.8.10 (r1615264)
compiled Aug 9 2015, 13:48:39 on x86_64-pc-linux-gnu
Copyright (C) 2014 The Apache Software Foundation.
This software consists of contributions made by many people;
see the NOTICE file for more information.
Subversion is open source software, see http://subversion.apache.org/
The following repository access (RA) modules are available:
* ra_svn : Module for accessing a repository using the svn network protocol.
- with Cyrus SASL authentication
- handles 'svn' scheme
* ra_local : Module for accessing a repository on local disk.
- handles 'file' scheme
* ra_serf : Module for accessing a repository via WebDAV protocol using serf.
- using serf 1.3.8
- handles 'http' scheme
- handles 'https' scheme
~$ mkdir atest
~$ cd atest/
atest$ svnadmin create repository1
atest$ svnadmin create repository2
atest$ svn checkout file:///home/axel/atest/repository1 rep1
Checked out revision 0.
atest$ svn checkout file:///home/axel/atest/repository2 rep2
Checked out revision 0.
atest$
atest$ cd rep2/
rep2$ echo "bar" > foo
rep2$ svn add foo
A foo
rep2$ svn commit -m foobar
Adding foo
Transmitting file data .
Committed revision 1.
rep2$ cd ..
atest$ cd rep1/
rep1$ echo "^/../repository2 extrep2" > externals
rep1$ svn propset svn:externals . -F externals
property 'svn:externals' set on '.'
rep1$ svn up
Updating '.':
Fetching external item into 'extrep2':
A extrep2/foo
Updated external to revision 1.
At revision 0.
rep1$ cat extrep2/foo
bar
rep1$ ### everything working as expected so far ###
rep1$ rm -rf extrep2/
rep1$ cd ..
atest$ mv repository1/ namechange1
atest$ cd rep1/
rep1$ svn relocate file:///home/axel/atest/namechange1
Segmentation fault
rep1$
This is easily tough circumvented with this. Which once again works as expected:
rep1$ svn up
Updating '.':
Fetching external item into 'extrep2':
A extrep2/foo
Updated external to revision 1.
At revision 0.
rep1$ svn relocate file:///home/axel/atest/namechange1
|
This is an archived mail posted to the Subversion Users mailing list.
This site is subject to the Apache Privacy Policy and the Apache Public Forum Archive Policy.