refs: make rev-parse --quiet actually quiet
When a reflog is deleted, e.g. when "git stash" clears its stashes, "git rev-parse --verify --quiet" dies: fatal: Log for refs/stash is empty. The reason is that the get_sha1() code path does not allow us to suppress this message. Pass the flags bitfield through get_sha1_with_context() so that read_ref_at() can suppress the message. Use get_sha1_with_context1() instead of get_sha1() in rev-parse so that the --quiet flag is honored. Signed-off-by: David Aguilar <davvid@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
committed by
Junio C Hamano
parent
2892dfeec3
commit
c41a87dd80
10
refs.c
10
refs.c
@ -3108,7 +3108,7 @@ static int read_ref_at_ent_oldest(unsigned char *osha1, unsigned char *nsha1,
|
||||
return 1;
|
||||
}
|
||||
|
||||
int read_ref_at(const char *refname, unsigned long at_time, int cnt,
|
||||
int read_ref_at(const char *refname, unsigned int flags, unsigned long at_time, int cnt,
|
||||
unsigned char *sha1, char **msg,
|
||||
unsigned long *cutoff_time, int *cutoff_tz, int *cutoff_cnt)
|
||||
{
|
||||
@ -3126,8 +3126,12 @@ int read_ref_at(const char *refname, unsigned long at_time, int cnt,
|
||||
|
||||
for_each_reflog_ent_reverse(refname, read_ref_at_ent, &cb);
|
||||
|
||||
if (!cb.reccnt)
|
||||
die("Log for %s is empty.", refname);
|
||||
if (!cb.reccnt) {
|
||||
if (flags & GET_SHA1_QUIETLY)
|
||||
exit(128);
|
||||
else
|
||||
die("Log for %s is empty.", refname);
|
||||
}
|
||||
if (cb.found_it)
|
||||
return 0;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user