SZEDER Gábor <szeder.dev@xxxxxxxxx> writes: >> + * last: xxx/yy-file (because '-' sorts before '/') >> + * this: xxx/yy/abc > > This is problematic, because the index can already contain 'xxx/yy' as > a file, when adding 'xxx/yy/abc', but since 'xxx/yy' as a file sorts > before 'xxx/yy-file', the short-circuiting here doesn't see it and > thus leaves the d-f collision undetected. Consequently, even Git > porcelain commands can create tree objects with duplicate entries, as > demonstrated in the tests below. Yeah, the "optimization" is quite bogus. Thanks for catching it.