Nguyễn Thái Ngọc Duy  <pclo...@gmail.com> writes:

> Also add some more comments in this code because it takes too long to
> understand what it does (to me, who should be familiar enough to
> understand this code well!)
>
> Signed-off-by: Nguyễn Thái Ngọc Duy <pclo...@gmail.com>
> ---

The diff is harder to read than necessary (not your fault), but
splitting this into a separate helper makes sense to me.

Thanks.

>  upload-pack.c | 39 ++++++++++++++++++++++++++-------------
>  1 file changed, 26 insertions(+), 13 deletions(-)
>
> diff --git a/upload-pack.c b/upload-pack.c
> index ee5d20b..bfb7985 100644
> --- a/upload-pack.c
> +++ b/upload-pack.c
> @@ -552,20 +552,10 @@ static void send_shallow(struct commit_list *result)
>       }
>  }
>  
> -static void deepen(int depth, const struct object_array *shallows)
> +static void send_unshallow(const struct object_array *shallows)
>  {
> -     struct commit_list *result = NULL;
>       int i;
> -     if (depth == INFINITE_DEPTH && !is_repository_shallow())
> -             for (i = 0; i < shallows->nr; i++) {
> -                     struct object *object = shallows->objects[i].item;
> -                     object->flags |= NOT_SHALLOW;
> -             }
> -     else
> -             result = get_shallow_commits(&want_obj, depth,
> -                                          SHALLOW, NOT_SHALLOW);
> -     send_shallow(result);
> -     free_commit_list(result);
> +
>       for (i = 0; i < shallows->nr; i++) {
>               struct object *object = shallows->objects[i].item;
>               if (object->flags & NOT_SHALLOW) {
> @@ -573,7 +563,13 @@ static void deepen(int depth, const struct object_array 
> *shallows)
>                       packet_write(1, "unshallow %s",
>                                    oid_to_hex(&object->oid));
>                       object->flags &= ~CLIENT_SHALLOW;
> -                     /* make sure the real parents are parsed */
> +                     /*
> +                      * We want to _register_ "object" as shallow, but we
> +                      * also need to traverse object's parents to deepen a
> +                      * shallow clone. Unregister it for now so we can
> +                      * parse and add the parents to the want list, then
> +                      * re-register it.
> +                      */
>                       unregister_shallow(object->oid.hash);
>                       object->parsed = 0;
>                       parse_commit_or_die((struct commit *)object);
> @@ -588,6 +584,23 @@ static void deepen(int depth, const struct object_array 
> *shallows)
>               /* make sure commit traversal conforms to client */
>               register_shallow(object->oid.hash);
>       }
> +}
> +
> +static void deepen(int depth, const struct object_array *shallows)
> +{
> +     struct commit_list *result = NULL;
> +     int i;
> +     if (depth == INFINITE_DEPTH && !is_repository_shallow())
> +             for (i = 0; i < shallows->nr; i++) {
> +                     struct object *object = shallows->objects[i].item;
> +                     object->flags |= NOT_SHALLOW;
> +             }
> +     else
> +             result = get_shallow_commits(&want_obj, depth,
> +                                          SHALLOW, NOT_SHALLOW);
> +     send_shallow(result);
> +     free_commit_list(result);
> +     send_unshallow(shallows);
>       packet_flush(1);
>  }
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to