show-branch: show all local heads when only giving one rev along --topics
"git show-branch --topics <rev> <revs>..." displays ancestry graph, only
considering commits that are in all given revs, except the first one.
"git show-branch" displays ancestry graph for all local branches.
Unfortunately, "git show-branch --topics <rev>" only prints out the rev
info for the given rev, and nothing else, e.g.:
$ git show-branch --topics origin/master
[origin/master] Sync with 2.3.3
While there is an option to add all remote-tracking branches (-r), and
another to add all local+remote branches (-a), there is no option to add
only local branches. Adding such an option could be considered, but a
user would likely already expect that the above command line considers
the lack of rev other than for --topics as meaning all local branches,
like when there is no argument at all.
Moreover, when using -r and -a along with --topics, the first local or
remote-tracking branch, depending on alphabetic order is used instead of
the one given after --topics (any rev given on the command line is
actually simply ignored when either -r or -a is given). And if no rev is
given at all, the fact that the first alphetical branch is the base of
topics is probably not expected by users (Maybe --topics should always
require one rev on the command line?)
This change makes
"show-branch --topics $rev"
act as
"show-branch --topics $rev $(git for-each-ref refs/heads
--format='%(refname:short)')"
"show-branch -r --topics $rev ..."
act as
"show-branch --topics $rev ... $(git for-each-ref refs/remotes
--format='%(refname:short)')"
instead of
"show-branch --topics $(git for-each-ref refs/remotes
--format='%(refname:short)')"
and
"show-branch -a --topics $rev ..."
act as
"show-branch --topics $rev ... $(git for-each-ref refs/heads refs/remotes
--format='%(refname:short)')"
instead of
"show-branch --topics $(git for-each-ref refs/heads refs/remotes
--format='%(refname:short)')"
Signed-off-by: Mike Hommey <mh@glandium.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
committed by
Junio C Hamano
parent
9874fca712
commit
539d09c3b4
@ -718,7 +718,7 @@ int cmd_show_branch(int ac, const char **av, const char *prefix)
|
||||
}
|
||||
|
||||
/* If nothing is specified, show all branches by default */
|
||||
if (ac + all_heads + all_remotes == 0)
|
||||
if (ac <= topics && all_heads + all_remotes == 0)
|
||||
all_heads = 1;
|
||||
|
||||
if (reflog) {
|
||||
@ -785,13 +785,13 @@ int cmd_show_branch(int ac, const char **av, const char *prefix)
|
||||
}
|
||||
free(ref);
|
||||
}
|
||||
else if (all_heads + all_remotes)
|
||||
snarf_refs(all_heads, all_remotes);
|
||||
else {
|
||||
while (0 < ac) {
|
||||
append_one_rev(*av);
|
||||
ac--; av++;
|
||||
}
|
||||
if (all_heads + all_remotes)
|
||||
snarf_refs(all_heads, all_remotes);
|
||||
}
|
||||
|
||||
head_p = resolve_ref_unsafe("HEAD", RESOLVE_REF_READING,
|
||||
|
||||
Reference in New Issue
Block a user