diff options
| author | Vicent Marti <tanoku@gmail.com> | 2012-07-27 18:39:40 +0200 |
|---|---|---|
| committer | Vicent Marti <tanoku@gmail.com> | 2012-07-27 18:39:40 +0200 |
| commit | 43b67d496b87a9c6ce38a500b7f3121bf136942e (patch) | |
| tree | 11be7d7c3290c598f3a4125df80c2a555130b4a1 /include/git2/reflog.h | |
| parent | c0c390255a70fb98f7ef9424c4ee53c471d7f22e (diff) | |
| parent | c3be5c5af089683b6c61d1d37d8c2c40ff48e9a8 (diff) | |
| download | libgit2-43b67d496b87a9c6ce38a500b7f3121bf136942e.tar.gz | |
Merge remote-tracking branch 'nulltoken/topic/reflog-delete' into development
Diffstat (limited to 'include/git2/reflog.h')
| -rw-r--r-- | include/git2/reflog.h | 44 |
1 files changed, 36 insertions, 8 deletions
diff --git a/include/git2/reflog.h b/include/git2/reflog.h index 8acba349b..a314f94c2 100644 --- a/include/git2/reflog.h +++ b/include/git2/reflog.h @@ -23,6 +23,10 @@ GIT_BEGIN_DECL /** * Read the reflog for the given reference * + * If there is no reflog file for the given + * reference yet, an empty reflog object will + * be returned. + * * The reflog must be freed manually by using * git_reflog_free(). * @@ -33,22 +37,26 @@ GIT_BEGIN_DECL GIT_EXTERN(int) git_reflog_read(git_reflog **reflog, git_reference *ref); /** - * Write a new reflog for the given reference - * - * If there is no reflog file for the given - * reference yet, it will be created. + * Write an existing in-memory reflog object back to disk + * using an atomic file lock. * - * `oid_old` may be NULL in case it's a new reference. + * @param reflog an existing reflog object + * @return 0 or an error code + */ +GIT_EXTERN(int) git_reflog_write(git_reflog *reflog); + +/** + * Add a new entry to the reflog. * * `msg` is optional and can be NULL. * - * @param ref the changed reference - * @param oid_old the OID the reference was pointing to + * @param reflog an existing reflog object + * @param new_oid the OID the reference is now pointing to * @param committer the signature of the committer * @param msg the reflog message * @return 0 or an error code */ -GIT_EXTERN(int) git_reflog_write(git_reference *ref, const git_oid *oid_old, const git_signature *committer, const char *msg); +GIT_EXTERN(int) git_reflog_append(git_reflog *reflog, const git_oid *new_oid, const git_signature *committer, const char *msg); /** * Rename the reflog for the given reference @@ -87,6 +95,26 @@ GIT_EXTERN(unsigned int) git_reflog_entrycount(git_reflog *reflog); GIT_EXTERN(const git_reflog_entry *) git_reflog_entry_byindex(git_reflog *reflog, unsigned int idx); /** + * Remove an entry from the reflog by its index + * + * To ensure there's no gap in the log history, set the `rewrite_previosu_entry` to 1. + * When deleting entry `n`, member old_oid of entry `n-1` (if any) will be updated with + * the value of memeber new_oid of entry `n+1`. + * + * @param reflog a previously loaded reflog. + * + * @param idx the position of the entry to remove. + * + * @param rewrite_previous_entry 1 to rewrite the history; 0 otherwise. + * + * @return 0 on success or an error code. + */ +GIT_EXTERN(int) git_reflog_entry_drop( + git_reflog *reflog, + unsigned int idx, + int rewrite_previous_entry); + +/** * Get the old oid * * @param entry a reflog entry |
