projects
/
git.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
contrib/git-svn: documentation updates
[git.git]
/
show-branch.c
diff --git
a/show-branch.c
b/show-branch.c
index
511fd3b
..
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;
@@
-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 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;
char head_path[128];
const char *head_path_p;
int head_path_len;
@@
-544,9
+545,9
@@
int main(int ac, char **av)
int no_name = 0;
int sha1_name = 0;
int shown_merge_point = 0;
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 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);
@@
-586,7
+587,11
@@
int main(int ac, char **av)
else if (!strcmp(arg, "--independent"))
independent = 1;
else if (!strcmp(arg, "--topo-order"))
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++;
else
usage(show_branch_usage);
ac--; av++;
@@
-710,8
+715,7
@@
int main(int ac, char **av)
exit(0);
/* Sort topologically */
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)
/* Give names to commits */
if (!sha1_name && !no_name)
@@
-723,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))))