Re: [PATCH v3 4/4] cache-tree: do not generate empty trees as a result of all i-t-a subentries
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Jul 12, 2016, 20:49 UTC
- Message-ID
- <xmqqtwfu37ld.fsf@gitster.mtv.corp.google.com>
- In-Reply-To
- <20160709052356.30570-5-pclouds@gmail.com>
Nguyễn Thái Ngọc Duy <pclouds@gmail.com> writes:
Show 15 quoted lines
> diff --git a/cache-tree.c b/cache-tree.c > index c2676e8..2d50640 100644 > --- a/cache-tree.c > +++ b/cache-tree.c > @@ -380,6 +380,13 @@ static int update_one(struct cache_tree *it, > continue; > } > > + /* > + * "sub" can be an empty tree if subentries are i-t-a. > + */ > + if (sub && sub->cache_tree->entry_count < 0 && > + !hashcmp(sha1, EMPTY_TREE_SHA1_BIN)) > + continue; > +
Looks sensible, except that it is unclear if it is correct to assume that "subentries are ita" always equals to "entry_count < 0" here. I _think_ it is OK, as the function itself does use the latter as the sign that it hit to_invalidate=1 case when it returns.
Thanks.
Show 26 quoted lines
> strbuf_grow(&buffer, entlen + 100); > strbuf_addf(&buffer, "%o %.*s%c", mode, entlen, path + baselen, '\0'); > strbuf_add(&buffer, sha1, 20); > diff --git a/t/t2203-add-intent.sh b/t/t2203-add-intent.sh > index 24aed2e..f4b2fac 100755 > --- a/t/t2203-add-intent.sh > +++ b/t/t2203-add-intent.sh > @@ -99,5 +99,19 @@ test_expect_success 'cache-tree does not ignore dir that has i-t-a entries' ' > ) > ' > > +test_expect_success 'cache-tree does skip dir that becomes empty' ' > + rm -fr ita-in-dir && > + git init ita-in-dir && > + ( > + cd ita-in-dir && > + mkdir -p 1/2/3 && > + echo 4 >1/2/3/4 && > + git add -N 1/2/3/4 && > + git write-tree >actual && > + echo $_EMPTY_TREE >expected && > + test_cmp expected actual > + ) > +' > + > test_done