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

buddy for two externals issues? -- was: Re: locking externals

From: Neels Janosch Hofmeyr <neels_at_elego.de>
Date: Sat, 11 Apr 2009 00:48:10 +0200

Neels Janosch Hofmeyr wrote:
> Right, if no-one speaks up this time, I'll make two new issues.
Buddy system!

Does anyone agree that these two are good to be issues?

#1 externals with a fixed revision aren't locked for commit as long as
   that fixed revision coincides with HEAD.

#2 when a file-external with a fixed revision is modified, the next
   update causes a conflict with the (unrelated) HEAD revision.

I am attaching a shell script that makes both of them happen, for both file-
and directory externals.

The output of interest is:

#1

pin/file.r3 is a file external fixated on revision 3:
[[[
+ svn ci -m 'repos2, r4!?' pin/file.r3
Sending pin/file.r3
Transmitting file data .
Committed revision 4.
+ echo 'Wait! file.r3 is supposed to stay at -r3!'
Wait! file.r3 is supposed to stay at -r3!
+ echo 'The commit went through because the external was at HEAD.'
]]]

pin/dir.r2 is a directory external fixated at revision 2:
[[[
+ svn ci -m 'repos 1, r3!?' pin/dir.r2
Sending pin/dir.r2/alpha
Transmitting file data .
Committed revision 3.
]]]
(This commit was also accepted, which is bad.)

If the external's revision is smaller than HEAD, a commit invariably fails
with "out of date" messages, which is good. But, commit handling probably
needs another explicit check to block externals with fixed revs, so that
they act coherently and don't change behaviour just because the HEAD
revision number changed.

#2

The file external fixated at revision 1 ends up being merged with HEAD (here
revision 4).
[[[
+ echo whoops
+ cat pin/file.r1
r1
whoops
+ svn st pin/file.r1
M X pin/file.r1
+ svn up pin/file.r1
Conflict discovered in 'pin/file.r1'.
Select: (p) postpone, (df) diff-full, (e) edit,
        (mc) mine-conflict, (tc) theirs-conflict,
        (s) show all options: p
C pin/file.r1
Updated to revision 4.
Summary of conflicts:
  Text conflicts: 1
+ cat pin/file.r1
<<<<<<< .mine
r1
whoops
=======
whoops
>>>>>>> .r4
]]]

