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

Re: Branch Name Case Sensitivity

From
Junio C Hamano <gitster@pobox.com>
Date
Mar 3, 2014, 17:51 UTC
Message-ID
<xmqqsiqzrwzr.fsf@gitster.dls.corp.google.com>
In-Reply-To
<CAJHY66EP539ZsLJcmHcnRQcOqcLqXK-M45wME9DkKkqmumg8fA@mail.gmail.com>
Lee Hopkins <leerhop@gmail.com> writes:
Show 12 quoted lines
> I went ahead and took a stab at a solution. My solution is more
> aggressive than a warning, I actually prevent the creation of
> ambiguous refs. My changes are also in refs.c, which may not be
> appropriate, but it seemed like the natural place.
>
> I have never contributed to Git (in fact this is my first dive into
> the source) and my C is a bit rusty, so bear with me, this is just a
> suggestion:
>
> ---
>  refs.c |   31 ++++++++++++++++++++++++-------
>  1 files changed, 24 insertions(+), 7 deletions(-)

Starting something like this from forbidding is likely to turn out to be a very bad idea that can break existing repositories.

A new configuration
	refs.caseInsensitive = {warn|error|allow}

that defaults to "warn" and the user can choose to set to "error" to forbid, would be more palatable, I would say.

If the variable is not in 'core.' namespace, you should implement this check at the Porcelain level, allowing lower-level tools like update-ref as an escape hatch that let users bypass the restriction to be used to correct breakages; it would mean an unconditional "if !stricmp(), it is an error" in refs.c will not work well.

I think it might be OK to have
	core.allowCaseInsentitiveRefs = {yes|no|warn}

which defaults to 'warn' (and 'yes' corresponds to 'allow', 'no' corresponds to 'error', in the previous suggestion), instead. If we wanted to prevent even lower-level tools like update-ref from bypassing the check, that is.

Previous: Lee HopkinsNext: Karsten Blees
Message 19 of 27 in “Branch Name Case Sensitivity”
  1. Lee HopkinsFeb 26, 2014
  2. Junio C HamanoFeb 27, 2014
  3. Torsten BögershausenFeb 27, 2014
  4. Lee HopkinsFeb 27, 2014
  5. Michael HaggertyFeb 27, 2014
  6. Karsten BleesFeb 27, 2014
  7. Lee HopkinsFeb 27, 2014
  8. Johannes SixtFeb 28, 2014
  9. Karsten BleesFeb 28, 2014
  10. Lee HopkinsFeb 28, 2014
  11. Junio C HamanoFeb 28, 2014
  12. Duy NguyenFeb 28, 2014
  13. Junio C HamanoFeb 28, 2014
  14. Lee HopkinsMar 1, 2014
  15. Torsten BögershausenMar 1, 2014
  16. Lee HopkinsMar 1, 2014
  17. Karsten BleesMar 3, 2014
  18. Lee HopkinsMar 3, 2014
  19. Junio C HamanoMar 3, 2014
  20. Karsten BleesMar 4, 2014
  21. Torsten BögershausenMar 4, 2014
  22. Lee HopkinsMar 5, 2014
  23. Michael HaggertyFeb 28, 2014
  24. Duy NguyenFeb 28, 2014
  25. Michael HaggertyFeb 28, 2014
  26. Stephen LeakeFeb 28, 2014
  27. Michael HaggertyFeb 28, 2014

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.