From 4d36f88be7401fb4ff225557aae05a458091b24b Mon Sep 17 00:00:00 2001 From: Jonathan Tan Date: Thu, 24 May 2018 13:47:29 -0700 Subject: submodule: do not pass null OID to setup_revisions If "git pull --recurse-submodules --rebase" is invoked when the current branch and its corresponding remote-tracking branch have no merge base, a "bad object" fatal error occurs. This issue was introduced with commit a6d7eb2c7a ("pull: optionally rebase submodules (remote submodule changes only)", 2017-06-23), which also introduced this feature. This is because cmd_pull() in builtin/pull.c thus invokes submodule_touches_in_range() with a null OID as the first parameter. Ensure that this case works, and document what happens in this case. Signed-off-by: Jonathan Tan Reviewed-by: Stefan Beller Signed-off-by: Junio C Hamano --- submodule.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'submodule.c') diff --git a/submodule.c b/submodule.c index 12a2503fda..db8bd4a079 100644 --- a/submodule.c +++ b/submodule.c @@ -1166,8 +1166,10 @@ int submodule_touches_in_range(struct object_id *excl_oid, argv_array_push(&args, "--"); /* args[0] program name */ argv_array_push(&args, oid_to_hex(incl_oid)); - argv_array_push(&args, "--not"); - argv_array_push(&args, oid_to_hex(excl_oid)); + if (!is_null_oid(excl_oid)) { + argv_array_push(&args, "--not"); + argv_array_push(&args, oid_to_hex(excl_oid)); + } collect_changed_submodules(&subs, &args); ret = subs.nr; -- cgit 1.2.3-korg