Jan Hudec wrote:
Let's consider following scenario:
(where A$ means working in branch A, B$ means working in branch B and
VCT stands for version control tool of choice)
[...]
At this point, I expect the tree to look like this:
A$ ls -R
.:
data/
data:
hello.txt
A$ cat data/hello.txt
Hello World!
[...]
Oh, and there is one more complicated case, that I also require to work
and that works in Bzr, but did not work in Arch:
...let's start with the tree at the end of previous example...
A$ VCT mv data greetings
A$ VCT commit -m "Renamed the data directory to greetings"
B$ echo "Goodbye World!" > data/goodbye.txt
B$ VCT add data/goodbye.txt
B$ VCT commit -m "Added goodbye message."
A$ VCT merge B
(slightly corrected example).
A$ git branch B
A$ git mv data greetings
A$ git commit -a -m "Renamed the data directory to greetings"
A$ git checkout B
B$ echo 'Goodbye World!' > data/goodbye.txt
B$ git add data/goodbye.txt
B$ git commit -a -m "Added goodbye message."
B$ git checkout A
A$ git pull . B
Trying really trivial in-index merge...
fatal: Merge requires file-level merging
Nope.
Merging HEAD with 4a8a1a7941f214c6173786b583830b4f74a67c1f
Merging:
96738390ba0b4de5b234059081701badc1c86693 Renamed the data directory to greetings
4a8a1a7941f214c6173786b583830b4f74a67c1f Added goodbye message.
found 1 common ancestor(s):
7cfd8edd06b7cb016856737d8fd98d5d096955b5 Merge branch 'B' into A
Merge made by recursive.
data/goodbye.txt | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)
create mode 100644 data/goodbye.txt
And now I expect to have tree looking like this:
A$ ls -R
.:
greetings/
greetings:
hello.txt
goodbye.txt
So git _fails_ (your expectations) in this case:
A$ ls -R
.:
data greetings
./data:
goodbye.txt
./greetings:
hello.txt