git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH] terminology tweak: prune -> path limiting

From
Matthew DeVore <matvore@google.com>
Date
Dec 10, 2018, 18:57 UTC
Message-ID
<CAMfpvhKh3xewUY-g9oVJq1o=G3w9EspoQUHc1edHUx3AD4OWfg@mail.gmail.com>
In-Reply-To
<xmqqo99v5vnc.fsf@gitster-ct.c.googlers.com>
On Sat, Dec 8, 2018 at 5:36 PM Junio C Hamano <gitster@pobox.com> wrote:
Show 12 quoted lines
>
> Matthew DeVore <matvore@google.com> writes:
>
> > In the codebase, "prune" is a highly overloaded term, and it caused me a
> > lot of trouble to figure out what it meant when it was used in the
> > context of path limiting. Stop using the word "prune" when we really
> > mean "path limiting."
>
> path limiting is also used for two purposes.  "pruning", which is to
> cull the side branches that do not contribute the changes made to
> the paths we are interested in, and showing only the changes to the
> paths that match pathspec.
Thank you for the clarification re: side branches.
Show 5 quoted lines
>
> AFAIK, "prune" is also used to describe unreachable loose objects,
> but that use is fairly isolated and have little risk of being
> confusing too much.  Are there other uses to make you consider it
> "highly overloaded"?
This is what I found:

git prune - cull unreachable loose objects git fetch --prune - remove remote-tracking refs that no longer exist at source. Also note "--prune-tags" option git notes prune - remove notes for non-existing/unreachable objects git worktree prune - prunes "administrative" files git prune-packed - removes loose objects that are also in pack files git filter-branch --prune-empty - removes commits that become empty as a result of rewriting.

It seems there are three general categories of the use of the term -
 - to remove things from a view (e.g. in path limiting)
 - to remove loose objects for efficiency (git prune, git prune-packed)
 - to remove other things for either efficiency or to reduce cognitive
overhead (git worktree prune, git fetch --prune)
... and each of these categories has 2+ subcategories.

When I tried to figure out what "prune" and "prune_data" ("data" is quite vague, so these two fields read like "prune_1" and "prune_2") referred to in "revision.h", I basically did "grep -rn prune" and looked through the results, but there were too many uses of the term "prune" to pinpoint its meaning. If I used an IDE I might have been able to "find usages" of struct revs's prune field, and I probably *should have* done that, but I didn't have an IDE prepared and I figured it wasn't important. Then an hour or so later I realized I was still being confused by this term, and set out to figuring out what it actually meant.

Show 6 quoted lines
>
> My gut feeling is that the result is not reducing "overloading" in a
> meaningful way, and this change is not worth the churn, but it
> depends on the answer to the above question.
>
> Thanks.
Previous: Junio C HamanoNext: Junio C Hamano
Message 4 of 6 in “terminology tweak: prune -> path limiting”
  1. terminology tweak: prune -> path limitingMatthew DeVore, Dec 6, 2018
  2. Junio C HamanoDec 9, 2018
  3. Junio C HamanoDec 9, 2018
  4. Matthew DeVoreDec 10, 2018
  5. Junio C HamanoDec 11, 2018
  6. MATTHEW DEVOREDec 11, 2018

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.