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

Re: [BUG] You can't have single quote in your username

From
Pratyush Yadav <me@yadavpratyush.com>
Date
Aug 22, 2019, 15:06 UTC
Message-ID
<20190822150614.o25g37pwfcaos2zn@localhost.localdomain>
In-Reply-To
<CAGV3M55WAQOAOiZPPgR+6p2EVzakrbz1gYAMh-BqxCVDeLCq9w@mail.gmail.com>
On 22/08/19 02:32PM, Giuseppe Crinò wrote:
Show 55 quoted lines
> Note how `git log` discards the ending quote character:
> ```
> root@NBR1710R:~# git init repo
> Initialized empty Git repository in /root/repo/.git/
> root@NBR1710R:~# cd repo/
> root@NBR1710R:~/repo# git config user.name Les Actualite\'
> root@NBR1710R:~/repo# cat .git/config
> [core]
>         repositoryformatversion = 0
>         filemode = true
>         bare = false
>         logallrefupdates = true
> [user]
>         name = Les
> root@NBR1710R:~/repo# git config user.name "Les Actualite\'"
> root@NBR1710R:~/repo# cat .git/config
> [core]
>         repositoryformatversion = 0
>         filemode = true
>         bare = false
>         logallrefupdates = true
> [user]
>         name = Les Actualite\\'
> root@NBR1710R:~/repo# touch foo
> root@NBR1710R:~/repo# git add foo
> root@NBR1710R:~/repo# git commit -m 'first'
> [master (root-commit) a78e11f] first
>  Committer: Les Actualite <root@NBR1710R>
> Your name and email address were configured automatically based
> on your username and hostname. Please check that they are accurate.
> You can suppress this message by setting them explicitly. Run the
> following command and follow the instructions in your editor to edit
> your configuration file:
> 
>     git config --global --edit
> 
> After doing this, you may fix the identity used for this commit with:
> 
>     git commit --amend --reset-author
> 
>  1 file changed, 0 insertions(+), 0 deletions(-)
>  create mode 100644 foo
> root@NBR1710R:~/repo# git log
> commit a78e11ff0707bd4f1bea195735a7fc8b7ee2b9f8 (HEAD -> master)
> Author: Les Actualite <root@NBR1710R>
> Date:   Thu Aug 22 14:25:11 2019 +0200
> 
>     first
> ```
> 
> I can't test with the development tree right now,
> ```
> root@NBR1710R:~/repo# git --version
> git version 2.17.1
> ```
Hi,

I took a quick look into this problem. The issue is not with git log, but instead with git commit. When you commit, builtin/commit.c::author_info() calls ident.c::fmt_ident(), which in turn calls ident.c::strbuf_addstr_without_crud(), which in turn calls ident.c::crud().

This strbuf_addstr_without_crud() function removes various characters from the start and end of the author info, one of which is the single quotation. I'm not sure why this is done, the more experienced folk where will have the answer.

Anyway, the fix is simple enough. Remove the lines that mark single quotes as crud in the crud() function. This will fix the issue for the future commits. If you need to fix it for past commits, you need to re-write your history with the fix applied.

Below is the quick-and-dirty patch that fixes this. If there is no reason for this patch to be dropped, I'll send a proper one once some other people have commented.

-- >8 --
diff --git a/ident.c b/ident.c
index e666ee4e59..63cc5e32d3 100644
--- a/ident.c
+++ b/ident.c
@@ -204,9 +204,7 @@ static int crud(unsigned char c)
 		c == ';' ||
 		c == '<' ||
 		c == '>' ||
-		c == '"' ||
-		c == '\\' ||
-		c == '\'';
+		c == '"';
 }
 
 static int has_non_crud(const char *str)
-- 
Regards,
Pratyush Yadav
Previous: Giuseppe CrinòNext: Junio C Hamano
Message 2 of 26 in “[BUG] You can't have single quote in your username”
  1. Giuseppe CrinòAug 22, 2019
  2. Pratyush YadavAug 22, 2019
  3. Junio C HamanoAug 22, 2019
  4. Giuseppe CrinòAug 23, 2019
  5. Michal SuchánekAug 23, 2019
  6. René ScharfeAug 22, 2019
  7. Bryan TurnerAug 22, 2019
  8. Emily ShafferAug 22, 2019
  9. Pratyush YadavAug 22, 2019
  10. SZEDER GáborAug 23, 2019
  11. Giuseppe CrinòAug 23, 2019
  12. SZEDER GáborAug 23, 2019
  13. Giuseppe CrinòAug 24, 2019
  14. Giuseppe CrinòAug 25, 2019
  15. Jeff KingAug 26, 2019
  16. Giuseppe Crino'Aug 27, 2019
  17. Michal SuchánekAug 27, 2019
  18. Giuseppe Crino'Aug 28, 2019
  19. Jeff KingAug 28, 2019
  20. Giuseppe CrinòAug 31, 2019
  21. Jeff KingSep 2, 2019
  22. Junio C HamanoSep 2, 2019
  23. Michal SuchánekSep 2, 2019
  24. Giuseppe CrinòSep 3, 2019
  25. Michal SuchánekSep 3, 2019
  26. SZEDER GáborAug 23, 2019

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.