зеркало из https://github.com/microsoft/git.git
shortlog: default to HEAD when the standard input is a tty
Instead of warning the user that it is expecting git log output from the standard input (and waiting for the user to type the log from the keyboard, which is a silly thing to do), default to traverse from HEAD when there is no rev parameter given and the standard input is a tty. This factors out a useful helper "add_head()" from builtin-diff.c to a more appropriate place revision.c while renaming it to more descriptive name add_head_to_pending(), as that is what the function is about. Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Родитель
97566ea72e
Коммит
3384a2dfc1
|
@ -176,18 +176,6 @@ static int builtin_diff_combined(struct rev_info *revs,
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void add_head(struct rev_info *revs)
|
|
||||||
{
|
|
||||||
unsigned char sha1[20];
|
|
||||||
struct object *obj;
|
|
||||||
if (get_sha1("HEAD", sha1))
|
|
||||||
return;
|
|
||||||
obj = parse_object(sha1);
|
|
||||||
if (!obj)
|
|
||||||
return;
|
|
||||||
add_pending_object(revs, obj, "HEAD");
|
|
||||||
}
|
|
||||||
|
|
||||||
static void refresh_index_quietly(void)
|
static void refresh_index_quietly(void)
|
||||||
{
|
{
|
||||||
struct lock_file *lock_file;
|
struct lock_file *lock_file;
|
||||||
|
@ -272,7 +260,7 @@ int cmd_diff(int argc, const char **argv, const char *prefix)
|
||||||
if (!strcmp(arg, "--"))
|
if (!strcmp(arg, "--"))
|
||||||
break;
|
break;
|
||||||
else if (!strcmp(arg, "--cached")) {
|
else if (!strcmp(arg, "--cached")) {
|
||||||
add_head(&rev);
|
add_head_to_pending(&rev);
|
||||||
if (!rev.pending.nr)
|
if (!rev.pending.nr)
|
||||||
die("No HEAD commit to compare with (yet)");
|
die("No HEAD commit to compare with (yet)");
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -18,9 +18,6 @@
|
||||||
static int default_show_root = 1;
|
static int default_show_root = 1;
|
||||||
static const char *fmt_patch_subject_prefix = "PATCH";
|
static const char *fmt_patch_subject_prefix = "PATCH";
|
||||||
|
|
||||||
/* this is in builtin-diff.c */
|
|
||||||
void add_head(struct rev_info *revs);
|
|
||||||
|
|
||||||
static void add_name_decoration(const char *prefix, const char *name, struct object *obj)
|
static void add_name_decoration(const char *prefix, const char *name, struct object *obj)
|
||||||
{
|
{
|
||||||
int plen = strlen(prefix);
|
int plen = strlen(prefix);
|
||||||
|
@ -746,7 +743,7 @@ int cmd_format_patch(int argc, const char **argv, const char *prefix)
|
||||||
* does not have.
|
* does not have.
|
||||||
*/
|
*/
|
||||||
rev.pending.objects[0].item->flags |= UNINTERESTING;
|
rev.pending.objects[0].item->flags |= UNINTERESTING;
|
||||||
add_head(&rev);
|
add_head_to_pending(&rev);
|
||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
* Otherwise, it is "format-patch -22 HEAD", and/or
|
* Otherwise, it is "format-patch -22 HEAD", and/or
|
||||||
|
|
|
@ -249,9 +249,10 @@ int cmd_shortlog(int argc, const char **argv, const char *prefix)
|
||||||
|
|
||||||
read_mailmap(&mailmap, ".mailmap", &common_repo_prefix);
|
read_mailmap(&mailmap, ".mailmap", &common_repo_prefix);
|
||||||
|
|
||||||
|
/* assume HEAD if from a tty */
|
||||||
|
if (!rev.pending.nr && isatty(0))
|
||||||
|
add_head_to_pending(&rev);
|
||||||
if (rev.pending.nr == 0) {
|
if (rev.pending.nr == 0) {
|
||||||
if (isatty(0))
|
|
||||||
fprintf(stderr, "(reading log to summarize from standard input)\n");
|
|
||||||
read_from_stdin(&list);
|
read_from_stdin(&list);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
12
revision.c
12
revision.c
|
@ -139,6 +139,18 @@ void add_pending_object(struct rev_info *revs, struct object *obj, const char *n
|
||||||
add_pending_object_with_mode(revs, obj, name, S_IFINVALID);
|
add_pending_object_with_mode(revs, obj, name, S_IFINVALID);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void add_head_to_pending(struct rev_info *revs)
|
||||||
|
{
|
||||||
|
unsigned char sha1[20];
|
||||||
|
struct object *obj;
|
||||||
|
if (get_sha1("HEAD", sha1))
|
||||||
|
return;
|
||||||
|
obj = parse_object(sha1);
|
||||||
|
if (!obj)
|
||||||
|
return;
|
||||||
|
add_pending_object(revs, obj, "HEAD");
|
||||||
|
}
|
||||||
|
|
||||||
static struct object *get_reference(struct rev_info *revs, const char *name, const unsigned char *sha1, unsigned int flags)
|
static struct object *get_reference(struct rev_info *revs, const char *name, const unsigned char *sha1, unsigned int flags)
|
||||||
{
|
{
|
||||||
struct object *object;
|
struct object *object;
|
||||||
|
|
|
@ -130,6 +130,8 @@ extern void add_object(struct object *obj,
|
||||||
|
|
||||||
extern void add_pending_object(struct rev_info *revs, struct object *obj, const char *name);
|
extern void add_pending_object(struct rev_info *revs, struct object *obj, const char *name);
|
||||||
|
|
||||||
|
extern void add_head_to_pending(struct rev_info *);
|
||||||
|
|
||||||
enum commit_action {
|
enum commit_action {
|
||||||
commit_ignore,
|
commit_ignore,
|
||||||
commit_show,
|
commit_show,
|
||||||
|
|
Загрузка…
Ссылка в новой задаче