refs: make verify_refname_available() virtual
Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Michael Haggerty committed
Sep 4, 2016 at 18:08 UTC
62665823d2ddbe69abdac4a9db399769c3e278b4
3 files changed
+25
-6
refs.c
+10
@@ -1428,3 +1428,13 @@ int ref_transaction_commit(struct ref_transaction *transaction,
1428
1429
return refs->be->transaction_commit(refs, transaction, err);
1430
}
1431
+
1432
+int verify_refname_available(const char *refname,
1433
+ const struct string_list *extra,
1434
+ const struct string_list *skip,
1435
+ struct strbuf *err)
1436
+{
1437
+ struct ref_store *refs = get_ref_store(NULL);
1438
+
1439
+ return refs->be->verify_refname_available(refs, refname, extra, skip, err);
1440
+}
refs/files-backend.c
+8
-6
@@ -2549,13 +2549,14 @@ out:
2549
return ret;
2550
}
2551
2552
-int verify_refname_available(const char *newname,
2553
- const struct string_list *extras,
2554
- const struct string_list *skip,
2555
- struct strbuf *err)
2552
+static int files_verify_refname_available(struct ref_store *ref_store,
2553
+ const char *newname,
2554
+ const struct string_list *extras,
2555
+ const struct string_list *skip,
2556
+ struct strbuf *err)
2557
{
2558
struct files_ref_store *refs =
2558
- get_files_ref_store(NULL, "verify_refname_available");
2559
+ files_downcast(ref_store, 1, "verify_refname_available");
2560
struct ref_dir *packed_refs = get_packed_refs(refs);
2561
struct ref_dir *loose_refs = get_loose_refs(refs);
2562
@@ -4021,5 +4022,6 @@ struct ref_storage_be refs_be_files = {
4022
files_ref_store_create,
4023
files_transaction_commit,
4024
4024
- files_read_raw_ref
4025
+ files_read_raw_ref,
4026
+ files_verify_refname_available
4027
};
refs/refs-internal.h
+7
@@ -542,6 +542,12 @@ typedef int read_raw_ref_fn(struct ref_store *ref_store,
542
const char *refname, unsigned char *sha1,
543
struct strbuf *referent, unsigned int *type);
544
545
+typedef int verify_refname_available_fn(struct ref_store *ref_store,
546
+ const char *newname,
547
+ const struct string_list *extras,
548
+ const struct string_list *skip,
549
+ struct strbuf *err);
550
+
551
struct ref_storage_be {
552
struct ref_storage_be *next;
553
const char *name;
@@ -549,6 +555,7 @@ struct ref_storage_be {
555
ref_transaction_commit_fn *transaction_commit;
556
557
read_raw_ref_fn *read_raw_ref;
558
+ verify_refname_available_fn *verify_refname_available;
559
};
560
561
extern struct ref_storage_be refs_be_files;