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:axk...@gmail.com] 
Sent: dinsdag 6 oktober 2015 13:25
To: users@subversion.apache.org
Subject: svn segfaults on relocate when having a not checked out external

 

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,
Axel

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

~$ 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 

 

 

 

Reply via email to