Replacing symlink exhibits unexpected error

2011-07-19 Thread Mattius McLaughlin

Hi All,

  I'm encountering some strange behaviour with replacing a symlink with 
a real file in the repository and wanted to know if what I was seeing is 
a bug or whether I'm doing something wrong.  I'd like to replace the 
file in one commit, but Subversion objects to changing the file type:


% ls -l trunk/memory_ddr3.v
lrwxrwxrwx 1 mclaughl eng 74 Jul 19 11:51 trunk/memory_ddr3.v -> 
/proj/ddr3/s39/s39a0c2762e5ac7f7

% svn status trunk/memory_ddr3.v
% svn rm trunk/memory_ddr3.v
D trunk/memory_ddr3.v
% cp /proj/ddr3/s39/s39a0c2762e5ac7f7 trunk/memory_ddr3.v
% svn add trunk/memory_ddr3.v
A trunk/memory_ddr3.v
% svn status trunk/memory_ddr3.v
R   trunk/memory_ddr3.v
% svn ci -m "Correcting link" trunk/memory_ddr3.v
svn: Commit failed (details follow):
svn: Entry '/home/mclaughl/nobackup/trunk/memory_ddr3.v' has 
unexpectedly changed special status

% svn --version
svn, version 1.6.15 (r1038135)
   compiled Jan  5 2011, 17:03:40

