Subject: Re: Memory leak with sparse-checkout

From: Taylor Blau <[email-masked]>
Date: Tue, 21 Sep 2021 16:45:19 -0400

On Tue, Sep 21, 2021 at 02:56:01PM -0400, Derrick Stolee wrote:
> > I thought that it might have been related to your third patch to change
> > how bad patterns are detected. But I ran the following script after
> > applying each of your three patches individually:
> >
> >     rm -fr repo
> >     git init repo
> >     cd repo
> >
> >     git sparse-checkout init
> >     git sparse-checkout add foo
> >     git sparse-checkout init --cone
> >     git sparse-checkout add foo
> >
> > and the only difference is that we started silently dropping the bad
> > "foo" pattern after re-adding foo in cone-mode starting with the second
> > patch.
>
> In patch 2, we "detect" that the old patterns were not in cone mode
> because the core.sparseCheckoutCone config is false when parsing the
> patterns, so use_cone_patterns is 0.

I fear that we're talking about different things. With your patches, if
I munge my .git/info/sparse-checkout file, I can easily get something
like:

  $ git.compile sparse-checkout list
  warning: unrecognized pattern: 'foo'
  warning: disabling cone pattern matching

to appear. But I'm wondering why the same doesn't happen when running
`git sparse-checkout init --cone` while the existing sparse-checkout
definition contains non-cone mode entries.

I could be holding it wrong, but I was unsuccessful in getting a warning
out with the quoted script.

> Let's move the discussion to that thread so we can interleave the
> patches themselves.

Sure, if you want. I just found it easier to reply here since I can more
readily quote the things I want to respond to.

Thanks,
Taylor