Re: Efficient way to import snapshots?

Subsystems: the rest

2 messages, 2 authors, 2016-06-15 · open the first message on its own page

Re: Efficient way to import snapshots?

From: Junio C Hamano <hidden>
Date: 2016-06-15 22:43:25

Linus Torvalds [off-list ref] writes:
Junio? I _thought_ we already took the index into account with "git add", 
but we obviously don't. 
I think 366bfcb6 "broke" it by moving read_cache() call down,
because it wanted the directory walking code to grab paths that
are already in the index.  The change serves its purpose, but
introduces this regression now the responsibility of avoiding
unnecessary reindexing by matching the cached stat is shifted
nowhere.

We would need to do something like this patch, perhaps?  This
function has three callers, two in builtin-add and another in
builtin-mv.

---
 read-cache.c  |    9 ++++++++-
 1 files changed, 8 insertions(+), 1 deletions(-)
diff --git a/read-cache.c b/read-cache.c
index a363f31..c346d88 100644
--- a/read-cache.c
+++ b/read-cache.c
@@ -380,7 +380,7 @@ static int index_name_pos_also_unmerged(struct index_state *istate,
 
 int add_file_to_index(struct index_state *istate, const char *path, int verbose)
 {
-	int size, namelen;
+	int size, namelen, pos;
 	struct stat st;
 	struct cache_entry *ce;
 
@@ -414,6 +414,13 @@ int add_file_to_index(struct index_state *istate, const char *path, int verbose)
 		ce->ce_mode = ce_mode_from_stat(ent, st.st_mode);
 	}
 
+	pos = index_name_pos(istate, ce->name, namelen);
+	if (0 <= pos && !ie_modified(istate, istate->cache[pos], &st, 1)) {
+		/* Nothing changed, really */
+		free(ce);
+		return 0;
+	}
+
 	if (index_path(ce->sha1, path, &st, 1))
 		die("unable to index file %s", path);
 	if (add_index_entry(istate, ce, ADD_CACHE_OK_TO_ADD|ADD_CACHE_OK_TO_REPLACE))

Re: Efficient way to import snapshots?

From: Linus Torvalds <torvalds@linux-foundation.org>
Date: 2016-06-15 22:43:25


On Mon, 30 Jul 2007, Junio C Hamano wrote:
We would need to do something like this patch, perhaps?  This
function has three callers, two in builtin-add and another in
builtin-mv.
I think you need to check that ce is in stage 0 too.

		Linus
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help