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

[PATCH 4/9] remote-curl: always show friendlier 404 message

From
Jeff King <peff@peff.net>
Date
Apr 5, 2013, 22:20 UTC
Message-ID
<20130405222043.GD22163@sigill.intra.peff.net>
In-Reply-To
<20130405221331.GA21209@sigill.intra.peff.net>

When we get an http 404 trying to get the initial list of refs from the server, we try to be helpful and remind the user that update-server-info may need to be run. This looks like:

  $ git clone https://github.com/non/existent
  Cloning into 'existent'...
  fatal: https://github.com/non/existent/info/refs?service=git-upload-pack not found: did you run git update-server-info on the server?

Suggesting update-server-info may be a good suggestion for users who are in control of the server repo and who are planning to set up dumb http. But for users of smart http, and especially users who are not in control of the server repo, the advice is useless and confusing.

Since most people are expected to use smart http these days, it does not make sense to keep the update-server-info hint.

We not only drop the mention of update-server-info, but also show only the main repo URL, not the full "info/refs" and service parameter. These elements may be useful for debugging a broken server configuration, but in the majority of cases, users are not fetching from their own repositories, but rather from other people's repositories; they have neither the power nor interest to fix a broken configuration, and the extra components just make the message more confusing. Users who do want to debug can and should use GIT_CURL_VERBOSE to get more complete information on the actual URLs visited.

Signed-off-by: Jeff King <peff@peff.net>
---
This is obviously a more stringent version of the last patch, and could
just replace it. I think the last one is a no-brainer, because it lets
well-configured sites replace these messages. This one is less obvious,
because we may be hitting some random poorly configured server that
somebody is trying to set up.

Still, if you think about the number of people fetching (against any server) versus the number of people configuring new servers, I think the advice to run update-server-info has a vanishingly small chance of being useful (and IMHO is misleading if you do not know how dumb-http works, as it makes you think the server is misconfigured, when it is much more likely to be a user error).

 remote-curl.c | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/remote-curl.c b/remote-curl.c
index 083efdf..5d9f961 100644
--- a/remote-curl.c
+++ b/remote-curl.c
@@ -209,10 +209,8 @@ static struct discovery* discover_refs(const char *service, int for_push)
 	case HTTP_OK:
 		break;
 	case HTTP_MISSING_TARGET:
-		if (!show_http_message(&type, &buffer))
-			die("repository '%s' not found", url);
-		die("%s not found: did you run git update-server-info on the"
-		    " server?", refs_url);
+		show_http_message(&type, &buffer);
+		die("repository '%s' not found", url);
 	case HTTP_NOAUTH:
 		show_http_message(&type, &buffer);
 		die("Authentication failed");
-- 
1.8.2.rc0.33.gd915649
Previous: Jeff KingNext: Jeff King
Message 5 of 10 in “friendlier http error messages”
  1. 0/9 friendlier http error messagesJeff King, Apr 5, 2013
  2. 1/9 http: add HTTP_KEEP_ERROR optionJeff King, Apr 5, 2013
  3. 2/9 remote-curl: show server content on http errorsJeff King, Apr 5, 2013
  4. 3/9 remote-curl: let servers override http 404 adviceJeff King, Apr 5, 2013
  5. 4/9 remote-curl: always show friendlier 404 messageJeff King, Apr 5, 2013
  6. 5/9 remote-curl: consistently report repo url for http errorsJeff King, Apr 5, 2013
  7. 6/9 http: simplify http_error helper functionJeff King, Apr 5, 2013
  8. 7/9 http: re-word http error messageJeff King, Apr 5, 2013
  9. 8/9 remote-curl: die directly with http error messagesJeff King, Apr 5, 2013
  10. 9/9 http: drop http_error functionJeff King, Apr 5, 2013

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.