Re: [BUG] Symbolic links break "git fast-export"?
- From
Lars Schneider <larsxschneider@gmail.com>
- Date
- Jun 30, 2019, 14:01 UTC
- Message-ID
- <3AA3CC52-84FE-4FD0-8977-D4FBCF0DCE2C@gmail.com>
- In-Reply-To
- <CABPp-BE8um5g98jqWawsuG2dAvO6AZcR54vrRzAkJbq+L3K6Zw@mail.gmail.com>
Show 19 quoted lines
> On Jun 24, 2019, at 5:33 AM, Elijah Newren <newren@gmail.com> wrote:
>
> On Mon, Jun 24, 2019 at 5:05 AM Lars Schneider <larsxschneider@gmail.com> wrote:
>>
>> Hi folks,
>>
>> Is my understanding correct, that `git fast-export | git fast-import`
>> should not modify the repository? If yes, then we might have a bug in
>> `git fast-export` if symbolic directory links are removed and converted
>> to a real directory.
>>
>> ...
>
> My first reaction was, "we regressed on this again?", but it looks
> like my original fix for directory/file changes only handled one
> direction. Thus, my commit 060df6242281 ("fast-export: Fix output
> order of D/F changes", 2010-07-09) probably *caused* this bug. We
> should probably just sort not based on filename, but on changetype --
> send all the deletes to fast-import before we send the modifies.060df6242281 is interesting! If I revert the changes in builtin/fast-export.c, then the "t9350:directory becomes symlink" test still passes nowadays.
Plus, my my new test case passes too:
test_expect_success 'when transforming a symlink to a directory' ' test_create_repo src &&
mkdir src/foo && echo a_line >src/foo/file.txt && git -C src add foo/file.txt && git -C src commit -m 1st_commit &&
ln -s src/foo src/bar && git -C src add bar && git -C src commit -m 2nd_commit &&
rm src/bar && mkdir src/bar && echo b_line >src/bar/b_file.txt && git -C src add . && git -C src commit -m 3rd_commit &&
test_create_repo dst && git -C src fast-export --all && git -C src fast-export --all | git -C dst fast-import && git -C src show >expected && git -C dst show >actual && test_cmp expected actual '
Do you think it would make sense to revert the qsort change in fast-export? I haven't bisected yet which other change made the qsort change obsolete.
Thanks, Lars