Johannes Schindelin <Johannes.Schindelin@xxxxxx> writes: > Now, by saying "git fetch -depth <n> <repo>" you can deepen > a shallow repository. > > Signed-off-by: Johannes Schindelin <johannes.schindelin@xxxxxx> > --- > commit.c | 13 +++++++++++++ > commit.h | 3 ++- > fetch-pack.c | 22 ++++++++++++++++------ > git-fetch.sh | 12 +++++++++++- > shallow.c | 8 ++++++-- > upload-pack.c | 57 ++++++++++++++++++++++++++++++++++++++++++++++----------- > diff --git a/upload-pack.c b/upload-pack.c > index ebe1e5a..162dd34 100644 > --- a/upload-pack.c > +++ b/upload-pack.c > @@ -134,6 +134,7 @@ static void create_pack_file(void) > } else { > for (i = 0; i < want_obj.nr; i++) { > struct object *o = want_obj.objects[i].item; > + o->flags &= ~UNINTERESTING; > add_pending_object(&revs, o, NULL); > } > for (i = 0; i < have_obj.nr; i++) { I am puzzled why this is needed in this series. In other words, do we have a bug in the current upload-pack that does not have shallow already by not clearing UNINTERESTING bit? In yet other words, I haven't figured out which part of the shallow series makes it necessary to clear UNINTERESTING bit from wanted object. > @@ -547,23 +554,51 @@ static void receive_needs(void) >... > + for (i = 0; i < shallows.nr; i++) { > + struct object *object = shallows.objects[i].item; > + if (object->flags & NOT_SHALLOW) { > + struct commit_list *parents; > + packet_write(1, "unshallow %s", > + sha1_to_hex(object->sha1)); > + object->flags &= ~CLIENT_SHALLOW; > + /* make sure the real parents are parsed */ > + unregister_shallow(object->sha1); > + parse_commit((struct commit *)object); > + parents = ((struct commit *)object)->parents; > + while (parents) { > + add_object_array(&parents->item->object, > + NULL, &want_obj); > + parents = parents->next; > + } > + } I doubt unregister_shallow() is enough to ensure that the next parse_commit() re-parses to recover its parents. parse_commit() says "if (item->object.parsed) return 0" upfront. Don't you need to do: object->parsed = 0; before parse_commit()? - 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