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

Re: [PATCH v2 1/2] mergetool: don't skip modify/remove conflicts

From
Junio C Hamano <gitster@pobox.com>
Date
Feb 15, 2011, 00:54 UTC
Message-ID
<7v1v3aqfqm.fsf@alter.siamese.dyndns.org>
In-Reply-To
<1297570198-21103-2-git-send-email-martin.von.zweigbergk@gmail.com>
Martin von Zweigbergk <martin.von.zweigbergk@gmail.com> writes:
Show 44 quoted lines
> diff --git a/builtin/rerere.c b/builtin/rerere.c
> index 081fccc..7b9fe18 100644
> --- a/builtin/rerere.c
> +++ b/builtin/rerere.c
> @@ -147,8 +147,6 @@ int cmd_rerere(int argc, const char **argv, const char *prefix)
>  	if (!strcmp(argv[0], "clear")) {
>  		for (i = 0; i < merge_rr.nr; i++) {
>  			const char *name = (const char *)merge_rr.items[i].util;
> -			if (!name)
> -				continue;
>  			if (!has_rerere_resolution(name))
>  				unlink_rr_item(name);
>  		}
> @@ -157,19 +155,22 @@ int cmd_rerere(int argc, const char **argv, const char *prefix)
>  		garbage_collect(&merge_rr);
>  	else if (!strcmp(argv[0], "status"))
>  		for (i = 0; i < merge_rr.nr; i++) {
> -			if (!merge_rr.items[i].util)
> -				continue;
>  			printf("%s\n", merge_rr.items[i].string);
>  		}
> -	else if (!strcmp(argv[0], "remaining"))
> -		for (i = 0; i < merge_rr.nr; i++)
> -			printf("%s\n", merge_rr.items[i].string);
> -	else if (!strcmp(argv[0], "diff"))
> +	else if (!strcmp(argv[0], "remaining")) {
> +		rerere_remaining(&merge_rr);
> +		for (i = 0; i < merge_rr.nr; i++) {
> +			if (merge_rr.items[i].util != RERERE_RESOLVED)
> +				printf("%s\n", merge_rr.items[i].string);
> +			else
> +				/* prepare for later call to
> +				 * string_list_clear() */
> +				merge_rr.items[i].util = NULL;
> +		}
> +	} else if (!strcmp(argv[0], "diff"))
>  		for (i = 0; i < merge_rr.nr; i++) {
>  			const char *path = merge_rr.items[i].string;
>  			const char *name = (const char *)merge_rr.items[i].util;
> -			if (!name)
> -				continue;
>  			diff_two(rerere_path(name, "preimage"), path, path, path);
>  		}
>  	else

By looking at the diff between the parent of f322b35 (my earlier "rerere remaining" patch) and the result of applying this patch on top of the patch, I think the basic idea of this is to correct my stupid mistake of contaminating merge_rr unconditionally, and instead adding the "remaining" entries only when handling the "rerere remaining" command (hence many removal of special cases "if (!name) continue" introduced by my patch. The result looks _much_ cleaner than the above patch shows and I am happy with it.

But shouldn't you also revert the parts of my patch to do_plain_rerere() and rerere_forget() that have similar special cases?

Previous: Martin von ZweigbergkNext: Martin von Zweigbergk
Message 6 of 13 in “mergetool: don't skip modify/remove conflicts”
  1. mergetool: don't skip modify/remove conflictsMartin von Zweigbergk, Feb 8, 2011
  2. Junio C HamanoFeb 9, 2011
  3. Martin von ZweigbergkFeb 11, 2011
  4. 0/2 mergetool: don't skip modify/remove conflictsMartin von Zweigbergk, Feb 13, 2011
  5. 1/2 mergetool: don't skip modify/remove conflictsMartin von Zweigbergk, Feb 13, 2011
  6. Junio C HamanoFeb 15, 2011
  7. Martin von ZweigbergkFeb 15, 2011
  8. Junio C HamanoFeb 15, 2011
  9. 0/2 mergetool: don't skip modify/remove conflictsMartin von Zweigbergk, Feb 16, 2011
  10. 1/2 rerere "remaining"Martin von Zweigbergk, Feb 16, 2011
  11. Junio C HamanoFeb 16, 2011
  12. 2/2 mergetool: don't skip modify/remove conflictsMartin von Zweigbergk, Feb 16, 2011
  13. 2/2 rerere: factor out common conflict search codeMartin von Zweigbergk, Feb 13, 2011

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.