Ok, I've attached a filtered typescript in which I was able to reproduce the 
problem, using a subtree in our repository as if it was the full repository.   
I don't have a full reproduction script, because that would require me to (1) 
set up a new repository and (2) parse the output from svn log to get the proper 
range of revision numbers to attach to subsequent commands.  But this 
typescript should be pretty easy to follow manually.

I trust that my comments in the script should illustrate why I think the 
behavior is a major bug, but to summarize:
1) I have created a scenario following a fairly normal workflow, in which I 
have checked in changes from a working directory which Subversion then reports 
as being up to date with the repository, when in fact some of the changes have 
not actually hit the repository, and
2) Subsequent changes to the file in question from another working directory 
cause updates on my original working directory to fail with a checksum error, 
potentially causing loss of data from any subsequent work I may have done in 
that working directory, thinking it was properly up to date.

Data integrity is a pretty important part of any source code control system: 
the promise is that your data is safe once you check it in to the repository.  
This scenario represents a violation of that promise.

Dave Wallace
-----Original Message-----
From: Stefan Sperling [mailto:s...@elego.de] 
Sent: Thursday, August 18, 2011 3:16 AM
To: David Wallace
Cc: dev@subversion.apache.org
Subject: Re: Resoving tree conflicts results in inconsistent state between two 
working copies of same branch

On Wed, Aug 17, 2011 at 11:38:57PM +0000, David Wallace wrote:
> I just described my experience inadvertently creating an inconsistent 
> state between two working copies of the same branch while trying to 
> resolve tree conflicts over at:
> http://stackoverflow.com/questions/767763/svn-how-to-resolve-new-tree-
> conflicts-when-file-is-added-on-two-branches/7100512#7100512
> To make this more self-contained, I'll repeat the key text here:
> 
> (1): I had added some files while working on my initial branch, 
> branch1; (2) I created a new branch, branch2 for further development, 
> branching it off from the trunk and then merging in my changes from
> branch1 (3) A co-worker had copied my mods from branch1 to his own 
> branch, added further mods, and then merged back to the trunk; (4) I 
> now wanted to merge the latest changes from trunk into my current 
> working branch, branch2. This is with svn 1.6.17.
>
> The merge had tree conflicts with the new files, and I wanted the new 
> version from the trunk where they differed, so from a clean copy of 
> branch2, I did an svn delete of the conflicting files, committed these
> branch2 changes (thus creating a temporary version of branch2 without 
> the files in question), and then did my merge from the trunk. I did 
> this because I wanted the history to match the trunk version so that I 
> wouldn't have more problems later when trying to merge back to trunk.
>
> Merge went fine, I got the trunk version of the files, svn st shows 
> all ok, and then I hit more tree conflicts while trying to commit the 
> changes, between the delete I had done earlier and the add from the 
> merge.
>
> Did an svn resolve of the conflicts in favor of my working copy (which 
> now had the trunk version of the files), and got it to commit.
> All should be good, right?
> 
> Well, no. An update of another copy of branch2 resulted in the old 
> version of the files (pre-trunk merge). So now I have two different 
> working copies of branch2, supposedly updated to the same version, 
> with two different versions of the files, and both insisting that they 
> are fully up to date!
>
> Checking out a clean copy of branch2 resulted in the old (pre-trunk) 
> version of the files. I manually update these to the trunk version and 
> commit the changes, go back to my first working copy (from which I had 
> submitted the trunk changes originally), try to update it, and now get 
> a checksum error on the files in question.
>
> Blow the directory in question away, get a new version via update, and 
> finally I have what should be a good version of branch2 with the trunk 
> changes. I hope.
>
> Further notes:  Our standard working practice is that all merges 
> except merges from the trunk are done with a specific range of 
> revision numbers, getting the relevant revisions via svn log 
> -stop-on-copy on the appropriate branch.  This applied to my merge 
> from branch1 to branch2, my co-worker's merge from my branch1 to his 
> branch, and his merge from his branch back to the trunk, but not to my 
> merges from the trunk described above.  I'm not sure if this matters, 
> but I report it here in case it makes a difference when trying to 
> reproduce the problem.

Hi David,

you've provided a long explanation of a problem which is very complicated and 
very hard to reproduce remotely. I am also not sure which part of Subversion's 
behaviour you consider a bug. There are certainly annoying problems in the 
situations you describe but where do you think the fault lies with Subversion 
exactly?

Long prose is not an effective medium for communicating problem reports and 
reproduction recipes via email. Prose lacks detail and is ambiguous.
Prose works well when talking to someone next to you who can ask questions 
back, look at your screen, and maybe even try out some things on your computer. 
But it is very hard for recipients of email to guess what really happened on 
your computer. So if you consider your email a bug report then please follow 
the guidelines on this page:
http://subversion.apache.org/docs/community-guide/issues.html#reporting-bugs

Apart from clearly explaining what you consider a bug, please provide a full 
command line transcript of the situation you are describing.
Even better would be a full reproduction script starting off with an empty 
repository and running a sequence of commands that trigger the problem.
The time you spend on this will be worth it. Thanks!
Script started on Thu Aug 18 11:57:26 2011

dave@DEV-PC-1 ~/Documents/SVNTest
$ export MYSVNROOT=http://intranet/svn/branches/dave/svntest1

dave@DEV-PC-1 ~/Documents/SVNTest
$ #I'm treating this as the root of my "svn test repository"

dave@DEV-PC-1 ~/Documents/SVNTest
$ svn mkdir $MYSVNROOT

Committed revision 8028.

dave@DEV-PC-1 ~/Documents/SVNTest
$ svn mkdir $MYSVNROOT/trunk

Committed revision 8029.

