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

[PATCH v2 3/9] http-fetch: refactor into function

From
JTJonathan Tan <jonathantanmy@google.com>
Date
Jun 10, 2020, 20:57 UTC
Message-ID
<7a9b454bd609aaa7d9909c70739603add5c038e5.1591821067.git.jonathantanmy@google.com>
In-Reply-To
<cover.1591821067.git.jonathantanmy@google.com>

cmd_main() in http-fetch.c will grow in a future patch, so refactor the HTTP walking part into its own function.

Signed-off-by: Jonathan Tan <jonathantanmy@google.com>
---
 http-fetch.c | 69 +++++++++++++++++++++++++++++++---------------------
 1 file changed, 41 insertions(+), 28 deletions(-)
diff --git a/http-fetch.c b/http-fetch.c
index a32ac118d9..e538174bde 100644
--- a/http-fetch.c
+++ b/http-fetch.c
@@ -7,16 +7,49 @@
 static const char http_fetch_usage[] = "git http-fetch "
 "[-c] [-t] [-a] [-v] [--recover] [-w ref] [--stdin] commit-id url";
 
-int cmd_main(int argc, const char **argv)
+static int fetch_using_walker(const char *raw_url, int get_verbosely,
+			      int get_recover, int commits, char **commit_id,
+			      const char **write_ref, int commits_on_stdin)
 {
+	char *url = NULL;
 	struct walker *walker;
+	int rc;
+
+	str_end_url_with_slash(raw_url, &url);
+
+	http_init(NULL, url, 0);
+
+	walker = get_http_walker(url);
+	walker->get_verbosely = get_verbosely;
+	walker->get_recover = get_recover;
+	walker->get_progress = 0;
+
+	rc = walker_fetch(walker, commits, commit_id, write_ref, url);
+
+	if (commits_on_stdin)
+		walker_targets_free(commits, commit_id, write_ref);
+
+	if (walker->corrupt_object_found) {
+		fprintf(stderr,
+"Some loose object were found to be corrupt, but they might be just\n"
+"a false '404 Not Found' error message sent with incorrect HTTP\n"
+"status code.  Suggest running 'git fsck'.\n");
+	}
+
+	walker_free(walker);
+	http_cleanup();
+	free(url);
+
+	return rc;
+}
+
+int cmd_main(int argc, const char **argv)
+{
 	int commits_on_stdin = 0;
 	int commits;
 	const char **write_ref = NULL;
 	char **commit_id;
-	char *url = NULL;
 	int arg = 1;
-	int rc = 0;
 	int get_verbosely = 0;
 	int get_recover = 0;
 
@@ -47,34 +80,14 @@ int cmd_main(int argc, const char **argv)
 		commits = 1;
 	}
 
-	if (argv[arg])
-		str_end_url_with_slash(argv[arg], &url);
-
 	setup_git_directory();
 
 	git_config(git_default_config, NULL);
 
-	http_init(NULL, url, 0);
-	walker = get_http_walker(url);
-	walker->get_verbosely = get_verbosely;
-	walker->get_recover = get_recover;
-
-	rc = walker_fetch(walker, commits, commit_id, write_ref, url);
-
-	if (commits_on_stdin)
-		walker_targets_free(commits, commit_id, write_ref);
+	if (!argv[arg])
+		BUG("must have one arg remaining");
 
-	if (walker->corrupt_object_found) {
-		fprintf(stderr,
-"Some loose object were found to be corrupt, but they might be just\n"
-"a false '404 Not Found' error message sent with incorrect HTTP\n"
-"status code.  Suggest running 'git fsck'.\n");
-	}
-
-	walker_free(walker);
-	http_cleanup();
-
-	free(url);
-
-	return rc;
+	return fetch_using_walker(argv[arg], get_verbosely, get_recover,
+				  commits, commit_id, write_ref,
+				  commits_on_stdin);
 }
-- 
2.27.0.278.ge193c7cf3a9-goog
Previous: Jonathan TanNext: Jonathan Tan
Message 31 of 44 in “CDN offloading update”
  1. 0/8 CDN offloading updateJonathan Tan, May 29, 2020
  2. 1/8 http: use --stdin when getting dumb HTTP packJonathan Tan, May 29, 2020
  3. Junio C HamanoMay 29, 2020
  4. Jonathan TanJun 1, 2020
  5. 2/8 http: improve documentation of http_pack_requestJonathan Tan, May 29, 2020
  6. 4/8 Documentation: order protocol v2 sectionsJonathan Tan, May 29, 2020
  7. Junio C HamanoMay 29, 2020
  8. Jonathan TanJun 1, 2020
  9. 3/8 http-fetch: support fetching packfiles by URLJonathan Tan, May 29, 2020
  10. Junio C HamanoMay 29, 2020
  11. Jonathan TanJun 1, 2020
  12. 5/8 Documentation: add Packfile URIs design docJonathan Tan, May 29, 2020
  13. Junio C HamanoMay 30, 2020
  14. Junio C HamanoMay 30, 2020
  15. Jonathan TanJun 1, 2020
  16. Jonathan TanJun 1, 2020
  17. Jonathan TanJun 10, 2020
  18. Junio C HamanoJun 10, 2020
  19. Jonathan TanJun 10, 2020
  20. 6/8 upload-pack: refactor reading of pack-objects outJonathan Tan, May 29, 2020
  21. 8/8 upload-pack: send part of packfile response as uriJonathan Tan, May 29, 2020
  22. Junio C HamanoMay 31, 2020
  23. Junio C HamanoMay 31, 2020
  24. Jonathan TanJun 1, 2020
  25. Jonathan NiederJun 1, 2020
  26. 7/8 fetch-pack: support more than one pack lockfileJonathan Tan, May 29, 2020
  27. 0/9 CDN offloading updateJonathan Tan, Jun 10, 2020
  28. 1/9 http: use --stdin when indexing dumb HTTP packJonathan Tan, Jun 10, 2020
  29. Junio C HamanoJun 11, 2020
  30. 2/9 http: refactor finish_http_pack_request()Jonathan Tan, Jun 10, 2020
  31. 3/9 http-fetch: refactor into functionJonathan Tan, Jun 10, 2020
  32. 5/9 Documentation: order protocol v2 sectionsJonathan Tan, Jun 10, 2020
  33. 4/9 http-fetch: support fetching packfiles by URLJonathan Tan, Jun 10, 2020
  34. Junio C HamanoJun 11, 2020
  35. 6/9 Documentation: add Packfile URIs design docJonathan Tan, Jun 10, 2020
  36. Junio C HamanoJun 11, 2020
  37. Ævar Arnfjörð BjarmasonNov 25, 2020
  38. Jonathan TanNov 25, 2020
  39. Ævar Arnfjörð BjarmasonDec 1, 2020
  40. 7/9 upload-pack: refactor reading of pack-objects outJonathan Tan, Jun 10, 2020
  41. 8/9 fetch-pack: support more than one pack lockfileJonathan Tan, Jun 10, 2020
  42. Junio C HamanoJun 11, 2020
  43. 9/9 upload-pack: send part of packfile response as uriJonathan Tan, Jun 10, 2020
  44. Junio C HamanoJun 10, 2020

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.