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

[PATCH] git-merge: make it usable as the first class UI again.

From
Junio C Hamano <junkio@cox.net>
Date
Jan 26, 2007, 09:28 UTC
Message-ID
<7v4pqe16ix.fsf@assigned-by-dhcp.cox.net>

reflog wants to have a short-and-sweet single line message, but its set_reflog_action was slurping the whole command line arguments. When given a multi-line commit message from the command line, reflog code refused to update the ref with the resulting commit.

Signed-off-by: Junio C Hamano <junkio@cox.net>
---
 * When pull threw huge merge message, it has already set the
   reflog action on its own so this breakage was hidden.  Also
   because most of the time people did not specify -m message
   (or use the old-style <msg> HEAD <others>) from the command
   line, nobody seems to have noticed this.
 git-merge.sh |    2 +-
 git-pull.sh  |   27 +++++++++++++++++++++++++++
 2 files changed, 28 insertions(+), 1 deletions(-)
diff --git a/git-merge.sh b/git-merge.sh
index 7b59026..91909b7 100755
--- a/git-merge.sh
+++ b/git-merge.sh
@@ -7,7 +7,7 @@ USAGE='[-n] [--no-commit] [--squash] [-s <strategy>] [-m=<merge-message>] <commi
 
 SUBDIRECTORY_OK=Yes
 . git-sh-setup
-set_reflog_action "merge $*"
+set_reflog_action merge
 require_work_tree
 cd_to_toplevel
 
diff --git a/git-pull.sh b/git-pull.sh
index a3665d7..fc76aea 100755
--- a/git-pull.sh
+++ b/git-pull.sh
@@ -51,6 +51,33 @@ do
 	shift
 done
 
+if test "X$1" = X.
+then
+	# We are merging from this repository.  We can avoid fetch
+	# and go right into merge if the user isn't doing something
+	# odd like asking us to also update tracking branches in
+	# this repository as part of the pull.  Yeah, they probably
+	# shouldn't do that - but we allowed it in the past...
+	#
+	direct_merge=1
+	for remote
+	do
+		case "$remote" in
+		*:*) direct_merge=0; break;;
+		esac
+	done
+	if test $direct_merge = 1
+	then
+		shift
+		exec git-merge \
+			$no_summary $no_commit $squash $strategy_args \
+			"$@"
+	else
+		echo >&2 "Clever... Updating tracking branch while pulling from yourself."
+		echo >&2
+	fi
+fi
+
 orig_head=$(git-rev-parse --verify HEAD 2>/dev/null)
 git-fetch --update-head-ok "$@" || exit 1
 
-- 
1.5.0.rc2.g8a816
Next: Junio C Hamano
Message 1 of 2 in “git-merge: make it usable as the first class UI again.”
  1. git-merge: make it usable as the first class UI again.Junio C Hamano, Jan 26, 2007
  2. Junio C HamanoJan 26, 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.