OK, I understand John's point: TREE_ROOT works as implict parent directory. I can get the same path conflict for renamed files:
C:\Temp\4>bzr init a Created a standalone tree (format: pack-0.92)
C:\Temp\4\a>echo > foo
C:\Temp\4\a>bzr st unknown: foo
C:\Temp\4\a>bzr add adding foo
C:\Temp\4\a>bzr ci -m1 Committing to: C:/Temp/4/a/ added foo Committed revision 1.
C:\Temp\4>bzr get a b Branched 1 revision(s).
C:\Temp\4\a>bzr mkdir bar added bar
C:\Temp\4\a>bzr mv foo bar foo => bar/foo
C:\Temp\4\a>bzr ci -m2 Committing to: C:/Temp/4/a/ added bar renamed foo => bar/foo Committed revision 2.
C:\Temp\4\b>bzr mkdir baz added baz
C:\Temp\4\b>bzr mv foo baz foo => baz/foo
C:\Temp\4\b>bzr ci -m3 Committing to: C:/Temp/4/b/ added baz renamed foo => baz/foo Committed revision 2.
C:\Temp\4\b>bzr merge ../a +N bar/ R baz/foo => bar/foo Path conflict: baz/foo / bar/foo 1 conflicts encountered.
But there problem is obvious: baz/foo vs. bar/foo
In the case of different TREE_ROOT id the problem is *implicit* and this is really bad, because it's invisible to user and therefore it's hard to understand what's going on. IMO.
OK, I understand John's point: TREE_ROOT works as implict parent directory. I can get the same path conflict for renamed files:
C:\Temp\4>bzr init a
Created a standalone tree (format: pack-0.92)
C:\Temp\4\a>echo > foo
C:\Temp\4\a>bzr st
unknown:
foo
C:\Temp\4\a>bzr add
adding foo
C:\Temp\4\a>bzr ci -m1
Committing to: C:/Temp/4/a/
added foo
Committed revision 1.
C:\Temp\4>bzr get a b
Branched 1 revision(s).
C:\Temp\4\a>bzr mkdir bar
added bar
C:\Temp\4\a>bzr mv foo bar
foo => bar/foo
C:\Temp\4\a>bzr ci -m2
Committing to: C:/Temp/4/a/
added bar
renamed foo => bar/foo
Committed revision 2.
C:\Temp\4\b>bzr mkdir baz
added baz
C:\Temp\4\b>bzr mv foo baz
foo => baz/foo
C:\Temp\4\b>bzr ci -m3
Committing to: C:/Temp/4/b/
added baz
renamed foo => baz/foo
Committed revision 2.
C:\Temp\4\b>bzr merge ../a
+N bar/
R baz/foo => bar/foo
Path conflict: baz/foo / bar/foo
1 conflicts encountered.
But there problem is obvious: baz/foo vs. bar/foo
In the case of different TREE_ROOT id the problem is *implicit* and this is really bad, because it's invisible to user and therefore it's hard to understand what's going on. IMO.