* [PATCH] show-branch: always include the current branch.
@ 2006-01-12 0:05 Junio C Hamano
0 siblings, 0 replies; only message in thread
From: Junio C Hamano @ 2006-01-12 0:05 UTC (permalink / raw)
To: git
By default, the command includes the current branch to the list
of revs to be shown, even when it is not given on the command
line. A new flag, --no-current, disables it.
Signed-off-by: Junio C Hamano <junkio@cox.net>
---
* Currently in "pu".
Documentation/git-show-branch.txt | 13 ++++++++--
show-branch.c | 49 ++++++++++++++++++++++++++-----------
2 files changed, 46 insertions(+), 16 deletions(-)
95a7c01ab91b71f72b6d5d60da7659b2b625fa6d
diff --git a/Documentation/git-show-branch.txt b/Documentation/git-show-branch.txt
index 9cc44a8..90e2a5c 100644
--- a/Documentation/git-show-branch.txt
+++ b/Documentation/git-show-branch.txt
@@ -7,7 +7,10 @@ git-show-branch - Show branches and thei
SYNOPSIS
--------
-'git-show-branch [--all] [--heads] [--tags] [--topo-order] [--more=<n> | --list | --independent | --merge-base] [--no-name | --sha1-name] [<rev> | <glob>]...'
+[verse]
+git-show-branch [--all] [--heads] [--tags] [--topo-order] [--no-current]
+ [--more=<n> | --list | --independent | --merge-base]
+ [--no-name | --sha1-name] [<rev> | <glob>]...
DESCRIPTION
-----------
@@ -38,6 +41,11 @@ OPTIONS
Show all refs under $GIT_DIR/refs, $GIT_DIR/refs/heads,
and $GIT_DIR/refs/tags, respectively.
+--no-current::
+ By default, the command includes the current branch to
+ the list of revs to be shown even when it is not given
+ on the command line. This flag disables it.
+
--topo-order::
By default, the branches and their commits are shown in
reverse chronological order. This option makes them
@@ -133,7 +141,8 @@ it, having the following in the configur
------------
With this,`git show-branch` without extra parameters would show
-only the primary branches.
+only the primary branches. In addition, if you happen to be on
+your topic branch, it is shown as well.
diff --git a/show-branch.c b/show-branch.c
index f43c406..9f7e188 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 [--all] [--heads] [--tags] [--topo-order] [--more=count | --list | --independent | --merge-base ] [<refs>...]";
+"git-show-branch [--no-current] [--all] [--heads] [--tags] [--topo-order] [--more=count | --list | --independent | --merge-base ] [<refs>...]";
static int default_num = 0;
static int default_alloc = 0;
@@ -435,12 +435,12 @@ static void snarf_refs(int head, int tag
}
}
-static int rev_is_head(char *head_path, int headlen,
- char *name,
+static int rev_is_head(char *head_path, int headlen, char *name,
unsigned char *head_sha1, unsigned char *sha1)
{
int namelen;
- if ((!head_path[0]) || memcmp(head_sha1, sha1, 20))
+ if ((!head_path[0]) ||
+ (head_sha1 && sha1 && memcmp(head_sha1, sha1, 20)))
return 0;
namelen = strlen(name);
if ((headlen < namelen) ||
@@ -545,6 +545,7 @@ int main(int ac, char **av)
int sha1_name = 0;
int shown_merge_point = 0;
int topo_order = 0;
+ int no_current_branch = 0;
git_config(git_show_branch_config);
setup_git_directory();
@@ -573,6 +574,8 @@ int main(int ac, char **av)
extra = -1;
else if (!strcmp(arg, "--no-name"))
no_name = 1;
+ else if (!strcmp(arg, "--no-current"))
+ no_current_branch = 1;
else if (!strcmp(arg, "--sha1-name"))
sha1_name = 1;
else if (!strncmp(arg, "--more=", 7))
@@ -604,6 +607,34 @@ int main(int ac, char **av)
ac--; av++;
}
+ head_path_p = resolve_ref(git_path("HEAD"), head_sha1, 1);
+ if (head_path_p) {
+ head_path_len = strlen(head_path_p);
+ memcpy(head_path, head_path_p, head_path_len + 1);
+ }
+ else {
+ head_path_len = 0;
+ head_path[0] = 0;
+ }
+
+ if (!merge_base && !no_current_branch && head_path_p) {
+ int has_head = 0;
+ for (i = 0; !has_head && i < ref_name_cnt; i++) {
+ /* We are only interested in adding the branch
+ * HEAD points at.
+ */
+ if (rev_is_head(head_path,
+ head_path_len,
+ ref_name[i],
+ head_sha1, NULL))
+ has_head++;
+ }
+ if (!has_head) {
+ int pfxlen = strlen(git_path("refs/heads/"));
+ append_one_rev(head_path + pfxlen);
+ }
+ }
+
if (!ref_name_cnt) {
fprintf(stderr, "No revs to be shown.\n");
exit(0);
@@ -639,16 +670,6 @@ int main(int ac, char **av)
if (0 <= extra)
join_revs(&list, &seen, num_rev, extra);
- head_path_p = resolve_ref(git_path("HEAD"), head_sha1, 1);
- if (head_path_p) {
- head_path_len = strlen(head_path_p);
- memcpy(head_path, head_path_p, head_path_len + 1);
- }
- else {
- head_path_len = 0;
- head_path[0] = 0;
- }
-
if (merge_base)
return show_merge_base(seen, num_rev);
--
1.1.1-g8ecb
^ permalink raw reply related [flat|nested] only message in thread
only message in thread, other threads:[~2006-01-12 0:06 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-01-12 0:05 [PATCH] show-branch: always include the current branch Junio C Hamano
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox