From: Ronnie Sahlberg <sahlb...@google.com>

Move delete_pseudoref, delete_ref() and delete_refs() to the refs.c
file since these functions do not contain any backend specific code.

Based on a patch by Ronnie Sahlberg.

Signed-off-by: David Turner <dtur...@twitter.com>
Signed-off-by: Ronnie Sahlberg <sahlb...@google.com>
---
 refs-be-files.c | 94 ---------------------------------------------------------
 refs.c          | 94 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 94 insertions(+), 94 deletions(-)

diff --git a/refs-be-files.c b/refs-be-files.c
index ba9796c..dd1d279 100644
--- a/refs-be-files.c
+++ b/refs-be-files.c
@@ -2887,100 +2887,6 @@ static int delete_ref_loose(struct ref_lock *lock, int 
flag, struct strbuf *err)
        return 0;
 }
 
-static int delete_pseudoref(const char *pseudoref, const unsigned char 
*old_sha1)
-{
-       static struct lock_file lock;
-       const char *filename;
-
-       filename = git_path("%s", pseudoref);
-
-       if (old_sha1 && !is_null_sha1(old_sha1)) {
-               int fd;
-               unsigned char actual_old_sha1[20];
-
-               fd = hold_lock_file_for_update(&lock, filename,
-                                              LOCK_DIE_ON_ERROR);
-               if (fd < 0)
-                       die_errno(_("Could not open '%s' for writing"), 
filename);
-               if (read_ref(pseudoref, actual_old_sha1))
-                       die("could not read ref '%s'", pseudoref);
-               if (hashcmp(actual_old_sha1, old_sha1)) {
-                       warning("Unexpected sha1 when deleting %s", pseudoref);
-                       rollback_lock_file(&lock);
-                       return -1;
-               }
-
-               unlink(filename);
-               rollback_lock_file(&lock);
-       } else {
-               unlink(filename);
-       }
-
-       return 0;
-}
-
-int delete_ref(const char *refname, const unsigned char *old_sha1,
-              unsigned int flags)
-{
-       struct ref_transaction *transaction;
-       struct strbuf err = STRBUF_INIT;
-
-       if (ref_type(refname) == REF_TYPE_PSEUDOREF)
-               return delete_pseudoref(refname, old_sha1);
-
-       transaction = ref_transaction_begin(&err);
-       if (!transaction ||
-           ref_transaction_delete(transaction, refname, old_sha1,
-                                  flags, NULL, &err) ||
-           ref_transaction_commit(transaction, &err)) {
-               error("%s", err.buf);
-               ref_transaction_free(transaction);
-               strbuf_release(&err);
-               return 1;
-       }
-       ref_transaction_free(transaction);
-       strbuf_release(&err);
-       return 0;
-}
-
-int delete_refs(struct string_list *refnames)
-{
-       struct strbuf err = STRBUF_INIT;
-       int i, result = 0;
-
-       if (!refnames->nr)
-               return 0;
-
-       result = repack_without_refs(refnames, &err);
-       if (result) {
-               /*
-                * If we failed to rewrite the packed-refs file, then
-                * it is unsafe to try to remove loose refs, because
-                * doing so might expose an obsolete packed value for
-                * a reference that might even point at an object that
-                * has been garbage collected.
-                */
-               if (refnames->nr == 1)
-                       error(_("could not delete reference %s: %s"),
-                             refnames->items[0].string, err.buf);
-               else
-                       error(_("could not delete references: %s"), err.buf);
-
-               goto out;
-       }
-
-       for (i = 0; i < refnames->nr; i++) {
-               const char *refname = refnames->items[i].string;
-
-               if (delete_ref(refname, NULL, 0))
-                       result |= error(_("could not remove reference %s"), 
refname);
-       }
-
-out:
-       strbuf_release(&err);
-       return result;
-}
-
 /*
  * People using contrib's git-new-workdir have .git/logs/refs ->
  * /some/other/path/.git/logs/refs, and that may live on another device.
diff --git a/refs.c b/refs.c
index 2d10708..205a899 100644
--- a/refs.c
+++ b/refs.c
@@ -116,3 +116,97 @@ int update_ref(const char *msg, const char *refname,
                ref_transaction_free(t);
        return 0;
 }
+
+
+static int delete_pseudoref(const char *pseudoref, const unsigned char 
*old_sha1)
+{
+       static struct lock_file lock;
+       const char *filename;
+
+       filename = git_path("%s", pseudoref);
+
+       if (old_sha1 && !is_null_sha1(old_sha1)) {
+               int fd;
+               unsigned char actual_old_sha1[20];
+
+               fd = hold_lock_file_for_update(&lock, filename,
+                                              LOCK_DIE_ON_ERROR);
+               if (fd < 0)
+                       die_errno(_("Could not open '%s' for writing"), 
filename);
+               read_ref(pseudoref, actual_old_sha1);
+               if (hashcmp(actual_old_sha1, old_sha1)) {
+                       warning("Unexpected sha1 when deleting %s", pseudoref);
+                       rollback_lock_file(&lock);
+                       return -1;
+               }
+
+               unlink(filename);
+               rollback_lock_file(&lock);
+       } else {
+               unlink(filename);
+       }
+
+       return 0;
+}
+
+int delete_ref(const char *refname, const unsigned char *old_sha1,
+              unsigned int flags)
+{
+       struct ref_transaction *transaction;
+       struct strbuf err = STRBUF_INIT;
+
+       if (ref_type(refname) == REF_TYPE_PSEUDOREF)
+               return delete_pseudoref(refname, old_sha1);
+
+       transaction = ref_transaction_begin(&err);
+       if (!transaction ||
+           ref_transaction_delete(transaction, refname, old_sha1,
+                                  flags, NULL, &err) ||
+           ref_transaction_commit(transaction, &err)) {
+               error("%s", err.buf);
+               ref_transaction_free(transaction);
+               strbuf_release(&err);
+               return 1;
+       }
+       ref_transaction_free(transaction);
+       strbuf_release(&err);
+       return 0;
+}
+
+int delete_refs(struct string_list *refnames)
+{
+       struct strbuf err = STRBUF_INIT;
+       int i, result = 0;
+
+       if (!refnames->nr)
+               return 0;
+
+       result = repack_without_refs(refnames, &err);
+       if (result) {
+               /*
+                * If we failed to rewrite the packed-refs file, then
+                * it is unsafe to try to remove loose refs, because
+                * doing so might expose an obsolete packed value for
+                * a reference that might even point at an object that
+                * has been garbage collected.
+                */
+               if (refnames->nr == 1)
+                       error(_("could not delete reference %s: %s"),
+                             refnames->items[0].string, err.buf);
+               else
+                       error(_("could not delete references: %s"), err.buf);
+
+               goto out;
+       }
+
+       for (i = 0; i < refnames->nr; i++) {
+               const char *refname = refnames->items[i].string;
+
+               if (delete_ref(refname, NULL, 0))
+                       result |= error(_("could not remove reference %s"), 
refname);
+       }
+
+out:
+       strbuf_release(&err);
+       return result;
+}
-- 
2.0.4.315.gad8727a-twtrsrc

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to