From: Ronnie Sahlberg <sahlberg@google.com>
To: git@vger.kernel.org
Cc: mhagger@alum.mit.edu, Ronnie Sahlberg <sahlberg@google.com>
Subject: [PATCH v3 1/5] refs.c: allow passing raw git_committer_info as email to _update_reflog
Date: Wed, 18 Jun 2014 10:24:27 -0700 [thread overview]
Message-ID: <1403112271-21331-2-git-send-email-sahlberg@google.com> (raw)
In-Reply-To: <1403112271-21331-1-git-send-email-sahlberg@google.com>
In many places in the code we do not have access to the individual fields
in the committer data. Instead we might only have access to prebaked data
such as what is returned by git_committer_info() containing a string
that consists of email, timestamp, zone etc.
This makes it inconvenient to use transaction_update_reflog since it means
you would have to first parse git_committer_info before you can call
update_reflog.
Add a new flag REFLOG_EMAIL_IS_COMMITTER to _update_reflog to tell it
that what we pass in as email is already the fully baked committer string
we can use as-is.
Signed-off-by: Ronnie Sahlberg <sahlberg@google.com>
---
refs.c | 20 ++++++++++++--------
refs.h | 1 +
2 files changed, 13 insertions(+), 8 deletions(-)
diff --git a/refs.c b/refs.c
index 95c3eb8..11dcb07 100644
--- a/refs.c
+++ b/refs.c
@@ -3521,14 +3521,18 @@ int transaction_update_reflog(struct ref_transaction *transaction,
hashcpy(update->old_sha1, old_sha1);
update->reflog_fd = -1;
if (email) {
- struct strbuf buf = STRBUF_INIT;
- char sign = (tz < 0) ? '-' : '+';
- int zone = (tz < 0) ? (-tz) : tz;
-
- strbuf_addf(&buf, "%s %lu %c%04d", email, timestamp, sign,
- zone);
- update->committer = xstrdup(buf.buf);
- strbuf_release(&buf);
+ if (flags & REFLOG_EMAIL_IS_COMMITTER)
+ update->committer = xstrdup(email);
+ else {
+ struct strbuf buf = STRBUF_INIT;
+ char sign = (tz < 0) ? '-' : '+';
+ int zone = (tz < 0) ? (-tz) : tz;
+
+ strbuf_addf(&buf, "%s %lu %c%04d", email, timestamp,
+ sign, zone);
+ update->committer = xstrdup(buf.buf);
+ strbuf_release(&buf);
+ }
}
if (msg)
update->msg = xstrdup(msg);
diff --git a/refs.h b/refs.h
index b674c20..469d27f 100644
--- a/refs.h
+++ b/refs.h
@@ -315,6 +315,7 @@ int transaction_delete_sha1(struct ref_transaction *transaction,
* Flags >= 0x100 are reserved for internal use.
*/
#define REFLOG_TRUNCATE 0x01
+#define REFLOG_EMAIL_IS_COMMITTER 0x02
/*
* Append a reflog entry for refname. If the REFLOG_TRUNCATE flag is set
* this update will first truncate the reflog before writing the entry.
--
2.0.0.467.g08c0633
next prev parent reply other threads:[~2014-06-18 17:24 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-06-18 17:24 [PATCH v3 0/5] ref-transactions-rename Ronnie Sahlberg
2014-06-18 17:24 ` Ronnie Sahlberg [this message]
2014-06-18 17:24 ` [PATCH v3 2/5] refs.c: return error instead of dying when locking fails during transaction Ronnie Sahlberg
2014-06-18 17:24 ` [PATCH v3 3/5] refs.c: use packed refs when deleting refs during a transaction Ronnie Sahlberg
2014-06-18 17:24 ` [PATCH v3 4/5] refs.c: update rename_ref to use " Ronnie Sahlberg
2014-06-18 17:24 ` [PATCH v3 5/5] refs.c: rollback the lockfile before we die() in repack_without_refs Ronnie Sahlberg
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=1403112271-21331-2-git-send-email-sahlberg@google.com \
--to=sahlberg@google.com \
--cc=git@vger.kernel.org \
--cc=mhagger@alum.mit.edu \
/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 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 NNTP newsgroup(s).