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

Re: git fails with control characters in trunk directory name

From
HMHugo Mildenberger <hugo.mildenberger@namir.de>
Date
May 12, 2009, 13:57 UTC
Message-ID
<200905121557.18542.Hugo.Mildenberger@namir.de>
In-Reply-To
<81b0412b0905120354p6e1bf517y154601132f0901a3@mail.gmail.com>
Show 13 quoted lines
> OTOH, a warning about commonly used delimiters not fitting a name
> context, maybe a good idea. Like "\r\n\t", backslash (came up recently
> on this list). Such a check and associated warning may be useful for
> repository names and branches.
>
> Still, it's more of a policy issue and I would make it optional, even
> if enabled by default. Maybe even by defining a regexp which the
> repo name or branch name must (for hard error) or should (for a warning)
> match.
>
> For your specific case, you can take a look at builtin-clone.c,
> just after the line containing "guess_dir_name(repo_name"...
> --

But at least the git versions I tried (up to 1.6.3) really do have a problem when facing a trailing newline in repository names; so one should enforce a convention. Although the situation here is certainly a far-flung, uncommon one, it could also happen when git was called from scripts.

I looked into guess_dir_name(). A regex call would be easy to fit, but currently the git binary does not depend on libpcre. Is it generally considered to be acceptable to add such a dependency?

While I like the idea to make use of a configurable regular expression, such an expression had to be a command line parameter with a reasonable default value, because .git/config still would not exist when the value would be needed.

Last not least, I managed to reproduce the problem almost exactly:
1.) hm@localhost git 
clone "git://git.kernel.org/pub/scm/linux/kernel/git/holtmann/bluetooth-testing.git
"  
	(Note the trailing linefeed)
2.) hm@localhost ~/tmp/bluetooth-testing.git $ make
	Makefile:313: /home/hm/tmp/bluetooth-testing.git
	/scripts/Kbuild.include: No such file or directory
	make[1]: /home/hm/tmp/bluetooth-testing.git: No such file or directory
	make[1]: *** No rule to make target `/home/hm/tmp/bluetooth-testing.git'.
	Stop.
	make: *** No rule to make target `include/config/auto.conf', needed by
	`include/config/kernel.release'.  Stop.
3.) hm@localhost ~/tmp/bluetooth-testing.git $ git pull
	fatal: Error in line 2:
4.) ".git/config" now contains

url = git://git.kernel.org/pub/scm/linux/kernel/git/holtmann/bluetooth-testing.git\n

I particulary liked the git message "fatal: Error in line 2:" ... 

grep says, it would stem from builtin-fmt-merge-msg.c/fmt_merge_msg(): 270 /* get a line */ 271 while (pos < in->len) { 272 int len; 273 char *newline, *p = in->buf + pos; 274 275 newline = strchr(p, '\n'); 276 len = newline ? newline - p : strlen(p); 277 pos += len + !!newline; 278 i++; 279 p[len] = 0; 280 if (handle_line(p)) 281 die ("Error in line %d: %.*s", i, len, p); 282 }

Previous: Alex RiesenNext: Alex Riesen
Message 5 of 30 in “git fails with control characters in trunk directory name”
  1. Hugo MildenbergerMay 11, 2009
  2. Alex RiesenMay 12, 2009
  3. Hugo MildenbergerMay 12, 2009
  4. Alex RiesenMay 12, 2009
  5. Hugo MildenbergerMay 12, 2009
  6. Alex RiesenMay 12, 2009
  7. Hugo MildenbergerMay 12, 2009
  8. Alex RiesenMay 12, 2009
  9. Quote LF in urls git fetch saves in FETCH_HEADAlex Riesen, May 12, 2009
  10. Junio C HamanoMay 12, 2009
  11. Alex RiesenMay 13, 2009
  12. Hugo MildenbergerMay 13, 2009
  13. Daniel BarkalowMay 13, 2009
  14. Alex RiesenMay 13, 2009
  15. Alex RiesenMay 13, 2009
  16. Daniel BarkalowMay 13, 2009
  17. Alex RiesenMay 13, 2009
  18. Junio C HamanoMay 13, 2009
  19. 1/2 Quote LF in urls git fetch saves in FETCH_HEADAlex Riesen, May 13, 2009
  20. 2/2 Improve the naming of guessed target repository for git cloneAlex Riesen, May 13, 2009
  21. Junio C HamanoMay 14, 2009
  22. Alex RiesenMay 14, 2009
  23. Junio C HamanoMay 14, 2009
  24. Alex RiesenMay 14, 2009
  25. Hugo MildenbergerMay 14, 2009
  26. Alex RiesenMay 14, 2009
  27. Junio C HamanoMay 16, 2009
  28. Alex RiesenMay 12, 2009
  29. Alex RiesenMay 13, 2009
  30. Hugo MildenbergerMay 13, 2009

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.