v6: * kill the child once we know all information that we ask for, as an optimization * reordered the patches for that * strbuf_getwholeline instead of its _fd version. v5: * fixed rebase error in the first 2 patches * the last 3 patches introduce behavior change outside the scope of is_modified_submodule whereas the first 4 ought to just be local changes. Thanks, Stefan v4: * broken down in a lot of tiny patches. Jonathan wrote: > Patch 1/3 is the one that gives me pause, since I hadn't been able to > chase down all callers. Would it be feasible to split that into two: > one patch to switch to --porcelain=2 but not change behavior, and a > separate patch to improve what is stored in the dirty_submodule flags? This part is in the latest patch now. Thanks, Stefan v3: This comes as a series; first I'd like to refactor is_submodule_modified to take advantage of the new porcelain=2 plumbing switch to check for changes in the submodule. On top of the refactoring comes the actual change, which moved the rewriting of the submodule change indicator letter to the collection part. Thanks, Stefan Stefan Beller (8): submodule.c: port is_submodule_modified to use porcelain 2 submodule.c: use argv_array in is_submodule_modified submodule.c: convert is_submodule_modified to use strbuf_getwholeline_fd submodule.c: port is_submodule_modified to use porcelain 2 submodule.c: factor out early loop termination in is_submodule_modified submodule.c: stricter checking for submodules in is_submodule_modified short status: improve reporting for submodule changes submodule.c: correctly handle nested submodules in is_submodule_modified Documentation/git-status.txt | 9 +++++++ submodule.c | 56 ++++++++++++++++++++----------------------- t/t3600-rm.sh | 18 ++++++++++---- t/t7506-status-submodule.sh | 57 ++++++++++++++++++++++++++++++++++++++++++++ wt-status.c | 13 ++++++++-- 5 files changed, 116 insertions(+), 37 deletions(-) -- 2.12.1.438.gb674c4c09c