Subject: Re: Export from bzr / Import to git results in a deleted file re-appearing

From: Andreas Schwab <[email-masked]>
Date: Fri, 13 Jul 2012 11:04:21 +0200

Jeff King <[email-masked]> writes:

> On Thu, Jul 12, 2012 at 08:00:17PM +0200, Felix Natter wrote:
>
>> I am trying to move freeplane's repository (GPL-project) from bzr to
>> git, but when I do this:
>> 
>> $ mkdir freeplane-git1
>> $ cd freeplane-git1
>> $ git init .
>> $ bzr fast-export --export-marks=../marks.bzr ../trunk/ | git fast-import --export-marks=../marks.git
>> $ git checkout
>> 
>> then there are no errors, but the resulting working index is broken:
>>  freeplane-git1/freeplane_plugin_formula/src/org/freeplane/plugin/formula
>>  contains SpreadSheetUtils.java which belongs to package
>>  'org.freeplane.plugin.spreadsheet' and which is no longer in the bzr
>>  trunk that I imported!
>
> If you run only the bzr half of your command and inspect the output, you
> will see that the file in question is mentioned twice.  Once in a commit
> on "refs/heads/master" that renames into it from another file:
>
>   R freeplane_plugin_spreadsheet/src/org/freeplane/plugin/spreadsheet/SpreadSheetUtils.java
>     freeplane_plugin_formula/src/org/freeplane/plugin/formula/SpreadSheetUtils.java

That same revision also removes it, but is uses the original name for
the deletion (the bzr revision actually renames the containing
directory).  That's probably what confuses git fast-import.

Here is a test case:

bzr init
mkdir a
bzr add a
touch a/b
bzr add a/b
bzr ci -m a
bzr mv a b
bzr rm b/b
bzr ci -m b
bzr fast-export .

The output contains these lines:

R a/b b/b
D a/b

Changing the second line to D b/b fixes the bug.

Andreas.

-- 
Andreas Schwab, [email-masked]
GPG Key fingerprint = 58CA 54C7 6D53 942B 1756  01D3 44D5 214B 8276 4ED5
"And now for something completely different."