提交 af0e4ac0 编写于 作者: L Lars Hjemli 提交者: Junio C Hamano

Refactor print-functions in builtin-branch

This moves the guts of print_ref_list() into a revamped print_ref_info(),
which at the same time gets renamed to print_ref_item().
Signed-off-by: NLars Hjemli <hjemli@gmail.com>
Signed-off-by: NJunio C Hamano <junkio@cox.net>
上级 1ebb948f
...@@ -231,29 +231,54 @@ static int ref_cmp(const void *r1, const void *r2) ...@@ -231,29 +231,54 @@ 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_info(const unsigned char *sha1, int abbrev) static void print_ref_item(struct ref_item *item, int maxwidth, int verbose,
int abbrev, int current)
{ {
char c;
int color;
struct commit *commit; struct commit *commit;
char subject[256]; char subject[256];
switch (item->kind) {
case REF_LOCAL_BRANCH:
color = COLOR_BRANCH_LOCAL;
break;
case REF_REMOTE_BRANCH:
color = COLOR_BRANCH_REMOTE;
break;
default:
color = COLOR_BRANCH_PLAIN;
break;
}
c = ' ';
if (current) {
c = '*';
color = COLOR_BRANCH_CURRENT;
}
commit = lookup_commit(sha1); if (verbose) {
commit = lookup_commit(item->sha1);
if (commit && !parse_commit(commit)) if (commit && !parse_commit(commit))
pretty_print_commit(CMIT_FMT_ONELINE, commit, ~0, pretty_print_commit(CMIT_FMT_ONELINE, commit, ~0,
subject, sizeof(subject), 0, subject, sizeof(subject), 0,
NULL, NULL, 0); NULL, NULL, 0);
else else
strcpy(subject, " **** invalid ref ****"); strcpy(subject, " **** invalid ref ****");
printf("%c %s%-*s%s %s %s\n", c, branch_get_color(color),
printf(" %s %s\n", find_unique_abbrev(sha1, abbrev), subject); maxwidth, item->name,
branch_get_color(COLOR_BRANCH_RESET),
find_unique_abbrev(item->sha1, abbrev), subject);
} else {
printf("%c %s%s%s\n", c, branch_get_color(color), item->name,
branch_get_color(COLOR_BRANCH_RESET));
}
} }
static void print_ref_list(int kinds, int verbose, int abbrev) static void print_ref_list(int kinds, int verbose, int abbrev)
{ {
int i; int i;
char c;
struct ref_list ref_list; struct ref_list ref_list;
int color;
memset(&ref_list, 0, sizeof(ref_list)); memset(&ref_list, 0, sizeof(ref_list));
ref_list.kinds = kinds; ref_list.kinds = kinds;
...@@ -262,38 +287,10 @@ static void print_ref_list(int kinds, int verbose, int abbrev) ...@@ -262,38 +287,10 @@ static void print_ref_list(int kinds, int verbose, int abbrev)
qsort(ref_list.list, ref_list.index, sizeof(struct ref_item), ref_cmp); qsort(ref_list.list, ref_list.index, sizeof(struct ref_item), ref_cmp);
for (i = 0; i < ref_list.index; i++) { for (i = 0; i < ref_list.index; i++) {
switch( ref_list.list[i].kind ) { int current = (ref_list.list[i].kind == REF_LOCAL_BRANCH) &&
case REF_LOCAL_BRANCH: !strcmp(ref_list.list[i].name, head);
color = COLOR_BRANCH_LOCAL; print_ref_item(&ref_list.list[i], ref_list.maxwidth, verbose,
break; abbrev, current);
case REF_REMOTE_BRANCH:
color = COLOR_BRANCH_REMOTE;
break;
default:
color = COLOR_BRANCH_PLAIN;
break;
}
c = ' ';
if (ref_list.list[i].kind == REF_LOCAL_BRANCH &&
!strcmp(ref_list.list[i].name, head)) {
c = '*';
color = COLOR_BRANCH_CURRENT;
}
if (verbose) {
printf("%c %s%-*s%s", c,
branch_get_color(color),
ref_list.maxwidth,
ref_list.list[i].name,
branch_get_color(COLOR_BRANCH_RESET));
print_ref_info(ref_list.list[i].sha1, abbrev);
}
else
printf("%c %s%s%s\n", c,
branch_get_color(color),
ref_list.list[i].name,
branch_get_color(COLOR_BRANCH_RESET));
} }
free_ref_list(&ref_list); free_ref_list(&ref_list);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册