diff options
author | Michael Haggerty <mhagger@alum.mit.edu> | 2015-06-22 16:02:52 +0200 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2015-06-22 13:17:08 -0700 |
commit | fc1c21689d6d82551f6136a3116876005b4e00a4 (patch) | |
tree | 44bbe126fb0c3835bd4d6e71726cfcec5ae40bca | |
parent | a5fe66802f8c4036badd54ff36ff327d43236e7e (diff) | |
download | git-fc1c21689d6d82551f6136a3116876005b4e00a4.tar.gz |
delete_ref(): move declaration to refs.h
Also
* Add a docstring
* Rename the second parameter to "old_sha1", to be consistent with the
convention used elsewhere in the refs module
Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r-- | cache.h | 2 | ||||
-rw-r--r-- | refs.c | 5 | ||||
-rw-r--r-- | refs.h | 10 |
3 files changed, 13 insertions, 4 deletions
@@ -585,8 +585,6 @@ extern void update_index_if_able(struct index_state *, struct lock_file *); extern int hold_locked_index(struct lock_file *, int); extern void set_alternate_index_output(const char *); -extern int delete_ref(const char *, const unsigned char *sha1, unsigned int flags); - /* Environment bits from configuration mechanism */ extern int trust_executable_bit; extern int trust_ctime; @@ -2801,7 +2801,8 @@ static int delete_ref_loose(struct ref_lock *lock, int flag, struct strbuf *err) return 0; } -int delete_ref(const char *refname, const unsigned char *sha1, unsigned int flags) +int delete_ref(const char *refname, const unsigned char *old_sha1, + unsigned int flags) { struct ref_transaction *transaction; struct strbuf err = STRBUF_INIT; @@ -2809,7 +2810,7 @@ int delete_ref(const char *refname, const unsigned char *sha1, unsigned int flag transaction = ref_transaction_begin(&err); if (!transaction || ref_transaction_delete(transaction, refname, - (sha1 && !is_null_sha1(sha1)) ? sha1 : NULL, + (old_sha1 && !is_null_sha1(old_sha1)) ? old_sha1 : NULL, flags, NULL, &err) || ref_transaction_commit(transaction, &err)) { error("%s", err.buf); @@ -202,6 +202,16 @@ extern int read_ref_at(const char *refname, unsigned int flags, /** Check if a particular reflog exists */ extern int reflog_exists(const char *refname); +/* + * Delete the specified reference. If old_sha1 is non-NULL and not + * NULL_SHA1, then verify that the current value of the reference is + * old_sha1 before deleting it. If old_sha1 is NULL or NULL_SHA1, + * delete the reference if it exists, regardless of its old value. + * flags is passed through to ref_transaction_delete(). + */ +extern int delete_ref(const char *refname, const unsigned char *old_sha1, + unsigned int flags); + /** Delete a reflog */ extern int delete_reflog(const char *refname); |