Git development
 help / color / mirror / Atom feed
* [PATCH] for-each-ref: Fix --format=%(subject) for log message without newlines
@ 2008-09-24 23:10 Johan Herland
  0 siblings, 0 replies; 2+ messages in thread
From: Johan Herland @ 2008-09-24 23:10 UTC (permalink / raw)
  To: git; +Cc: Shawn O. Pearce

'git for-each-ref --format=%(subject)' currently returns an empty string
if the log message does not contain a newline.

This patch teaches 'git for-each-ref' to return the entire log message
(instead of an empty string) if there is no newline in the log message.

Signed-off-by: Johan Herland <johan@herland.net>
---

Normally, log messages in git have trailing newlines. However, it seems the
"tag fixup commits" manufactured by cvs2svn/cvs2git (via git-fast-import)
have single-line log message without trailing newlines.

I have checked the other callers of copy_line(), and AFAICS they are not
affected by this change, since that would violate the git object format.


Have fun! :)

...Johan


 builtin-for-each-ref.c |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/builtin-for-each-ref.c b/builtin-for-each-ref.c
index 9b44092..e59bd80 100644
--- a/builtin-for-each-ref.c
+++ b/builtin-for-each-ref.c
@@ -321,8 +321,8 @@ static const char *find_wholine(const char *who, int wholen, const char *buf, un
 static const char *copy_line(const char *buf)
 {
 	const char *eol = strchr(buf, '\n');
-	if (!eol)
-		return "";
+	if (!eol) // simulate strchrnul()
+		eol = buf + strlen(buf);
 	return xmemdupz(buf, eol - buf);
 }
 
-- 
1.6.0.2.463.g7f0eb

^ permalink raw reply related	[flat|nested] 2+ messages in thread
* Re: [PATCH] for-each-ref: Fix --format=%(subject) for log message without newlines
@ 2008-09-27 22:08 Nanako Shiraishi
  0 siblings, 0 replies; 2+ messages in thread
From: Nanako Shiraishi @ 2008-09-27 22:08 UTC (permalink / raw)
  To: Johan Herland; +Cc: git, Shawn O. Pearce

Johan Herland <johan@herland.net> writes:

>  builtin-for-each-ref.c |    4 ++--
>  1 files changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/builtin-for-each-ref.c b/builtin-for-each-ref.c
> index 9b44092..e59bd80 100644
> --- a/builtin-for-each-ref.c
> +++ b/builtin-for-each-ref.c
> @@ -321,8 +321,8 @@ static const char *find_wholine(const char *who, int wholen, const char *buf, un
>  static const char *copy_line(const char *buf)
>  {
>  	const char *eol = strchr(buf, '\n');
> -	if (!eol)
> -		return "";
> +	if (!eol) // simulate strchrnul()
> +		eol = buf + strlen(buf);
>  	return xmemdupz(buf, eol - buf);
>  }

Why does this C++ style comment talk about "simulate"?

Don't other parts of git already use strchrnul()?

-- 
Nanako Shiraishi
http://ivory.ap.teacup.com/nanako3/

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2008-09-27 22:12 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-09-24 23:10 [PATCH] for-each-ref: Fix --format=%(subject) for log message without newlines Johan Herland
  -- strict thread matches above, loose matches on Subject: below --
2008-09-27 22:08 Nanako Shiraishi

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox