[PATCH v5 0/9] Make submodules work if .gitmodules is not checked out
Hi,
this series teaches git to try and read the .gitmodules file from the index (:.gitmodules) or from the current branch (HEAD:.gitmodules) when the file is not readily available in the working tree.
This can be used, together with sparse checkouts, to enable submodule usage with programs like vcsh[1] which manage multiple repositories with their working trees sharing the same path.
[1] https://github.com/RichiH/vcsh
v4 of the series is here: https://public-inbox.org/git/20180824132951.8000-1-ao2@ao2.it/
v3 of the series is here: https://public-inbox.org/git/20180814110525.17801-1-ao2@ao2.it/
v2 of the series is here: https://public-inbox.org/git/20180802134634.10300-1-ao2@ao2.it/
v1 of the series, with some background info, is here: https://public-inbox.org/git/20180514105823.8378-1-ao2@ao2.it/
v5 only contains some small cosmetic fixes suggested by Ævar Arnfjörð Bjarmason, I ignored the comment about the memory leak in patch 1 because I think there is no leak in how git_config_parse_key is used: https://public-inbox.org/git/87wosfesxl.fsf@evledraar.gmail.com/
Changes since v4:
* Improve names of local variables in patch 1.
* Move new functions definitions in patches 1 and 2 before
a pre-existing comment instead of after it, as the comment does not
apply to the new functions.I am repeating the previous changelog below for your convenience, as v3 is what is currently in pu/ao/submodule-wo-gitmodules-checked-out.
Changes between v3 and v4:
* Improve robustness of current tests in t7411-submodule-config.sh:
- merge two tests that check for effects of the same commit.
- reset to a well defined point in history when exiting the tests. * Fix style issues in new tests added to t7411-submodule-config.sh:
- use test_when_finished in new tests.
- name the output file 'expect' instead of 'expected'.* Add a new "submodule--helper config --check-writeable" command.
* Use "s--h config --check-wrteable" in git-submodule.sh to share the
code with the C implementation instead of duplicating the safety
check in shell script. * Add the ability to read .gitmodules from the index and then
fall-back to the current branch if the file is not in the index.
Add also more tests to validate all the possible scenarios. * Fix style issues in t7416-submodule-sparse-gitmodules.sh:
- name the output file 'expect' instead of 'expected'.
- remove white space after the redirection operator.
- indent the HEREDOC block.
- use "git -C super" instead of a subshell when there is only one
command in the test. * Remove a stale file named 'new' which erroneously slipped in
a commit.* Update some comments and commit messages.
Thank you, Antonio
Antonio Ospite (9):
submodule: add a print_config_from_gitmodules() helper
submodule: factor out a config_set_in_gitmodules_file_gently function
t7411: merge tests 5 and 6
t7411: be nicer to future tests and really clean things up
submodule--helper: add a new 'config' subcommand
submodule: use the 'submodule--helper config' command
t7506: clean up .gitmodules properly before setting up new scenario
submodule: add a helper to check if it is safe to write to .gitmodules
submodule: support reading .gitmodules when it's not in the working
treebuiltin/submodule--helper.c | 40 +++++++++ cache.h | 2 + git-submodule.sh | 13 ++- submodule-config.c | 55 ++++++++++++- submodule-config.h | 2 + submodule.c | 28 +++++-- submodule.h | 1 + t/t7411-submodule-config.sh | 107 +++++++++++++++++++++---- t/t7416-submodule-sparse-gitmodules.sh | 78 ++++++++++++++++++ t/t7506-status-submodule.sh | 3 +- 10 files changed, 300 insertions(+), 29 deletions(-) create mode 100755 t/t7416-submodule-sparse-gitmodules.sh
-- Antonio Ospite https://ao2.it https://twitter.com/ao2it A: Because it messes up the order in which people normally read text. See http://en.wikipedia.org/wiki/Posting_style Q: Why is top-posting such a bad thing?