dave@DEV-PC-1 ~/Documents/SVNTest
$ svn mkdir $MYSVNROOT/branches -m "branch area for this test"

Committed revision 8030.

dave@DEV-PC-1 ~/Documents/SVNTest
$ svn mkdir $MYSVNROOT/branches/dave -m "Dave's branch area in this test"

Committed revision 8031.

dave@DEV-PC-1 ~/Documents/SVNTest
$ svn mkdir $MYSVNROOT/branches/alice -m "Alice's branch area in this test"

Committed revision 8032.

dave@DEV-PC-1 ~/Documents/SVNTest
$ svn co $MYSVNROOT/trunk trunk/
Checked out revision 8032.

dave@DEV-PC-1 ~/Documents/SVNTest
$ ls
svn-commit.tmp~  test1  trunk

dave@DEV-PC-1 ~/Documents/SVNTest
$ pushd trunk
~/Documents/SVNTest/trunk ~/Documents/SVNTest

dave@DEV-PC-1 ~/Documents/SVNTest/trunk
$ ls

dave@DEV-PC-1 ~/Documents/SVNTest/trunk
$ cat >file1.txt
line1
line2
line3
line4
line5
line6
line7
line8
line9
line10

dave@DEV-PC-1 ~/Documents/SVNTest/trunk
$ svn add file1.txt
A         file1.txt

dave@DEV-PC-1 ~/Documents/SVNTest/trunk
$ svn commit -m "create a file on the main trunk of this test"
Adding         file1.txt
Transmitting file data .
Committed revision 8033.

dave@DEV-PC-1 ~/Documents/SVNTest/trunk
$ pushd +1
~/Documents/SVNTest ~/Documents/SVNTest/trunk

dave@DEV-PC-1 ~/Documents/SVNTest
$ ls
svn-commit.tmp~  test1  trunk

dave@DEV-PC-1 ~/Documents/SVNTest
$ svn copy $MYSVNROOT/trunk $MYSVNROOT/branches/dave/davebr1

Committed revision 8034.

dave@DEV-PC-1 ~/Documents/SVNTest
$ #Dave creates his first branch

dave@DEV-PC-1 ~/Documents/SVNTest
$ svn copy $MYSVNROOT/trunk $MYSVNROOT/branches/alice/alicebr1

Committed revision 8035.

dave@DEV-PC-1 ~/Documents/SVNTest
$ # And so does Alice

dave@DEV-PC-1 ~/Documents/SVNTest
$ svn co $MYSVNROOT/branches/dave/davebr1 davebr1/
A    davebr1/file1.txt
Checked out revision 8035.

dave@DEV-PC-1 ~/Documents/SVNTest
$ svn co $MYSVNROOT/branches/alice/alicebr1 alicebr1/
A    alicebr1/file1.txt
Checked out revision 8035.

dave@DEV-PC-1 ~/Documents/SVNTest
$ ls -cF
alicebr1/  davebr1/  svn-commit.tmp~  trunk/  test1

dave@DEV-PC-1 ~/Documents/SVNTest
$ pushd davebr1
~/Documents/SVNTest/davebr1 ~/Documents/SVNTest ~/Documents/SVNTest/trunk

dave@DEV-PC-1 ~/Documents/SVNTest/davebr1
$ ls
file1.txt

dave@DEV-PC-1 ~/Documents/SVNTest/davebr1
$ cat file1.txt
line1
line2
line3
line4
line5
line6
line7
line8
line9
line10

dave@DEV-PC-1 ~/Documents/SVNTest/davebr1
$ sed -i s/line2/line2 changed in davebr1/ file1.txt
sed: -e expression #1, char 13: unterminated `s' command

dave@DEV-PC-1 ~/Documents/SVNTest/davebr1
$ sed -i "s/line2/line2 changed in davebr1/" file1.txt

dave@DEV-PC-1 ~/Documents/SVNTest/davebr1
$ cat file1.txt
line1
line2 changed in davebr1
line3
line4
line5
line6
line7
line8
line9
line10

dave@DEV-PC-1 ~/Documents/SVNTest/davebr1
$ cat >file2.txt
f2line1
f2line2
f2line3

dave@DEV-PC-1 ~/Documents/SVNTest/davebr1
$ svn add file2.txt
A         file2.txt

dave@DEV-PC-1 ~/Documents/SVNTest/davebr1
$ # Dave has made some changes, including adding a new file in this branch

dave@DEV-PC-1 ~/Documents/SVNTest/davebr1
$ svn info
Path: .
URL: http://intranet/svn/branches/dave/svntest1/branches/dave/davebr1
Repository Root: http://intranet/svn
Repository UUID: 1f636d61-85ed-45a8-9e1f-4bdb2d97db5c
Revision: 8035
Node Kind: directory
Schedule: normal
Last Changed Author: dave
Last Changed Rev: 8034
Last Changed Date: 2011-08-18 12:11:10 -0700 (Thu, 18 Aug 2011)


dave@DEV-PC-1 ~/Documents/SVNTest/davebr1
$ svn commit -m "Dave makes changes in branch1, including adding a file"
Sending        file1.txt
Adding         file2.txt
Transmitting file data ..
Committed revision 8036.

dave@DEV-PC-1 ~/Documents/SVNTest/davebr1
$ dirs
~/Documents/SVNTest/davebr1 ~/Documents/SVNTest ~/Documents/SVNTest/trunk

dave@DEV-PC-1 ~/Documents/SVNTest/davebr1
$ pushd -1
~/Documents/SVNTest ~/Documents/SVNTest/trunk ~/Documents/SVNTest/davebr1

