Re: [GSoC][PATCH 4/8] submodule: port submodule subcommand 'status' from shell to C
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Jul 18, 2017, 22:32 UTC
- Message-ID
- <xmqqmv81ml4i.fsf@gitster.mtv.corp.google.com>
- In-Reply-To
- <CAGZ79kb48kNggPv64ubbBNK-Sk8AW4eXxhZt=PZZCPKr9OiuLQ@mail.gmail.com>
Stefan Beller <sbeller@google.com> writes:
Show 13 quoted lines
>> + 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.
But as you said, this is probably insufficient to emulate the original. Shouldn't it call into run_diff_files(), which is the in-core way to run the equivalent of "diff-files"?