Thread (3 messages) flat view 3 messages, 2 authors, 2016-06-15
DORMANTno replies

[PATCH] for_each_reflog_ent: be forgiving about missing message

From: Johannes Schindelin <hidden>
Date: 2016-06-15 22:42:53
Subsystem: the rest · Maintainer: Linus Torvalds

Some reflogs are/were generated without a message; do not plainly
ignore those entries.

Signed-off-by: Johannes Schindelin <redacted>
---

	On Thu, 8 Feb 2007, Junio C Hamano wrote:

	> Johannes Schindelin [off-list ref] writes:
	> 
	> > On Thu, 8 Feb 2007, Jakub Narebski wrote:
	> >
	> >> StGIT used to produce no reflog messages; I don't know if 
	> >> this has improved. But you can have old reflog entries with 
	> >> empty messages; git log -g should deal with them IMHO.
	> >
	> > I just tried. An empty string is not enough. The tab before 
	> > the message has to be lacking, too.
	> >
	> > Here's a small patch, if you have to have it.
	> 
	> I think this is necessary for v1.5.0.  I'd appreciate a properly
	> signed-off log message.

	Voila!

 refs.c |    8 +++++---
 1 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/refs.c b/refs.c
index 7e07fc4..ba5bd2d 100644
--- a/refs.c
+++ b/refs.c
@@ -1189,12 +1189,14 @@ int for_each_reflog_ent(const char *ref, each_reflog_ent_fn fn, void *cb_data)
 		    !message || message[0] != ' ' ||
 		    (message[1] != '+' && message[1] != '-') ||
 		    !isdigit(message[2]) || !isdigit(message[3]) ||
-		    !isdigit(message[4]) || !isdigit(message[5]) ||
-		    message[6] != '\t')
+		    !isdigit(message[4]) || !isdigit(message[5]))
 			continue; /* corrupt? */
 		email_end[1] = '\0';
 		tz = strtol(message + 1, NULL, 10);
-		message += 7;
+		if (message[6] != '\t')
+			message += 6;
+		else
+			message += 7;
 		ret = fn(osha1, nsha1, buf+82, timestamp, tz, message, cb_data);
 		if (ret)
 			break;
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help