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

[PATCH v5 1/8] fetch-object: make functions return an error code

From
Christian Couder <christian.couder@gmail.com>
Date
Sep 25, 2018, 11:53 UTC
Message-ID
<20180925115341.19248-2-chriscool@tuxfamily.org>
In-Reply-To
<20180925115341.19248-1-chriscool@tuxfamily.org>
From: Christian Couder <christian.couder@gmail.com>

The callers of the fetch_object() and fetch_objects() might be interested in knowing if these functions succeeded or not.

Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
---
 fetch-object.c | 13 ++++++++-----
 fetch-object.h |  4 ++--
 sha1-file.c    |  4 ++--
 3 files changed, 12 insertions(+), 9 deletions(-)
diff --git a/fetch-object.c b/fetch-object.c
index 4266548800..eac4d448ef 100644
--- a/fetch-object.c
+++ b/fetch-object.c
@@ -5,11 +5,12 @@
 #include "transport.h"
 #include "fetch-object.h"
 
-static void fetch_refs(const char *remote_name, struct ref *ref)
+static int fetch_refs(const char *remote_name, struct ref *ref)
 {
 	struct remote *remote;
 	struct transport *transport;
 	int original_fetch_if_missing = fetch_if_missing;
+	int res;
 
 	fetch_if_missing = 0;
 	remote = remote_get(remote_name);
@@ -19,12 +20,14 @@ static void fetch_refs(const char *remote_name, struct ref *ref)
 
 	transport_set_option(transport, TRANS_OPT_FROM_PROMISOR, "1");
 	transport_set_option(transport, TRANS_OPT_NO_DEPENDENTS, "1");
-	transport_fetch_refs(transport, ref);
+	res = transport_fetch_refs(transport, ref);
 	fetch_if_missing = original_fetch_if_missing;
+
+	return res;
 }
 
-void fetch_objects(const char *remote_name, const struct object_id *oids,
-		   int oid_nr)
+int fetch_objects(const char *remote_name, const struct object_id *oids,
+		  int oid_nr)
 {
 	struct ref *ref = NULL;
 	int i;
@@ -36,5 +39,5 @@ void fetch_objects(const char *remote_name, const struct object_id *oids,
 		new_ref->next = ref;
 		ref = new_ref;
 	}
-	fetch_refs(remote_name, ref);
+	return fetch_refs(remote_name, ref);
 }
diff --git a/fetch-object.h b/fetch-object.h
index d2f996d4e8..8cc8c14b9d 100644
--- a/fetch-object.h
+++ b/fetch-object.h
@@ -1,7 +1,7 @@
 #ifndef FETCH_OBJECT_H
 #define FETCH_OBJECT_H
 
-void fetch_objects(const char *remote_name, const struct object_id *oids,
-		   int oid_nr);
+int fetch_objects(const char *remote_name, const struct object_id *oids,
+		  int oid_nr);
 
 #endif
diff --git a/sha1-file.c b/sha1-file.c
index a4367b8f04..5c44873d37 100644
--- a/sha1-file.c
+++ b/sha1-file.c
@@ -1312,8 +1312,8 @@ int oid_object_info_extended(struct repository *r, const struct object_id *oid,
 		if (fetch_if_missing && repository_format_partial_clone &&
 		    !already_retried && r == the_repository) {
 			/*
-			 * TODO Investigate having fetch_object() return
-			 * TODO error/success and stopping the music here.
+			 * TODO Investigate checking fetch_object() return
+			 * TODO value and stopping on error here.
 			 * TODO Pass a repository struct through fetch_object,
 			 * such that arbitrary repositories work.
 			 */
-- 
2.19.0.278.gca5b891cac
Previous: Christian CouderNext: Christian Couder
Message 2 of 12 in “Introducing remote ODBs”
  1. 0/8 Introducing remote ODBsChristian Couder, Sep 25, 2018
  2. 1/8 fetch-object: make functions return an error codeChristian Couder, Sep 25, 2018
  3. 2/8 Add initial remote odb supportChristian Couder, Sep 25, 2018
  4. 3/8 remote-odb: implement remote_odb_get_direct()Christian Couder, Sep 25, 2018
  5. 4/8 remote-odb: add remote_odb_reinit()Christian Couder, Sep 25, 2018
  6. 6/8 Use odb.origin.partialclonefilter instead of core.partialclonefilterChristian Couder, Sep 25, 2018
  7. 5/8 Use remote_odb_get_direct() and has_remote_odb()Christian Couder, Sep 25, 2018
  8. 8/8 Documentation/config: add odb.<name>.promisorRemoteChristian Couder, Sep 25, 2018
  9. Duy NguyenSep 25, 2018
  10. 7/8 t0410: test fetching from many promisor remotesChristian Couder, Sep 25, 2018
  11. SZEDER GáborSep 28, 2018
  12. Christian CouderSep 28, 2018

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.