projects
/
git.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'jc/fix5500'
[git.git]
/
show-branch.c
diff --git
a/show-branch.c
b/show-branch.c
index
5a86ae2
..
24efb65
100644
(file)
--- a/
show-branch.c
+++ b/
show-branch.c
@@
-5,7
+5,7
@@
#include "refs.h"
static const char show_branch_usage[] =
#include "refs.h"
static const char show_branch_usage[] =
-"git-show-branch [--current] [--all] [--heads] [--tags] [--topo-order] [--more=count | --list | --independent | --merge-base ] [<refs>...]";
+"git-show-branch [--current] [--all] [--heads] [--tags] [--topo-order] [--more=count | --list | --independent | --merge-base ] [
--topics] [
<refs>...]";
static int default_num = 0;
static int default_alloc = 0;
static int default_num = 0;
static int default_alloc = 0;
@@
-547,6
+547,7
@@
int main(int ac, char **av)
int shown_merge_point = 0;
int with_current_branch = 0;
int head_at = -1;
int shown_merge_point = 0;
int with_current_branch = 0;
int head_at = -1;
+ int topics = 0;
setup_git_directory();
git_config(git_show_branch_config);
setup_git_directory();
git_config(git_show_branch_config);
@@
-587,6
+588,8
@@
int main(int ac, char **av)
independent = 1;
else if (!strcmp(arg, "--topo-order"))
lifo = 1;
independent = 1;
else if (!strcmp(arg, "--topo-order"))
lifo = 1;
+ else if (!strcmp(arg, "--topics"))
+ topics = 1;
else if (!strcmp(arg, "--date-order"))
lifo = 0;
else
else if (!strcmp(arg, "--date-order"))
lifo = 0;
else
@@
-724,11
+727,17
@@
int main(int ac, char **av)
while (seen) {
struct commit *commit = pop_one_commit(&seen);
int this_flag = commit->object.flags;
while (seen) {
struct commit *commit = pop_one_commit(&seen);
int this_flag = commit->object.flags;
+ int is_merge_point = ((this_flag & all_revs) == all_revs);
- shown_merge_point |=
((this_flag & all_revs) == all_revs)
;
+ shown_merge_point |=
is_merge_point
;
if (1 < num_rev) {
int is_merge = !!(commit->parents && commit->parents->next);
if (1 < num_rev) {
int is_merge = !!(commit->parents && commit->parents->next);
+ if (topics &&
+ !is_merge_point &&
+ (this_flag & (1u << REV_SHIFT)))
+ continue;
+
for (i = 0; i < num_rev; i++) {
int mark;
if (!(this_flag & (1u << (i + REV_SHIFT))))
for (i = 0; i < num_rev; i++) {
int mark;
if (!(this_flag & (1u << (i + REV_SHIFT))))