Skip to content

Commit

Permalink
show-branch --topics
Browse files Browse the repository at this point in the history
This adds a new flag, --topics, to help managing topic
branches.  When you have topic branches forked some time ago
from your primary line of development, show-branch would show
many "uninteresting" things that happend on the primary line of
development when trying to see what are still not merged from
the topic branches.

With this flag, the first ref given to show-branch is taken as
the primary branch, and the rest are taken as the topic
branches.  Output from the command is modified so that commits
only on the primary branch are not shown.  In other words,

	$ git show-branch --topics master topic1 topic2 ...

shows an (almost) equivalent of

	$ git rev-list ^master topic1 topic2 ...

The major differences are that (1) you can tell which commits
are on which branch, and (2) the commit at the fork point is
shown.

Signed-off-by: Junio C Hamano <junkio@cox.net>
  • Loading branch information
Junio C Hamano committed Mar 3, 2006
1 parent 0b8b051 commit d320a54
Showing 1 changed file with 18 additions and 1 deletion.
19 changes: 18 additions & 1 deletion show-branch.c
Original file line number Diff line number Diff line change
Expand Up @@ -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 ] [<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;
Expand Down Expand Up @@ -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 topics = 0;

setup_git_directory();
git_config(git_show_branch_config);
Expand Down Expand Up @@ -587,6 +588,8 @@ int main(int ac, char **av)
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
Expand Down Expand Up @@ -729,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))))
Expand Down

0 comments on commit d320a54

Please sign in to comment.