refs: convert struct ref_update to use struct object_id
Convert struct ref_array_item to use struct object_id by changing the definition and applying the following semantic patch, plus the standard object_id transforms: @@ struct ref_update E1; @@ - E1.new_sha1 + E1.new_oid.hash @@ struct ref_update *E1; @@ - E1->new_sha1 + E1->new_oid.hash @@ struct ref_update E1; @@ - E1.old_sha1 + E1.old_oid.hash @@ struct ref_update *E1; @@ - E1->old_sha1 + E1->old_oid.hash This transformation allows us to convert write_ref_to_lockfile, which is required to convert parse_object. Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
9850fe5d95
commit
984912989d
4
refs.c
4
refs.c
@ -882,9 +882,9 @@ struct ref_update *ref_transaction_add_update(
|
|||||||
update->flags = flags;
|
update->flags = flags;
|
||||||
|
|
||||||
if (flags & REF_HAVE_NEW)
|
if (flags & REF_HAVE_NEW)
|
||||||
hashcpy(update->new_sha1, new_sha1);
|
hashcpy(update->new_oid.hash, new_sha1);
|
||||||
if (flags & REF_HAVE_OLD)
|
if (flags & REF_HAVE_OLD)
|
||||||
hashcpy(update->old_sha1, old_sha1);
|
hashcpy(update->old_oid.hash, old_sha1);
|
||||||
update->msg = xstrdup_or_null(msg);
|
update->msg = xstrdup_or_null(msg);
|
||||||
return update;
|
return update;
|
||||||
}
|
}
|
||||||
|
@ -2633,7 +2633,7 @@ static int split_head_update(struct ref_update *update,
|
|||||||
new_update = ref_transaction_add_update(
|
new_update = ref_transaction_add_update(
|
||||||
transaction, "HEAD",
|
transaction, "HEAD",
|
||||||
update->flags | REF_LOG_ONLY | REF_NODEREF,
|
update->flags | REF_LOG_ONLY | REF_NODEREF,
|
||||||
update->new_sha1, update->old_sha1,
|
update->new_oid.hash, update->old_oid.hash,
|
||||||
update->msg);
|
update->msg);
|
||||||
|
|
||||||
item->util = new_update;
|
item->util = new_update;
|
||||||
@ -2690,7 +2690,7 @@ static int split_symref_update(struct files_ref_store *refs,
|
|||||||
|
|
||||||
new_update = ref_transaction_add_update(
|
new_update = ref_transaction_add_update(
|
||||||
transaction, referent, new_flags,
|
transaction, referent, new_flags,
|
||||||
update->new_sha1, update->old_sha1,
|
update->new_oid.hash, update->old_oid.hash,
|
||||||
update->msg);
|
update->msg);
|
||||||
|
|
||||||
new_update->parent_update = update;
|
new_update->parent_update = update;
|
||||||
@ -2729,10 +2729,10 @@ static int check_old_oid(struct ref_update *update, struct object_id *oid,
|
|||||||
struct strbuf *err)
|
struct strbuf *err)
|
||||||
{
|
{
|
||||||
if (!(update->flags & REF_HAVE_OLD) ||
|
if (!(update->flags & REF_HAVE_OLD) ||
|
||||||
!hashcmp(oid->hash, update->old_sha1))
|
!oidcmp(oid, &update->old_oid))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if (is_null_sha1(update->old_sha1))
|
if (is_null_oid(&update->old_oid))
|
||||||
strbuf_addf(err, "cannot lock ref '%s': "
|
strbuf_addf(err, "cannot lock ref '%s': "
|
||||||
"reference already exists",
|
"reference already exists",
|
||||||
original_update_refname(update));
|
original_update_refname(update));
|
||||||
@ -2740,13 +2740,13 @@ static int check_old_oid(struct ref_update *update, struct object_id *oid,
|
|||||||
strbuf_addf(err, "cannot lock ref '%s': "
|
strbuf_addf(err, "cannot lock ref '%s': "
|
||||||
"reference is missing but expected %s",
|
"reference is missing but expected %s",
|
||||||
original_update_refname(update),
|
original_update_refname(update),
|
||||||
sha1_to_hex(update->old_sha1));
|
oid_to_hex(&update->old_oid));
|
||||||
else
|
else
|
||||||
strbuf_addf(err, "cannot lock ref '%s': "
|
strbuf_addf(err, "cannot lock ref '%s': "
|
||||||
"is at %s but expected %s",
|
"is at %s but expected %s",
|
||||||
original_update_refname(update),
|
original_update_refname(update),
|
||||||
oid_to_hex(oid),
|
oid_to_hex(oid),
|
||||||
sha1_to_hex(update->old_sha1));
|
oid_to_hex(&update->old_oid));
|
||||||
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
@ -2773,13 +2773,13 @@ static int lock_ref_for_update(struct files_ref_store *refs,
|
|||||||
{
|
{
|
||||||
struct strbuf referent = STRBUF_INIT;
|
struct strbuf referent = STRBUF_INIT;
|
||||||
int mustexist = (update->flags & REF_HAVE_OLD) &&
|
int mustexist = (update->flags & REF_HAVE_OLD) &&
|
||||||
!is_null_sha1(update->old_sha1);
|
!is_null_oid(&update->old_oid);
|
||||||
int ret;
|
int ret;
|
||||||
struct ref_lock *lock;
|
struct ref_lock *lock;
|
||||||
|
|
||||||
files_assert_main_repository(refs, "lock_ref_for_update");
|
files_assert_main_repository(refs, "lock_ref_for_update");
|
||||||
|
|
||||||
if ((update->flags & REF_HAVE_NEW) && is_null_sha1(update->new_sha1))
|
if ((update->flags & REF_HAVE_NEW) && is_null_oid(&update->new_oid))
|
||||||
update->flags |= REF_DELETING;
|
update->flags |= REF_DELETING;
|
||||||
|
|
||||||
if (head_ref) {
|
if (head_ref) {
|
||||||
@ -2861,12 +2861,12 @@ static int lock_ref_for_update(struct files_ref_store *refs,
|
|||||||
!(update->flags & REF_DELETING) &&
|
!(update->flags & REF_DELETING) &&
|
||||||
!(update->flags & REF_LOG_ONLY)) {
|
!(update->flags & REF_LOG_ONLY)) {
|
||||||
if (!(update->type & REF_ISSYMREF) &&
|
if (!(update->type & REF_ISSYMREF) &&
|
||||||
!hashcmp(lock->old_oid.hash, update->new_sha1)) {
|
!oidcmp(&lock->old_oid, &update->new_oid)) {
|
||||||
/*
|
/*
|
||||||
* The reference already has the desired
|
* The reference already has the desired
|
||||||
* value, so we don't need to write it.
|
* value, so we don't need to write it.
|
||||||
*/
|
*/
|
||||||
} else if (write_ref_to_lockfile(lock, update->new_sha1,
|
} else if (write_ref_to_lockfile(lock, update->new_oid.hash,
|
||||||
err)) {
|
err)) {
|
||||||
char *write_err = strbuf_detach(err, NULL);
|
char *write_err = strbuf_detach(err, NULL);
|
||||||
|
|
||||||
@ -3002,7 +3002,7 @@ static int files_transaction_commit(struct ref_store *ref_store,
|
|||||||
if (files_log_ref_write(refs,
|
if (files_log_ref_write(refs,
|
||||||
lock->ref_name,
|
lock->ref_name,
|
||||||
lock->old_oid.hash,
|
lock->old_oid.hash,
|
||||||
update->new_sha1,
|
update->new_oid.hash,
|
||||||
update->msg, update->flags,
|
update->msg, update->flags,
|
||||||
err)) {
|
err)) {
|
||||||
char *old_msg = strbuf_detach(err, NULL);
|
char *old_msg = strbuf_detach(err, NULL);
|
||||||
@ -3151,7 +3151,7 @@ static int files_initial_transaction_commit(struct ref_store *ref_store,
|
|||||||
struct ref_update *update = transaction->updates[i];
|
struct ref_update *update = transaction->updates[i];
|
||||||
|
|
||||||
if ((update->flags & REF_HAVE_OLD) &&
|
if ((update->flags & REF_HAVE_OLD) &&
|
||||||
!is_null_sha1(update->old_sha1))
|
!is_null_oid(&update->old_oid))
|
||||||
die("BUG: initial ref transaction with old_sha1 set");
|
die("BUG: initial ref transaction with old_sha1 set");
|
||||||
if (refs_verify_refname_available(&refs->base, update->refname,
|
if (refs_verify_refname_available(&refs->base, update->refname,
|
||||||
&affected_refnames, NULL,
|
&affected_refnames, NULL,
|
||||||
@ -3172,8 +3172,9 @@ static int files_initial_transaction_commit(struct ref_store *ref_store,
|
|||||||
struct ref_update *update = transaction->updates[i];
|
struct ref_update *update = transaction->updates[i];
|
||||||
|
|
||||||
if ((update->flags & REF_HAVE_NEW) &&
|
if ((update->flags & REF_HAVE_NEW) &&
|
||||||
!is_null_sha1(update->new_sha1))
|
!is_null_oid(&update->new_oid))
|
||||||
add_packed_ref(refs, update->refname, update->new_sha1);
|
add_packed_ref(refs, update->refname,
|
||||||
|
update->new_oid.hash);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (commit_packed_refs(refs)) {
|
if (commit_packed_refs(refs)) {
|
||||||
|
@ -130,13 +130,13 @@ struct ref_update {
|
|||||||
/*
|
/*
|
||||||
* If (flags & REF_HAVE_NEW), set the reference to this value:
|
* If (flags & REF_HAVE_NEW), set the reference to this value:
|
||||||
*/
|
*/
|
||||||
unsigned char new_sha1[20];
|
struct object_id new_oid;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* If (flags & REF_HAVE_OLD), check that the reference
|
* If (flags & REF_HAVE_OLD), check that the reference
|
||||||
* previously had this value:
|
* previously had this value:
|
||||||
*/
|
*/
|
||||||
unsigned char old_sha1[20];
|
struct object_id old_oid;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* One or more of REF_HAVE_NEW, REF_HAVE_OLD, REF_NODEREF,
|
* One or more of REF_HAVE_NEW, REF_HAVE_OLD, REF_NODEREF,
|
||||||
|
Loading…
Reference in New Issue
Block a user