branch: support more tracking modes when recursing
"git branch --recurse-submodules" does not propagate "--track=inherit"
or "--no-track" to submodules, which causes submodule branches to use
the wrong tracking mode [1]. To fix this, pass the correct options to
the "submodule--helper create-branch" child process and test for it.
While we are refactoring the same code, replace "--track" with the
synonymous, but more consistent-looking "--track=direct" option
(introduced at the same time as "--track=inherit", d3115660b4 (branch:
add flags and config to inherit tracking, 2021-12-20)).
[1] This bug is partially a timing issue: "branch --recurse-submodules"
was introduced around the same time as "--track=inherit", and even
though I rebased "branch --recurse-submodules" on top of that, I had
neglected to support the new tracking mode. Omitting "--no-track"
was just a plain old mistake, though.
Signed-off-by: Glen Choo <chooglen@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
committed by
Junio C Hamano
parent
679e3693ab
commit
75388bf5b4
@ -2994,9 +2994,10 @@ static int module_create_branch(int argc, const char **argv, const char *prefix)
|
||||
OPT__FORCE(&force, N_("force creation"), 0),
|
||||
OPT_BOOL(0, "create-reflog", &reflog,
|
||||
N_("create the branch's reflog")),
|
||||
OPT_SET_INT('t', "track", &track,
|
||||
N_("set up tracking mode (see git-pull(1))"),
|
||||
BRANCH_TRACK_EXPLICIT),
|
||||
OPT_CALLBACK_F('t', "track", &track, "(direct|inherit)",
|
||||
N_("set branch tracking configuration"),
|
||||
PARSE_OPT_OPTARG,
|
||||
parse_opt_tracking_mode),
|
||||
OPT__DRY_RUN(&dry_run,
|
||||
N_("show whether the branch would be created")),
|
||||
OPT_END()
|
||||
|
||||
Reference in New Issue
Block a user