summaryrefslogtreecommitdiff
path: root/include/git2/refs.h
diff options
context:
space:
mode:
authornulltoken <emeric.fermas@gmail.com>2013-05-13 16:21:09 +0200
committerCarlos Martín Nieto <cmn@dwim.me>2013-11-23 13:34:46 +0100
commitbba25f39a29c7913bab97fa6e8ac2ccb78ea33b6 (patch)
tree7ad4b0dc4d045e2614ac3057a2da27841dd74699 /include/git2/refs.h
parent92f95a170c76ffde80010cbbd6b03c0bf8dded1d (diff)
downloadlibgit2-bba25f39a29c7913bab97fa6e8ac2ccb78ea33b6.tar.gz
refs: Introduce git_reference_create_with_log()
Diffstat (limited to 'include/git2/refs.h')
-rw-r--r--include/git2/refs.h43
1 files changed, 43 insertions, 0 deletions
diff --git a/include/git2/refs.h b/include/git2/refs.h
index 4041947f6..049b7fa72 100644
--- a/include/git2/refs.h
+++ b/include/git2/refs.h
@@ -131,6 +131,49 @@ GIT_EXTERN(int) git_reference_symbolic_create(git_reference **out, git_repositor
GIT_EXTERN(int) git_reference_create(git_reference **out, git_repository *repo, const char *name, const git_oid *id, int force);
/**
+ * Create a new direct reference and update the reflog with a given
+ * message.
+ *
+ * A direct reference (also called an object id reference) refers directly
+ * to a specific object id (a.k.a. OID or SHA) in the repository. The id
+ * permanently refers to the object (although the reference itself can be
+ * moved). For example, in libgit2 the direct ref "refs/tags/v0.17.0"
+ * refers to OID 5b9fac39d8a76b9139667c26a63e6b3f204b3977.
+ *
+ * The direct reference will be created in the repository and written to
+ * the disk. The generated reference object must be freed by the user.
+ *
+ * Valid reference names must follow one of two patterns:
+ *
+ * 1. Top-level names must contain only capital letters and underscores,
+ * and must begin and end with a letter. (e.g. "HEAD", "ORIG_HEAD").
+ * 2. Names prefixed with "refs/" can be almost anything. You must avoid
+ * the characters '~', '^', ':', '\\', '?', '[', and '*', and the
+ * sequences ".." and "@{" which have special meaning to revparse.
+ *
+ * This function will return an error if a reference already exists with the
+ * given name unless `force` is true, in which case it will be overwritten.
+ *
+ * @param out Pointer to the newly created reference
+ * @param repo Repository where that reference will live
+ * @param name The name of the reference
+ * @param id The object id pointed to by the reference.
+ * @param force Overwrite existing references
+ * @param signature The identity that will used to populate the reflog entry
+ * @param log_message The one line long message that has to be appended
+ * to the reflog
+ * @return 0 on success, EEXISTS, EINVALIDSPEC or an error code
+ */
+GIT_EXTERN(int) git_reference_create_with_log(
+ git_reference **out,
+ git_repository *repo,
+ const char *name,
+ const git_oid *id,
+ int force,
+ const git_signature *signature,
+ const char *log_message);
+
+/**
* Get the OID pointed to by a direct reference.
*
* Only available if the reference is direct (i.e. an object id reference,