[PATCH 0/5] Fix 'url.*.insteadOf' for submodule URLs
From: Johan Herland <hidden>
Date: 2016-06-15 22:45:06
As suggested in a thread some time ago, one could redefine the URL used to
fetch submodules by adding a 'url.*.insteadOf' rule prior to the first
invocation of 'git submodule update'.
However, this does not work with current Git, because the super-repo config
(which is home to the 'url.*.insteadOf' rule) is not consulted by the 'git
clone' that is invoked by 'git submodule update'.
These patches fix this issue by making 'git submodule' explicitly rewrite
the submodule URL according to the super-repo config, prior to calling 'git
clone'.
In order for the 'git submodule' shell script to properly rewrite URLs, it
must gain access to the URL rewriting functionality in remote.c. To expose
the URL rewriting functionality to 'git submodule' (and others, if needed),
a new option ('rewrite-url') has been added to 'git config'.
The patch series is based on master. Whether or not this should be
considered for v1.6.0 is to be decided by Junio. (My personal opinion is
that although we're late in the release cycle, the patches are fairly
straightforward, and should not pose a great risk of regressions.)
Johan Herland (5):
Add testcase for 'git submodule' with url.*.insteadOf set in the
super-repo
Teach 'git config' to rewrite URLs according to current
url.*.insteadOf rules
Add selftest for new option '--rewrite-url' to 'git config'
Add documentation on the new --rewrite-url option to 'git config'
Teach 'git submodule' to rewrite submodule URLs according to
super-repo's rules
Documentation/git-config.txt | 10 ++++++++++
builtin-config.c | 23 ++++++++++++++++++++++-
git-submodule.sh | 6 ++++++
t/t1300-repo-config.sh | 14 ++++++++++++++
t/t7400-submodule-basic.sh | 11 +++++++++++
5 files changed, 63 insertions(+), 1 deletions(-)
Have fun!
...Johan