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

Re: [PATCH v2 12/21] bisect: replace clear_distance() by unique markers

From
Junio C Hamano <gitster@pobox.com>
Date
Apr 15, 2016, 22:07 UTC
Message-ID
<xmqqoa9a8r1u.fsf@gitster.mtv.corp.google.com>
In-Reply-To
<1460294354-7031-13-git-send-email-s-beyer@gmx.net>
Stephan Beyer <s-beyer@gmx.net> writes:
Show 12 quoted lines
> @@ -43,15 +43,17 @@ static int count_distance(struct commit_list *entry)
>  	int nr = 0;
>  	struct commit_list *todo = NULL;
>  	commit_list_append(entry->item, &todo);
> +	marker++;
>  
>  	while (todo) {
>  		struct commit *commit = pop_commit(&todo);
>  
> -		if (!(commit->object.flags & (UNINTERESTING | COUNTED))) {
> +		if (!(commit->object.flags & UNINTERESTING)
> +		 && node_data(commit)->marked != marker) {
Makes sense.
Show 10 quoted lines
> @@ -123,10 +116,9 @@ static void show_list(const char *debug, int counted, int nr,
>  		const char *subject_start;
>  		int subject_len;
>  
> -		fprintf(stderr, "%c%c%c ",
> +		fprintf(stderr, "%c%c ",
>  			(flags & TREESAME) ? ' ' : 'T',
> -			(flags & UNINTERESTING) ? 'U' : ' ',
> -			(flags & COUNTED) ? 'C' : ' ');
> +			(flags & UNINTERESTING) ? 'U' : ' ');

As this one is for debugging, could we keep the output of 'C' intact?

It is equivalent to
	commit->util && node_data(commit)->marked == marker ? 'C' : ' '
right?

This makes me wonder if node_data(commit) should return NULL instead of asserting on commit->util in [11/21], by the way. That would make the above

	node_data(commit) && node_data(commit)->marked == marker
        ? 'C' : ' '
which may be easier to read.

Another small thing I overlooked in [11/21] is that the parameter to node_data() helper should not be called "elem", which is typically the name used to point at an element on a linked list structure such as commit_list. Call it "commit" instead, as that is typically the way we call a single parameter/variable that appears in a function that is "struct commit".

Previous: Christian CouderNext: Stephan Beyer
Message 33 of 56 in “git bisect improvements”
  1. 00/21 git bisect improvementsStephan Beyer, Apr 10, 2016
  2. 01/21 bisect: write about `bisect next` in documentationStephan Beyer, Apr 10, 2016
  3. 02/21 bisect: allow 'bisect run' if no good commit is knownStephan Beyer, Apr 10, 2016
  4. 03/21 t/test-lib-functions.sh: generalize test_cmp_revStephan Beyer, Apr 10, 2016
  5. Eric SunshineApr 11, 2016
  6. Junio C HamanoApr 15, 2016
  7. Stephan BeyerApr 24, 2016
  8. Junio C HamanoApr 25, 2016
  9. 04/21 t: use test_cmp_rev() where appropriateStephan Beyer, Apr 10, 2016
  10. Eric SunshineApr 11, 2016
  11. Junio C HamanoApr 15, 2016
  12. 05/21 t6030: generalize test to not rely on current implementationStephan Beyer, Apr 10, 2016
  13. Torsten BögershausenApr 10, 2016
  14. Junio C HamanoApr 10, 2016
  15. Stephan BeyerApr 10, 2016
  16. Eric SunshineApr 11, 2016
  17. Junio C HamanoApr 15, 2016
  18. 06/21 bisect: add test for the bisect algorithmStephan Beyer, Apr 10, 2016
  19. Junio C HamanoApr 15, 2016
  20. 07/21 bisect: plug the biggest memory leakStephan Beyer, Apr 10, 2016
  21. Junio C HamanoApr 15, 2016
  22. 08/21 bisect: make bisect compile if DEBUG_BISECT is setStephan Beyer, Apr 10, 2016
  23. Junio C HamanoApr 15, 2016
  24. 09/21 bisect: make algorithm behavior independent of DEBUG_BISECTStephan Beyer, Apr 10, 2016
  25. Junio C HamanoApr 15, 2016
  26. 10/21 bisect: get rid of recursion in count_distance()Stephan Beyer, Apr 10, 2016
  27. Junio C HamanoApr 15, 2016
  28. 11/21 bisect: use struct node_data array instead of int arrayStephan Beyer, Apr 10, 2016
  29. Christian CouderApr 12, 2016
  30. Junio C HamanoApr 15, 2016
  31. 12/21 bisect: replace clear_distance() by unique markersStephan Beyer, Apr 10, 2016
  32. Christian CouderApr 12, 2016
  33. Junio C HamanoApr 15, 2016
  34. 13/21 bisect: use commit instead of commit list as arguments when appropriateStephan Beyer, Apr 10, 2016
  35. Junio C HamanoApr 15, 2016
  36. 14/21 bisect: extract get_distance() function from code duplicationStephan Beyer, Apr 10, 2016
  37. Junio C HamanoApr 15, 2016
  38. 15/21 bisect: introduce distance_direction()Stephan Beyer, Apr 10, 2016
  39. Junio C HamanoApr 15, 2016
  40. 16/21 bisect: make total number of commits globalStephan Beyer, Apr 10, 2016
  41. Christian CouderApr 13, 2016
  42. Junio C HamanoApr 15, 2016
  43. Junio C HamanoApr 16, 2016
  44. 17/21 bisect: rename count_distance() to compute_weight()Stephan Beyer, Apr 10, 2016
  45. Christian CouderApr 13, 2016
  46. Junio C HamanoApr 15, 2016
  47. 18/21 bisect: prepare for different algorithms based on find_allStephan Beyer, Apr 10, 2016
  48. Junio C HamanoApr 15, 2016
  49. 19/21 bisect: use a bottom-up traversal to find relevant weightsStephan Beyer, Apr 10, 2016
  50. Christian CouderApr 13, 2016
  51. Junio C HamanoApr 15, 2016
  52. Junio C HamanoApr 15, 2016
  53. Junio C HamanoApr 26, 2016
  54. 20/21 bisect: compute best bisection in compute_relevant_weights()Stephan Beyer, Apr 10, 2016
  55. 21/21 bisect: get back halfway shortcutStephan Beyer, Apr 10, 2016
  56. Junio C HamanoApr 15, 2016

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.