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

[PATCH 1/8] fast-import: cache oe in file_change_m

From
Dmitry Ivankov <divanorama@gmail.com>
Date
Sep 19, 2011, 01:27 UTC
Message-ID
<1316395657-6991-2-git-send-email-divanorama@gmail.com>
In-Reply-To
<1316395657-6991-1-git-send-email-divanorama@gmail.com>

file_change_m checks object type for objects specified by sha1. It does so via sha1_object_info but doesn't cache this information in struct object_entry.

Make this call to sha1_object_info cached in struct object_entry.
Signed-off-by: Dmitry Ivankov <divanorama@gmail.com>
---
 fast-import.c |   22 ++++++++++++++--------
 1 files changed, 14 insertions(+), 8 deletions(-)
diff --git a/fast-import.c b/fast-import.c
index 742e7da..42f9b17 100644
--- a/fast-import.c
+++ b/fast-import.c
@@ -2297,15 +2297,21 @@ static void file_change_m(struct branch *b)
 	} else {
 		enum object_type expected = S_ISDIR(mode) ?
 						OBJ_TREE: OBJ_BLOB;
-		enum object_type type = oe ? oe->type :
-					sha1_object_info(sha1, NULL);
-		if (type < 0)
-			die("%s not found: %s",
-					S_ISDIR(mode) ?  "Tree" : "Blob",
-					command_buf.buf);
-		if (type != expected)
+		if (!oe)
+			oe = insert_object(sha1);
+		if (!oe->idx.offset) {
+			enum object_type type = sha1_object_info(oe->idx.sha1, NULL);
+			if (type < 0)
+				die("%s not found: %s",
+						S_ISDIR(mode) ?  "Tree" : "Blob",
+						command_buf.buf);
+			oe->type = type;
+			oe->pack_id = MAX_PACK_ID;
+			oe->idx.offset = 1; /* nonzero */
+		}
+		if (oe->type != expected)
 			die("Not a %s (actually a %s): %s",
-				typename(expected), typename(type),
+				typename(expected), typename(oe->type),
 				command_buf.buf);
 	}
 
-- 
1.7.3.4
Previous: Dmitry IvankovNext: Dmitry Ivankov
Message 2 of 13 in “fast-import: cache oe more often”
  1. 0/8 fast-import: cache oe more oftenDmitry Ivankov, Sep 19, 2011
  2. 1/8 fast-import: cache oe in file_change_mDmitry Ivankov, Sep 19, 2011
  3. 2/8 fast-import: cache oe in parse_new_tagDmitry Ivankov, Sep 19, 2011
  4. 3/8 fast-import: cache oe in note_change_nDmitry Ivankov, Sep 19, 2011
  5. 4/8 fast-import: extract common sha1_file access functionsDmitry Ivankov, Sep 19, 2011
  6. 5/8 fast-import: tiny optimization in read_marksDmitry Ivankov, Sep 19, 2011
  7. 6/8 fast-import: cache oe in load_treeDmitry Ivankov, Sep 19, 2011
  8. 7/8 fast-import: cache oe in cat_blobDmitry Ivankov, Sep 19, 2011
  9. 8/8 fast-import: cache objects while dereferencingDmitry Ivankov, Sep 19, 2011
  10. Junio C HamanoSep 20, 2011
  11. Jonathan NiederSep 20, 2011
  12. Dmitry IvankovSep 20, 2011
  13. Jonathan NiederSep 20, 2011

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.