dave@DEV-PC-1 ~/Documents/SVNTest
$ pushd -1
~/Documents/SVNTest/trunk ~/Documents/SVNTest/davebr1 ~/Documents/SVNTest

dave@DEV-PC-1 ~/Documents/SVNTest/trunk
$ sed -i "s/line4/line4 changed back on trunk" file1.txt
sed: -e expression #1, char 35: unterminated `s' command

dave@DEV-PC-1 ~/Documents/SVNTest/trunk
$ sed -i "s/line4/line4 changed back on trunk/

dave@DEV-PC-1 ~/Documents/SVNTest/trunk
$ cat file1.txt
line1
line2
line3
line4 changed back on trunk
line5
line6
line7
line8
line9
line10

dave@DEV-PC-1 ~/Documents/SVNTest/trunk
$ svn commit -m "Meanwhile, someone else changes the trunk"
Sending        file1.txt
Transmitting file data .
Committed revision 8037.

dave@DEV-PC-1 ~/Documents/SVNTest/trunk
$ dirs
~/Documents/SVNTest/trunk ~/Documents/SVNTest/davebr1 ~/Documents/SVNTest

dave@DEV-PC-1 ~/Documents/SVNTest/trunk
$ pushd 1
sh: pushd: 1: No such file or directory

dave@DEV-PC-1 ~/Documents/SVNTest/trunk
$ pushd +1
~/Documents/SVNTest/davebr1 ~/Documents/SVNTest ~/Documents/SVNTest/trunk

dave@DEV-PC-1 ~/Documents/SVNTest/davebr1
$ pushd +1
~/Documents/SVNTest ~/Documents/SVNTest/trunk ~/Documents/SVNTest/davebr1

dave@DEV-PC-1 ~/Documents/SVNTest
$ ls
alicebr1  davebr1  svn-commit.tmp~  test1  trunk

dave@DEV-PC-1 ~/Documents/SVNTest
$ pushd alicebr1
~/Documents/SVNTest/alicebr1 ~/Documents/SVNTest ~/Documents/SVNTest/trunk 
~/Documents/SVNTest/davebr1

dave@DEV-PC-1 ~/Documents/SVNTest/alicebr1
$ ls
file1.txt

dave@DEV-PC-1 ~/Documents/SVNTest/alicebr1
$ cat file1.txt
line1
line2
line3
line4
line5
line6
line7
line8
line9
line10

dave@DEV-PC-1 ~/Documents/SVNTest/alicebr1
$ # Meanwhile, Alice has been working...

dave@DEV-PC-1 ~/Documents/SVNTest/alicebr1
$ sed -i "s/line6/line6 changed by Alice in br1" file1.txt
sed: -e expression #1, char 37: unterminated `s' command

dave@DEV-PC-1 ~/Documents/SVNTest/alicebr1
$ sed -i "s/line6/line6 changed by Alice in br1/" file1.txt

dave@DEV-PC-1 ~/Documents/SVNTest/alicebr1
$ cat file1.txt
line1
line2
line3
line4
line5
line6 changed by Alice in br1
line7
line8
line9
line10

dave@DEV-PC-1 ~/Documents/SVNTest/alicebr1
$ dirs
~/Documents/SVNTest/alicebr1 ~/Documents/SVNTest ~/Documents/SVNTest/trunk 
~/Documents/SVNTest/davebr1

dave@DEV-PC-1 ~/Documents/SVNTest/alicebr1
$ pushd +1
~/Documents/SVNTest ~/Documents/SVNTest/trunk ~/Documents/SVNTest/davebr1 
~/Documents/SVNTest/alicebr1

dave@DEV-PC-1 ~/Documents/SVNTest
$ # Meanwhile, Dave freezes further development on davebr1, so Alice can work

dave@DEV-PC-1 ~/Documents/SVNTest
$ # with those changes, and creates a new branch for his continuing development
.

dave@DEV-PC-1 ~/Documents/SVNTest
$ svn copy $MYSVNROOT/trunk $MYSVNROOT/branches/dave/davebr2

Committed revision 8038.

dave@DEV-PC-1 ~/Documents/SVNTest
$ ls -cF
svn-commit.tmp~  alicebr1/  trunk/  davebr1/  test1

dave@DEV-PC-1 ~/Documents/SVNTest
$ svn co $MYSVNROOT/branches/dave/davebr2
A    davebr2/file1.txt
Checked out revision 8038.

dave@DEV-PC-1 ~/Documents/SVNTest
$ ls -cF
davebr2/  svn-commit.tmp~  alicebr1/  trunk/  davebr1/  test1

dave@DEV-PC-1 ~/Documents/SVNTest
$ #Now both dave and alice want to know what revisions are in davebr1; both

dave@DEV-PC-1 ~/Documents/SVNTest
$ #check it out with svn log --stop-on-copy

dave@DEV-PC-1 ~/Documents/SVNTest
$ dirs
~/Documents/SVNTest ~/Documents/SVNTest/trunk ~/Documents/SVNTest/davebr1 
~/Documents/SVNTest/alicebr1

dave@DEV-PC-1 ~/Documents/SVNTest
$ pushd +2
~/Documents/SVNTest/davebr1 ~/Documents/SVNTest/alicebr1 ~/Documents/SVNTest 
~/Documents/SVNTest/trunk

dave@DEV-PC-1 ~/Documents/SVNTest/davebr1
$ svn st

dave@DEV-PC-1 ~/Documents/SVNTest/davebr1
$ svn log --stop-on-copy
------------------------------------------------------------------------
r8034 | dave | 2011-08-18 12:11:10 -0700 (Thu, 18 Aug 2011) | 2 lines

"Dave creates his first branch"

------------------------------------------------------------------------

dave@DEV-PC-1 ~/Documents/SVNTest/davebr1
$ svn up
At revision 8038.

