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

[PATCH] Only warn about missing branch.<n>.merge in pull.

From
Shawn O. Pearce <spearce@spearce.org>
Date
Dec 18, 2006, 09:12 UTC
Message-ID
<20061218091206.GA11284@spearce.org>

Commit 62b339a5 added a warning for git-pull to notify the user when they have not configured the setting 'branch.<n>.merge' (where <n> is the current branch) and no arguments were given to git-pull to specify the branches to merge.

Unfortunately this warning also appears in git-fetch when no arguments were supplied, as the warning is being output at the same time that the contents of FETCH_HEAD is being determined. This causes users who fetch into local tracking branches prior to merging to receive unexpected/unnecessary warnings:

  $ git fetch
  Warning: No merge candidate found because value of config option
           "branch.sp/topic.merge" does not match any remote branch fetched.

This warning may also cause problems for other Porcelain that use git-fetch as "plumbing", as the other Porcelain may not actually use (or honor) the branch.<n>.merge configuration option.

Instead we should delay the warning about no matching branches until we are actually in git-pull and are trying to setup the call to git-merge to actually carry out the merge. This way direct users of git-fetch do not receive these warnings.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
---
 git-parse-remote.sh |   10 ----------
 git-pull.sh         |   16 +++++++++++++++-
 2 files changed, 15 insertions(+), 11 deletions(-)
diff --git a/git-parse-remote.sh b/git-parse-remote.sh
index f27c3c2..7a1cf5c 100755
--- a/git-parse-remote.sh
+++ b/git-parse-remote.sh
@@ -134,7 +134,6 @@ canon_refs_list_for_fetch () {
 	# or the first one otherwise; add prefix . to the rest
 	# to prevent the secondary branches to be merged by default.
 	merge_branches=
-	found_mergeref=
 	curr_branch=
 	if test "$1" = "-d"
 	then
@@ -174,10 +173,6 @@ canon_refs_list_for_fetch () {
 			    dot_prefix= && break
 			done
 		fi
-		if test -z $dot_prefix
-		then
-			found_mergeref=true
-		fi
 		case "$remote" in
 		'') remote=HEAD ;;
 		refs/heads/* | refs/tags/* | refs/remotes/*) ;;
@@ -198,11 +193,6 @@ canon_refs_list_for_fetch () {
 		fi
 		echo "${dot_prefix}${force}${remote}:${local}"
 	done
-	if test -z "$found_mergeref" -a "$curr_branch"
-	then
-		echo >&2 "Warning: No merge candidate found because value of config option
-         \"branch.${curr_branch}.merge\" does not match any remote branch fetched."
-	fi
 }
 
 # Returns list of src: (no store), or src:dst (store)
diff --git a/git-pull.sh b/git-pull.sh
index e23beb6..d43a565 100755
--- a/git-pull.sh
+++ b/git-pull.sh
@@ -76,7 +76,21 @@ merge_head=$(sed -e '/	not-for-merge	/d' \
 
 case "$merge_head" in
 '')
-	echo >&2 "No changes."
+	echo >&2 "warning: No branches were selected for merge."
+	if test $# = 0
+	then
+		branch=$(git-symbolic-ref HEAD | sed -e 's|^refs/heads/||')
+		remote=$(git-repo-config --get-all "branch.$branch.remote")
+		if test -z "$remote"
+		then
+			echo >&2 "warning: (Config option 'branch.$branch.remote' not set.)"
+		fi
+		merge=$(git-repo-config --get-all "branch.$branch.merge")
+		if test -z "$merge"
+		then
+			echo >&2 "warning: (Config option 'branch.$branch.merge' not set.)"
+		fi
+	fi
 	exit 0
 	;;
 ?*' '?*)
Next: Santi Béjar
Message 1 of 8 in “Only warn about missing branch.<n>.merge in pull.”
  1. Only warn about missing branch.<n>.merge in pull.Shawn O. Pearce, Dec 18, 2006
  2. Santi BéjarDec 18, 2006
  3. Josef WeidendorferDec 19, 2006
  4. Junio C HamanoDec 19, 2006
  5. Johannes SchindelinDec 19, 2006
  6. Junio C HamanoDec 19, 2006
  7. Johannes SchindelinDec 19, 2006
  8. Shawn PearceDec 19, 2006

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.