{"thread":{"id":"43559","subject":"[PATCH] git-branch: let caller specify logmsg","startedAt":"2006-11-30T02:16:56Z","lastAt":"2006-11-30T02:16:56Z","messageCount":1,"participants":["Lars Hjemli"],"isPatch":true,"patchVersion":1,"patchTotal":null},"messages":[{"id":"295526","messageId":"11648530161016-git-send-email-hjemli@gmail.com","threadId":"43559","inReplyTo":null,"subject":"[PATCH] git-branch: let caller specify logmsg","fromName":"Lars Hjemli","fromEmail":"hjemli@gmail.com","sentAt":"2006-11-30T02:16:56Z","receivedAt":"2006-11-30T02:16:56Z","isPatch":true,"sender":{"key":"hjemli@gmail.com","avatar":null},"body":"This changes the signature of rename_ref() in refs.[hc] to include a\nlogmessage for the reflogs.\n\nAlso, builtin-branch.c is modified to provide a proper logmessage + call\nsetup_ident() before any logmessages are written.\n\nSigned-off-by: Lars Hjemli <hjemli@gmail.com>\n---\n builtin-branch.c |    8 ++++++--\n refs.c           |   10 +++-------\n refs.h           |    2 +-\n 3 files changed, 10 insertions(+), 10 deletions(-)\n\ndiff --git a/builtin-branch.c b/builtin-branch.c\nindex 3e206b9..abf23c4 100644\n--- a/builtin-branch.c\n+++ b/builtin-branch.c\n@@ -247,7 +247,7 @@ static void create_branch(const char *name, const char *start,\n \n static void rename_branch(const char *oldname, const char *newname, int force)\n {\n-\tchar oldref[PATH_MAX], newref[PATH_MAX];\n+\tchar oldref[PATH_MAX], newref[PATH_MAX], logmsg[PATH_MAX*2 + 100];\n \tunsigned char sha1[20];\n \n \tif (snprintf(oldref, sizeof(oldref), \"refs/heads/%s\", oldname) > sizeof(oldref))\n@@ -265,7 +265,10 @@ static void rename_branch(const char *oldname, const char *newname, int force)\n \tif (resolve_ref(newref, sha1, 1, NULL) && !force)\n \t\tdie(\"A branch named '%s' already exists.\", newname);\n \n-\tif (rename_ref(oldref, newref))\n+\tsnprintf(logmsg, sizeof(logmsg), \"Branch: renamed %s to %s\",\n+\t\t oldref, newref);\n+\n+\tif (rename_ref(oldref, newref, logmsg))\n \t\tdie(\"Branch rename failed\");\n \n \tif (!strcmp(oldname, head) && create_symref(\"HEAD\", newref))\n@@ -281,6 +284,7 @@ int cmd_branch(int argc, const char **argv, const char *prefix)\n \tint kinds = REF_LOCAL_BRANCH;\n \tint i;\n \n+\tsetup_ident();\n \tgit_config(git_default_config);\n \n \tfor (i = 1; i < argc; i++) {\ndiff --git a/refs.c b/refs.c\nindex d8c19e6..d45f267 100644\n--- a/refs.c\n+++ b/refs.c\n@@ -784,13 +784,12 @@ int delete_ref(const char *refname, unsigned char *sha1)\n \treturn ret;\n }\n \n-int rename_ref(const char *oldref, const char *newref)\n+int rename_ref(const char *oldref, const char *newref, const char *logmsg)\n {\n \tstatic const char renamed_ref[] = \"RENAMED-REF\";\n \tunsigned char sha1[20], orig_sha1[20];\n \tint flag = 0, logmoved = 0;\n \tstruct ref_lock *lock;\n-\tchar msg[PATH_MAX*2 + 100];\n \tstruct stat loginfo;\n \tint log = !lstat(git_path(\"logs/%s\", oldref), &loginfo);\n \n@@ -806,14 +805,11 @@ int rename_ref(const char *oldref, const char *newref)\n \tif (!is_refname_available(newref, oldref, get_loose_refs(), 0))\n \t\treturn 1;\n \n-\tif (snprintf(msg, sizeof(msg), \"renamed %s to %s\", oldref, newref) > sizeof(msg))\n-\t\treturn error(\"Refnames to long\");\n-\n \tlock = lock_ref_sha1_basic(renamed_ref, NULL, NULL);\n \tif (!lock)\n \t\treturn error(\"unable to lock %s\", renamed_ref);\n \tlock->force_write = 1;\n-\tif (write_ref_sha1(lock, orig_sha1, msg))\n+\tif (write_ref_sha1(lock, orig_sha1, logmsg))\n \t\treturn error(\"unable to save current sha1 in %s\", renamed_ref);\n \n \tif (log && rename(git_path(\"logs/%s\", oldref), git_path(\"tmp-renamed-log\")))\n@@ -866,7 +862,7 @@ int rename_ref(const char *oldref, const char *newref)\n \n \tlock->force_write = 1;\n \thashcpy(lock->old_sha1, orig_sha1);\n-\tif (write_ref_sha1(lock, orig_sha1, msg)) {\n+\tif (write_ref_sha1(lock, orig_sha1, logmsg)) {\n \t\terror(\"unable to write current sha1 into %s\", newref);\n \t\tgoto rollback;\n \t}\ndiff --git a/refs.h b/refs.h\nindex ce73d5c..51aab1e 100644\n--- a/refs.h\n+++ b/refs.h\n@@ -48,6 +48,6 @@ extern int read_ref_at(const char *ref, unsigned long at_time, int cnt, unsigned\n extern int check_ref_format(const char *target);\n \n /** rename ref, return 0 on success **/\n-extern int rename_ref(const char *oldref, const char *newref);\n+extern int rename_ref(const char *oldref, const char *newref, const char *logmsg);\n \n #endif /* REFS_H */\n-- \n1.4.4.1.gf0df\n"}]}