diff options
author | Vicent Marti <tanoku@gmail.com> | 2013-05-30 03:47:10 +0200 |
---|---|---|
committer | Vicent Marti <tanoku@gmail.com> | 2013-05-30 03:47:10 +0200 |
commit | 4e6e2ff26f5a04a4628aa0d81e5d5d73acf28ec4 (patch) | |
tree | 9a6d20bb0d7e8b390bbb0a5b0a67a493ea778fd6 /src/refdb.c | |
parent | ec24e542969f9d49e41e4c2cb3eac2259b1818c2 (diff) | |
download | libgit2-4e6e2ff26f5a04a4628aa0d81e5d5d73acf28ec4.tar.gz |
...Aaaand this works
Diffstat (limited to 'src/refdb.c')
-rw-r--r-- | src/refdb.c | 34 |
1 files changed, 30 insertions, 4 deletions
diff --git a/src/refdb.c b/src/refdb.c index e0701d347..d8daa7773 100644 --- a/src/refdb.c +++ b/src/refdb.c @@ -165,14 +165,40 @@ void git_refdb_iterator_free(git_reference_iterator *iter) iter->free(iter); } -int git_refdb_write(git_refdb *db, const git_reference *ref) +int git_refdb_write(git_refdb *db, git_reference *ref, int force) { assert(db && db->backend); - return db->backend->write(db->backend, ref); + + GIT_REFCOUNT_INC(db); + ref->db = db; + + return db->backend->write(db->backend, ref, force); +} + +int git_refdb_rename( + git_reference **out, + git_refdb *db, + const char *old_name, + const char *new_name, + int force) +{ + int error; + + assert(db && db->backend); + error = db->backend->rename(out, db->backend, old_name, new_name, force); + if (error < 0) + return error; + + if (out) { + GIT_REFCOUNT_INC(db); + (*out)->db = db; + } + + return 0; } -int git_refdb_delete(struct git_refdb *db, const git_reference *ref) +int git_refdb_delete(struct git_refdb *db, const char *ref_name) { assert(db && db->backend); - return db->backend->delete(db->backend, ref); + return db->backend->delete(db->backend, ref_name); } |