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

Re: [PATCH] mergetool: Provide an empty file when no base exists

From
Junio C Hamano <gitster@pobox.com>
Date
Jan 20, 2012, 07:00 UTC
Message-ID
<7vhazqhn8u.fsf@alter.siamese.dyndns.org>
In-Reply-To
<1327042010-79552-1-git-send-email-davvid@gmail.com>
David Aguilar <davvid@gmail.com> writes:
Show 25 quoted lines
> Some mergetools cannot cope when $BASE is missing.
> This can happen when two branches add the same file.
> Provide an empty file to make these tools happy.
>
> Reported-by: Jason Wenger <jcwenger@gmail.com>
> Signed-off-by: David Aguilar <davvid@gmail.com>
> ---
>  git-mergetool.sh     |    6 +++++-
>  t/t7610-mergetool.sh |   27 ++++++++++++++++++++++++++-
>  2 files changed, 31 insertions(+), 2 deletions(-)
>
> diff --git a/git-mergetool.sh b/git-mergetool.sh
> index 085e213..8521b81 100755
> --- a/git-mergetool.sh
> +++ b/git-mergetool.sh
> @@ -224,7 +224,11 @@ merge_file () {
>      mv -- "$MERGED" "$BACKUP"
>      cp -- "$BACKUP" "$MERGED"
>  
> -    base_present   && checkout_staged_file 1 "$MERGED" "$BASE"
> +    if base_present; then
> +	checkout_staged_file 1 "$MERGED" "$BASE"
> +    else
> +	touch "$BASE"
> +    fi
Using "touch" for things like this is a disease.

You not just want to make sure it exists, but also you want to make sure it is empty, so it would make your intention more explicit and clear if you wrote this as

	>"$BASE"
instead.

I also wonder if it may help mergetools if we come up with a fake base image using the common material between the two files, in a way similar to how git-merge-one-file.sh does it (look for "Added $4 in both, but differently"), but obviously it would belong to a separate patch.

Thanks.
Previous: David AguilarNext: David Aguilar
Message 5 of 17 in “Interesting behavior in git mergetool with no BASE revision”
  1. Jason WengerJan 18, 2012
  2. David AguilarJan 20, 2012
  3. mergetool: Provide an empty file when no base existsDavid Aguilar, Jan 20, 2012
  4. David AguilarJan 20, 2012
  5. Junio C HamanoJan 20, 2012
  6. David AguilarJan 20, 2012
  7. mergetool: Provide an empty file when no base existsDavid Aguilar, Jan 20, 2012
  8. Junio C HamanoJan 20, 2012
  9. David AguilarJan 20, 2012
  10. Junio C HamanoJan 20, 2012
  11. Junio C HamanoJan 20, 2012
  12. mergetool: Provide an empty file when neededDavid Aguilar, Jan 20, 2012
  13. David AguilarJan 20, 2012
  14. Jason WengerJan 20, 2012
  15. Junio C HamanoJan 20, 2012
  16. mergetool: Provide an empty file when neededDavid Aguilar, Jan 20, 2012
  17. mergetool: Provide an empty file when no base existsDavid Aguilar, Jan 20, 2012

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.