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

[PATCH 2/5] Treat D/F conflict entry more carefully in unpack-trees.c::threeway_merge()

From
Junio C Hamano <junkio@cox.net>
Date
Apr 7, 2007, 14:40 UTC
Message-ID
<7vabxkcknp.fsf@assigned-by-dhcp.cox.net>

This fixes three buglets in threeway_merge() regarding D/F conflict entries.

* After finishing with path D and handling path D/F, some stages
  have D/F conflict entry which are obviously non-NULL.  For the
  purpose of determining if the path D/F is missing in the
  ancestor, they should not be taken into account.
* D/F conflict entry is a phony entry and does not record the
  path being processed, so do not pick up the name from there.
* D/F conflict entry is a marker to say "this stage does _not_
  have the path", so do not send them to keep_entry().

There might be more glitches, but I am slowly digging this mess through, which unfortunately was made even more work since merge-recursive is a built-in now.

Signed-off-by: Junio C Hamano <junkio@cox.net>
---
 unpack-trees.c |    6 +++---
 1 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/unpack-trees.c b/unpack-trees.c
index a0b6769..4039653 100644
--- a/unpack-trees.c
+++ b/unpack-trees.c
@@ -675,10 +675,10 @@ int threeway_merge(struct cache_entry **stages,
 	int i;
 
 	for (i = 1; i < o->head_idx; i++) {
-		if (!stages[i])
+		if (!stages[i] || stages[i] == o->df_conflict_entry)
 			any_anc_missing = 1;
 		else {
-			if (!path)
+			if (!path && stages[i] != o->df_conflict_entry)
 				path = stages[i]->name;
 			no_anc_exists = 0;
 		}
@@ -790,7 +790,7 @@ int threeway_merge(struct cache_entry **stages,
 	count = 0;
 	if (!head_match || !remote_match) {
 		for (i = 1; i < o->head_idx; i++) {
-			if (stages[i]) {
+			if (stages[i] && stages[i] != o->df_conflict_entry) {
 				keep_entry(stages[i], o);
 				count++;
 				break;
-- 
1.5.1.81.gee969
Next: Daniel Barkalow
Message 1 of 4 in “Treat D/F conflict entry more carefully in unpack-trees.c::threeway_merge()”
  1. 2/5 Treat D/F conflict entry more carefully in unpack-trees.c::threeway_merge()Junio C Hamano, Apr 7, 2007
  2. Daniel BarkalowApr 7, 2007
  3. Junio C HamanoApr 8, 2007
  4. Daniel BarkalowApr 8, 2007

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.