(+list) 2018-03-30 1:55 GMT+03:00 <eddy.petri...@gmail.com>: > From: Eddy Petrișor <eddy.petri...@gmail.com> > > There are projects such as llvm/clang which use several repositories, and they > might be forked for providing support for various features such as adding > Redox > awareness to the toolchain. This typically means the superproject will use > another branch than master, occasionally even use an old commit from that > non-master branch. > > Combined with the fact that when incorporating such a hierachy of repositories > usually the user is interested in just the exact commit specified in the > submodule info, it follows that a desireable usecase is to be also able to > provide '--depth 1' or at least have a shallow clone to avoid waiting for ages > for the clone operation to finish. > > In theory, this should be straightforward since the git protocol allows > fetching an arbitary commit, but, in practice, some servers do not permit > fetch-by-sha1. > > Git submodule seems to be very stubborn and cloning master, although the > wrapper script and the gitmodules-helper could work together to clone directly > the branch specified in the .gitmodules file, if specified. > > Signed-off-by: Eddy Petrișor <eddy.petri...@gmail.com> > --- > git-submodule.sh | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/git-submodule.sh b/git-submodule.sh > index 24914963c..65e3af08b 100755 > --- a/git-submodule.sh > +++ b/git-submodule.sh > @@ -589,8 +589,10 @@ cmd_update() > branch=$(git submodule--helper remote-branch > "$sm_path") > if test -z "$nofetch" > then > + # non-default branch refspec > + br_refspec=$(git submodule-helper > remote-branch $sm_path) > # Fetch remote before determining tracking > $sha1 > - fetch_in_submodule "$sm_path" $depth || > + fetch_in_submodule "$sm_path" $depth > $br_refspec || > die "$(eval_gettext "Unable to fetch in > submodule path '\$sm_path'")" > fi > remote_name=$(sanitize_submodule_env; cd "$sm_path" > && get_default_remote) > -- > 2.16.2 >
I am planning to write a test case in the next few days, between the few drops of free time I have. I am still trying to figure out my way through the test code. -- Eddy Petrișor