ref_transaction_verify(): new function to check a reference's value
If NULL is passed to ref_transaction_update()'s new_sha1 parameter, then just verify old_sha1 (under lock) without trying to change the new value of the reference. Use this functionality to add a new function ref_transaction_verify(), which checks the current value of the reference under lock but doesn't change it. Use ref_transaction_verify() in the implementation of "git update-ref --stdin"'s "verify" command to avoid the awkward need to "update" the reference to its existing value. Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu> Reviewed-by: Stefan Beller <sbeller@google.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
committed by
Junio C Hamano
parent
60294596ba
commit
1618033401
@ -282,7 +282,6 @@ static const char *parse_cmd_verify(struct ref_transaction *transaction,
|
||||
{
|
||||
struct strbuf err = STRBUF_INIT;
|
||||
char *refname;
|
||||
unsigned char new_sha1[20];
|
||||
unsigned char old_sha1[20];
|
||||
|
||||
refname = parse_refname(input, &next);
|
||||
@ -293,13 +292,11 @@ static const char *parse_cmd_verify(struct ref_transaction *transaction,
|
||||
PARSE_SHA1_OLD))
|
||||
hashclr(old_sha1);
|
||||
|
||||
hashcpy(new_sha1, old_sha1);
|
||||
|
||||
if (*next != line_termination)
|
||||
die("verify %s: extra input: %s", refname, next);
|
||||
|
||||
if (ref_transaction_update(transaction, refname, new_sha1, old_sha1,
|
||||
update_flags, msg, &err))
|
||||
if (ref_transaction_verify(transaction, refname, old_sha1,
|
||||
update_flags, &err))
|
||||
die("%s", err.buf);
|
||||
|
||||
update_flags = 0;
|
||||
|
||||
Reference in New Issue
Block a user