threads / discuss / 30929

Apostrophe at the end of author name

Subject: Apostrophe at the end of author name

## tl;dr

8 messages between Jun 29, 2012 and Jun 29, 2012.

replies: 7people: 5as markdown or json

Kacper Kornet· Jun 29, 2012, 12:41 UTC · lore

I try to import some repositories into git and one of the developers has asked his name to be presented as: Name 'Nick' <email>. However git commit --author="Name 'Nick' <email>" strips the last apostrophe and produces a commit authored by: Name 'Nick <email>.

Maybe the function strbuf_addstr_without_crud in ident.c should strip the trailing apostrophe only when it removed it also from the beginning of the string?

-- 
  Kacper
Robin H. Johnson· Jun 29, 2012, 17:05 UTC · re: Kacper Kornet · lore

Re: Apostrophe at the end of author name

On Fri, Jun 29, 2012 at 02:41:22PM +0200,  Kacper Kornet wrote:
Show 8 quoted lines
> I try to import some repositories into git and one of the developers has
> asked his name to be presented as: Name 'Nick' <email>.
> However git commit --author="Name 'Nick' <email>" strips the last
> apostrophe and produces a commit authored by: Name 'Nick <email>.
> 
> Maybe the function  strbuf_addstr_without_crud in ident.c should strip
> the trailing apostrophe only when it removed it also from the beginning
> of the string?

Which version of Git? And is it being stripped by git, or one of the import tools?

-- 
Robin Hugh Johnson
Gentoo Linux: Developer, Trustee & Infrastructure Lead
E-Mail     : robbat2@gentoo.org
GnuPG FP   : 11ACBA4F 4778E3F6 E4EDF38E B27B944E 34884E85
Jeff King· Jun 29, 2012, 17:43 UTC · re: Robin H. Johnson · lore

Re: Apostrophe at the end of author name

On Fri, Jun 29, 2012 at 05:05:31PM +0000, Robin H. Johnson wrote:
Show 11 quoted lines
> On Fri, Jun 29, 2012 at 02:41:22PM +0200,  Kacper Kornet wrote:
> > I try to import some repositories into git and one of the developers has
> > asked his name to be presented as: Name 'Nick' <email>.
> > However git commit --author="Name 'Nick' <email>" strips the last
> > apostrophe and produces a commit authored by: Name 'Nick <email>.
> > 
> > Maybe the function  strbuf_addstr_without_crud in ident.c should strip
> > the trailing apostrophe only when it removed it also from the beginning
> > of the string?
> Which version of Git? And is it being stripped by git, or one of the
> import tools?

I'm sure it's the most recent one, as strbuf_addstr_without_crud was only added recently (but it is a refactoring of older code which should have the same behavior). We had a similar complaint recently that "A.B.C. <abc@example.com>" has its trailing dot stripped, even though the internal ones are retained.

Those stripping rules date back to very early versions of git to try to clean up cruft from gecos or other unreliable sources. I wonder if we are better off being a bit more liberal.

-Peff
Kacper Kornet· Jun 29, 2012, 18:17 UTC · re: Jeff King · lore

Re: Apostrophe at the end of author name

On Fri, Jun 29, 2012 at 01:43:58PM -0400, Jeff King wrote:
> On Fri, Jun 29, 2012 at 05:05:31PM +0000, Robin H. Johnson wrote:
Show 5 quoted lines
> > On Fri, Jun 29, 2012 at 02:41:22PM +0200,  Kacper Kornet wrote:
> > > I try to import some repositories into git and one of the developers has
> > > asked his name to be presented as: Name 'Nick' <email>.
> > > However git commit --author="Name 'Nick' <email>" strips the last
> > > apostrophe and produces a commit authored by: Name 'Nick <email>.
Show 5 quoted lines
> > > Maybe the function  strbuf_addstr_without_crud in ident.c should strip
> > > the trailing apostrophe only when it removed it also from the beginning
> > > of the string?
> > Which version of Git? And is it being stripped by git, or one of the
> > import tools?
> I'm sure it's the most recent one,
Yes, it is 1.7.11
>  as strbuf_addstr_without_crud was
> only added recently (but it is a refactoring of older code which should
> have the same behavior).

