From: Jeff King <peff@peff.net>
To: git@vger.kernel.org
Subject: [PATCH 3/4] create_symref: modernize variable names
Date: Sun, 20 Dec 2015 02:29:49 -0500 [thread overview]
Message-ID: <20151220072949.GC30662@sigill.intra.peff.net> (raw)
In-Reply-To: <20151220072637.GA22102@sigill.intra.peff.net>
Once upon a time, create_symref() was used only to point
HEAD at a branch name, and the variable names reflect that
(e.g., calling the path git_HEAD). However, it is much more
generic these days (and has been for some time). Let's
update the variable names to make it easier to follow:
- `ref_target` is now just `ref`, matching the declaration
in `cache.h` (and hopefully making it clear that it is
the symref itself, and not the target).
- `git_HEAD` is now `ref_path`; the on-disk path
corresponding to `ref`.
- `refs_heads_master` is now just `target`; i.e., what the
symref points at. This term also matches what is in
the symlink(2) manpage (at least on Linux).
- the buffer to hold the symref file's contents was simply
called `ref`. It's now `buf` (admittedly also generic,
but at least not actively introducing confusion with the
other variable holding the refname).
Signed-off-by: Jeff King <peff@peff.net>
---
This could actually be squashed in with patch 4, as most of the changed
instances just go away. I did find the new names easier to work with,
though, so maybe they make the diff for that patch easier.
refs.h | 2 +-
refs/files-backend.c | 41 ++++++++++++++++++++---------------------
2 files changed, 21 insertions(+), 22 deletions(-)
diff --git a/refs.h b/refs.h
index 7a04077..96a25ad 100644
--- a/refs.h
+++ b/refs.h
@@ -292,7 +292,7 @@ extern char *shorten_unambiguous_ref(const char *refname, int strict);
/** rename ref, return 0 on success **/
extern int rename_ref(const char *oldref, const char *newref, const char *logmsg);
-extern int create_symref(const char *ref, const char *refs_heads_master, const char *logmsg);
+extern int create_symref(const char *ref, const char *target, const char *logmsg);
enum action_on_err {
UPDATE_REFS_MSG_ON_ERR,
diff --git a/refs/files-backend.c b/refs/files-backend.c
index c648b5e..6bfa139 100644
--- a/refs/files-backend.c
+++ b/refs/files-backend.c
@@ -2811,58 +2811,57 @@ static int commit_ref_update(struct ref_lock *lock,
return 0;
}
-int create_symref(const char *ref_target, const char *refs_heads_master,
- const char *logmsg)
+int create_symref(const char *ref, const char *target, const char *logmsg)
{
char *lockpath = NULL;
- char ref[1000];
+ char buf[1000];
int fd, len, written;
- char *git_HEAD = git_pathdup("%s", ref_target);
+ char *ref_path = git_pathdup("%s", ref);
unsigned char old_sha1[20], new_sha1[20];
struct strbuf err = STRBUF_INIT;
- if (logmsg && read_ref(ref_target, old_sha1))
+ if (logmsg && read_ref(ref, old_sha1))
hashclr(old_sha1);
- if (safe_create_leading_directories(git_HEAD) < 0)
- return error("unable to create directory for %s", git_HEAD);
+ if (safe_create_leading_directories(ref_path) < 0)
+ return error("unable to create directory for %s", ref_path);
#ifndef NO_SYMLINK_HEAD
if (prefer_symlink_refs) {
- unlink(git_HEAD);
- if (!symlink(refs_heads_master, git_HEAD))
+ unlink(ref_path);
+ if (!symlink(target, ref_path))
goto done;
fprintf(stderr, "no symlink - falling back to symbolic ref\n");
}
#endif
- len = snprintf(ref, sizeof(ref), "ref: %s\n", refs_heads_master);
- if (sizeof(ref) <= len) {
- error("refname too long: %s", refs_heads_master);
+ len = snprintf(buf, sizeof(buf), "ref: %s\n", target);
+ if (sizeof(buf) <= len) {
+ error("refname too long: %s", target);
goto error_free_return;
}
- lockpath = mkpathdup("%s.lock", git_HEAD);
+ lockpath = mkpathdup("%s.lock", ref_path);
fd = open(lockpath, O_CREAT | O_EXCL | O_WRONLY, 0666);
if (fd < 0) {
error("Unable to open %s for writing", lockpath);
goto error_free_return;
}
- written = write_in_full(fd, ref, len);
+ written = write_in_full(fd, buf, len);
if (close(fd) != 0 || written != len) {
error("Unable to write to %s", lockpath);
goto error_unlink_return;
}
- if (rename(lockpath, git_HEAD) < 0) {
- error("Unable to create %s", git_HEAD);
+ if (rename(lockpath, ref_path) < 0) {
+ error("Unable to create %s", ref_path);
goto error_unlink_return;
}
- if (adjust_shared_perm(git_HEAD)) {
+ if (adjust_shared_perm(ref_path)) {
error("Unable to fix permissions on %s", lockpath);
error_unlink_return:
unlink_or_warn(lockpath);
error_free_return:
free(lockpath);
- free(git_HEAD);
+ free(ref_path);
return -1;
}
free(lockpath);
@@ -2870,13 +2869,13 @@ int create_symref(const char *ref_target, const char *refs_heads_master,
#ifndef NO_SYMLINK_HEAD
done:
#endif
- if (logmsg && !read_ref(refs_heads_master, new_sha1) &&
- log_ref_write(ref_target, old_sha1, new_sha1, logmsg, 0, &err)) {
+ if (logmsg && !read_ref(target, new_sha1) &&
+ log_ref_write(ref, old_sha1, new_sha1, logmsg, 0, &err)) {
error("%s", err.buf);
strbuf_release(&err);
}
- free(git_HEAD);
+ free(ref_path);
return 0;
}
--
2.7.0.rc1.350.g9acc0f4
next prev parent reply other threads:[~2015-12-20 7:29 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-12-20 7:26 [PATCH 0/4] improve symbolic-ref robustness Jeff King
2015-12-20 7:27 ` [PATCH 1/4] symbolic-ref: propagate error code from create_symref() Jeff King
2015-12-20 7:27 ` [PATCH 2/4] t1401: test reflog creation for git-symbolic-ref Jeff King
2015-12-20 7:29 ` Jeff King [this message]
2015-12-28 8:20 ` [PATCH 3/4] create_symref: modernize variable names Michael Haggerty
2015-12-29 5:02 ` Jeff King
2015-12-20 7:34 ` [PATCH 4/4] create_symref: use existing ref-lock code Jeff King
2015-12-21 20:50 ` Junio C Hamano
2015-12-22 0:58 ` Jeff King
2015-12-28 9:45 ` Michael Haggerty
2015-12-29 5:02 ` Jeff King
2015-12-29 5:41 ` Jeff King
2015-12-29 5:55 ` [PATCH v2 0/3] improve symbolic-ref robustness Jeff King
2015-12-29 5:56 ` [PATCH 1/3] create_symref: modernize variable names Jeff King
2015-12-29 5:57 ` [PATCH 2/3] create_symref: use existing ref-lock code Jeff King
2015-12-29 5:57 ` [PATCH 3/3] create_symref: write reflog while holding lock Jeff King
2015-12-29 6:00 ` [RFC/PATCH 4/3] create_symref: drop support for writing symbolic links Jeff King
2015-12-29 6:03 ` Jeff King
2015-12-29 18:32 ` Junio C Hamano
2015-12-30 6:53 ` Jeff King
2015-12-30 6:56 ` Jeff King
2015-12-29 8:25 ` [PATCH v2 0/3] improve symbolic-ref robustness Michael Haggerty
2015-12-29 18:35 ` Junio C Hamano
2015-12-29 21:24 ` Junio C Hamano
2015-12-30 6:57 ` Jeff King
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: http://vger.kernel.org/majordomo-info.html
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20151220072949.GC30662@sigill.intra.peff.net \
--to=peff@peff.net \
--cc=git@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://80x24.org/mirrors/git.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).