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

[PATCH] Make git-{pull,rebase} message without tracking information friendlier

From
Carlos Martín Nieto <cmn@elego.de>
Date
Feb 29, 2012, 18:41 UTC
Message-ID
<1330540914-14515-1-git-send-email-cmn@elego.de>
In-Reply-To
<vpqbooit61u.fsf@bauges.imag.fr>

The current message is too long and at too low a level for anybody to understand it if they don't know about the configuration format already.

The text about setting up a remote is superfluous and doesn't help understand the error that has happened. Explain how to set up the tracking information, as it's the most likely way to get to the state the user was expecting.

Also simplify the message we print on detached HEAD to remove clutter and a reference to branch.<branchname>.merge which is better left for the documentation. ---

This still needs some shell scripting to figure out whether we'd want to replace <remote> with a real value. The text gets to the matter of things and even tells you how to fix it. More text doesn't really add more useful information, and this isn't a manpage.

I've left the branch --set-upstream in this version as it's probably the most usual fix for a failing git push.

 git-parse-remote.sh |   32 ++++++++++----------------------
 git-pull.sh         |    2 +-
 git-rebase.sh       |    2 +-
 3 files changed, 12 insertions(+), 24 deletions(-)
diff --git a/git-parse-remote.sh b/git-parse-remote.sh
index b24119d..08adc90 100644
--- a/git-parse-remote.sh
+++ b/git-parse-remote.sh
@@ -60,31 +60,19 @@ error_on_missing_default_upstream () {
 	if test -z "$branch_name"
 	then
 		echo "You are not currently on a branch, so I cannot use any
-'branch.<branchname>.merge' in your configuration file.
-Please specify which branch you want to $op_type $op_prep on the command
-line and try again (e.g. '$example').
-See git-${cmd}(1) for details."
-	else
-		echo "You asked me to $cmd without telling me which branch you
-want to $op_type $op_prep, and 'branch.${branch_name#refs/heads/}.merge' in
-your configuration file does not tell me, either. Please
-specify which branch you want to use on the command line and
-try again (e.g. '$example').
+tracking information in your configuration file.
+Please specify which branch you want to $op_type $op_prep.
 See git-${cmd}(1) for details.
 
-If you often $op_type $op_prep the same branch, you may want to
-use something like the following in your configuration file:
-    [branch \"${branch_name#refs/heads/}\"]
-    remote = <nickname>
-    merge = <remote-ref>"
-		test rebase = "$op_type" &&
-		echo "    rebase = true"
-		echo "
-    [remote \"<nickname>\"]
-    url = <url>
-    fetch = <refspec>
+    $example"
+	else
+		echo "You asked me to $cmd without specifying a branch to
+$op_type $op_prep, and the current branch doesn't have any tracking
+information. Please specify a branch and try again. See git-${cmd}(1)
+for details. To set the tracking information, you can use
 
-See git-config(1) for details."
+    git branch --set-upstream ${branch_name#refs/heads/} <remote>/<branch>
+"
 	fi
 	exit 1
 }
diff --git a/git-pull.sh b/git-pull.sh
index d8b64d7..309c7db 100755
--- a/git-pull.sh
+++ b/git-pull.sh
@@ -176,7 +176,7 @@ error_on_no_merge_candidates () {
 	elif [ -z "$curr_branch" -o -z "$upstream" ]; then
 		. git-parse-remote
 		error_on_missing_default_upstream "pull" $op_type $op_prep \
-			"git pull <repository> <refspec>"
+			"git pull <remote> <branch>"
 	else
 		echo "Your configuration specifies to $op_type $op_prep the ref '${upstream#refs/heads/}'"
 		echo "from the remote, but no such ref was fetched."
diff --git a/git-rebase.sh b/git-rebase.sh
index 00ca7b9..69c1374 100755
--- a/git-rebase.sh
+++ b/git-rebase.sh
@@ -380,7 +380,7 @@ then
 		then
 			. git-parse-remote
 			error_on_missing_default_upstream "rebase" "rebase" \
-				"against" "git rebase <upstream branch>"
+				"against" "git rebase <branch>"
 		fi
 		;;
 	*)	upstream_name="$1"
-- 
1.7.8.352.g876a6f
Previous: Carlos Martín NietoNext: Junio C Hamano
Message 8 of 11 in “Make git-{pull,rebase} no-tracking message friendlier”
  1. Make git-{pull,rebase} no-tracking message friendlierCarlos Martín Nieto, Feb 23, 2012
  2. Junio C HamanoFeb 23, 2012
  3. Carlos Martín NietoFeb 27, 2012
  4. Matthieu MoyFeb 27, 2012
  5. Carlos Martín NietoFeb 29, 2012
  6. Matthieu MoyFeb 29, 2012
  7. Carlos Martín NietoFeb 29, 2012
  8. Make git-{pull,rebase} message without tracking information friendlierCarlos Martín Nieto, Feb 29, 2012
  9. Junio C HamanoFeb 29, 2012
  10. Carlos Martín NietoMar 4, 2012
  11. Junio C HamanoMar 5, 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.