refs: make create_symref() 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
284689ba0ff7506d581bcee7481a2621492135ef
3 files changed
+20
-1
refs.c
+9
@@ -1428,6 +1428,15 @@ int pack_refs(unsigned int flags)
1428
return refs->be->pack_refs(refs, flags);
1429
}
1430
1431
+int create_symref(const char *ref_target, const char *refs_heads_master,
1432
+ const char *logmsg)
1433
+{
1434
+ struct ref_store *refs = get_ref_store(NULL);
1435
+
1436
+ return refs->be->create_symref(refs, ref_target, refs_heads_master,
1437
+ logmsg);
1438
+}
1439
+
1440
int ref_transaction_commit(struct ref_transaction *transaction,
1441
struct strbuf *err)
1442
{
refs/files-backend.c
+6
-1
@@ -3011,12 +3011,16 @@ static int create_symref_locked(struct ref_lock *lock, const char *refname,
3011
return 0;
3012
}
3013
3014
-int create_symref(const char *refname, const char *target, const char *logmsg)
3014
+static int files_create_symref(struct ref_store *ref_store,
3015
+ const char *refname, const char *target,
3016
+ const char *logmsg)
3017
{
3018
struct strbuf err = STRBUF_INIT;
3019
struct ref_lock *lock;
3020
int ret;
3021
3022
+ files_downcast(ref_store, 0, "create_symref");
3023
+
3024
lock = lock_ref_sha1_basic(refname, NULL, NULL, NULL, REF_NODEREF, NULL,
3025
&err);
3026
if (!lock) {
@@ -4023,6 +4027,7 @@ struct ref_storage_be refs_be_files = {
4027
files_transaction_commit,
4028
4029
files_pack_refs,
4030
+ files_create_symref,
4031
4032
files_read_raw_ref,
4033
files_verify_refname_available
refs/refs-internal.h
+5
@@ -501,6 +501,10 @@ typedef int ref_transaction_commit_fn(struct ref_store *refs,
501
struct strbuf *err);
502
503
typedef int pack_refs_fn(struct ref_store *ref_store, unsigned int flags);
504
+typedef int create_symref_fn(struct ref_store *ref_store,
505
+ const char *ref_target,
506
+ const char *refs_heads_master,
507
+ const char *logmsg);
508
509
/*
510
* Read a reference from the specified reference store, non-recursively.
@@ -557,6 +561,7 @@ struct ref_storage_be {
561
ref_transaction_commit_fn *transaction_commit;
562
563
pack_refs_fn *pack_refs;
564
+ create_symref_fn *create_symref;
565
566
read_raw_ref_fn *read_raw_ref;
567
verify_refname_available_fn *verify_refname_available;