[PATCHv2 0/5] Fix relative path issues in recursive submodules.
Thanks Junio, Eric and Jacob for review!
v2:
* reworded commit message for test (Thanks Junio!)
* instead of "simplifying" the path handling in patch 2, we are prepared
for anything the user throws at us (i.e. instead of segfault we
die(_("submodule--helper: unspecified or empty --path"));
(Thanks Eric, Jacob for pushing back here!)
* reword commit message for patch 3 (safe_create_leading_directories_const is
not a check, Thanks Junio!)
* patch 4 (the fix): That got reworked completely. No flow controlling
conditions in the write out phase!
* patch 5 is a bonus! (replace fprintf by fprintf_or die) When implementing
that I wondered if we also have close_or_die and open_or_die, but that doesn't
seem to be the case.
Thanks,
Stefanv1:
It took me longer than expected to fix this bug.
It comes with a test and minor refactoring and applies on top of origin/sb/submodule-helper, such that it can be merged into 2.7, 2.8 as well as master.
Patch 1 is a test which fails; it has a similar layout as the real failing repository Norio Nomura pointed out, but simplified to the bare essentials for reproduction of the bug.
Patch 2&3 are not strictly necessary for fixing the isseu, but it removes stupid code I wrote, so the resulting code looks a little better.
Patch 4 fixes the issue by giving more information to relative_path, such that a relative path can be found in all cases.
Thanks, Stefan
Stefan Beller (5): recursive submodules: test for relative paths submodule--helper clone: simplify path check submodule--helper clone: remove double path checking submodule--helper, module_clone: always operate on absolute paths submodule--helper, module_clone: catch fprintf failure
builtin/submodule--helper.c | 52 +++++++++++++++++++++++++-------------------- t/t7400-submodule-basic.sh | 41 +++++++++++++++++++++++++++++++++++ 2 files changed, 70 insertions(+), 23 deletions(-)
-- 2.5.0.264.g39f00fe