Copyright (C) 2000-2009 CollabNet.
Subversion is open source software, see http://subversion.apache.org/
This product includes software developed by CollabNet 
(http://www.Collab.Net/).


The following repository access (RA) modules are available:

* ra_neon : Module for accessing a repository via WebDAV protocol using 
Neon.

  - handles 'http' scheme
  - handles 'https' scheme
* 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

Server version:

% svn --version
svn, version 1.6.11 (r934486)
   compiled Apr 28 2010, 10:26:48

Copyright (C) 2000-2009 CollabNet.
Subversion is open source software, see http://subversion.tigris.org/
This product includes software developed by CollabNet 
(http://www.Collab.Net/).


The following repository access (RA) modules are available:

* ra_neon : Module for accessing a repository via WebDAV protocol using 
Neon.

  - handles 'http' scheme
  - handles 'https' scheme
* ra_svn : Module for accessing a repository using the svn network protocol.
  - handles 'svn' scheme
* ra_local : Module for accessing a repository on local disk.
  - handles 'file' scheme


I can work around this by doing the replace in two transactions (delete, 
commit, add, commit), but shouldn't I be able to replace this file in one?


Does this warrant a bug report or is this user error?

--Mattius McLaughlin




Re: Replacing symlink exhibits unexpected error

2011-07-26 Thread Mattius McLaughlin

On 07/19/11 12:04, Mattius McLaughlin wrote:

Hi All,

  I'm encountering some strange behaviour with replacing a symlink 
with a real file in the repository and wanted to know if what I was 
seeing is a bug or whether I'm doing something wrong.  I'd like to 
replace the file in one commit, but Subversion objects to changing the 
file type:


% ls -l trunk/memory_ddr3.v
lrwxrwxrwx 1 mclaughl eng 74 Jul 19 11:51 trunk/memory_ddr3.v -> 
/proj/ddr3/s39/s39a0c2762e5ac7f7

% svn status trunk/memory_ddr3.v
% svn rm trunk/memory_ddr3.v
D trunk/memory_ddr3.v
% cp /proj/ddr3/s39/s39a0c2762e5ac7f7 trunk/memory_ddr3.v
% svn add trunk/memory_ddr3.v
A trunk/memory_ddr3.v
% svn status trunk/memory_ddr3.v
R   trunk/memory_ddr3.v
% svn ci -m "Correcting link" trunk/memory_ddr3.v
svn: Commit failed (details follow):
svn: Entry '/home/mclaughl/nobackup/trunk/memory_ddr3.v' has 
unexpectedly changed special status




In case anyone stumbles across this later, the missing step here was to 
remove the svn:special property as well as removing the file:


% ls -l trunk/memory_ddr3.v
lrwxrwxrwx 1 mclaughl eng 74 Jul 19 11:51 trunk/memory_ddr3.v -> 
/proj/ddr3/s39/s39a0c2762e5ac7f7

% svn status trunk/memory_ddr3.v
% svn rm trunk/memory_ddr3.v
D trunk/memory_ddr3.v
% svn propdel svn:special trunk/memory_ddr3.v
property 'svn:special' deleted from 'trunk/memory_ddr3.v'.
% cp /proj/ddr3/s39/s39a0c2762e5ac7f7 trunk/memory_ddr3.v
% svn add trunk/memory_ddr3.v
A trunk/memory_ddr3.v
% svn status trunk/memory_ddr3.v
R   trunk/memory_ddr3.v
% svn ci -m "Correcting link" trunk/memory_ddr3.v
Replacing  trunk/memory_ddr3.v
Transmitting file data .
Committed revision 20311.

I'm surprised the client can't handle this automatically, but I suppose 
it's a fairly rare use case.


--Mattius McLaughlin


Re: Replacing symlink exhibits unexpected error

2011-07-26 Thread Stefan Sperling
On Tue, Jul 26, 2011 at 02:10:59PM -0700, Mattius McLaughlin wrote:
> On 07/19/11 12:04, Mattius McLaughlin wrote:
> >Hi All,
> >
> >  I'm encountering some strange behaviour with replacing a symlink
> >with a real file in the repository and wanted to know if what I
> >was seeing is a bug or whether I'm doing something wrong.  I'd
> >like to replace the file in one commit, but Subversion objects to
> >changing the file type:
> >
> >% ls -l trunk/memory_ddr3.v
> >lrwxrwxrwx 1 mclaughl eng 74 Jul 19 11:51 trunk/memory_ddr3.v ->
> >/proj/ddr3/s39/s39a0c2762e5ac7f7
> >% svn status trunk/memory_ddr3.v
> >% svn rm trunk/memory_ddr3.v
> >D trunk/memory_ddr3.v
> >% cp /proj/ddr3/s39/s39a0c2762e5ac7f7 trunk/memory_ddr3.v
> >% svn add trunk/memory_ddr3.v
> >A trunk/memory_ddr3.v
> >% svn status trunk/memory_ddr3.v
> >R   trunk/memory_ddr3.v
> >% svn ci -m "Correcting link" trunk/memory_ddr3.v
> >svn: Commit failed (details follow):
> >svn: Entry '/home/mclaughl/nobackup/trunk/memory_ddr3.v' has
> >unexpectedly changed special status
> >
> 
> In case anyone stumbles across this later, the missing step here was
> to remove the svn:special property as well as removing the file:
> 
> % ls -l trunk/memory_ddr3.v
> lrwxrwxrwx 1 mclaughl eng 74 Jul 19 11:51 trunk/memory_ddr3.v ->
> /proj/ddr3/s39/s39a0c2762e5ac7f7
> % svn status trunk/memory_ddr3.v
> % svn rm trunk/memory_ddr3.v
> D trunk/memory_ddr3.v
> % svn propdel svn:special trunk/memory_ddr3.v
> property 'svn:special' deleted from 'trunk/memory_ddr3.v'.
> % cp /proj/ddr3/s39/s39a0c2762e5ac7f7 trunk/memory_ddr3.v
> % svn add trunk/memory_ddr3.v
> A trunk/memory_ddr3.v
> % svn status trunk/memory_ddr3.v
> R   trunk/memory_ddr3.v
> % svn ci -m "Correcting link" trunk/memory_ddr3.v
> Replacing  trunk/memory_ddr3.v
> Transmitting file data .
> Committed revision 20311.
> 
> I'm surprised the client can't handle this automatically, but I
> suppose it's a fairly rare use case.

I can reproduce this problem in 1.6.x. I would say it is a bug.

It seems to work fine in 1.7, without the need to delete the
svn:special property first. There's a minor UI problem though,
'svn status' shows the replace as '~' rather than 'R'.