X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=show-branch.c;h=452e63f78682c44d52f1391a74077036b786f3b5;hb=d5dddccaa0c61c67340efca36237dfa06eccef1c;hp=7a0dcc649edaf6a823e15f60d04c6ce67348dc42;hpb=1aa68d67358be1ee20da57b0c3bd1f9863fe41a4;p=git.git diff --git a/show-branch.c b/show-branch.c index 7a0dcc64..452e63f7 100644 --- a/show-branch.c +++ b/show-branch.c @@ -5,7 +5,7 @@ #include "refs.h" static const char show_branch_usage[] = -"git-show-branch [--current] [--all] [--heads] [--tags] [--topo-order] [--more=count | --list | --independent | --merge-base ] [...]"; +"git-show-branch [--current] [--all] [--heads] [--tags] [--topo-order] [--more=count | --list | --independent | --merge-base ] [--topics] [...]"; static int default_num = 0; static int default_alloc = 0; @@ -258,8 +258,8 @@ static void show_one_commit(struct commit *commit, int no_name) char pretty[256], *cp; struct commit_name *name = commit->object.util; if (commit->object.parsed) - pretty_print_commit(CMIT_FMT_ONELINE, commit->buffer, ~0, - pretty, sizeof(pretty)); + pretty_print_commit(CMIT_FMT_ONELINE, commit, ~0, + pretty, sizeof(pretty), 0); else strcpy(pretty, "(unavailable)"); if (!strncmp(pretty, "[PATCH] ", 8)) @@ -535,6 +535,7 @@ int main(int ac, char **av) int num_rev, i, extra = 0; int all_heads = 0, all_tags = 0; int all_mask, all_revs; + int lifo = 1; char head_path[128]; const char *head_path_p; int head_path_len; @@ -544,12 +545,12 @@ int main(int ac, char **av) int no_name = 0; int sha1_name = 0; int shown_merge_point = 0; - int topo_order = 0; int with_current_branch = 0; int head_at = -1; + int topics = 0; - git_config(git_show_branch_config); setup_git_directory(); + git_config(git_show_branch_config); /* If nothing is specified, try the default first */ if (ac == 1 && default_num) { @@ -586,7 +587,11 @@ int main(int ac, char **av) else if (!strcmp(arg, "--independent")) independent = 1; else if (!strcmp(arg, "--topo-order")) - topo_order = 1; + lifo = 1; + else if (!strcmp(arg, "--topics")) + topics = 1; + else if (!strcmp(arg, "--date-order")) + lifo = 0; else usage(show_branch_usage); ac--; av++; @@ -710,8 +715,7 @@ int main(int ac, char **av) exit(0); /* Sort topologically */ - if (topo_order) - sort_in_topological_order(&seen); + sort_in_topological_order(&seen, lifo); /* Give names to commits */ if (!sha1_name && !no_name) @@ -728,6 +732,20 @@ int main(int ac, char **av) if (1 < num_rev) { int is_merge = !!(commit->parents && commit->parents->next); + if (topics) { + int interesting = 0; + for (i = 1; i < num_rev; i++) { + if ((this_flag & + (1u << (i + REV_SHIFT)))) { + interesting = 1; + break; + } + } + if (!interesting) + continue; + } + + for (i = 0; i < num_rev; i++) { int mark; if (!(this_flag & (1u << (i + REV_SHIFT))))