diff options
Diffstat (limited to 'revision.c')
-rw-r--r-- | revision.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/revision.c b/revision.c index 8d04516266..0e98444857 100644 --- a/revision.c +++ b/revision.c @@ -2133,6 +2133,14 @@ static int handle_revision_pseudo_opt(const char *submodule, int argcount; if (submodule) { + /* + * We need some something like get_submodule_worktrees() + * before we can go through all worktrees of a submodule, + * .e.g with adding all HEADs from --all, which is not + * supported right now, so stick to single worktree. + */ + if (!revs->single_worktree) + die("BUG: --single-worktree cannot be used together with submodule"); refs = get_submodule_ref_store(submodule); } else refs = get_main_ref_store(); @@ -2150,6 +2158,12 @@ static int handle_revision_pseudo_opt(const char *submodule, if (!strcmp(arg, "--all")) { handle_refs(refs, revs, *flags, refs_for_each_ref); handle_refs(refs, revs, *flags, refs_head_ref); + if (!revs->single_worktree) { + struct all_refs_cb cb; + + init_all_refs_cb(&cb, revs, *flags); + other_head_refs(handle_one_ref, &cb); + } clear_ref_exclusion(&revs->ref_excludes); } else if (!strcmp(arg, "--branches")) { handle_refs(refs, revs, *flags, refs_for_each_branch_ref); |