dave@DEV-PC-1 ~/Documents/SVNTest/davebr1
$ svn log --stop-on-copy
------------------------------------------------------------------------
r8036 | dave | 2011-08-18 12:18:53 -0700 (Thu, 18 Aug 2011) | 1 line

Dave makes changes in branch1, including adding a file
------------------------------------------------------------------------
r8034 | dave | 2011-08-18 12:11:10 -0700 (Thu, 18 Aug 2011) | 2 lines

"Dave creates his first branch"

------------------------------------------------------------------------

dave@DEV-PC-1 ~/Documents/SVNTest/davebr1
$ #Ok, the relevant revisions are 8034:8036.

dave@DEV-PC-1 ~/Documents/SVNTest/davebr1
$ dirs
~/Documents/SVNTest/davebr1 ~/Documents/SVNTest/alicebr1 ~/Documents/SVNTest 
~/Documents/SVNTest/trunk

dave@DEV-PC-1 ~/Documents/SVNTest/davebr1
$ popd
~/Documents/SVNTest/alicebr1 ~/Documents/SVNTest ~/Documents/SVNTest/trunk

dave@DEV-PC-1 ~/Documents/SVNTest/alicebr1
$ # Alice merges in dave's changes from davebr1

dave@DEV-PC-1 ~/Documents/SVNTest/alicebr1
$ svn st
M       file1.txt

dave@DEV-PC-1 ~/Documents/SVNTest/alicebr1
$ svn commit -m 
Sending        file1.txt
Transmitting file data .
Committed revision 8039.

dave@DEV-PC-1 ~/Documents/SVNTest/alicebr1
$ svn merge -r 8034:8036 $MYSVNROOT/branches/dave/davebr1
--- Merging r8035 through r8036 into '.':
A    file2.txt
U    file1.txt

dave@DEV-PC-1 ~/Documents/SVNTest/alicebr1
$ cat file1.txt
line1
line2 changed in davebr1
line3
line4
line5
line6 changed by Alice in br1
line7
line8
line9
line10

dave@DEV-PC-1 ~/Documents/SVNTest/alicebr1
$ cat file2.txt
f2line1
f2line2
f2line3

dave@DEV-PC-1 ~/Documents/SVNTest/alicebr1
$ svn commit -m "Alice merged in changes from davebr1"
Sending        .
svn: Commit failed (details follow):
svn: File or directory '.' is out of date; try updating
svn: resource out of date; try updating

dave@DEV-PC-1 ~/Documents/SVNTest/alicebr1
$ svn up
At revision 8039.

dave@DEV-PC-1 ~/Documents/SVNTest/alicebr1
$ svn commit -m "Alice merged in changes from davebr1"
Sending        .
Sending        file1.txt
Adding         file2.txt
Transmitting file data .
Committed revision 8040.

dave@DEV-PC-1 ~/Documents/SVNTest/alicebr1
$ popd
~/Documents/SVNTest ~/Documents/SVNTest/trunk

dave@DEV-PC-1 ~/Documents/SVNTest
$ ls -cF
alicebr1/  davebr2/  svn-commit.tmp~  trunk/  davebr1/  test1

dave@DEV-PC-1 ~/Documents/SVNTest
$ pushd davebr2
~/Documents/SVNTest/davebr2 ~/Documents/SVNTest ~/Documents/SVNTest/trunk

dave@DEV-PC-1 ~/Documents/SVNTest/davebr2
$ ls
file1.txt

dave@DEV-PC-1 ~/Documents/SVNTest/davebr2
$ svn up
At revision 8040.

dave@DEV-PC-1 ~/Documents/SVNTest/davebr2
$ svn st

dave@DEV-PC-1 ~/Documents/SVNTest/davebr2
$ svn merge -r 8034:8036 $MYSVNROOT/branches/dave/davebr1
--- Merging r8035 through r8036 into '.':
A    file2.txt
U    file1.txt

dave@DEV-PC-1 ~/Documents/SVNTest/davebr2
$ svn st
 M      .
A  +    file2.txt
M       file1.txt

dave@DEV-PC-1 ~/Documents/SVNTest/davebr2
$ svn commit -m "Dave merges from davebr1 to davebr2"
Sending        .
Sending        file1.txt
Adding         file2.txt
Transmitting file data .
Committed revision 8041.

dave@DEV-PC-1 ~/Documents/SVNTest/davebr2
$ cat file1.txt
line1
line2 changed in davebr1
line3
line4 changed back on trunk
line5
line6
line7
line8
line9
line10

dave@DEV-PC-1 ~/Documents/SVNTest/davebr2
$ sed -i "s/line8/line8 Dave continues changing file on davebr2/" file1.txt

dave@DEV-PC-1 ~/Documents/SVNTest/davebr2
$ cat file1.txt
line1
line2 changed in davebr1
line3
line4 changed back on trunk
line5
line6
line7
line8 Dave continues changing file on davebr2
line9
line10

dave@DEV-PC-1 ~/Documents/SVNTest/davebr2
$ svn st
M       file1.txt

dave@DEV-PC-1 ~/Documents/SVNTest/davebr2
$ svn commit -m "Dave continues changing file1.txt on davebr2"
Sending        file1.txt
Transmitting file data .
Committed revision 8042.

dave@DEV-PC-1 ~/Documents/SVNTest/davebr2
$ dirs
~/Documents/SVNTest/davebr2 ~/Documents/SVNTest ~/Documents/SVNTest/trunk

dave@DEV-PC-1 ~/Documents/SVNTest/davebr2
$ popd
~/Documents/SVNTest ~/Documents/SVNTest/trunk

