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

[PATCH 14/14] index-pack: silently assume missing objects are promisor

From
JHJeff Hostetler <git@jeffhostetler.com>
Date
Nov 2, 2017, 20:31 UTC
Message-ID
<20171102203129.59417-15-git@jeffhostetler.com>
In-Reply-To
<20171102203129.59417-1-git@jeffhostetler.com>
From: Jeff Hostetler <jeffhost@microsoft.com>

Teach index-pack to not complain about missing objects when the --promisor flag is given. The assumption is that index-pack is currently building the idx and promisor data and the is_promisor_object() query would fail anyway.

Signed-off-by: Jeff Hostetler <jeffhost@microsoft.com>
---
 builtin/index-pack.c | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)
diff --git a/builtin/index-pack.c b/builtin/index-pack.c
index 31cd5ba..51693dc 100644
--- a/builtin/index-pack.c
+++ b/builtin/index-pack.c
@@ -82,6 +82,7 @@ static int verbose;
 static int show_resolving_progress;
 static int show_stat;
 static int check_self_contained_and_connected;
+static int arg_promisor_given;
 
 static struct progress *progress;
 
@@ -223,10 +224,11 @@ static unsigned check_object(struct object *obj)
 		unsigned long size;
 		int type = sha1_object_info(obj->oid.hash, &size);
 
-		if (type <= 0) {
+		if (type <= 0 && arg_promisor_given) {
 			/*
-			 * TODO Use the promisor code to conditionally
-			 * try to fetch this object -or- assume it is ok.
+			 * Assume this missing object is promised.  We can't
+			 * confirm it because we are indexing the packfile
+			 * that omitted it.
 			 */
 			obj->flags |= FLAG_CHECKED;
 			return 0;
@@ -1717,8 +1719,10 @@ int cmd_index_pack(int argc, const char **argv, const char *prefix)
 				keep_msg = arg + 7;
 			} else if (!strcmp(arg, "--promisor")) {
 				promisor_msg = "";
+				arg_promisor_given = 1;
 			} else if (starts_with(arg, "--promisor=")) {
 				promisor_msg = arg + strlen("--promisor=");
+				arg_promisor_given = 1;
 			} else if (starts_with(arg, "--threads=")) {
 				char *end;
 				nr_threads = strtoul(arg+10, &end, 0);
-- 
2.9.3
Previous: Jeff HostetlerNext: Jeff Hostetler
Message 15 of 23 in “WIP Partial clone part 3: clone, fetch, fetch-pack, upload-pack, and tests”
  1. 00/14 WIP Partial clone part 3: clone, fetch, fetch-pack, upload-pack, and testsJeff Hostetler, Nov 2, 2017
  2. 02/14 clone, fetch-pack, index-pack, transport: partial cloneJeff Hostetler, Nov 2, 2017
  3. Jonathan TanNov 3, 2017
  4. Adam DinwoodieNov 8, 2017
  5. Jeff HostetlerNov 16, 2017
  6. 04/14 fetch: add object filtering for partial fetchJeff Hostetler, Nov 2, 2017
  7. Jonathan TanNov 3, 2017
  8. Jeff HostetlerNov 16, 2017
  9. 05/14 remote-curl: add object filtering for partial cloneJeff Hostetler, Nov 2, 2017
  10. 07/14 fetch-pack: test support excluding large blobsJeff Hostetler, Nov 2, 2017
  11. 08/14 fetch: add from_promisor and exclude-promisor-objects parametersJeff Hostetler, Nov 2, 2017
  12. 10/14 t5601: test for partial cloneJeff Hostetler, Nov 2, 2017
  13. 13/14 fetch-pack: restore save_commit_buffer after useJeff Hostetler, Nov 2, 2017
  14. 11/14 t5500: more tests for partial clone and fetchJeff Hostetler, Nov 2, 2017
  15. 14/14 index-pack: silently assume missing objects are promisorJeff Hostetler, Nov 2, 2017
  16. 12/14 unpack-trees: batch fetching of missing blobsJeff Hostetler, Nov 2, 2017
  17. 09/14 t5500: add fetch-pack tests for partial cloneJeff Hostetler, Nov 2, 2017
  18. 06/14 pack-objects: test support for blob filteringJeff Hostetler, Nov 2, 2017
  19. 03/14 fetch: refactor calculation of remote listJeff Hostetler, Nov 2, 2017
  20. 01/14 upload-pack: add object filtering for partial cloneJeff Hostetler, Nov 2, 2017
  21. Jonathan TanNov 2, 2017
  22. Jeff HostetlerNov 3, 2017
  23. Junio C HamanoNov 3, 2017

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.