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

[RFC PATCH] Pass empty file to p4merge where no base is suitable.

From
Ciaran <ciaranj@gmail.com>
Date
Apr 19, 2011, 19:46 UTC
Message-ID
<BANLkTimXBayYAScPfk2j9spxcYrmtMJKxg@mail.gmail.com>

Modify the p4merge client command to pass a reference to an empty file instead of the local file when no base revision available.

In the situation where a merge tries to add a file from one branch into a branch that already contains that file (by name), p4merge currently seems to have successfully automatically resolved the 'conflict' when it is opened (correctly if the files differed by just whitespace for example) but leaves the save button disabled. This means the user of the p4merge client cannot commit the resolved changes back to disk and merely exits, leaving the original (merge-conflicted) file in-tact on the disk.

Provide an empty base file to p4merge so that it leaves the save button enabled. This will allow saving of the auto-resolution to disk.

Please note that the empty file is temporarily stored in the location specified as GIT_DIR/.no_base

Signed-off-by: Ciaran Jessup <ciaranj@gmail.com>
---
Thank you to David Aguilar for his feedback previously on this patch,
hopefully I've followed the submission guidelines correctly this time.
 This patch is to improve the interaction of p4merge and git in the
case where merge conflicts have no common ancestor.  For more detailed
discussion please see: http://marc.info/?l=git&m=130190735601527&w=2
(I was unsure if it was ok to repost inline, sorry)
 git-mergetool--lib.sh |    4 +++-
 1 files changed, 3 insertions(+), 1 deletions(-)
diff --git a/git-mergetool--lib.sh b/git-mergetool--lib.sh
index fb3f52b..3e007e9 100644
--- a/git-mergetool--lib.sh
+++ b/git-mergetool--lib.sh
@@ -262,7 +262,9 @@ run_merge_tool () {
 			if $base_present; then
 				"$merge_tool_path" "$BASE" "$LOCAL" "$REMOTE" "$MERGED"
 			else
-				"$merge_tool_path" "$LOCAL" "$LOCAL" "$REMOTE" "$MERGED"
+				touch "$GIT_DIR/.no_base"
+				"$merge_tool_path" "$GIT_DIR/.no_base" "$LOCAL" "$REMOTE" "$MERGED"
+				rm "$GIT_DIR/.no_base"
 			fi
 			check_unchanged
 		else
-- 
1.7.4.1
Next: Junio C Hamano
Message 1 of 9 in “Pass empty file to p4merge where no base is suitable.”
  1. Pass empty file to p4merge where no base is suitable.Ciaran, Apr 19, 2011
  2. Junio C HamanoApr 19, 2011
  3. Junio C HamanoApr 19, 2011
  4. CiaranMay 1, 2011
  5. Junio C HamanoMay 1, 2011
  6. CiaranMay 1, 2011
  7. CiaranMay 1, 2011
  8. Junio C HamanoMay 1, 2011
  9. CiaranMay 2, 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.