On Tue, Oct 04, 2016 at 09:40:36AM -0700, Stefan Beller wrote:
> >> Why should we even have a default different from today's? If most
> >> repositories don't have submodules enabled at all, we can just let
> >> those working with submodules enabled to toggle their configuration
> >> and that is an very easy to understand solution, no?
> >
> > You will not see any complaint from me on that. I was taking for granted
> > that the current default is inconvenient to submodule users, but I don't
> > have any experience myself.
> >
>
> And there I was trying to help submodule users not shoot in their foot.
Sorry if my reply came off as snarky. I really did mean it literally. I
do not know if the end goal is good or not, so all of my discussion was
just assuming it was.
So in that vein...
> diff --git a/builtin/push.c b/builtin/push.c
> index 3bb9d6b..d7d664a 100644
> --- a/builtin/push.c
> +++ b/builtin/push.c
> @@ -22,7 +22,7 @@ static int deleterefs;
> static const char *receivepack;
> static int verbosity;
> static int progress = -1;
> -static int recurse_submodules = RECURSE_SUBMODULES_DEFAULT;
> +static int recurse_submodules;
> static enum transport_family family;
>
> static struct push_cas_option cas;
> @@ -31,6 +31,14 @@ static const char **refspec;
> static int refspec_nr;
> static int refspec_alloc;
>
> +static void preset_submodule_default(void)
> +{
> + if (file_exists(".gitmodules"))
> + recurse_submodules = RECURSE_SUBMODULES_CHECK;
> + else
> + recurse_submodules = RECURSE_SUBMODULES_DEFAULT;
> +}
This does seem like a reasonable heuristic. I wonder if you want to
confirm that we actually have a worktree (and are in it) before looking
at file_exists(). It's unlikely that looking at ".gitmodules" in a bare
repo would trigger in practice, but it does not hurt to be careful.
-Peff