summaryrefslogtreecommitdiff
path: root/branch.c
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2011-09-22 03:19:38 (GMT)
committerJunio C Hamano <gitster@pobox.com>2011-10-05 21:48:39 (GMT)
commit6f9a332144cda5f4d7e6e03c37fb17f8ffac1fe3 (patch)
tree2da049b07a23b9da75551311d3fd54ddbbb4510c /branch.c
parent3bcad5a23d7d114f831d7c11c7b29a8052b5a9f8 (diff)
downloadgit-6f9a332144cda5f4d7e6e03c37fb17f8ffac1fe3.zip
git-6f9a332144cda5f4d7e6e03c37fb17f8ffac1fe3.tar.gz
git-6f9a332144cda5f4d7e6e03c37fb17f8ffac1fe3.tar.bz2
branch: add read_branch_desc() helper function
This will be used by various callers that make use of the branch description throughout the system, so that if we need to update the implementation the callers do not have to be modified. Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'branch.c')
-rw-r--r--branch.c31
1 files changed, 31 insertions, 0 deletions
diff --git a/branch.c b/branch.c
index fecedd3..50088a4 100644
--- a/branch.c
+++ b/branch.c
@@ -135,6 +135,37 @@ static int setup_tracking(const char *new_ref, const char *orig_ref,
return 0;
}
+struct branch_desc_cb {
+ const char *config_name;
+ const char *value;
+};
+
+static int read_branch_desc_cb(const char *var, const char *value, void *cb)
+{
+ struct branch_desc_cb *desc = cb;
+ if (strcmp(desc->config_name, var))
+ return 0;
+ free((char *)desc->value);
+ return git_config_string(&desc->value, var, value);
+}
+
+int read_branch_desc(struct strbuf *buf, const char *branch_name)
+{
+ struct branch_desc_cb cb;
+ struct strbuf name = STRBUF_INIT;
+ strbuf_addf(&name, "branch.%s.description", branch_name);
+ cb.config_name = name.buf;
+ cb.value = NULL;
+ if (git_config(read_branch_desc_cb, &cb) < 0) {
+ strbuf_release(&name);
+ return -1;
+ }
+ if (cb.value)
+ strbuf_addstr(buf, cb.value);
+ strbuf_release(&name);
+ return 0;
+}
+
int validate_new_branchname(const char *name, struct strbuf *ref,
int force, int attr_only)
{