dave@DEV-PC-1 ~/Documents/SVNTest
$ pushd alicebr1/
~/Documents/SVNTest/alicebr1 ~/Documents/SVNTest ~/Documents/SVNTest/trunk

dave@DEV-PC-1 ~/Documents/SVNTest/alicebr1
$ ls
file1.txt  file2.txt

dave@DEV-PC-1 ~/Documents/SVNTest/alicebr1
$ cat file1.txt
line1
line2 changed in davebr1
line3
line4
line5
line6 changed by Alice in br1
line7
line8
line9
line10

dave@DEV-PC-1 ~/Documents/SVNTest/alicebr1
$ cat file2.txt
f2line1
f2line2
f2line3

dave@DEV-PC-1 ~/Documents/SVNTest/alicebr1
$ sed -i "s/f2line1/f2line1 Alice makes more changes to file2/" file2.txt

dave@DEV-PC-1 ~/Documents/SVNTest/alicebr1
$ cat file2.txt
f2line1 Alice makes more changes to file2
f2line2
f2line3

dave@DEV-PC-1 ~/Documents/SVNTest/alicebr1
$ svn st
M       file2.txt

dave@DEV-PC-1 ~/Documents/SVNTest/alicebr1
$ svn commit -m "Alice continues Dave's work from davebr1"
Sending        file2.txt
Transmitting file data .
Committed revision 8043.

dave@DEV-PC-1 ~/Documents/SVNTest/alicebr1
$ svn up
At revision 8043.

dave@DEV-PC-1 ~/Documents/SVNTest/alicebr1
$ svn st

dave@DEV-PC-1 ~/Documents/SVNTest/alicebr1
$ svn merge $MYSVNROOT/trunk
--- Merging r8035 through r8043 into '.':
U    file1.txt

dave@DEV-PC-1 ~/Documents/SVNTest/alicebr1
$ cat file1.txt
line1
line2 changed in davebr1
line3
line4 changed back on trunk
line5
line6 changed by Alice in br1
line7
line8
line9
line10

dave@DEV-PC-1 ~/Documents/SVNTest/alicebr1
$ cat file2.txt
f2line1 Alice makes more changes to file2
f2line2
f2line3

dave@DEV-PC-1 ~/Documents/SVNTest/alicebr1
$ svn commit -m "Alice merges changes from trunk into her branch"
Sending        .
Sending        file1.txt
Transmitting file data .
Committed revision 8044.

dave@DEV-PC-1 ~/Documents/SVNTest/alicebr1
$ svn up
At revision 8044.

dave@DEV-PC-1 ~/Documents/SVNTest/alicebr1
$ #Now Alice checks revision nums in prep for merging back to trunk

dave@DEV-PC-1 ~/Documents/SVNTest/alicebr1
$ svn log --stop-on-copy
------------------------------------------------------------------------
r8044 | dave | 2011-08-18 12:45:18 -0700 (Thu, 18 Aug 2011) | 1 line

Alice merges changes from trunk into her branch
------------------------------------------------------------------------
r8043 | dave | 2011-08-18 12:43:45 -0700 (Thu, 18 Aug 2011) | 1 line

Alice continues Dave's work from davebr1
------------------------------------------------------------------------
r8040 | dave | 2011-08-18 12:35:31 -0700 (Thu, 18 Aug 2011) | 1 line

Alice merged in changes from davebr1
------------------------------------------------------------------------
r8039 | dave | 2011-08-18 12:33:42 -0700 (Thu, 18 Aug 2011) | 1 line

Save Alice's first changes
------------------------------------------------------------------------
r8035 | dave | 2011-08-18 12:12:08 -0700 (Thu, 18 Aug 2011) | 2 lines

And so does Alice

------------------------------------------------------------------------

dave@DEV-PC-1 ~/Documents/SVNTest/alicebr1
$ dirs
~/Documents/SVNTest/alicebr1 ~/Documents/SVNTest ~/Documents/SVNTest/trunk

dave@DEV-PC-1 ~/Documents/SVNTest/alicebr1
$ popd
~/Documents/SVNTest ~/Documents/SVNTest/trunk

dave@DEV-PC-1 ~/Documents/SVNTest
$ pushd +1
~/Documents/SVNTest/trunk ~/Documents/SVNTest

dave@DEV-PC-1 ~/Documents/SVNTest/trunk
$ svn up
At revision 8044.

dave@DEV-PC-1 ~/Documents/SVNTest/trunk
$ cat file1.txt
line1
line2
line3
line4 changed back on trunk
line5
line6
line7
line8
line9
line10

dave@DEV-PC-1 ~/Documents/SVNTest/trunk
$ cat file2.txt
cat: file2.txt: No such file or directory

dave@DEV-PC-1 ~/Documents/SVNTest/trunk
$ #Now Alice wants to merge her branch back to trunk

dave@DEV-PC-1 ~/Documents/SVNTest/trunk
$ svn merge -r8035:8044 $MYSVNROOT/branches/alice/alicebr1
--- Merging r8036 through r8044 into '.':
A    file2.txt
U    file1.txt
 U   .

dave@DEV-PC-1 ~/Documents/SVNTest/trunk
$ svn st
 M      .
A  +    file2.txt
M       file1.txt

dave@DEV-PC-1 ~/Documents/SVNTest/trunk
$ cat file1.txt
line1
line2 changed in davebr1
line3
line4 changed back on trunk
line5
line6 changed by Alice in br1
line7
line8
line9
line10

dave@DEV-PC-1 ~/Documents/SVNTest/trunk
$ cat file2.txt
f2line1 Alice makes more changes to file2
f2line2
f2line3

