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

external diff3-cmd trouble during svn update

From: Roel Harbers <roel_at_roelharbers.nl>
Date: 2004-09-22 15:40:50 CEST


I use a special "false.exe" program as external diff3 command: all it
does is return errorcode 1, so that all files that are changed both
locally and on the server fail to merge, and result in a conflict. (I
have my reasons for not wanting the merge to be done automatically, but
they are not relevant here.) This worked fine with svn 1.0.5.

However, with v1.1.0RC3, when I do an svn update on a file that has
local and remote changes that could have been automatically merged by
the internal diff3, the file itself is correctly marked as conflicted,
but the output of svn up shows G(merged) instead of C(conflicted).

I'm using svn v1.1.0RC3 on WinXP Pro SP1.

--- recipe:
(diff3-cmd is set in CURRENT_USER registry key to a "false.exe" program
that just returns errorcode 1)

D:\svn\Repositories>svnadmin create Repositories\Test

D:\svn>copy con test.txt
first line
last line^Z
         1 file(s) copied.

D:\svn>svn import -m"import file" test.txt
Adding test.txt

Committed revision 1.

D:\svn>svn co file:///D:/svn/Repositories/Test test1
A test1\test.txt
Checked out revision 1.

D:\svn>svn co file:///D:/svn/Repositories/Test test2
A test2\test.txt
Checked out revision 1.

D:\svn>svn co file:///D:/svn/Repositories/Test test3
A test3\test.txt
Checked out revision 1.

now, edit D:\svn\test1\test.txt to:
first line 111
last line

and edit D:\svn\test2\test.txt to:
first line
last line 222

and edit D:\svn\test3\test.txt to:
first line 333
last line

D:\svn>svn ci -m"changed first line" test1
Sending test1\test.txt
Transmitting file data .
Committed revision 2.

D:\svn>svn st -u test2
M * 1 test2\test.txt
Status against revision: 2

D:\svn>svn st -u test3
M * 1 test3\test.txt
Status against revision: 2

D:\svn>svn up test2
G test2\test.txt
Updated to revision 2.

D:\svn>dir test2
  Directory of D:\svn\test2

22-09-2004 15:17 <DIR> .
22-09-2004 15:17 <DIR> ..
22-09-2004 15:17 0 test.txt
22-09-2004 15:17 25 test.txt.mine
22-09-2004 15:17 21 test.txt.r1
22-09-2004 15:17 25 test.txt.r2

D:\svn>svn up test3
C test3\test.txt
Updated to revision 2.

D:\svn>dir test3
  Directory of D:\svn\test3

22-09-2004 15:25 <DIR> .
22-09-2004 15:25 <DIR> ..
22-09-2004 15:25 0 test.txt
22-09-2004 15:25 25 test.txt.mine
22-09-2004 15:25 21 test.txt.r1
22-09-2004 15:25 25 test.txt.r2

So, svn update says the merge in test2 (where the merge would have
succeeded when the internal diff3 had been used) was successful (G), but
the file itself is (correctly) marked as conflicted.

In test3 (where the merge would not have succeeded, even when the
internal diff3 had been used) it is correctly shown as conflicted (C),
and the file itself is also marked as conflicted.

I would have expected both svn update commands to display C.

I could send you the false.exe if you want, but all it does is return 1 
as errorcode. Is there anything more such a program would need to do? I 
could not find the specification of what a program should do to be 
callable as a diff3 command.
Roel Harbers
To unsubscribe, e-mail: users-unsubscribe@subversion.tigris.org
For additional commands, e-mail: users-help@subversion.tigris.org
Received on Wed Sep 22 15:41:23 2004

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