diff options
author | Carlos Martín Nieto <cmn@dwim.me> | 2015-07-12 19:08:06 +0200 |
---|---|---|
committer | Carlos Martín Nieto <cmn@dwim.me> | 2015-07-12 19:08:06 +0200 |
commit | 01d0c02dbaa8856c4e2481ab1435bdf7df58690a (patch) | |
tree | cdf29c50e924cca1ba4f764a5fb7809cf9bfba67 /src/refdb_fs.c | |
parent | a522d8c1e72b3875805750cba9556fd303b9c8b2 (diff) | |
download | libgit2-cmn/reflog-del-backend.tar.gz |
refdb: delete a ref's reflog upon deletioncmn/reflog-del-backend
Removing a reflog upon ref deletion is something which only some
backends might wish to do. Backends which are database-backed may wish
to archive a reflog, log-based ones may not need to do anything.
Diffstat (limited to 'src/refdb_fs.c')
-rw-r--r-- | src/refdb_fs.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/src/refdb_fs.c b/src/refdb_fs.c index e1a77f3ff..55d535eb4 100644 --- a/src/refdb_fs.c +++ b/src/refdb_fs.c @@ -63,6 +63,8 @@ typedef struct refdb_fs_backend { uint32_t direach_flags; } refdb_fs_backend; +static int refdb_reflog_fs__delete(git_refdb_backend *_backend, const char *name); + static int packref_cmp(const void *a_, const void *b_) { const struct packref *a = a_, *b = b_; @@ -1217,6 +1219,11 @@ static int refdb_fs_backend__delete( if ((error = loose_lock(&file, backend, ref_name)) < 0) return error; + if ((error = refdb_reflog_fs__delete(_backend, ref_name)) < 0) { + git_filebuf_cleanup(&file); + return error; + } + return refdb_fs_backend__delete_tail(_backend, &file, ref_name, old_id, old_target); } |