From: Junio C Hamano Date: Tue, 18 Jul 2017 22:47:20 GMT Subject: Re: [GSoC][PATCH 4/8] submodule: port submodule subcommand 'status' from shell to C Message-ID: In-Reply-To: On Tue, Jul 18, 2017 at 3:44 PM, Stefan Beller wrote: > On Tue, Jul 18, 2017 at 3:32 PM, Junio C Hamano wrote: >> Stefan Beller writes: >> >>>> + if (!lstat(list_item->name, &st) && !ce_match_stat(list_item, &st, 0)) { >>>> + print_status(info, ' ', list_item->name, sub_sha1, displaypath); >>> >>> The question from the last round still stands >>> https://public-inbox.org/git/CAGZ79kb18z5zc9iu3Vv5aVZWJmoZzmwbMVpy89VC-t-ei2M+bw@mail.gmail.com/ >>> >>> I am not an expert in the diff area and wonder how >>> the cmd_diff_files functionality is achieved with just a stat call >>> and then comparing it to ce_match_stat. 'Using "dirty" ignores >>> all changes to the work tree of submodules, only changes to the >>> commits stored in the superproject are shown.' So I'd have >>> expected ce->oid to be compared (is there an index entry differing, >>> i.e. more than one stage?) >> >> ce_match_stat() calls into ce_compare_gitlink() for a 160000 entry, >> which would resolve HEAD ref there and compares ce->oid with it. > > Oh in that case this should be fine, as in the original we did > "git diff-files --ignore-submodules=dirty ", > which did precisely that. Are you sure that this will work correctly when ce is unmerged? run_diff_files() has quite a lot of code for that case.