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

Re: [PATCH v2 06/27] update_refs(): Fix constness

From
Junio C Hamano <gitster@pobox.com>
Date
Mar 31, 2014, 22:38 UTC
Message-ID
<xmqq38hy2dtx.fsf@gitster.dls.corp.google.com>
In-Reply-To
<5339E948.4090109@alum.mit.edu>
Michael Haggerty <mhagger@alum.mit.edu> writes:
Show 28 quoted lines
> On 03/31/2014 11:40 PM, Junio C Hamano wrote:
>> Michael Haggerty <mhagger@alum.mit.edu> writes:
>> 
>>> Since full const correctness is beyond the ability of C's type system,
>>> just put the const where it doesn't do any harm.  A (struct ref_update
>>> **) can be passed to a (struct ref_update * const *) argument, but not
>>> to a (const struct ref_update **) argument.
>> 
>> Sounds good, but next time please try not to break lines inside a
>> single typename, which is somewhat unreadable ;-)
>> 
>> I'd suggest rewording "s/Fix/tighten/".  Because a patch that
>> changes constness can loosen constness to make things more correct,
>> "git shortlog" output that says if it is tightening or loosening
>> would be more informative than the one that says that it is "fixing".
>
> It is not a strict tightening, because I add a "const" in one place but
> remove it from another:
>
>     const struct ref_update **
>
> becomes
>
>     struct ref_update * const *
>
> in the update_refs() signature.  In fact, the old declaration was too
> strict for some changes later in the patch series, which is why I needed
> to loosen (one aspect) of it.

Interesting. Then that _is_ a fix. Thanks for explaining it to me. As always, I would prefer it be explained to the proposed commit log, not to me over an e-mail ;-)

Previous: Michael HaggertyNext: Michael Haggerty
Message 15 of 65 in “Clean up update-refs --stdin and implement ref_transaction”
  1. 00/27 Clean up update-refs --stdin and implement ref_transactionMichael Haggerty, Mar 24, 2014
  2. 01/27 t1400: Fix name and expected result of one testMichael Haggerty, Mar 24, 2014
  3. Junio C HamanoMar 31, 2014
  4. Michael HaggertyMar 31, 2014
  5. 02/27 t1400: Provide more usual input to the commandMichael Haggerty, Mar 24, 2014
  6. Junio C HamanoMar 31, 2014
  7. 03/27 parse_arg(): Really test that argument is properly terminatedMichael Haggerty, Mar 24, 2014
  8. Junio C HamanoMar 31, 2014
  9. Michael HaggertyMar 31, 2014
  10. 04/27 t1400: Add some more tests involving quoted argumentsMichael Haggerty, Mar 24, 2014
  11. 05/27 refs.h: Rename the action_on_err constantsMichael Haggerty, Mar 24, 2014
  12. 06/27 update_refs(): Fix constnessMichael Haggerty, Mar 24, 2014
  13. Junio C HamanoMar 31, 2014
  14. Michael HaggertyMar 31, 2014
  15. Junio C HamanoMar 31, 2014
  16. 07/27 update-ref --stdin: Read the whole input at onceMichael Haggerty, Mar 24, 2014
  17. 08/27 parse_cmd_verify(): Copy old_sha1 instead of evaluating <oldvalue> twiceMichael Haggerty, Mar 24, 2014
  18. 09/27 update-ref.c: Extract a new function, parse_refname()Michael Haggerty, Mar 24, 2014
  19. 10/27 update-ref --stdin: Improve error messages for invalid valuesMichael Haggerty, Mar 24, 2014
  20. 11/27 update-ref --stdin: Make error messages more consistentMichael Haggerty, Mar 24, 2014
  21. 12/27 update-ref --stdin: Simplify error messages for missing oldvaluesMichael Haggerty, Mar 24, 2014
  22. 13/27 t1400: Test that stdin -z update treats empty <newvalue> as zerosMichael Haggerty, Mar 24, 2014
  23. Junio C HamanoMar 31, 2014
  24. Michael HaggertyMar 31, 2014
  25. 14/27 update-ref.c: Extract a new function, parse_next_sha1()Michael Haggerty, Mar 24, 2014
  26. Brad KingMar 26, 2014
  27. 15/27 update-ref --stdin -z: Deprecate interpreting the empty string as zerosMichael Haggerty, Mar 24, 2014
  28. Junio C HamanoMar 31, 2014
  29. 16/27 t1400: Test one mistake at a timeMichael Haggerty, Mar 24, 2014
  30. Brad KingMar 26, 2014
  31. Junio C HamanoMar 31, 2014
  32. Michael HaggertyMar 31, 2014
  33. 17/27 update-ref --stdin: Improve the error message for unexpected EOFMichael Haggerty, Mar 24, 2014
  34. 18/27 update-ref --stdin: Harmonize error messagesMichael Haggerty, Mar 24, 2014
  35. Junio C HamanoMar 31, 2014
  36. Michael HaggertyMar 31, 2014
  37. Michael HaggertyApr 1, 2014
  38. Junio C HamanoApr 2, 2014
  39. 19/27 refs: Add a concept of a reference transactionMichael Haggerty, Mar 24, 2014
  40. Brad KingMar 26, 2014
  41. Michael HaggertyMar 26, 2014
  42. Junio C HamanoApr 1, 2014
  43. Michael HaggertyApr 2, 2014
  44. 20/27 update-ref --stdin: Reimplement using reference transactionsMichael Haggerty, Mar 24, 2014
  45. Junio C HamanoApr 1, 2014
  46. Michael HaggertyApr 2, 2014
  47. Junio C HamanoApr 3, 2014
  48. Michael HaggertyApr 4, 2014
  49. 21/27 refs: Remove API function update_refs()Michael Haggerty, Mar 24, 2014
  50. Junio C HamanoApr 1, 2014
  51. 22/27 struct ref_update: Rename field "ref_name" to "refname"Michael Haggerty, Mar 24, 2014
  52. Junio C HamanoApr 1, 2014
  53. Michael HaggertyApr 2, 2014
  54. 23/27 struct ref_update: Store refname as a FLEX_ARRAY.Michael Haggerty, Mar 24, 2014
  55. Junio C HamanoApr 1, 2014
  56. 24/27 ref_transaction_commit(): Introduce temporary variablesMichael Haggerty, Mar 24, 2014
  57. Junio C HamanoApr 1, 2014
  58. 25/27 struct ref_update: Add a lock memberMichael Haggerty, Mar 24, 2014
  59. 26/27 struct ref_update: Add type fieldMichael Haggerty, Mar 24, 2014
  60. Junio C HamanoApr 1, 2014
  61. Michael HaggertyApr 2, 2014
  62. Junio C HamanoApr 2, 2014
  63. 27/27 ref_transaction_commit(): Work with transaction->updates in placeMichael Haggerty, Mar 24, 2014
  64. Brad KingMar 26, 2014
  65. Michael HaggertyMar 26, 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.