It depends what you call recently. It was refactored in July 2005 (commit: 6aa33f4035d5). But it looks like the previous code (before refactoring) removed only comma, dot and semicolon from the end of the author name.

-- 
  Kacper
Jeff King· Jun 29, 2012, 18:29 UTC · re: Kacper Kornet · lore

Re: Apostrophe at the end of author name

On Fri, Jun 29, 2012 at 08:17:01PM +0200, Kacper Kornet wrote:
Show 8 quoted lines
> >  as strbuf_addstr_without_crud was
> > only added recently (but it is a refactoring of older code which should
> > have the same behavior).
> 
> It depends what you call recently. It was refactored in July 2005
> (commit: 6aa33f4035d5). But it looks like the previous code (before
> refactoring) removed only comma, dot and semicolon from the end of the
> author name.

I meant the name strbuf_addstr_without_crud did not exist until I added it in c96f0c8, about a month ago. But yes, the functionality of the code has been there since the very early days.

I'm tempting by the patch below, which would remove only the syntactically significant meta-characters ("\n", "<", and ">"), as well as trimming any stray whitespace at the edges. The problem is that we don't really have a clue how many people were relying on this trimming to clean up their names or emails, so there may be regressions for other people.

diff --git a/ident.c b/ident.c
index 443c075..4552f8d 100644
--- a/ident.c
+++ b/ident.c
@@ -127,15 +127,8 @@ const char *ident_default_date(void)
 static int crud(unsigned char c)
 {
 	return  c <= 32  ||
-		c == '.' ||
-		c == ',' ||
-		c == ':' ||
-		c == ';' ||
 		c == '<' ||
-		c == '>' ||
-		c == '"' ||
-		c == '\\' ||
-		c == '\'';
+		c == '>';
 }
 
 /*
Junio C Hamano· Jun 29, 2012, 19:04 UTC · re: Jeff King · lore

Re: Apostrophe at the end of author name

Jeff King <peff@peff.net> writes:
Show 6 quoted lines
> I'm tempting by the patch below, which would remove only the
> syntactically significant meta-characters ("\n", "<", and ">"), as well
> as trimming any stray whitespace at the edges. The problem is that we
> don't really have a clue how many people were relying on this trimming
> to clean up their names or emails, so there may be regressions for other
> people.

What do you exactly mean by "syntactically significant"? In other words, "whose syntax"?

The code with the patch will leave "." out of the crud, so with
	spearce:*:1000:1000:Shawn O. Pearce:/home/spearce:/bin/sh
we would get:
	From: Shawn O. Pearce <spearce@spearce.org>

without dropping the "." in the name. Your MTA would likely to reject it.

I think that quoting "syntactically significant meta-characters" in the context of e-mail headers is a job for the MSA, and the human readable names in GIT_AUTHOR_NAME should allow any reasonable character. And I agree that it is a sane definition of "reasonable" to exclude "\n", "<", and ">" (and nothing else), as they are the only "syntactically significant" in the context of commit object header.

The patch goes in the right direction in that sense, but you need to make sure that git-send-email and git-imap-send (the only two MSA we ship) do the right thing when fed names with ".", dq, etc. first.

Show 25 quoted lines
> diff --git a/ident.c b/ident.c
> index 443c075..4552f8d 100644
> --- a/ident.c
> +++ b/ident.c
> @@ -127,15 +127,8 @@ const char *ident_default_date(void)
>  static int crud(unsigned char c)
>  {
>  	return  c <= 32  ||
> -		c == '.' ||
> -		c == ',' ||
> -		c == ':' ||
> -		c == ';' ||
>  		c == '<' ||
> -		c == '>' ||
> -		c == '"' ||
> -		c == '\\' ||
> -		c == '\'';
> +		c == '>';
>  }
>  
>  /*
> --
> To unsubscribe from this list: send the line "unsubscribe git" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
Jeff King· Jun 29, 2012, 19:35 UTC · re: Junio C Hamano · lore

Re: Apostrophe at the end of author name

On Fri, Jun 29, 2012 at 12:04:18PM -0700, Junio C Hamano wrote:
Show 11 quoted lines
> Jeff King <peff@peff.net> writes:
> 
> > I'm tempting by the patch below, which would remove only the
> > syntactically significant meta-characters ("\n", "<", and ">"), as well
> > as trimming any stray whitespace at the edges. The problem is that we
> > don't really have a clue how many people were relying on this trimming
> > to clean up their names or emails, so there may be regressions for other
> > people.
> 
> What do you exactly mean by "syntactically significant"?  In other
> words, "whose syntax"?

I meant syntactically significant to git's ident lines. I.e., "<", ">", and "\n". If the identities are going to be put somewhere else with different syntax (e.g., an rfc822 header), then they would obviously need to be quoted (and that is no different than the current state), but that should happen elsewhere.

Show 10 quoted lines
> The code with the patch will leave "." out of the crud, so with
> 
> 	spearce:*:1000:1000:Shawn O. Pearce:/home/spearce:/bin/sh
> 
> we would get:
> 
> 	From: Shawn O. Pearce <spearce@spearce.org>
> 
> without dropping the "." in the name.  Your MTA would likely to
> reject it.

But that is already the case. The crud() function is checked only for the beginning and end of each item. Which is why you get senseless outcomes like "A.B.C." turning into "A.B.C". AFAICT, the motivation for most items in the crud function is purely about "this is junk that we might find in a gecos field and should be stripped to make the name prettier". I.e., they are heuristics, and we now have two reports of those heuristics being wrong.

My concern is that those heuristics are sometimes _right_, and are helping people. But we don't know how often, and I suspect there is no way to know without changing it and waiting for people to scream, which does not excite me.

The only example I could come up with by thinking is that we probably _do_ want to strip a trailing dot from an email address (e.g., some people will express a hostname as "example.com." to indicate that it is fully qualified, but it is typically omitted from an email address). Handling that would involve splitting the heuristics for names and emails.

Show 11 quoted lines
> I think that quoting "syntactically significant meta-characters" in
> the context of e-mail headers is a job for the MSA, and the human
> readable names in GIT_AUTHOR_NAME should allow any reasonable
> character.  And I agree that it is a sane definition of "reasonable"
> to exclude "\n", "<", and ">" (and nothing else), as they are the
> only "syntactically significant" in the context of commit object
> header.
> 
> The patch goes in the right direction in that sense, but you need to
> make sure that git-send-email and git-imap-send (the only two MSA we
> ship) do the right thing when fed names with ".", dq, etc. first.

Actually, it is format-patch where the quoting should go, as it is the thing that puts the ident in the rfc822 header. And indeed, it already does so (as it must, because we _do_ allow "." as in "Shawn O. Pearce", and have always done so).

-Peff
Kacper Kornet· Jun 29, 2012, 19:59 UTC · re: Jeff King · lore

Re: Apostrophe at the end of author name

On Fri, Jun 29, 2012 at 02:29:44PM -0400, Jeff King wrote:
> On Fri, Jun 29, 2012 at 08:17:01PM +0200, Kacper Kornet wrote:
> > >  as strbuf_addstr_without_crud was
> > > only added recently (but it is a refactoring of older code which should
> > > have the same behavior).
> > It depends what you call recently. It was refactored in July 2005
> > (commit: 6aa33f4035d5). But it looks like the previous code (before
> > refactoring) removed only comma, dot and semicolon from the end of the
> > author name.
> I meant the name strbuf_addstr_without_crud did not exist until I added
> it in c96f0c8, about a month ago. But yes, the functionality of the code
> has been there since the very early days.
Show 6 quoted lines
> I'm tempting by the patch below, which would remove only the
> syntactically significant meta-characters ("\n", "<", and ">"), as well
> as trimming any stray whitespace at the edges. The problem is that we
> don't really have a clue how many people were relying on this trimming
> to clean up their names or emails, so there may be regressions for other
> people.
So maybe the option to enable/disable the old behaviour should be added.
-- 
  Kacper

← back to recent threads