[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Bug while trying to handle a property conflict caused by update

From: Alexander Sinyushkin <Alexander.Sinyushkin_at_svnkit.com>
Date: Wed, 29 Jul 2009 22:58:36 +0200

Hello,

I'd like to report two problems.

First of all, imagine you've two similar working copies of trunk from
the same repo: wc1 and wc2.
Say, you have a directory wc1/A (and wc2/A, of course). You add a
property 'xx' on wc1/A with the value '1' and
commit it. Then you add the same property 'xx' on wc2/A, but with the
value '2' on wc2/A.

1. And here comes the first problem. If you run 'svn up --accept base'
in wc2 you'll result with two files in wc2/A/.svn - dir-props (empty)
and dir-prop-base (with value '1').
Then when you run 'svn up -rREV_WHERE_NO_XX_EXISTS_ON_A' working copy
gets updated, 'svn pl wc2/A' shows no properties but nevertheless, the file
wc2/A/.svn/dir-prop-base still resides in the admin area.

2. If instead of running an update with the key --accept you run simply
'svn up' you'll get a property conflict. Then if you first try to select
'df' and after that 'r'
svn crashes, like this:

Conflict for property 'xx' discovered on 'A'.
Select: (p) postpone, (df) diff-full, (e) edit,
        (s) show all options: df
--- tempfile.2.tmp Wed Jul 29 22:54:54 2009
+++ tempfile.tmp Wed Jul 29 22:54:54 2009
@@ -1 +1 @@
-1
\ No newline at end of file
+2
\ No newline at end of file
Select: (p) postpone, (df) diff-full, (e) edit, (r) resolved,
        (s) show all options: r
svn: Couldn't do property merge
svn: Conflict callback violated API: returned no merged file.

This leaves the wc in an incomplete state:
$ svn stat
! .
!M A

I've attached scripts for both of the two use-cases.
Regards,

----
Alexander Sinyushkin,
TMate Software,
http://svnkit.com/ - Java [Sub]Versioning Library!
------------------------------------------------------
http://subversion.tigris.org/ds/viewMessage.do?dsForumId=462&dsMessageId=2376718

#!/bin/bash

mkdir testReposImport
cd testReposImport
mkdir A
echo 'iota' > iota
cd A
mkdir B
cd ..
cd ..

svnadmin create testRepos

svn import testReposImport file:///`pwd`/testRepos -m "initial import"

svn co file:///`pwd`/testRepos wc1
svn co file:///`pwd`/testRepos wc2

cd wc1

#set property xx on A
svn ps 'xx' '1' A
svn commit -m "set property 'xx' on A"

cd ..

cd wc2

#set property xx on A but with different value than is in the repository
svn ps 'xx' '2' A

#update wc2 witch --accept = base
svn up --accept base

#now update back to revision where no property xx exists on A
#svn up -r1

#!/bin/bash

mkdir testReposImport
cd testReposImport
mkdir A
echo 'iota' > iota
cd A
mkdir B
cd ..
cd ..

svnadmin create testRepos

svn import testReposImport file:///`pwd`/testRepos -m "initial import"

svn co file:///`pwd`/testRepos wc1
svn co file:///`pwd`/testRepos wc2

cd wc1

#set property xx on A
svn ps 'xx' '1' A
svn commit -m "set property 'xx' on A"

cd ..

cd wc2

#set property xx on A but with different value than is in the repository
svn ps 'xx' '2' A

#run update and choose first (df) and then (r)
svn up
Received on 2009-07-29 22:58:58 CEST

This is an archived mail posted to the Subversion Dev mailing list.