Same thing for modified file beta within dir-external dir.r1, which is
fixated at revision 1, HEAD is r3 here:
[[[
+ echo whoops
+ cat pin/dir.r1/beta
r1
whoops
+ svn st pin/dir.r1/beta
M pin/dir.r1/beta
+ svn up pin/dir.r1/beta
Conflict discovered in 'pin/dir.r1/beta'.
Select: (p) postpone, (df) diff-full, (e) edit,
        (mc) mine-conflict, (tc) theirs-conflict,
        (s) show all options: p
C pin/dir.r1/beta
Updated to revision 3.
Summary of conflicts:
  Text conflicts: 1
+ cat pin/dir.r1/beta
<<<<<<< .mine
r1
whoops
=======
r2
>>>>>>> .r3
]]]
(-r3 still says "r2" because the test didn't change it for -r3. This is not
the error. The problem is that ">>> .r3" indicates it was tried to be
updated to -r3 in spite of the external's request for -r1.)

I need a buddy to confirm these.

Thanks,
~Neels

>
> Neels Janosch Hofmeyr wrote:
>> Hi,
>>
>> (Cc'ing TSVN because it's relevant to a mail on that list. This mail is
>> mainly directed at dev_at_subversion)
>>
>> I'm investigating externals and found out that externals with a fixed
>> revision aren't locked as long as that fixed revision == HEAD.
>>
>> While this may be a rare case for externals within the same repository, it
>> could be more common with (dir-)externals coming from another repos. Then
>> again, dir-externals need an explicit commit...
>>
>> Anyway, it's rare but still wrong, right? In my elaborate reproduction
>> script (attached), this happens for both file- and dir-externals.
>>
>> On svn.haxx.se, I only found a reference that trusts a fixed revision to
>> lock an external.
>>
>> Should I add an issue for this?
>>
>>
>> Furthermore, I noticed that when I modify a fixed-revision external and
>> update, the modifications get "merged", causing a conflict for some strange
>> reason. Firstly, I think that conflict is probably erratic. Secondly, I'd
>> say svn should at least warn that something considered uncommittable was
>> modified, and maybe skip all "merge" attempts on a fixed revision external.
>>
>> Should I add an issue for this, too/either?
>>
>> ~Neels
>>
>> ------------------------------------------------------
>> http://subversion.tigris.org/ds/viewMessage.do?dsForumId=462&dsMessageId=1475609
>>
>
> ------------------------------------------------------
> http://subversion.tigris.org/ds/viewMessage.do?dsForumId=462&dsMessageId=1537328

------------------------------------------------------
http://subversion.tigris.org/ds/viewMessage.do?dsForumId=462&dsMessageId=1637476

#!/bin/bash

# The next line is the only line you should need to adjust.
SVNDIR=/my/svn/trunk

## ACTUAL TEST STARTS FURTHER DOWN

if [ -f /usr/local/bin/superpower ]; then
  # use my local way if my script is there (neels).
  echo "##### REMEMBER TO SETUP YOUR ENVIRONMENT #####"
else
  # the rest of the world:
  alias svn=${SVNDIR}/subversion/svn/svn
  alias svnserve=${SVNDIR}/subversion/svnserve/svnserve
  alias svnadmin=${SVNDIR}/subversion/svnadmin/svnadmin
fi

svn --version

# Select an access method. If svn://, the svnserve setup is
# handled automagically by this script; but if http://, then
# you'll have to configure it yourself first.
#
# URL=http://localhost/neels/repos
# URL=svn://localhost/repos
URL=file:///`pwd`/repos
URL2=file:///`pwd`/repos2

rm -rf repos wc
rm -rf repos2 wc2

svnadmin create repos
svnadmin create repos2

# These are for svnserve only.
echo "[general]" > repos/conf/svnserve.conf
echo "anon-access = write" >> repos/conf/svnserve.conf
echo "auth-access = write" >> repos/conf/svnserve.conf

# These are for svnserve only.
echo "[general]" > repos2/conf/svnserve.conf
echo "anon-access = write" >> repos2/conf/svnserve.conf
echo "auth-access = write" >> repos2/conf/svnserve.conf

# The server will only be contacted if $URL is svn://foo, of course.
svnserve --pid-file svnserve-pid -d -r `pwd`
# And put the kill command in a file, in case need to run it manually.
echo "kill -9 `cat svnserve-pid`" > k
chmod a+rwx k

svn co -q ${URL} wc
svn co -q ${URL2} wc2

set -x

## ACTUAL TEST

# Make a dir in the first repos
cd wc
mkdir -p trunk/dir
echo r1 > trunk/dir/alpha
echo r1 > trunk/dir/beta

svn add trunk
svn ci -m "repos 1, r1"

# And add another revision
echo r2 > trunk/dir/alpha
echo r2 > trunk/dir/beta
svn ci -m "repos 1, r2"
cd ..

# Make a file in the other repos
cd wc2
mkdir trunk
echo "r1" > trunk/file

svn add trunk
svn ci -m "repos 2, r1"

# And add another revison
echo "r2" > trunk/file
svn ci -m "repos 2, r2"

# Still in repos 2, setup dir and file externals in folder pin

svn mkdir pin

svn propset svn:externals -F - pin <<END
-r1 $URL/trunk/dir dir.r1
-r2 $URL/trunk/dir dir.r2
-r1 ^/trunk/file file.r1
-r3 ^/trunk/file file.r3
END

echo "r3" > trunk/file
svn ci -m "repos 2, r3"

svn propget svn:externals pin

# update to have the externals set up
svn up
ls pin/
cat pin/file.r1
cat pin/file.r3
svn info pin/file.r1
svn info pin/file.r3
ls pin/dir.r1
ls pin/dir.r2
cat pin/dir.r1/alpha
cat pin/dir.r2/alpha
svn info pin/dir.r1/alpha
svn info pin/dir.r2/alpha

echo "Right, this is where the argument starts."
echo "Edit file.r1 and commit, in spite of -r1 fixated above."

echo "whoops" > pin/file.r1

echo "When I just commit, dir.* are skipped. But not file.*."
svn ci -m "just for illustration"
echo "It says file.r1 is out of date. good."
svn revert pin/file.r1

echo "Now, edit file.r3 and commit, in spite of -r3 fixated above."
echo "whoops" > pin/file.r3
svn ci -m "repos2, r4!?" pin/file.r3
echo "Wait! file.r3 is supposed to stay at -r3!"
echo "The commit went through because the external was at HEAD."

echo "before the update, file.r3 shows -r4, after update back to -r3"
cat pin/file.r3
svn info pin/file.r3
svn up
cat pin/file.r3
svn info pin/file.r3
echo "a commit to trunk/file was permitted."
cat trunk/file
svn info trunk/file

echo
echo "Let's see whether dirs do the same thing. Have to commit explicitly."
echo "whoops" > pin/dir.r1/alpha
svn ci -m "for illustration" pin/dir.r1

echo "whoops" > pin/dir.r2/alpha
svn ci -m "repos 1, r3!?" pin/dir.r2

cat pin/dir.r2/alpha
svn info pin/dir.r2/alpha
svn up
cat pin/dir.r2/alpha
svn info pin/dir.r2/alpha

cat ../wc/trunk/dir/alpha
svn info ../wc/trunk/dir/alpha

echo "yes, they do."

echo
echo "Also note how an update on a modified revision-fixed external merges:"
echo "whoops" >> pin/file.r1
cat pin/file.r1
svn st pin/file.r1
svn up pin/file.r1
cat pin/file.r1
svn info pin/file.r1
svn st pin/file.r1

echo "whoops" >> pin/dir.r1/beta
cat pin/dir.r1/beta
svn st pin/dir.r1/beta
svn up pin/dir.r1/beta
cat pin/dir.r1/beta
svn info pin/dir.r1/beta
svn st pin/dir.r1/beta

## ACTUAL TEST ENDS
echo "====="

cd ..
./k

svn, version 1.7.0 (dev build)
   compiled Apr 10 2009, 23:57:51

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

+ cd wc
+ mkdir -p trunk/dir
+ echo r1
+ echo r1
+ svn add trunk
A trunk
A trunk/dir
A trunk/dir/beta
A trunk/dir/alpha
+ svn ci -m 'repos 1, r1'
Adding trunk
Adding trunk/dir
Adding trunk/dir/alpha
Adding trunk/dir/beta
Transmitting file data ..
Committed revision 1.
+ echo r2
+ echo r2
+ svn ci -m 'repos 1, r2'
Sending trunk/dir/alpha
Sending trunk/dir/beta
Transmitting file data ..
Committed revision 2.
+ cd ..
+ cd wc2
+ mkdir trunk
+ echo r1
+ svn add trunk
A trunk
A trunk/file
+ svn ci -m 'repos 2, r1'
Adding trunk
Adding trunk/file
Transmitting file data .
Committed revision 1.
+ echo r2
+ svn ci -m 'repos 2, r2'
Sending trunk/file
Transmitting file data .
Committed revision 2.
+ svn mkdir pin
A pin
+ svn propset svn:externals -F - pin
property 'svn:externals' set on 'pin'
+ echo r3
+ svn ci -m 'repos 2, r3'
Adding pin
Sending trunk/file
Transmitting file data .
Committed revision 3.
+ svn propget svn:externals pin
-r1 file:////home/neels/hg/svn-tc/test/repos/trunk/dir dir.r1
-r2 file:////home/neels/hg/svn-tc/test/repos/trunk/dir dir.r2
-r1 ^/trunk/file file.r1
-r3 ^/trunk/file file.r3

+ svn up

Fetching external item into 'pin/dir.r1'
A pin/dir.r1/alpha
A pin/dir.r1/beta
Updated external to revision 1.

Fetching external item into 'pin/dir.r2'
A pin/dir.r2/alpha
A pin/dir.r2/beta
Updated external to revision 2.

Fetching external item into 'pin/file.r1'
E pin/file.r1
Updated external to revision 1.

Fetching external item into 'pin/file.r3'
E pin/file.r3
Updated external to revision 3.

Updated to revision 3.
+ ls pin/
dir.r1
dir.r2
file.r1
file.r3
+ cat pin/file.r1
r1
+ cat pin/file.r3
r3
+ svn info pin/file.r1
Path: pin/file.r1
Name: file.r1
URL: file:///home/neels/hg/svn-tc/test/repos2/trunk/file
Repository Root: file:///home/neels/hg/svn-tc/test/repos2
Repository UUID: 1247716c-261d-11de-a27c-7b427a29add9
Revision: 1
Node Kind: file
Schedule: normal
Last Changed Author: neels
Last Changed Rev: 1
Last Changed Date: 2009-04-11 00:15:21 +0200 (Sat, 11 Apr 2009)
Checksum: 35a853e2b2b105502215358d4d3db9f7

+ svn info pin/file.r3
Path: pin/file.r3
Name: file.r3
URL: file:///home/neels/hg/svn-tc/test/repos2/trunk/file
Repository Root: file:///home/neels/hg/svn-tc/test/repos2
Repository UUID: 1247716c-261d-11de-a27c-7b427a29add9
Revision: 3
Node Kind: file
Schedule: normal
Last Changed Author: neels
Last Changed Rev: 3
Last Changed Date: 2009-04-11 00:15:23 +0200 (Sat, 11 Apr 2009)
Checksum: 6dac75a33f3d65ad0ee50d102c53d3ef

+ ls pin/dir.r1
alpha
beta
+ ls pin/dir.r2
alpha
beta
+ cat pin/dir.r1/alpha
r1
+ cat pin/dir.r2/alpha
r2
+ svn info pin/dir.r1/alpha
Path: pin/dir.r1/alpha
Name: alpha
URL: file:///home/neels/hg/svn-tc/test/repos/trunk/dir/alpha
Repository Root: file:///home/neels/hg/svn-tc/test/repos
Repository UUID: 123c01e2-261d-11de-a689-8f7b59387073
Revision: 1
Node Kind: file
Schedule: normal
Last Changed Author: neels
Last Changed Rev: 1
Last Changed Date: 2009-04-11 00:15:19 +0200 (Sat, 11 Apr 2009)
Text Last Updated: 2009-04-11 00:15:24 +0200 (Sat, 11 Apr 2009)
Checksum: 35a853e2b2b105502215358d4d3db9f7

+ svn info pin/dir.r2/alpha
Path: pin/dir.r2/alpha
Name: alpha
URL: file:///home/neels/hg/svn-tc/test/repos/trunk/dir/alpha
Repository Root: file:///home/neels/hg/svn-tc/test/repos
Repository UUID: 123c01e2-261d-11de-a689-8f7b59387073
Revision: 2
Node Kind: file
Schedule: normal
Last Changed Author: neels
Last Changed Rev: 2
Last Changed Date: 2009-04-11 00:15:20 +0200 (Sat, 11 Apr 2009)
Text Last Updated: 2009-04-11 00:15:24 +0200 (Sat, 11 Apr 2009)
Checksum: 4700bd67c00670c3e4085032d94cd2eb

+ echo 'Right, this is where the argument starts.'
Right, this is where the argument starts.
+ echo 'Edit file.r1 and commit, in spite of -r1 fixated above.'
Edit file.r1 and commit, in spite of -r1 fixated above.
+ echo whoops
+ echo 'When I just commit, dir.* are skipped. But not file.*.'
When I just commit, dir.* are skipped. But not file.*.
+ svn ci -m 'just for illustration'
Sending pin/file.r1
subversion/libsvn_client/commit.c:867: (apr_err=160028)
svn: Commit failed (details follow):
subversion/libsvn_repos/commit.c:125: (apr_err=160028)
svn: File '/trunk/file' is out of date
+ echo 'It says file.r1 is out of date. good.'
It says file.r1 is out of date. good.
+ svn revert pin/file.r1
Reverted 'pin/file.r1'
+ echo 'Now, edit file.r3 and commit, in spite of -r3 fixated above.'
Now, edit file.r3 and commit, in spite of -r3 fixated above.
+ echo whoops
+ svn ci -m 'repos2, r4!?' pin/file.r3
Sending pin/file.r3
Transmitting file data .
Committed revision 4.
+ echo 'Wait! file.r3 is supposed to stay at -r3!'
Wait! file.r3 is supposed to stay at -r3!
+ echo 'The commit went through because the external was at HEAD.'
The commit went through because the external was at HEAD.
+ echo 'before the update, file.r3 shows -r4, after update back to -r3'
before the update, file.r3 shows -r4, after update back to -r3
+ cat pin/file.r3
whoops
+ svn info pin/file.r3
Path: pin/file.r3
Name: file.r3
URL: file:///home/neels/hg/svn-tc/test/repos2/trunk/file
Repository Root: file:///home/neels/hg/svn-tc/test/repos2
Repository UUID: 1247716c-261d-11de-a27c-7b427a29add9
Revision: 4
Node Kind: file
Schedule: normal
Last Changed Author: neels
Last Changed Rev: 4
Last Changed Date: 2009-04-11 00:15:27 +0200 (Sat, 11 Apr 2009)
Text Last Updated: 2009-04-11 00:15:27 +0200 (Sat, 11 Apr 2009)
Checksum: 38091727c9837b65ee161f5563f0b3a4

+ svn up
U pin/file.r1
U trunk/file

Fetching external item into 'pin/dir.r1'
Updated external to revision 1.

Fetching external item into 'pin/dir.r2'
Updated external to revision 2.

Fetching external item into 'pin/file.r1'
U pin/file.r1
Updated external to revision 1.

Fetching external item into 'pin/file.r3'
U pin/file.r3
Updated external to revision 3.

Updated to revision 4.
+ cat pin/file.r3
r3
+ svn info pin/file.r3
Path: pin/file.r3
Name: file.r3
URL: file:///home/neels/hg/svn-tc/test/repos2/trunk/file
Repository Root: file:///home/neels/hg/svn-tc/test/repos2
Repository UUID: 1247716c-261d-11de-a27c-7b427a29add9
Revision: 3
Node Kind: file
Schedule: normal
Last Changed Author: neels
Last Changed Rev: 3
Last Changed Date: 2009-04-11 00:15:23 +0200 (Sat, 11 Apr 2009)
Text Last Updated: 2009-04-11 00:15:29 +0200 (Sat, 11 Apr 2009)
Checksum: 6dac75a33f3d65ad0ee50d102c53d3ef

+ echo 'a commit to trunk/file was permitted.'
a commit to trunk/file was permitted.
+ cat trunk/file
whoops
+ svn info trunk/file
Path: trunk/file
Name: file
URL: file:///home/neels/hg/svn-tc/test/repos2/trunk/file
Repository Root: file:///home/neels/hg/svn-tc/test/repos2
Repository UUID: 1247716c-261d-11de-a27c-7b427a29add9
Revision: 4
Node Kind: file
Schedule: normal
Last Changed Author: neels
Last Changed Rev: 4
Last Changed Date: 2009-04-11 00:15:27 +0200 (Sat, 11 Apr 2009)
Text Last Updated: 2009-04-11 00:15:28 +0200 (Sat, 11 Apr 2009)
Checksum: 38091727c9837b65ee161f5563f0b3a4

+ echo

+ echo 'Let'\''s see whether dirs do the same thing. Have to commit explicitly.'
Let's see whether dirs do the same thing. Have to commit explicitly.
+ echo whoops
+ svn ci -m 'for illustration' pin/dir.r1
Sending pin/dir.r1/alpha
subversion/libsvn_client/commit.c:867: (apr_err=160028)
svn: Commit failed (details follow):
subversion/libsvn_repos/commit.c:125: (apr_err=160028)
svn: File '/trunk/dir/alpha' is out of date
+ echo whoops
+ svn ci -m 'repos 1, r3!?' pin/dir.r2
Sending pin/dir.r2/alpha
Transmitting file data .
Committed revision 3.
+ cat pin/dir.r2/alpha
whoops
+ svn info pin/dir.r2/alpha
Path: pin/dir.r2/alpha
Name: alpha
URL: file:///home/neels/hg/svn-tc/test/repos/trunk/dir/alpha
Repository Root: file:///home/neels/hg/svn-tc/test/repos
Repository UUID: 123c01e2-261d-11de-a689-8f7b59387073
Revision: 3
Node Kind: file
Schedule: normal
Last Changed Author: neels
Last Changed Rev: 3
Last Changed Date: 2009-04-11 00:15:32 +0200 (Sat, 11 Apr 2009)
Text Last Updated: 2009-04-11 00:15:32 +0200 (Sat, 11 Apr 2009)
Checksum: 38091727c9837b65ee161f5563f0b3a4

+ svn up
U pin/file.r1
U pin/file.r3

Fetching external item into 'pin/dir.r1'
Updated external to revision 1.

Fetching external item into 'pin/dir.r2'
U pin/dir.r2/alpha
Updated external to revision 2.

Fetching external item into 'pin/file.r1'
U pin/file.r1
Updated external to revision 1.

Fetching external item into 'pin/file.r3'
U pin/file.r3
Updated external to revision 3.

Updated to revision 4.
+ cat pin/dir.r2/alpha
r2
+ svn info pin/dir.r2/alpha
Path: pin/dir.r2/alpha
Name: alpha
URL: file:///home/neels/hg/svn-tc/test/repos/trunk/dir/alpha
Repository Root: file:///home/neels/hg/svn-tc/test/repos
Repository UUID: 123c01e2-261d-11de-a689-8f7b59387073
Revision: 2
Node Kind: file
Schedule: normal
Last Changed Author: neels
Last Changed Rev: 2
Last Changed Date: 2009-04-11 00:15:20 +0200 (Sat, 11 Apr 2009)
Text Last Updated: 2009-04-11 00:15:33 +0200 (Sat, 11 Apr 2009)
Checksum: 4700bd67c00670c3e4085032d94cd2eb

+ cat ../wc/trunk/dir/alpha
r2
+ svn info ../wc/trunk/dir/alpha
Path: ../wc/trunk/dir/alpha
Name: alpha
URL: file:///home/neels/hg/svn-tc/test/repos/trunk/dir/alpha
Repository Root: file:///home/neels/hg/svn-tc/test/repos
Repository UUID: 123c01e2-261d-11de-a689-8f7b59387073
Revision: 2
Node Kind: file
Schedule: normal
Last Changed Author: neels
Last Changed Rev: 2
Last Changed Date: 2009-04-11 00:15:20 +0200 (Sat, 11 Apr 2009)
Text Last Updated: 2009-04-11 00:15:20 +0200 (Sat, 11 Apr 2009)
Checksum: 4700bd67c00670c3e4085032d94cd2eb

+ echo 'yes, they do.'
yes, they do.
+ echo

+ echo 'Also note how an update on a modified revision-fixed external merges:'
Also note how an update on a modified revision-fixed external merges:
+ echo whoops
+ cat pin/file.r1
r1
whoops
+ svn st pin/file.r1
M X pin/file.r1
+ svn up pin/file.r1
Conflict discovered in 'pin/file.r1'.
Select: (p) postpone, (df) diff-full, (e) edit,
        (mc) mine-conflict, (tc) theirs-conflict,
        (s) show all options: C pin/file.r1
Updated to revision 4.
Summary of conflicts:
  Text conflicts: 1
+ cat pin/file.r1
<<<<<<< .mine
r1
whoops
=======
whoops
>>>>>>> .r4
+ svn info pin/file.r1
Path: pin/file.r1
Name: file.r1
URL: file:///home/neels/hg/svn-tc/test/repos2/trunk/file
Repository Root: file:///home/neels/hg/svn-tc/test/repos2
Repository UUID: 1247716c-261d-11de-a27c-7b427a29add9
Revision: 4
Node Kind: file
Schedule: normal
Last Changed Author: neels
Last Changed Rev: 4
Last Changed Date: 2009-04-11 00:15:27 +0200 (Sat, 11 Apr 2009)
Checksum: 38091727c9837b65ee161f5563f0b3a4
Conflict Previous Base File: file.r1.r1
Conflict Previous Working File: file.r1.mine
Conflict Current Base File: file.r1.r4

+ svn st pin/file.r1
C X pin/file.r1
+ echo whoops
+ cat pin/dir.r1/beta
r1
whoops
+ svn st pin/dir.r1/beta
M pin/dir.r1/beta
+ svn up pin/dir.r1/beta
Conflict discovered in 'pin/dir.r1/beta'.
Select: (p) postpone, (df) diff-full, (e) edit,
        (mc) mine-conflict, (tc) theirs-conflict,
        (s) show all options: C pin/dir.r1/beta
Updated to revision 3.
Summary of conflicts:
  Text conflicts: 1
+ cat pin/dir.r1/beta
<<<<<<< .mine
r1
whoops
=======
r2
>>>>>>> .r3
+ svn info pin/dir.r1/beta
Path: pin/dir.r1/beta
Name: beta
URL: file:///home/neels/hg/svn-tc/test/repos/trunk/dir/beta
Repository Root: file:///home/neels/hg/svn-tc/test/repos
Repository UUID: 123c01e2-261d-11de-a689-8f7b59387073
Revision: 3
Node Kind: file
Schedule: normal
Last Changed Author: neels
Last Changed Rev: 2
Last Changed Date: 2009-04-11 00:15:20 +0200 (Sat, 11 Apr 2009)
Checksum: 4700bd67c00670c3e4085032d94cd2eb
Conflict Previous Base File: beta.r1
Conflict Previous Working File: beta.mine
Conflict Current Base File: beta.r3

+ svn st pin/dir.r1/beta
C pin/dir.r1/beta
+ echo =====
=====
+ cd ..
+ exit

Received on 2009-04-11 00:48:34 CEST

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