Add git_reflog_rename() and git_reflog_delete() Signed-off-by: schu <schu-github@schulog.org>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
diff --git a/include/git2/reflog.h b/include/git2/reflog.h
index 9ad42b7..f1d0879 100644
--- a/include/git2/reflog.h
+++ b/include/git2/reflog.h
@@ -51,6 +51,23 @@ GIT_EXTERN(int) git_reflog_read(git_reflog **reflog, git_reference *ref);
GIT_EXTERN(int) git_reflog_write(git_reference *ref, const git_oid *oid_old, const git_signature *committer, const char *msg);
/**
+ * Rename the reflog for the given reference
+ *
+ * @param ref the reference
+ * @param new_name the new name of the reference
+ * @return GIT_SUCCESS or an error code
+ */
+GIT_EXTERN(int) git_reflog_rename(git_reference *ref, const char *new_name);
+
+/**
+ * Delete the reflog for the given reference
+ *
+ * @param ref the reference
+ * @return GIT_SUCCESS or an error code
+ */
+GIT_EXTERN(int) git_reflog_delete(git_reference *ref);
+
+/**
* Get the number of log entries in a reflog
*
* @param reflog the previously loaded reflog
diff --git a/src/reflog.c b/src/reflog.c
index e0fa7a0..f52ae58 100644
--- a/src/reflog.c
+++ b/src/reflog.c
@@ -255,6 +255,32 @@ int git_reflog_write(git_reference *ref, const git_oid *oid_old,
return reflog_write(log_path, old, new, committer, msg);
}
+int git_reflog_rename(git_reference *ref, const char *new_name)
+{
+ char old_path[GIT_PATH_MAX];
+ char new_path[GIT_PATH_MAX];
+
+ git_path_join_n(old_path, 3, ref->owner->path_repository,
+ GIT_REFLOG_DIR, ref->name);
+ git_path_join_n(new_path, 3, ref->owner->path_repository,
+ GIT_REFLOG_DIR, new_name);
+
+ return p_rename(old_path, new_path);
+}
+
+int git_reflog_delete(git_reference *ref)
+{
+ char path[GIT_PATH_MAX];
+
+ git_path_join_n(path, 3, ref->owner->path_repository,
+ GIT_REFLOG_DIR, ref->name);
+
+ if (git_futils_exists(path))
+ return GIT_SUCCESS;
+
+ return p_unlink(path);
+}
+
unsigned int git_reflog_entrycount(git_reflog *reflog)
{
assert(reflog);