On Thu, Jul 28, 2011 at 1:42 PM, Jonathan Nieder <jrnieder@xxxxxxxxx> wrote: > Dmitry Ivankov wrote: > >> --- a/fast-import.c >> +++ b/fast-import.c >> @@ -1474,8 +1474,11 @@ static void store_tree(struct tree_entry *root) >> return; >> >> for (i = 0; i < t->entry_count; i++) { >> - if (t->entries[i]->tree) >> - store_tree(t->entries[i]); >> + if (!S_ISDIR(t->entries[i]->versions[1].mode)) >> + continue; >> + if (!t->entries[i]->tree) >> + load_tree(t->entries[i]); >> + store_tree(t->entries[i]); > > How can this load_tree call work if t->entries[i]->versions[1].sha1 > is not already in the object database? Well, it can be in the database and at the same time t->entries[i]->tree == NULL. In my testcase the commit is like ls :10386 trunk M 040000 e1b2ea9d3634cb7914044425ffae91945c41ac6a branches/cygnus D branches/cygnus/gcc/assert.h D branches/cygnus/gcc/collect2.c D branches/cygnus/gcc/cccp.c D branches/cygnus/gcc/c-parse.gperf ... only D branches/cygnus/gcc/..... lines progress done #here we call it, so it's when we store whole tree, some subdirectory of branches/cygnus the load_tree really gets called (with whole series applied to fast-import) and the load works (sha1 = 2e90a035614854f626bb35eeac517f41ac84da27) Though I don't yet see if not loading it breaks anything in my test (with the whole series). -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html