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

Re: [PATCH 18/29] blame: move progess updates to a scoreboard callback

From
Junio C Hamano <gitster@pobox.com>
Date
May 25, 2017, 04:16 UTC
Message-ID
<xmqq1srdfu5v.fsf@gitster.mtv.corp.google.com>
In-Reply-To
<20170524051537.29978-19-whydoubt@gmail.com>
Jeff Smith <whydoubt@gmail.com> writes:
> Subject: Re: [PATCH 18/29] blame: move progess updates to a scoreboard callback
s/progess/progress/ (I can do this on my end).
Show 16 quoted lines
> Allow the interface user to decide how to handle a progress update.
>
> Signed-off-by: Jeff Smith <whydoubt@gmail.com>
> ---
>  builtin/blame.c | 27 +++++++++++++++++----------
>  1 file changed, 17 insertions(+), 10 deletions(-)
>
> -static void found_guilty_entry(struct blame_entry *ent,
> -			   struct progress_info *pi)
> +static void found_guilty_entry(struct blame_entry *ent, void *data)
>  {
> +	struct progress_info *pi = (struct progress_info *)data;
> +
>  	if (incremental) {
>  		struct blame_origin *suspect = ent->suspect;
>  

This hunk is interesting. The function not only does the "progress" eye candy, but it actually handles the "--incremental" option. Anybody who wants to do something similar using the libified blame needs to implement it in their found_guilty callback like this one does, which is probably a good division of labor between the blame lib and the front-end (which builtin/blame.c is one instance of).

Show 9 quoted lines
> @@ -1754,11 +1758,6 @@ static void assign_blame(struct blame_scoreboard *sb, int opt)
>  {
>  	struct rev_info *revs = sb->revs;
>  	struct commit *commit = prio_queue_get(&sb->commits);
> -	struct progress_info pi = { NULL, 0 };
> -
> -	if (show_progress)
> -		pi.progress = start_progress_delay(_("Blaming lines"),
> -						   sb->num_lines, 50, 1);

And this piece (and matching "stop progress" at the end of the function) is now the responsibility of the caller, which makes sense.

Show 13 quoted lines
>  
> +	sb.found_guilty_entry = &found_guilty_entry;
> +	sb.found_guilty_entry_data = &pi;
> +	if (show_progress)
> +		pi.progress = start_progress_delay(_("Blaming lines"),
> +						   sb.num_lines, 50, 1);
> +
>  	assign_blame(&sb, opt);
>  
> +	stop_progress(&pi.progress);
> +
>  	if (!incremental)
>  		setup_pager();
Very nicely done so far.
Previous: Jeff SmithNext: Jeff Smith
Message 31 of 39 in “Add blame to libgit”
  1. 00/29 Add blame to libgitJeff Smith, May 24, 2017
  2. 01/29 blame: remove unneeded dependency on blob.hJeff Smith, May 24, 2017
  3. 03/29 blame: remove unused parametersJeff Smith, May 24, 2017
  4. 02/29 blame: move textconv_object with related functionsJeff Smith, May 24, 2017
  5. 04/29 blame: rename origin structure to blame_originJeff Smith, May 24, 2017
  6. 05/29 blame: rename scoreboard structure to blame_scoreboardJeff Smith, May 24, 2017
  7. 06/29 blame: rename origin-related functionsJeff Smith, May 24, 2017
  8. 10/29 blame: move stat counters to scoreboardJeff Smith, May 24, 2017
  9. 11/29 blame: move copy/move thresholds to scoreboardJeff Smith, May 24, 2017
  10. 14/29 blame: move show_root flag to scoreboardJeff Smith, May 24, 2017
  11. 13/29 blame: move reverse flag to scoreboardJeff Smith, May 24, 2017
  12. 12/29 blame: move contents_from to scoreboardJeff Smith, May 24, 2017
  13. 09/29 blame: rename nth_line functionJeff Smith, May 24, 2017
  14. 19/29 blame: wrap blame_sort and compare_blame_finalJeff Smith, May 24, 2017
  15. 16/29 blame: move no_whole_file_rename flag to scoreboardJeff Smith, May 24, 2017
  16. 07/29 blame: rename coalesce functionJeff Smith, May 24, 2017
  17. 23/29 blame: create entry prepend functionJeff Smith, May 24, 2017
  18. Junio C HamanoMay 25, 2017
  19. 24/29 blame: move core structures to headerJeff Smith, May 24, 2017
  20. Junio C HamanoMay 25, 2017
  21. 21/29 blame: create scoreboard init functionJeff Smith, May 24, 2017
  22. 26/29 blame: move fake-commit-related methods to libgitJeff Smith, May 24, 2017
  23. 22/29 blame: create scoreboard setup functionJeff Smith, May 24, 2017
  24. Junio C HamanoMay 25, 2017
  25. 27/29 blame: move scoreboard-related methods to libgitJeff Smith, May 24, 2017
  26. 25/29 blame: move origin-related methods to libgitJeff Smith, May 24, 2017
  27. 28/29 blame: move scoreboard setup to libgitJeff Smith, May 24, 2017
  28. Junio C HamanoMay 25, 2017
  29. Jeffrey SmithMay 25, 2017
  30. 18/29 blame: move progess updates to a scoreboard callbackJeff Smith, May 24, 2017
  31. Junio C HamanoMay 25, 2017
  32. 17/29 blame: make sanity_check use a callback in scoreboardJeff Smith, May 24, 2017
  33. 29/29 blame: move entry prepend to libgitJeff Smith, May 24, 2017
  34. 20/29 blame: rework methods that determine 'final' commitJeff Smith, May 24, 2017
  35. Junio C HamanoMay 25, 2017
  36. 15/29 blame: move xdl_opts flags to scoreboardJeff Smith, May 24, 2017
  37. 08/29 blame: rename ent_score functionJeff Smith, May 24, 2017
  38. Junio C HamanoMay 24, 2017
  39. Junio C HamanoMay 25, 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.