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

Re: [PATCH v3 5/7] convert: auto_crlf=false and no attributes set: same as binary

From
Junio C Hamano <gitster@pobox.com>
Date
Feb 9, 2016, 18:06 UTC
Message-ID
<xmqqh9hh4v2v.fsf@gitster.mtv.corp.google.com>
In-Reply-To
<56B9F90E.2030304@web.de>
Torsten Bögershausen <tboegi@web.de> writes:
Show 12 quoted lines
>>  * convert_attrs() has "If BINARY don't do anything and return".
>>    Will the patch change behaviour for the "not-autocrlf,
>>    CRLF_GUESS" case in this codepath?  I think ca->crlf_action used
>>    to be left as CRLF_GUESS here before the patch, and now by the
>>    time the control flow reaches here it is already CRLF_BINARY.
>>    Would it affect the callers, and if so how?
> Not sure if I fully understand the question:
>
> The old CRLF_GUESS could mean (a) core.autocrlf=true,
> (b) core.autocrlf=input or (c) core.autocrlf=false.
> The callers had to look at the core.autocrlf them self.
> This patch removes (c), the next (or over next) (a) and (b)
That part I understand and fully agree.

If a function that appears much later in the control flow depends on seeing CRLF_GUESS to do certain things, and showing CRLF_BINARY to the code would make it behave differently, that would make this patch incorrect.

That is, if some function that you did not touch (hence did not appear in the context of this patch) did this:

	if (CRLF_GUESS)
        	do the "guess thing"
	else if (CRLF_BINARY)
        	do the "binary thing"
	else
        	do other things

then depending on how 'guess thing' and 'binary thing' work differently, this patch would change the outcome. If the "guess thing" had

		if (!AUTOCRLF) goto "binary thing"
upfront, then it obviously is OK, though ;-)
If the _ONLY_ way all the code that use CRLF_GUESS is
	if ((CRLF_GUESS && !AUTOCRLF) || CRLF_BINARY)
        	do the "binary thing"

then the conversion done by the patch is perfectly fine. It was unclear from the patch text and the proposed log message if you made sure that is the case. And with your response, it still isn't clear to me.

Previous: Torsten BögershausenNext: tboegi@web.de
Message 32 of 47 in “t0027: Add tests for get_stream_filter()”
  1. t0027: Add tests for get_stream_filter()tboegi@web.de, Jan 24, 2016
  2. Junio C HamanoJan 27, 2016
  3. Torsten BögershausenJan 27, 2016
  4. 1/6 t0027: Add tests for get_stream_filter()tboegi@web.de, Jan 27, 2016
  5. 1/6 t0027: Add tests for get_stream_filter()tboegi@web.de, Feb 2, 2016
  6. Junio C HamanoFeb 2, 2016
  7. 2/6 convert.c: Remove path when not neededtboegi@web.de, Feb 2, 2016
  8. Junio C HamanoFeb 2, 2016
  9. 3/6 convert.c: Remove input_crlf_action()tboegi@web.de, Feb 2, 2016
  10. Junio C HamanoFeb 2, 2016
  11. 4/6 convert.c: Use text_eol_is_crlf()tboegi@web.de, Feb 2, 2016
  12. 5/6 convert: auto_crlf=false and no attributes set: same as binarytboegi@web.de, Feb 2, 2016
  13. 6/6 convert.c: Refactor crlf_actiontboegi@web.de, Feb 2, 2016
  14. 1/7 t0027: Add tests for get_stream_filter()tboegi@web.de, Feb 4, 2016
  15. Junio C HamanoFeb 4, 2016
  16. 2/7 convert.c: remove unused parameter 'path'tboegi@web.de, Feb 4, 2016
  17. 3/7 convert.c: Remove input_crlf_action()tboegi@web.de, Feb 4, 2016
  18. 4/7 convert.c: Use text_eol_is_crlf()tboegi@web.de, Feb 4, 2016
  19. Junio C HamanoFeb 4, 2016
  20. 5/7 convert: auto_crlf=false and no attributes set: same as binarytboegi@web.de, Feb 4, 2016
  21. 6/7 convert.c: Refactor crlf_actiontboegi@web.de, Feb 4, 2016
  22. 7/7 convert.c: simplify text_stattboegi@web.de, Feb 4, 2016
  23. Junio C HamanoFeb 4, 2016
  24. 1/7 t0027: Add tests for get_stream_filter()tboegi@web.de, Feb 5, 2016
  25. Junio C HamanoFeb 8, 2016
  26. 2/7 convert.c: remove unused parameter 'path'tboegi@web.de, Feb 5, 2016
  27. 3/7 convert.c: Remove input_crlf_action()tboegi@web.de, Feb 5, 2016
  28. 4/7 convert.c: use text_eol_is_crlf()tboegi@web.de, Feb 5, 2016
  29. 5/7 convert: auto_crlf=false and no attributes set: same as binarytboegi@web.de, Feb 5, 2016
  30. Junio C HamanoFeb 8, 2016
  31. Torsten BögershausenFeb 9, 2016
  32. Junio C HamanoFeb 9, 2016
  33. 6/7 convert.c: refactor crlf_actiontboegi@web.de, Feb 5, 2016
  34. 7/7 convert.c: simplify text_stattboegi@web.de, Feb 5, 2016
  35. 1/6 t0027: add tests for get_stream_filter()tboegi@web.de, Feb 10, 2016
  36. 2/6 convert.c: remove unused parameter 'path'tboegi@web.de, Feb 10, 2016
  37. 3/6 convert.c: remove input_crlf_action()tboegi@web.de, Feb 10, 2016
  38. 4/6 convert.c: use text_eol_is_crlf()tboegi@web.de, Feb 10, 2016
  39. 5/6 convert.c: refactor crlf_actiontboegi@web.de, Feb 10, 2016
  40. 6/6 convert.c: simplify text_stattboegi@web.de, Feb 10, 2016
  41. 1/1 convert.c: correct attr_actiontboegi@web.de, Feb 22, 2016
  42. Eric SunshineFeb 22, 2016
  43. Junio C HamanoFeb 22, 2016
  44. Junio C HamanoFeb 22, 2016
  45. Torsten BögershausenFeb 23, 2016
  46. 1/1 convert.c: correct attr_actiontboegi@web.de, Feb 23, 2016
  47. Junio C HamanoFeb 23, 2016

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.