dave@DEV-PC-1 ~/Documents/SVNTest/trunk
$ svn commit -m "Alice merges her changes back to trunk"
Sending        .
Sending        file1.txt
Adding         file2.txt
Transmitting file data .
Committed revision 8045.

dave@DEV-PC-1 ~/Documents/SVNTest/trunk
$ svn up
At revision 8045.

dave@DEV-PC-1 ~/Documents/SVNTest/trunk
$ st
sh: st: command not found

dave@DEV-PC-1 ~/Documents/SVNTest/trunk
$ svn st

dave@DEV-PC-1 ~/Documents/SVNTest/trunk
$ dirs
~/Documents/SVNTest/trunk ~/Documents/SVNTest

dave@DEV-PC-1 ~/Documents/SVNTest/trunk
$ popd
~/Documents/SVNTest

dave@DEV-PC-1 ~/Documents/SVNTest
$ pushd davebr2
~/Documents/SVNTest/davebr2 ~/Documents/SVNTest

dave@DEV-PC-1 ~/Documents/SVNTest/davebr2
$ ls
file1.txt  file2.txt

dave@DEV-PC-1 ~/Documents/SVNTest/davebr2
$ cat file1.txt
line1
line2 changed in davebr1
line3
line4 changed back on trunk
line5
line6
line7
line8 Dave continues changing file on davebr2
line9
line10

dave@DEV-PC-1 ~/Documents/SVNTest/davebr2
$ cat file2.txt
f2line1
f2line2
f2line3

dave@DEV-PC-1 ~/Documents/SVNTest/davebr2
$ svn st

dave@DEV-PC-1 ~/Documents/SVNTest/davebr2
$ svn up
At revision 8045.

dave@DEV-PC-1 ~/Documents/SVNTest/davebr2
$ dirs
~/Documents/SVNTest/davebr2 ~/Documents/SVNTest

dave@DEV-PC-1 ~/Documents/SVNTest/davebr2
$ pushd +1
~/Documents/SVNTest ~/Documents/SVNTest/davebr2

dave@DEV-PC-1 ~/Documents/SVNTest
$ # Meanwhile, Dave has another copy of davebr2 on another machine...

dave@DEV-PC-1 ~/Documents/SVNTest
$ svn co $MYSVNROOT/branches/dave/davebr2 davebr2A/
A    davebr2A/file2.txt
A    davebr2A/file1.txt
 U   davebr2A
Checked out revision 8045.

dave@DEV-PC-1 ~/Documents/SVNTest
$ pushd davebr2a
~/Documents/SVNTest/davebr2a ~/Documents/SVNTest ~/Documents/SVNTest/davebr2

dave@DEV-PC-1 ~/Documents/SVNTest/davebr2a
$ ls
file1.txt  file2.txt

dave@DEV-PC-1 ~/Documents/SVNTest/davebr2a
$ svn st

dave@DEV-PC-1 ~/Documents/SVNTest/davebr2a
$ svn up
At revision 8045.

dave@DEV-PC-1 ~/Documents/SVNTest/davebr2a
$ popd
~/Documents/SVNTest ~/Documents/SVNTest/davebr2

dave@DEV-PC-1 ~/Documents/SVNTest
$ pushd +1
~/Documents/SVNTest/davebr2 ~/Documents/SVNTest

dave@DEV-PC-1 ~/Documents/SVNTest/davebr2
$ # Now Dave wants to merge in Alice's latest changes from trunk

dave@DEV-PC-1 ~/Documents/SVNTest/davebr2
$ svn merge $MYSVNROOT/trunk
--- Merging r8038 through r8045 into '.':
   C file2.txt
U    file1.txt
 G   .
Summary of conflicts:
  Tree conflicts: 1

dave@DEV-PC-1 ~/Documents/SVNTest/davebr2
$ # And -- we have a tree conflict on file2

dave@DEV-PC-1 ~/Documents/SVNTest/davebr2
$ svn diff file2.txt

dave@DEV-PC-1 ~/Documents/SVNTest/davebr2
$ # Dave looks at the changes, realizes that trunk has the latest copy,

dave@DEV-PC-1 ~/Documents/SVNTest/davebr2
$ # and wants to resolve the conflict by importing the history from trunk

dave@DEV-PC-1 ~/Documents/SVNTest/davebr2
$ # to facilitate a later merge back to trunk.

dave@DEV-PC-1 ~/Documents/SVNTest/davebr2
$ svn revert -R .
Reverted '.'
Reverted 'file2.txt'
Reverted 'file1.txt'

dave@DEV-PC-1 ~/Documents/SVNTest/davebr2
$ svn st

dave@DEV-PC-1 ~/Documents/SVNTest/davebr2
$ svn up
At revision 8045.

dave@DEV-PC-1 ~/Documents/SVNTest/davebr2
$ svn del file2.txt
D         file2.txt

dave@DEV-PC-1 ~/Documents/SVNTest/davebr2
$ ls
file1.txt

dave@DEV-PC-1 ~/Documents/SVNTest/davebr2
$ svn commit -m "Create a temporary version of davebr2 without file2.txt"
Deleting       file2.txt

Committed revision 8046.

dave@DEV-PC-1 ~/Documents/SVNTest/davebr2
$ svn st

dave@DEV-PC-1 ~/Documents/SVNTest/davebr2
$ ls
file1.txt

dave@DEV-PC-1 ~/Documents/SVNTest/davebr2
$ #Not sure if Dave did an svn up here in the original case - I'll leave it

dave@DEV-PC-1 ~/Documents/SVNTest/davebr2
$ # out for the moment...

dave@DEV-PC-1 ~/Documents/SVNTest/davebr2
$ svn merge $MYSVNROOT/trunk
--- Merging r8038 through r8046 into '.':
A    file2.txt
U    file1.txt
 G   .

