refs: add method to rename refs
authorDavid Turner <dturner@twopensource.com>
Sun, 4 Sep 2016 16:08:42 +0000 (18:08 +0200)
committerJunio C Hamano <gitster@pobox.com>
Fri, 9 Sep 2016 22:28:14 +0000 (15:28 -0700)
This removes the last caller of function get_files_ref_store(), so
remove it.

Signed-off-by: David Turner <dturner@twopensource.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
refs.c
refs/files-backend.c
refs/refs-internal.h
diff --git a/refs.c b/refs.c
index 3b0a658c5618dfbcdfd86eab93f6f93d7269ac06..60f518e004697807b70589f714083d75be4922b2 100644 (file)
--- a/refs.c
+++ b/refs.c
@@ -1547,3 +1547,10 @@ int delete_refs(struct string_list *refnames, unsigned int flags)
 
        return refs->be->delete_refs(refs, refnames, flags);
 }
+
+int rename_ref(const char *oldref, const char *newref, const char *logmsg)
+{
+       struct ref_store *refs = get_ref_store(NULL);
+
+       return refs->be->rename_ref(refs, oldref, newref, logmsg);
+}
index 40e789611c0be3503622ee9bdb3afde52a1e429c..f61101a799f16cefe0af25cd6160c4e7185e3127 100644 (file)
@@ -997,22 +997,6 @@ static struct files_ref_store *files_downcast(
        return (struct files_ref_store *)ref_store;
 }
 
-/*
- * Return a pointer to the reference store for the specified
- * submodule. For the main repository, use submodule==NULL; such a
- * call cannot fail. For a submodule, the submodule must exist and be
- * a nonbare repository, otherwise return NULL. Verify that the
- * reference store is a files_ref_store, and cast it to that type
- * before returning it.
- */
-static struct files_ref_store *get_files_ref_store(const char *submodule,
-                                                  const char *caller)
-{
-       struct ref_store *refs = get_ref_store(submodule);
-
-       return refs ? files_downcast(refs, 1, caller) : NULL;
-}
-
 /* The length of a peeled reference line in packed-refs, including EOL: */
 #define PEELED_LINE_LENGTH 42
 
@@ -2580,9 +2564,12 @@ static int commit_ref_update(struct files_ref_store *refs,
                             const unsigned char *sha1, const char *logmsg,
                             struct strbuf *err);
 
-int rename_ref(const char *oldrefname, const char *newrefname, const char *logmsg)
+static int files_rename_ref(struct ref_store *ref_store,
+                           const char *oldrefname, const char *newrefname,
+                           const char *logmsg)
 {
-       struct files_ref_store *refs = get_files_ref_store(NULL, "rename_ref");
+       struct files_ref_store *refs =
+               files_downcast(ref_store, 0, "rename_ref");
        unsigned char sha1[20], orig_sha1[20];
        int flag = 0, logmoved = 0;
        struct ref_lock *lock;
@@ -4087,6 +4074,7 @@ struct ref_storage_be refs_be_files = {
        files_peel_ref,
        files_create_symref,
        files_delete_refs,
+       files_rename_ref,
 
        files_ref_iterator_begin,
        files_read_raw_ref,
index b3a20955c3ac60b15eca0149e5ad5264cb837c4e..c598cb19ab34be7f8fbb724a1ecd6f42860e1067 100644 (file)
@@ -494,6 +494,9 @@ typedef int create_symref_fn(struct ref_store *ref_store,
                             const char *logmsg);
 typedef int delete_refs_fn(struct ref_store *ref_store,
                           struct string_list *refnames, unsigned int flags);
+typedef int rename_ref_fn(struct ref_store *ref_store,
+                         const char *oldref, const char *newref,
+                         const char *logmsg);
 
 /*
  * Iterate over the references in the specified ref_store that are
@@ -593,6 +596,7 @@ struct ref_storage_be {
        peel_ref_fn *peel_ref;
        create_symref_fn *create_symref;
        delete_refs_fn *delete_refs;
+       rename_ref_fn *rename_ref;
 
        ref_iterator_begin_fn *iterator_begin;
        read_raw_ref_fn *read_raw_ref;