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

Re: [PATCH] blame: Improve parsing for emails with spaces

From
Jeff King <peff@peff.net>
Date
Apr 29, 2011, 13:11 UTC
Message-ID
<20110429131103.GB4540@sigill.intra.peff.net>
In-Reply-To
<1303423656-32002-1-git-send-email-jistone@redhat.com>
On Thu, Apr 21, 2011 at 03:07:36PM -0700, Josh Stone wrote:
> One of my git repositories has some old commits where the authors
> obfuscated their email address as <author at example dot com>.  To
> handle this, blame needs to look for the leading '<' when scanning
> to split the "name <email>", rather then only a space delimiter.

Hmm. That address seems bogus, and I wonder if we should be rejecting it at commit time. Still, it is something we may run across in existing repositories, so handling it more gracefully makes sense.

Show 13 quoted lines
> diff --git a/builtin/blame.c b/builtin/blame.c
> index f6b03f7..41525f1 100644
> --- a/builtin/blame.c
> +++ b/builtin/blame.c
> @@ -1377,7 +1377,7 @@ static void get_ac_line(const char *inbuf, const char *what,
>  	timepos = tmp;
>  
>  	*tmp = 0;
> -	while (person < tmp && *tmp != ' ')
> +	while (person < tmp && !(*tmp == ' ' && tmp[1] == '<'))
>  		tmp--;
>  	if (tmp <= person)
>  		return;

The fix looks fine. It's a little gross that we are parsing the commit headers ourselves here, as opposed to using some library function provided for commits. I think we could eliminate some code by using the parser in pretty.c, but it might need some refactoring to do so efficiently.

Looking over the other places we parse author info, I don't think the same problem exists elsewhere. Most other places parse from left to right, and just go to the closing ">".

-Peff
Previous: Josh StoneNext: Junio C Hamano
Message 2 of 6 in “blame: Improve parsing for emails with spaces”
  1. blame: Improve parsing for emails with spacesJosh Stone, Apr 21, 2011
  2. Jeff KingApr 29, 2011
  3. Junio C HamanoApr 29, 2011
  4. Junio C HamanoApr 29, 2011
  5. Josh StoneApr 29, 2011
  6. Jeff KingApr 29, 2011

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.