dave@DEV-PC-1 ~/Documents/SVNTest/davebr2
$ #Ok, the merge went well...

dave@DEV-PC-1 ~/Documents/SVNTest/davebr2
$ svn st
 M      .
A  +    file2.txt
M       file1.txt

dave@DEV-PC-1 ~/Documents/SVNTest/davebr2
$ cat file1.txt
line1
line2 changed in davebr1
line3
line4 changed back on trunk
line5
line6 changed by Alice in br1
line7
line8 Dave continues changing file on davebr2
line9
line10

dave@DEV-PC-1 ~/Documents/SVNTest/davebr2
$ cat file2.txt
f2line1 Alice makes more changes to file2
f2line2
f2line3

dave@DEV-PC-1 ~/Documents/SVNTest/davebr2
$ # Ok, we seem to have all the latest changes...

dave@DEV-PC-1 ~/Documents/SVNTest/davebr2
$ svn commit -m "Dave merges in latest changes from trunk"
Sending        .
svn: Commit failed (details follow):
svn: File or directory '.' is out of date; try updating
svn: resource out of date; try updating

dave@DEV-PC-1 ~/Documents/SVNTest/davebr2
$ svn up
   C file2.txt
At revision 8046.
Summary of conflicts:
  Tree conflicts: 1

dave@DEV-PC-1 ~/Documents/SVNTest/davebr2
$ svn cat file2.txt
f2line1 Alice makes more changes to file2
f2line2
f2line3

dave@DEV-PC-1 ~/Documents/SVNTest/davebr2
$ svn resolve --accept working
svn: Try 'svn help' for more info
svn: Not enough arguments provided

dave@DEV-PC-1 ~/Documents/SVNTest/davebr2
$ svn resolve --accept working --recursive .
Resolved conflicted state of 'file2.txt'

dave@DEV-PC-1 ~/Documents/SVNTest/davebr2
$ #Ok, that sounds good - let's check the status of file2:

dave@DEV-PC-1 ~/Documents/SVNTest/davebr2
$ cat file2.txt
f2line1 Alice makes more changes to file2
f2line2
f2line3

dave@DEV-PC-1 ~/Documents/SVNTest/davebr2
$ #That's the right version

dave@DEV-PC-1 ~/Documents/SVNTest/davebr2
$ svn st
 M      .
A  +    file2.txt
M       file1.txt

dave@DEV-PC-1 ~/Documents/SVNTest/davebr2
$ # All looks good, let's commit

dave@DEV-PC-1 ~/Documents/SVNTest/davebr2
$ svn commit -m "Dave merges in latest changes from trunk"
Sending        .
Sending        file1.txt
Adding         file2.txt
Transmitting file data .
Committed revision 8047.

dave@DEV-PC-1 ~/Documents/SVNTest/davebr2
$ svn st

dave@DEV-PC-1 ~/Documents/SVNTest/davebr2
$ svn up
At revision 8047.

dave@DEV-PC-1 ~/Documents/SVNTest/davebr2
$ cat file2.txt
f2line1 Alice makes more changes to file2
f2line2
f2line3

dave@DEV-PC-1 ~/Documents/SVNTest/davebr2
$ #Ok, everything looks good here, we've committed our changes and are

dave@DEV-PC-1 ~/Documents/SVNTest/davebr2
$ # in synch with the repository, right?

dave@DEV-PC-1 ~/Documents/SVNTest/davebr2
$ dirs
~/Documents/SVNTest/davebr2 ~/Documents/SVNTest

dave@DEV-PC-1 ~/Documents/SVNTest/davebr2
$ pushd +1
~/Documents/SVNTest ~/Documents/SVNTest/davebr2

dave@DEV-PC-1 ~/Documents/SVNTest
$ ls
alicebr1  davebr1  davebr2  davebr2A  svn-commit.tmp~  test1  trunk

dave@DEV-PC-1 ~/Documents/SVNTest
$ pushd davebr2A
~/Documents/SVNTest/davebr2A ~/Documents/SVNTest ~/Documents/SVNTest/davebr2

dave@DEV-PC-1 ~/Documents/SVNTest/davebr2A
$ ls
file1.txt  file2.txt

dave@DEV-PC-1 ~/Documents/SVNTest/davebr2A
$ # Now let's update our other version of the branch...

dave@DEV-PC-1 ~/Documents/SVNTest/davebr2A
$ svn up
U    file1.txt
 U   .
Updated to revision 8047.

dave@DEV-PC-1 ~/Documents/SVNTest/davebr2A
$ #Uh, oh -- what happened to file2?

dave@DEV-PC-1 ~/Documents/SVNTest/davebr2A
$ cat file2.txt
f2line1
f2line2
f2line3

dave@DEV-PC-1 ~/Documents/SVNTest/davebr2A
$ svn st

dave@DEV-PC-1 ~/Documents/SVNTest/davebr2A
$ svn up
At revision 8047.

dave@DEV-PC-1 ~/Documents/SVNTest/davebr2A
$ # svn claims this version is at 8047...

dave@DEV-PC-1 ~/Documents/SVNTest/davebr2A
$ dirs
~/Documents/SVNTest/davebr2A ~/Documents/SVNTest ~/Documents/SVNTest/davebr2

dave@DEV-PC-1 ~/Documents/SVNTest/davebr2A
$ pushd +2
~/Documents/SVNTest/davebr2 ~/Documents/SVNTest/davebr2A ~/Documents/SVNTest

dave@DEV-PC-1 ~/Documents/SVNTest/davebr2
$ svn st

dave@DEV-PC-1 ~/Documents/SVNTest/davebr2
$ svn up
At revision 8047.

dave@DEV-PC-1 ~/Documents/SVNTest/davebr2
$ # and svn claims this version is also at 8047...

dave@DEV-PC-1 ~/Documents/SVNTest/davebr2
$ cat file2.txt
f2line1 Alice makes more changes to file2
f2line2
f2line3

dave@DEV-PC-1 ~/Documents/SVNTest/davebr2
$ # But they have two different versions of file2!!!

dave@DEV-PC-1 ~/Documents/SVNTest/davebr2
$ pushd +2
~/Documents/SVNTest ~/Documents/SVNTest/davebr2 ~/Documents/SVNTest/davebr2A

dave@DEV-PC-1 ~/Documents/SVNTest
$ diff davebr2 davebr2A
Common subdirectories: davebr2/.svn and davebr2A/.svn
diff davebr2/file2.txt davebr2A/file2.txt
1c1
< f2line1 Alice makes more changes to file2
---
> f2line1

dave@DEV-PC-1 ~/Documents/SVNTest
$ svn diff davebr2/file2.txt

dave@DEV-PC-1 ~/Documents/SVNTest
$ svn diff davebr2A/file2.txt

dave@DEV-PC-1 ~/Documents/SVNTest
$ svn --version
svn, version 1.6.17 (r1128011)
   compiled Jun  2 2011, 10:39:28

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
* ra_serf : Module for accessing a repository via WebDAV protocol using serf.
  - handles 'http' scheme
  - handles 'https' scheme


dave@DEV-PC-1 ~/Documents/SVNTest
$ # Ok, let's check out a new version of davebr2 and see which one matches

dave@DEV-PC-1 ~/Documents/SVNTest
$ # the repository...

dave@DEV-PC-1 ~/Documents/SVNTest
$ svn co $MYSVNROOT/branches/dave/davebr2 davebr2-repos/
A    davebr2-repos/file2.txt
A    davebr2-repos/file1.txt
 U   davebr2-repos
Checked out revision 8047.

dave@DEV-PC-1 ~/Documents/SVNTest
$ cat davebr2-repos/file2.txt
f2line1
f2line2
f2line3

dave@DEV-PC-1 ~/Documents/SVNTest
$ # The change to file2.txt on the branch never hit the repository - yet the

dave@DEV-PC-1 ~/Documents/SVNTest
$ # commit seemed to go fine and svn st in davebr2/ seems to indicate that

dave@DEV-PC-1 ~/Documents/SVNTest
$ # all is well, and the working copy is in synch with the repository...

dave@DEV-PC-1 ~/Documents/SVNTest
$ # This is serious bad mojo...

dave@DEV-PC-1 ~/Documents/SVNTest
$ # And ... let's see what happens when we try to fix things from another

dave@DEV-PC-1 ~/Documents/SVNTest
$ # working directory...

dave@DEV-PC-1 ~/Documents/SVNTest
$ dirs
~/Documents/SVNTest ~/Documents/SVNTest/davebr2 ~/Documents/SVNTest/davebr2A

dave@DEV-PC-1 ~/Documents/SVNTest
$ pushd +2
~/Documents/SVNTest/davebr2A ~/Documents/SVNTest ~/Documents/SVNTest/davebr2

dave@DEV-PC-1 ~/Documents/SVNTest/davebr2A
$ svn st

dave@DEV-PC-1 ~/Documents/SVNTest/davebr2A
$ cat file2.txt
f2line1
f2line2
f2line3

dave@DEV-PC-1 ~/Documents/SVNTest/davebr2A
$ cp ../trunk/file2.txt .

dave@DEV-PC-1 ~/Documents/SVNTest/davebr2A
$ svn st
M       file2.txt

dave@DEV-PC-1 ~/Documents/SVNTest/davebr2A
$ svn diff file2.txt
Index: file2.txt
===================================================================
--- file2.txt   (revision 8047)
+++ file2.txt   (working copy)
@@ -1,3 +1,3 @@
-f2line1
+f2line1 Alice makes more changes to file2
 f2line2
 f2line3

dave@DEV-PC-1 ~/Documents/SVNTest/davebr2A
$ svn commit -m "Try to fix file2.txt for real..."
Sending        file2.txt
Transmitting file data .
Committed revision 8048.

dave@DEV-PC-1 ~/Documents/SVNTest/davebr2A
$ svn up
At revision 8048.

dave@DEV-PC-1 ~/Documents/SVNTest/davebr2A
$ # Ok, this working directory is good...

dave@DEV-PC-1 ~/Documents/SVNTest/davebr2A
$ dirs
~/Documents/SVNTest/davebr2A ~/Documents/SVNTest ~/Documents/SVNTest/davebr2

dave@DEV-PC-1 ~/Documents/SVNTest/davebr2A
$ pushd +2
~/Documents/SVNTest/davebr2 ~/Documents/SVNTest/davebr2A ~/Documents/SVNTest

dave@DEV-PC-1 ~/Documents/SVNTest/davebr2
$ svn st

dave@DEV-PC-1 ~/Documents/SVNTest/davebr2
$ svn up
svn: Checksum mismatch for 'file2.txt'; expected: 
'bec51ddc8576aaf4284f521d2a43af03', recorded: '1bd1122a6741a69d4655e462da86c87a'

dave@DEV-PC-1 ~/Documents/SVNTest/davebr2
$ # And this working directory (the original) appears to be trashed, along

dave@DEV-PC-1 ~/Documents/SVNTest/davebr2
$ # presumably, with any subsequent modifications.  SERIOUS bad mojo....

dave@DEV-PC-1 ~/Documents/SVNTest/davebr2
$ exit

Script done on Thu Aug 18 13:21:01 2011

Reply via email to