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

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

From
Junio C Hamano <gitster@pobox.com>
Date
May 5, 2017, 17:54 UTC
Message-ID
<xmqqr3036vf1.fsf@gitster.mtv.corp.google.com>
In-Reply-To
<20170505052729.7576-1-whydoubt@gmail.com>
Jeff Smith <whydoubt@gmail.com> writes:
Show 11 quoted lines
> Jeff Smith (10):
>   Remove unneeded dependency on blob.h from blame
>   Move textconv_object to be with other textconv methods
>   Add some missing definitions to header files
>   Remove unused parameter from get_origin()
>   Split blame origin into its own file
>   Move fake_working_tree_commit() to lib
>   Break out scoreboard a little better
>   Split blame scoreboard into its own file
>   Break out scoreboard init and setup
>   Move scoreboard init and setup to lib

Make sure these shortlog entries, when eventually appear along with other people's changes, let readers know what these are about easily, and formatted similarly to others'. Write the "<area>: " prefix in front is a good pratice to help that, e.g.

    blame: remove unneeded dependency on blob.h

In general I am OK with the idea of splitting builtin/blame.c into the blame Porcelain part (i.e. cmd_blame()) and some form of reusable "blame library".

However, you'd need to be cafreful about names. Are contents of "commit-fake", "origin" and "scoreboard" generally useful outside the context of running a "blame"? They are not good filenames if saying "origin.c" in the context of the entire Git codebase, anybody would understand that it is about "the origin" concept used by the blame engine (similarly for other new files). I would imagine that having blame.[ch] at the toplevel instead of creating that many "blame library" files would be a good way to go (mirrors how other parts of the system is laid out, e.g. diff.[ch] and diff-*.[ch] are library-ish files, while builtin/diff*.c implements the Porcelain).

Have you renamed the names of structures, functions and variables that used to be private to builtin/blame.c and now shared between builtin/blame.c and these new files so that they are specific enough and are obvious that they are about blame infrastructure? Names that were perfectly acceptable and appropriate as private ones inside a subsystem are often too vague or generic when exposed to outside world as part of the library-ish code.

Previous: Jeff SmithNext: Jeff Smith
Message 22 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.