git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH v2 09/15] refs.c: only write reflog update if msg is non-NULL

From
Ronnie Sahlberg <sahlberg@google.com>
Date
Nov 3, 2014, 16:55 UTC
Message-ID
<1415033757-9539-10-git-send-email-sahlberg@google.com>
In-Reply-To
<1415033757-9539-1-git-send-email-sahlberg@google.com>

When performing a reflog transaction update, only write to the reflog iff msg is non-NULL. This can then be combined with REFLOG_TRUNCATE to perform an update that only truncates but does not write.

This change only affects whether or not a reflog entry should be generated and written. If msg==NULL then no such entry will be written.

Orthogonal to this we have a boolean flag REFLOG_TRUNCATE which is used to tell the transaction system to "truncate the reflog and thus discard all previous users".

At the current time the only place where we use msg==NULL is also the place where we use REFLOG_TRUNCATE. Eveni though these two settings are currently only ever used together it still makes sense to have them through two separate knobs.

This allows future consumers of this API that may want to do things
differently. For example someone can do:
  msg="Reflog truncated by Bob because ..." + REFLOG_TRUNCATE
and have it truncate the log and have it start fresh with an initial message
that explains the log was truncated. This API allows that.
Signed-off-by: Ronnie Sahlberg <sahlberg@google.com>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
---
 refs.c | 5 +++--
 refs.h | 1 +
 2 files changed, 4 insertions(+), 2 deletions(-)
diff --git a/refs.c b/refs.c
index d54c3b9..f14b76e 100644
--- a/refs.c
+++ b/refs.c
@@ -3895,8 +3895,9 @@ int transaction_commit(struct transaction *transaction,
 				update->reflog_fd = -1;
 				continue;
 			}
-		if (log_ref_write_fd(update->reflog_fd, update->old_sha1,
-				     update->new_sha1,
+		if (update->msg &&
+		    log_ref_write_fd(update->reflog_fd,
+				     update->old_sha1, update->new_sha1,
 				     update->committer, update->msg)) {
 			error("Could write to reflog: %s. %s",
 			      update->refname, strerror(errno));
diff --git a/refs.h b/refs.h
index 5075073..bf96b36 100644
--- a/refs.h
+++ b/refs.h
@@ -337,6 +337,7 @@ int transaction_delete_ref(struct transaction *transaction,
 /*
  * Append a reflog entry for refname. If the REFLOG_TRUNCATE flag is set
  * this update will first truncate the reflog before writing the entry.
+ * If msg is NULL no update will be written to the log.
  */
 int transaction_update_reflog(struct transaction *transaction,
 			      const char *refname,
-- 
2.1.0.rc2.206.gedb03e5
Previous: Ronnie SahlbergNext: Ronnie Sahlberg
Message 10 of 16 in “ref-transactions-reflog”
  1. 00/15 ref-transactions-reflogRonnie Sahlberg, Nov 3, 2014
  2. 01/15 refs.c make ref_transaction_create a wrapper to ref_transaction_updateRonnie Sahlberg, Nov 3, 2014
  3. 02/15 refs.c: make ref_transaction_delete a wrapper for ref_transaction_updateRonnie Sahlberg, Nov 3, 2014
  4. 03/15 refs.c: rename the transaction functionsRonnie Sahlberg, Nov 3, 2014
  5. 04/15 refs.c: add a new update_type field to ref_updateRonnie Sahlberg, Nov 3, 2014
  6. 05/15 refs.c: add a function to append a reflog entry to a fdRonnie Sahlberg, Nov 3, 2014
  7. 06/15 copy.c: make copy_fd preserve meaningful errnoRonnie Sahlberg, Nov 3, 2014
  8. 07/15 refs.c: add a transaction function to append a reflog entryRonnie Sahlberg, Nov 3, 2014
  9. 08/15 refs.c: add a flag to allow reflog updates to truncate the logRonnie Sahlberg, Nov 3, 2014
  10. 09/15 refs.c: only write reflog update if msg is non-NULLRonnie Sahlberg, Nov 3, 2014
  11. 10/15 refs.c: allow multiple reflog updates during a single transactionRonnie Sahlberg, Nov 3, 2014
  12. 11/15 reflog.c: use a reflog transaction when writing during expireRonnie Sahlberg, Nov 3, 2014
  13. 12/15 refs.c: rename log_ref_setup to create_reflogRonnie Sahlberg, Nov 3, 2014
  14. 13/15 refs.c: make unlock_ref/close_ref/commit_ref staticRonnie Sahlberg, Nov 3, 2014
  15. 14/15 refs.c: remove lock_any_ref_for_updateRonnie Sahlberg, Nov 3, 2014
  16. 15/15 refs.c: allow deleting refs with a broken sha1Ronnie Sahlberg, Nov 3, 2014

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.