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

Re: git-clone: Unobvious error messages when update-server-info has not been run

From
Jeff King <peff@peff.net>
Date
Dec 17, 2007, 12:43 UTC
Message-ID
<20071217124359.GA20800@coredump.intra.peff.net>
In-Reply-To
<20071217105541.GG14889@albany.tokkee.org>
On Mon, Dec 17, 2007 at 11:55:41AM +0100, Sebastian Harl wrote:
Show 14 quoted lines
> I was just trying to clone a repository using http but missed to run
> git-update-server-info on the server side. git-clone aborted with the
> following error messages:
> 
>   % git clone http://some/repo.git
>   Initialized empty Git repository in /path/repo/.git/
>   cat: /path/repo/.git/refs/remotes/origin/master: No such file or directory
>   cd: 482: can't cd to /path/repo/.git/refs/remotes/origin
>   fatal: : not a valid SHA1
>   fatal: Not a valid object name HEAD
> 
> It's kind of hard to guess where the error comes from in this case (I blamed
> Git at first). Is there some way to improve the error message in a case like
> this?

git-clone is supposed to detect this condition, but there was a bug in the error checking code. Can you confirm that this patch fixes it?

Gerrit, I think was caused by your f28dd477 (it is a funny shell interaction that the non-followed case branch resets $?, but it behaves the same with bash and dash).

-- >8 -- clone: correctly report http_fetch errors

The exit status from curl was accidentally lost by the 'case' statement. We need to explicitly save it so that $? doesn't get overwritten.

This improves the error message when fetching from an http repository which has never had update-server-info run. Previously, it would fail to note the fetch error and produce multiple errors about the lack of origin branches. It now correctly suggests running git-update-server-info.

Signed-off-by: Jeff King <peff@peff.net>
---
 git-clone.sh |   11 ++++++-----
 1 files changed, 6 insertions(+), 5 deletions(-)
diff --git a/git-clone.sh b/git-clone.sh
index 68085a3..9a160ee 100755
--- a/git-clone.sh
+++ b/git-clone.sh
@@ -56,11 +56,12 @@ fi
 
 http_fetch () {
 	# $1 = Remote, $2 = Local
-	curl -nsfL $curl_extra_args "$1" >"$2" ||
-		case $? in
-		126|127) exit ;;
-		*)	 return $? ;;
-		esac
+	curl -nsfL $curl_extra_args "$1" >"$2"
+	curl_exit_status=$?
+	case $curl_exit_status in
+	126|127) exit ;;
+	*)	 return $curl_exit_status ;;
+	esac
 }
 
 clone_dumb_http () {
-- 
1.5.4.rc0.1145.gef733-dirty
Previous: Sebastian HarlNext: Sebastian Harl
Message 2 of 4 in “git-clone: Unobvious error messages when update-server-info has not been run”
  1. Sebastian HarlDec 17, 2007
  2. Jeff KingDec 17, 2007
  3. Sebastian HarlDec 17, 2007
  4. Gerrit PapeDec 18, 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.