git and bzr
Jakub Narebski
jnareb at gmail.com
Tue Nov 28 21:43:24 GMT 2006
Nicholas Allen wrote:
>> Just out of curiosity: How does git handle the case where one file is
>> renamed differently in 2 branches and then the branches are repeatably
>> merged? I know that bzr handles this very well and in various tests I
>> did there were absolutely no repeated conflicts. Would git behave as
>> well in this scenario?
>>
>
> Ok - I got curious and decided to install git and try this myself.
>
> In this test I had a file hello.txt that got renamed to hello1.txt in
> one branch and hello2.txt in another. Then I merged the changes between
> the 2 branches.
>
> Here is how it looked after the merge in bzr:
>
> bzr status
> renamed:
> hello2.txt => hello1.txt
> conflicts:
> Path conflict: hello2.txt / hello1.txt
> pending merges:
> Nicholas Allen 2006-11-28 Renamed hello to hello1
>
>
> and here's how it looked in git:
> git status
> #
> # Changed but not updated:
> # (use git-update-index to mark for commit)
> #
> # unmerged: hello.txt
> # unmerged: hello1.txt
> # unmerged: hello2.txt
> # modified: hello2.txt
> #
> nothing to commit
Er? What about merge printed?
$ git pull . branch
Trying really trivial in-index merge...
fatal: Merge requires file-level merging
Nope.
Merging HEAD with c59706ee42aa7b6b2b203d4219210a684f5581f2
Merging:
8f43c37 Moved hello.txt to hello_master.txt
c59706e Moved hello.txt to hello_branch.txt
found 1 common ancestor(s):
b7d5f1a Initial commit
CONFLICT (rename/rename): Rename hello.txt->hello_master.txt in branch
HEAD rename hello.txt->hello_branch.txt in c59706e
Automatic merge failed; fix conflicts and then commit the result.
I agree that git-status output could be more helpful in the case of
merges. Well, you can always check "git ls-files --stage"
$ git ls-files --stage --abbrev
100644 18249f3 1 hello.txt
100644 18249f3 3 hello_branch.txt
100644 18249f3 2 hello_master.txt
> So git is not telling me that I have a conflict due to the same file
> being renamed differently in 2 branches - well at least not in a way I
> can comprehend anyway! Whereas bzr made this very clear. Also, in git I
> ended up with 2 files:
>
> ls
> hello1.txt hello2.txt
>
> whereas in bzr there was only one file and I just had to decide which
> name it was to be given to resolve the conflict.
--
Jakub Narebski
Warsaw, Poland
ShadeHawk on #git
More information about the bazaar
mailing list