Add -v and --abbrev options to git-branch
The new -v option makes git-branch show the abbreviated sha1 + subjectline for each branch. Additionally, minimum abbreviation length can be specified with --abbrev=<length> Signed-off-by: Lars Hjemli <hjemli@gmail.com> Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
parent
983d2ee284
commit
75e6e21320
@ -8,7 +8,7 @@ git-branch - List, create, or delete branches.
|
|||||||
SYNOPSIS
|
SYNOPSIS
|
||||||
--------
|
--------
|
||||||
[verse]
|
[verse]
|
||||||
'git-branch' [-r] [-a]
|
'git-branch' [-r] [-a] [-v] [--abbrev=<length>]
|
||||||
'git-branch' [-l] [-f] <branchname> [<start-point>]
|
'git-branch' [-l] [-f] <branchname> [<start-point>]
|
||||||
'git-branch' (-d | -D) <branchname>...
|
'git-branch' (-d | -D) <branchname>...
|
||||||
|
|
||||||
@ -52,6 +52,13 @@ OPTIONS
|
|||||||
-a::
|
-a::
|
||||||
List both remote-tracking branches and local branches.
|
List both remote-tracking branches and local branches.
|
||||||
|
|
||||||
|
-v::
|
||||||
|
Show sha1 and subject message for each head.
|
||||||
|
|
||||||
|
--abbrev=<length>::
|
||||||
|
Alter minimum display length for sha1 in output listing,
|
||||||
|
default value is 7.
|
||||||
|
|
||||||
<branchname>::
|
<branchname>::
|
||||||
The name of the branch to create or delete.
|
The name of the branch to create or delete.
|
||||||
The new branch name must pass all checks defined by
|
The new branch name must pass all checks defined by
|
||||||
|
@ -11,7 +11,7 @@
|
|||||||
#include "builtin.h"
|
#include "builtin.h"
|
||||||
|
|
||||||
static const char builtin_branch_usage[] =
|
static const char builtin_branch_usage[] =
|
||||||
"git-branch (-d | -D) <branchname> | [-l] [-f] <branchname> [<start-point>] | [-r] | [-a]";
|
"git-branch (-d | -D) <branchname> | [-l] [-f] <branchname> [<start-point>] | [-r | -a] [-v] [--abbrev=<length>] ";
|
||||||
|
|
||||||
|
|
||||||
static const char *head;
|
static const char *head;
|
||||||
@ -87,10 +87,11 @@ static void delete_branches(int argc, const char **argv, int force)
|
|||||||
struct ref_item {
|
struct ref_item {
|
||||||
char *name;
|
char *name;
|
||||||
unsigned int kind;
|
unsigned int kind;
|
||||||
|
unsigned char sha1[20];
|
||||||
};
|
};
|
||||||
|
|
||||||
struct ref_list {
|
struct ref_list {
|
||||||
int index, alloc;
|
int index, alloc, maxwidth;
|
||||||
struct ref_item *list;
|
struct ref_item *list;
|
||||||
int kinds;
|
int kinds;
|
||||||
};
|
};
|
||||||
@ -100,6 +101,7 @@ static int append_ref(const char *refname, const unsigned char *sha1, int flags,
|
|||||||
struct ref_list *ref_list = (struct ref_list*)(cb_data);
|
struct ref_list *ref_list = (struct ref_list*)(cb_data);
|
||||||
struct ref_item *newitem;
|
struct ref_item *newitem;
|
||||||
int kind = REF_UNKNOWN_TYPE;
|
int kind = REF_UNKNOWN_TYPE;
|
||||||
|
int len;
|
||||||
|
|
||||||
/* Detect kind */
|
/* Detect kind */
|
||||||
if (!strncmp(refname, "refs/heads/", 11)) {
|
if (!strncmp(refname, "refs/heads/", 11)) {
|
||||||
@ -128,6 +130,10 @@ static int append_ref(const char *refname, const unsigned char *sha1, int flags,
|
|||||||
newitem = &(ref_list->list[ref_list->index++]);
|
newitem = &(ref_list->list[ref_list->index++]);
|
||||||
newitem->name = xstrdup(refname);
|
newitem->name = xstrdup(refname);
|
||||||
newitem->kind = kind;
|
newitem->kind = kind;
|
||||||
|
hashcpy(newitem->sha1, sha1);
|
||||||
|
len = strlen(newitem->name);
|
||||||
|
if (len > ref_list->maxwidth)
|
||||||
|
ref_list->maxwidth = len;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -151,7 +157,24 @@ static int ref_cmp(const void *r1, const void *r2)
|
|||||||
return strcmp(c1->name, c2->name);
|
return strcmp(c1->name, c2->name);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void print_ref_list(int kinds)
|
static void print_ref_info(const unsigned char *sha1, int abbrev)
|
||||||
|
{
|
||||||
|
struct commit *commit;
|
||||||
|
char subject[256];
|
||||||
|
|
||||||
|
|
||||||
|
commit = lookup_commit(sha1);
|
||||||
|
if (commit && !parse_commit(commit))
|
||||||
|
pretty_print_commit(CMIT_FMT_ONELINE, commit, ~0,
|
||||||
|
subject, sizeof(subject), 0,
|
||||||
|
NULL, NULL, 0);
|
||||||
|
else
|
||||||
|
strcpy(subject, " **** invalid ref ****");
|
||||||
|
|
||||||
|
printf(" %s %s\n", find_unique_abbrev(sha1, abbrev), subject);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void print_ref_list(int kinds, int verbose, int abbrev)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
char c;
|
char c;
|
||||||
@ -169,7 +192,13 @@ static void print_ref_list(int kinds)
|
|||||||
!strcmp(ref_list.list[i].name, head))
|
!strcmp(ref_list.list[i].name, head))
|
||||||
c = '*';
|
c = '*';
|
||||||
|
|
||||||
printf("%c %s\n", c, ref_list.list[i].name);
|
if (verbose) {
|
||||||
|
printf("%c %-*s", c, ref_list.maxwidth,
|
||||||
|
ref_list.list[i].name);
|
||||||
|
print_ref_info(ref_list.list[i].sha1, abbrev);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
printf("%c %s\n", c, ref_list.list[i].name);
|
||||||
}
|
}
|
||||||
|
|
||||||
free_ref_list(&ref_list);
|
free_ref_list(&ref_list);
|
||||||
@ -215,6 +244,7 @@ static void create_branch(const char *name, const char *start,
|
|||||||
int cmd_branch(int argc, const char **argv, const char *prefix)
|
int cmd_branch(int argc, const char **argv, const char *prefix)
|
||||||
{
|
{
|
||||||
int delete = 0, force_delete = 0, force_create = 0;
|
int delete = 0, force_delete = 0, force_create = 0;
|
||||||
|
int verbose = 0, abbrev = DEFAULT_ABBREV;
|
||||||
int reflog = 0;
|
int reflog = 0;
|
||||||
int kinds = REF_LOCAL_BRANCH;
|
int kinds = REF_LOCAL_BRANCH;
|
||||||
int i;
|
int i;
|
||||||
@ -255,6 +285,14 @@ int cmd_branch(int argc, const char **argv, const char *prefix)
|
|||||||
reflog = 1;
|
reflog = 1;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
if (!strncmp(arg, "--abbrev=", 9)) {
|
||||||
|
abbrev = atoi(arg+9);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (!strcmp(arg, "-v")) {
|
||||||
|
verbose = 1;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
usage(builtin_branch_usage);
|
usage(builtin_branch_usage);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -268,7 +306,7 @@ int cmd_branch(int argc, const char **argv, const char *prefix)
|
|||||||
if (delete)
|
if (delete)
|
||||||
delete_branches(argc - i, argv + i, force_delete);
|
delete_branches(argc - i, argv + i, force_delete);
|
||||||
else if (i == argc)
|
else if (i == argc)
|
||||||
print_ref_list(kinds);
|
print_ref_list(kinds, verbose, abbrev);
|
||||||
else if (i == argc - 1)
|
else if (i == argc - 1)
|
||||||
create_branch(argv[i], head, force_create, reflog);
|
create_branch(argv[i], head, force_create, reflog);
|
||||||
else if (i == argc - 2)
|
else if (i == argc - 2)
|
||||||
|
Loading…
Reference in New Issue
Block a user