summaryrefslogtreecommitdiff
path: root/submodule.h
diff options
context:
space:
mode:
authorJonathan Tan <jonathantanmy@google.com>2018-05-24 20:47:29 (GMT)
committerJunio C Hamano <gitster@pobox.com>2018-05-25 06:25:42 (GMT)
commit4d36f88be7401fb4ff225557aae05a458091b24b (patch)
treee5f6ac6d2d65b07a78653fb9f0bcb12974f3940d /submodule.h
parent468165c1d8a442994a825f3684528361727cd8c0 (diff)
downloadgit-4d36f88be7401fb4ff225557aae05a458091b24b.zip
git-4d36f88be7401fb4ff225557aae05a458091b24b.tar.gz
git-4d36f88be7401fb4ff225557aae05a458091b24b.tar.bz2
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 <jonathantanmy@google.com> Reviewed-by: Stefan Beller <sbeller@google.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'submodule.h')
-rw-r--r--submodule.h5
1 files changed, 4 insertions, 1 deletions
diff --git a/submodule.h b/submodule.h
index 9589f13..0189b3e 100644
--- a/submodule.h
+++ b/submodule.h
@@ -94,7 +94,10 @@ extern int merge_submodule(struct object_id *result, const char *path,
const struct object_id *a,
const struct object_id *b, int search);
-/* Checks if there are submodule changes in a..b. */
+/*
+ * Checks if there are submodule changes in a..b. If a is the null OID,
+ * checks b and all its ancestors instead.
+ */
extern int submodule_touches_in_range(struct object_id *a,
struct object_id *b);
extern int find_unpushed_submodules(struct oid_array *commits,