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

Re: [RFC PATCH v2 00/22] Add blame to libgit

From
Junio C Hamano <gitster@pobox.com>
Date
May 16, 2017, 03:21 UTC
Message-ID
<xmqqd1b94hc1.fsf@gitster.mtv.corp.google.com>
In-Reply-To
<CAPX7N=5=M=wjTbKQoctndqrHxYSb86bEwej8ofoOovsYHWFkKA@mail.gmail.com>
Jeffrey Smith <whydoubt@gmail.com> writes:
Show 22 quoted lines
> On Mon, May 15, 2017 at 7:23 PM, Junio C Hamano <gitster@pobox.com> wrote:
>> Jeffrey Smith <whydoubt@gmail.com> writes:
>>
>>> I did try to keep any unnecessary changes out of the big movement
>>> patches (17-19).  Would you prefer I break down 19 further?  I had
>>> been holding back because of the added churn that would introduce from
>>> lots of changing function visibility in blame.h and blame.c.
>>
>> To be honest, the "rename symbols while moving" done starting around
>> 04/22 made the series too noisy to read and I had hard time
>> reviewing the later ones like 17-19.  I think they share exactly the
>> same issue as 04/22, e.g. 17/22 renames origin_decref to
>> blame_origin_decref while moving the function and some of its
>> callers across files.
>
> Hm, I really thought I had split some of those out.  Patches 4, 5, 17, and 19
> could all be reasonably split into rename vs move patches.  Patch 18 only
> does moving.
>
> I do not see much benefit to splitting up the 'move xyz to scoreboard'
> subset (6-12) that way as moving an item to scoreboard is already causing
> each use to change (from xyz to sb->xyz).

Perhaps it would be better to repeat and clarify what I suggested once more.

 * Keep mechanical changes separate from real changes,
 * Keep each real change separate from each other,
 * Keep the same kind of mechnical changes together, and
 * Keep different kinds of mechanical changes separate.

So, if you are moving some globals into a structure, we want a patch that does that for a set of related globals and adjust their uses, and do nothing else. You'll probably have a handful of them in the end. For each of these real changes, it is usually better to have more and smaller patches than to have fewer and larger patches.

Then if you are remaing a bunch of structure types and/or variable names, we want a patch that does that mechanical change (i.e. rename "struct foo" and "struct bar" to "struct blame_foo" and "struct blame_bar") that does not do anything else (i.e. do not move lines across files in the same patch). As I said already, this does not have to be one per struct type. We can say "renaming symbols" is just one kind of mechanical changes, which is different from "moving lines across files".

Finally, move the lines across files (and again, do nothing else). Having to turn "static something" into "extern something" is part of moving the lines across files, and we do want to see that in the same patch. But renaming something to blame_something should have already be done while these lines were in builtin/blame.c in an earlier step.

Thanks.
Previous: Jeffrey SmithNext: Jeffrey Smith
Message 51 of 52 in “Add blame to libgit”
  1. 00/10 Add blame to libgitJeff Smith, May 5, 2017
  2. 01/10 Remove unneeded dependency on blob.h from blameJeff Smith, May 5, 2017
  3. Ævar Arnfjörð BjarmasonMay 5, 2017
  4. 03/10 Add some missing definitions to header filesJeff Smith, May 5, 2017
  5. Junio C HamanoMay 5, 2017
  6. 05/10 Split blame origin into its own fileJeff Smith, May 5, 2017
  7. 07/10 Break out scoreboard a little betterJeff Smith, May 5, 2017
  8. Junio C HamanoMay 5, 2017
  9. 09/10 Break out scoreboard init and setupJeff Smith, May 5, 2017
  10. 08/10 Split blame scoreboard into its own fileJeff Smith, May 5, 2017
  11. 06/10 Move fake_working_tree_commit() to libJeff Smith, May 5, 2017
  12. 02/10 Move textconv_object to be with other textconv methodsJeff Smith, May 5, 2017
  13. Junio C HamanoMay 5, 2017
  14. Stefan BellerMay 5, 2017
  15. Junio C HamanoMay 8, 2017
  16. Jeff KingMay 8, 2017
  17. Stefan BellerMay 8, 2017
  18. Junio C HamanoMay 9, 2017
  19. Jeff KingMay 9, 2017
  20. 04/10 Remove unused parameter from get_origin()Jeff Smith, May 5, 2017
  21. 10/10 Move scoreboard init and setup to libJeff Smith, May 5, 2017
  22. Junio C HamanoMay 5, 2017
  23. 00/22 Add blame to libgitJeff Smith, May 14, 2017
  24. 01/22 blame: remove unneeded dependency on blob.hJeff Smith, May 14, 2017
  25. 03/22 blame: remove unused parametersJeff Smith, May 14, 2017
  26. 02/22 blame: move textconv_object with related functionsJeff Smith, May 14, 2017
  27. 05/22 blame: move scoreboard structure to headerJeff Smith, May 14, 2017
  28. 06/22 blame: move stat counters to scoreboardJeff Smith, May 14, 2017
  29. 04/22 blame: move origin and entry structures to headerJeff Smith, May 14, 2017
  30. Junio C HamanoMay 14, 2017
  31. 07/22 blame: move copy/move thresholds to scoreboardJeff Smith, May 14, 2017
  32. 08/22 blame: move contents_from to scoreboardJeff Smith, May 14, 2017
  33. 11/22 blame: move xdl_opts flags to scoreboardJeff Smith, May 14, 2017
  34. 10/22 blame: move show_root flag to scoreboardJeff Smith, May 14, 2017
  35. 09/22 blame: move reverse flag to scoreboardJeff Smith, May 14, 2017
  36. 18/22 blame: move fake-commit-related methods to libgitJeff Smith, May 14, 2017
  37. 21/22 blame: create scoreboard setup function in libgitJeff Smith, May 14, 2017
  38. 19/22 blame: move scoreboard-related methods to libgitJeff Smith, May 14, 2017
  39. 15/22 blame: wrap blame_sort and compare_blame_finalJeff Smith, May 14, 2017
  40. 20/22 blame: create scoreboard init function in libgitJeff Smith, May 14, 2017
  41. 22/22 blame: create entry prepend function in libgitJeff Smith, May 14, 2017
  42. 13/22 blame: make sanity_check use a callback in scoreboardJeff Smith, May 14, 2017
  43. 17/22 blame: move origin-related methods to libgitJeff Smith, May 14, 2017
  44. 16/22 blame: rework methods that determine 'final' commitJeff Smith, May 14, 2017
  45. 14/22 blame: move progess updates to a scoreboard callbackJeff Smith, May 14, 2017
  46. 12/22 blame: move no_whole_file_rename flag to scoreboardJeff Smith, May 14, 2017
  47. Junio C HamanoMay 15, 2017
  48. Jeffrey SmithMay 15, 2017
  49. Junio C HamanoMay 16, 2017
  50. Jeffrey SmithMay 16, 2017
  51. Junio C HamanoMay 16, 2017
  52. Jeffrey SmithMay 5, 2017

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.