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

Re: [RFC PATCH v2 04/22] blame: move origin and entry structures to header

From
Junio C Hamano <gitster@pobox.com>
Date
May 14, 2017, 08:10 UTC
Message-ID
<xmqq8tlz504w.fsf@gitster.mtv.corp.google.com>
In-Reply-To
<20170514031513.9042-5-whydoubt@gmail.com>
Jeff Smith <whydoubt@gmail.com> writes:
Show 36 quoted lines
> The origin and blame_entry structures are core to the blame interface
> and reference each other. Since origin will be more exposed, rename it
> to blame_origin to clarify what it is a part of.
>
> Signed-off-by: Jeff Smith <whydoubt@gmail.com>
> ---
>  blame.h         |  86 ++++++++++++++++++++++++++
>  builtin/blame.c | 185 +++++++++++++++++---------------------------------------
>  2 files changed, 140 insertions(+), 131 deletions(-)
>  create mode 100644 blame.h
>
> diff --git a/blame.h b/blame.h
> new file mode 100644
> index 0000000..f52d0fc
> --- /dev/null
> +++ b/blame.h
> @@ -0,0 +1,86 @@
> +#ifndef BLAME_H
> +#define BLAME_H
> +
> +#include "cache.h"
> +#include "commit.h"
> +#include "xdiff-interface.h"
> +
> +/*
> + * One blob in a commit that is being suspected
> + */
> +struct blame_origin {
> +	int refcnt;
> +...
>   ...
> -/*
> - * One blob in a commit that is being suspected
> - */
> -struct origin {
> -	int refcnt;

I hate to say this AFTER you sent your second attempt, but could you have another preparetory step before this patch, that does many renames of symbols (e.g. s/origin/blame_origin/) and nothing else, while the lines are still in builtin/blame.c?

To review a step like yoru 04/22 to make sure nothing else other than moving the lines is going on, an easy way to do so is to run "blame -C" on the resulting blame.h file---that lets the reviewers' eyes coast over the lines that came from contiguous region of the original builtin/blame.c and concentrate on things like what used to be static to the file now getting extern.

If you rename symbols while moving lines across files, that becomes impossible because many lines are now different (i.e. a line that talked about "origin" in builtin/blame.c in the preimage may now talk about "blame_origin" in blame.h, hence attributed to the new commit's blame.h).

It may even be OK to do the "rename the symbols" step in a single patch (e.g. your 04/22 and 05/22 are separate patches and the former renames "origin" while the latter does "scoreboard"---I am saying that the preparatory step that renames the symbols without introducing the new "blame.h" may not have to have these two as separate patches).

If rename of symbols are done first while the lines are still in the original file, mechanical moving of lines gets much easier to review. Of course, a patch that only renames symbols is also much easier to review, even if it is a large one.

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