From: Michael Haggerty <mhagger@alum.mit.edu>
To: David Turner <dturner@twopensource.com>, git@vger.kernel.org
Subject: Re: [PATCH v9 3/7] refs: new public ref function: safe_create_reflog
Date: Tue, 21 Jul 2015 12:57:59 -0700 [thread overview]
Message-ID: <55AEA447.1080805@alum.mit.edu> (raw)
In-Reply-To: <1437493504-3699-4-git-send-email-dturner@twopensource.com>
On 07/21/2015 08:45 AM, David Turner wrote:
> The safe_create_reflog function creates a reflog, if it does not
> already exist.
>
> The log_ref_setup function becomes private and gains a force_create
> parameter to force the creation of a reflog even if log_all_ref_updates
> is false or the refname is not one of the special refnames.
>
> The new parameter also reduces the need to store, modify, and restore
> the log_all_ref_updates global before reflog creation.
>
> In a moment, we will use this to add reflog creation commands to
> git-reflog.
>
> Signed-off-by: David Turner <dturner@twopensource.com>
> ---
> builtin/checkout.c | 14 +++++---------
> refs.c | 24 ++++++++++++++++++++----
> refs.h | 2 +-
> 3 files changed, 26 insertions(+), 14 deletions(-)
>
> [...]
> diff --git a/refs.c b/refs.c
> index 2efa2dc..3277768 100644
> --- a/refs.c
> +++ b/refs.c
> @@ -3128,8 +3128,13 @@ static int should_autocreate_reflog(const char *refname)
> !strcmp(refname, "HEAD");
> }
>
> -/* This function will fill in *err and return -1 on failure */
> -int log_ref_setup(const char *refname, struct strbuf *sb_logfile, struct strbuf *err)
> +/*
> + * Create a reflog for a ref. If force_create = 0, the reflog will
> + * only be created for certain refs (those for which
> + * should_autocreate_reflog returns non-zero. Otherwise, create it
> + * regardless of the ref name. Fill in *err and return -1 on failure.
> + */
> +static int log_ref_setup(const char *refname, struct strbuf *sb_logfile, struct strbuf *err, int force_create)
> {
> int logfd, oflags = O_APPEND | O_WRONLY;
> char *logfile;
> @@ -3138,7 +3143,7 @@ int log_ref_setup(const char *refname, struct strbuf *sb_logfile, struct strbuf
> logfile = sb_logfile->buf;
> /* make sure the rest of the function can't change "logfile" */
> sb_logfile = NULL;
> - if (should_autocreate_reflog(refname)) {
> + if (force_create || should_autocreate_reflog(refname)) {
> if (safe_create_leading_directories(logfile) < 0) {
> strbuf_addf(err, "unable to create directory for %s: "
> "%s", logfile, strerror(errno));
I think usually the "strbuf *err" parameter is the last one in our APIs.
I noticed this when reviewing patch 5/7, where there is a similar flags
argument that comes *before* "err". Consistency would suggest that
"force_create" come before "err".
Michael
--
Michael Haggerty
mhagger@alum.mit.edu
next prev parent reply other threads:[~2015-07-21 19:58 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-07-21 15:44 [PATCH v9 0/7] refs backend preamble David Turner
2015-07-21 15:44 ` [PATCH v9 1/7] refs.c: add err arguments to reflog functions David Turner
2015-07-21 19:50 ` Michael Haggerty
2015-07-21 15:44 ` [PATCH v9 2/7] refs: Break out check for reflog autocreation David Turner
2015-07-21 15:45 ` [PATCH v9 3/7] refs: new public ref function: safe_create_reflog David Turner
2015-07-21 19:57 ` Michael Haggerty [this message]
2015-07-21 15:45 ` [PATCH v9 4/7] git-reflog: add exists command David Turner
2015-07-21 19:51 ` Michael Haggerty
2015-07-21 15:45 ` [PATCH v9 5/7] refs: add REF_FORCE_CREATE_REFLOG flag David Turner
2015-07-21 15:45 ` [PATCH v9 6/7] update-ref and tag: add --create-reflog arg David Turner
2015-07-21 16:42 ` Junio C Hamano
2015-07-21 20:02 ` Michael Haggerty
2015-07-21 20:06 ` Michael Haggerty
2015-07-21 15:45 ` [PATCH v9 7/7] git-stash: use update-ref --create-reflog instead of creating files David Turner
2015-07-21 20:20 ` [PATCH v9 0/7] refs backend preamble Michael Haggerty
2015-07-21 20:43 ` David Turner
2015-07-21 20:49 ` Junio C Hamano
2015-07-21 21:05 ` David Turner
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
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=55AEA447.1080805@alum.mit.edu \
--to=mhagger@alum.mit.edu \
--cc=dturner@twopensource.com \
--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.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.