git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
* limiting git branch --contains
@ 2023-03-23 18:54 Oswald Buddenhagen
  2023-03-23 19:42 ` Junio C Hamano
  2023-03-23 20:56 ` Felipe Contreras
  0 siblings, 2 replies; 15+ messages in thread
From: Oswald Buddenhagen @ 2023-03-23 18:54 UTC (permalink / raw)
  To: git

moin,

git branch --contains can be a rather expensive operation in big 
repositories. as my use case is actually a rather limited search for 
commits in my local wip branches, it would be helpful to be able to 
specify exclusions for the rev-walk, say

   git branch --contains deadbeef ^origin/master

suggestions how this is actually already achievable efficiently are of 
course welcome as well. ^^

thanks!

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: limiting git branch --contains
  2023-03-23 18:54 limiting git branch --contains Oswald Buddenhagen
@ 2023-03-23 19:42 ` Junio C Hamano
  2023-03-23 20:44   ` Oswald Buddenhagen
  2023-03-23 20:56 ` Felipe Contreras
  1 sibling, 1 reply; 15+ messages in thread
From: Junio C Hamano @ 2023-03-23 19:42 UTC (permalink / raw)
  To: Oswald Buddenhagen; +Cc: git

Oswald Buddenhagen <oswald.buddenhagen@gmx.de> writes:

> git branch --contains can be a rather expensive operation in big
> repositories. as my use case is actually a rather limited search for
> commits in my local wip branches,...

I can do

    $ git branch --list --contains master \??/\*

to show only the topic branches that forked from/after 'master', and
replacing 'master' with v2.40.0 or any older point and the output
starts showing more branches, but the search excludes integration
branches like 'next' and 'seen'.  Is that what you are after?

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: limiting git branch --contains
  2023-03-23 19:42 ` Junio C Hamano
@ 2023-03-23 20:44   ` Oswald Buddenhagen
  2023-03-24 17:23     ` Derrick Stolee
  0 siblings, 1 reply; 15+ messages in thread
From: Oswald Buddenhagen @ 2023-03-23 20:44 UTC (permalink / raw)
  To: git

On Thu, Mar 23, 2023 at 12:42:52PM -0700, Junio C Hamano wrote:
>Oswald Buddenhagen <oswald.buddenhagen@gmx.de> writes:
>
>> git branch --contains can be a rather expensive operation in big
>> repositories. as my use case is actually a rather limited search for
>> commits in my local wip branches,...
>
>I can do
>
>    $ git branch --list --contains master \??/\*
>
>to show only the topic branches that forked from/after 'master', and
>replacing 'master' with v2.40.0 or any older point and the output
>starts showing more branches, but the search excludes integration
>branches like 'next' and 'seen'.  Is that what you are after?
>
not really.
the objective is finding the work branch(es) a given sha1 is coming 
from.
the problem isn't that the above doesn't work, only that it is insanely 
expensive - on my old machine it takes half a minute in the linux kernel 
tree.
that's an inevitable effect of trying the branches one after another and 
not being lucky enough to pick the right branch first. at least that's 
what appears to be happening.
this could be optimized by doing a piecewise descend on all branches 
simultaneously (which i presume is what merge-base & co. do), but if the 
commit actually isn't on any local branch at all, we'd still walk to the 
very root commit(s) - which is rather wasteful when we actually know 
that we can cut the walks short.

am i making sense?

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: limiting git branch --contains
  2023-03-23 18:54 limiting git branch --contains Oswald Buddenhagen
  2023-03-23 19:42 ` Junio C Hamano
@ 2023-03-23 20:56 ` Felipe Contreras
  1 sibling, 0 replies; 15+ messages in thread
From: Felipe Contreras @ 2023-03-23 20:56 UTC (permalink / raw)
  To: Oswald Buddenhagen; +Cc: git

On Thu, Mar 23, 2023 at 1:07 PM Oswald Buddenhagen
<oswald.buddenhagen@gmx.de> wrote:
>
> moin,
>
> git branch --contains can be a rather expensive operation in big
> repositories. as my use case is actually a rather limited search for
> commits in my local wip branches, it would be helpful to be able to
> specify exclusions for the rev-walk, say
>
>    git branch --contains deadbeef ^origin/master
>
> suggestions how this is actually already achievable efficiently are of
> course welcome as well. ^^

Because I saw no way to specify only the actual commits of my
branches, I wrote a tool: git-smartlist [1]

In particular the negate_upstreams helper, which basically goes
through all the branches and does topic1@{u}..topic1
topic2@{u}..topic2 etc.

[1] https://github.com/felipec/git-smartlist/blob/master/git-smartlist

-- 
Felipe Contreras

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: limiting git branch --contains
  2023-03-23 20:44   ` Oswald Buddenhagen
@ 2023-03-24 17:23     ` Derrick Stolee
  2023-03-24 18:15       ` Oswald Buddenhagen
  2023-03-24 19:10       ` Jeff King
  0 siblings, 2 replies; 15+ messages in thread
From: Derrick Stolee @ 2023-03-24 17:23 UTC (permalink / raw)
  To: Oswald Buddenhagen, git

On 3/23/2023 4:44 PM, Oswald Buddenhagen wrote:
> On Thu, Mar 23, 2023 at 12:42:52PM -0700, Junio C Hamano wrote:
>> Oswald Buddenhagen <oswald.buddenhagen@gmx.de> writes:
>>
>>> git branch --contains can be a rather expensive operation in big
>>> repositories. as my use case is actually a rather limited search for
>>> commits in my local wip branches,...
>>
>> I can do
>>
>>    $ git branch --list --contains master \??/\*
>>
>> to show only the topic branches that forked from/after 'master', and
>> replacing 'master' with v2.40.0 or any older point and the output
>> starts showing more branches, but the search excludes integration
>> branches like 'next' and 'seen'.  Is that what you are after?
>>
> not really.
> the objective is finding the work branch(es) a given sha1 is coming from.
> the problem isn't that the above doesn't work, only that it is insanely expensive - on my old machine it takes half a minute in the linux kernel tree.
> that's an inevitable effect of trying the branches one after another and not being lucky enough to pick the right branch first. at least that's what appears to be happening.
> this could be optimized by doing a piecewise descend on all branches simultaneously (which i presume is what merge-base & co. do), but if the commit actually isn't on any local branch at all, we'd still walk to the very root commit(s) - which is rather wasteful when we actually know that we can cut the walks short.

Could you make sure to run 'git commit-graph write --reachable' before
testing again?

When the commit-graph exists on disk, the algorithm does do a single
reachability walk from all the initial points. If it does not exist,
then each starting point triggers its own reachability walk, which
is significantly slower. See repo_is_descendant_of() in commit-reach.c
for more information on this split.

Thanks,
-Stolee

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: limiting git branch --contains
  2023-03-24 17:23     ` Derrick Stolee
@ 2023-03-24 18:15       ` Oswald Buddenhagen
  2023-03-24 18:20         ` Derrick Stolee
  2023-03-24 19:10       ` Jeff King
  1 sibling, 1 reply; 15+ messages in thread
From: Oswald Buddenhagen @ 2023-03-24 18:15 UTC (permalink / raw)
  To: git

On Fri, Mar 24, 2023 at 01:23:32PM -0400, Derrick Stolee wrote:
>Could you make sure to run 'git commit-graph write --reachable' before
>testing again?
>
i did, didn't help.

but regardless, even if this would improve things by an order of 
magnitude (or even two), it would be still wasteful, given that the 
expected working set contains a few tens commits, while the whole graph 
contains well over a million commits.

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: limiting git branch --contains
  2023-03-24 18:15       ` Oswald Buddenhagen
@ 2023-03-24 18:20         ` Derrick Stolee
  2023-03-24 19:02           ` Oswald Buddenhagen
  0 siblings, 1 reply; 15+ messages in thread
From: Derrick Stolee @ 2023-03-24 18:20 UTC (permalink / raw)
  To: git

On 3/24/2023 2:15 PM, Oswald Buddenhagen wrote:
> On Fri, Mar 24, 2023 at 01:23:32PM -0400, Derrick Stolee wrote:
>> Could you make sure to run 'git commit-graph write --reachable' before
>> testing again?
>>
> i did, didn't help.
> 
> but regardless, even if this would improve things by an order of magnitude (or even two), it would be still wasteful, given that the expected working set contains a few tens commits, while the whole graph contains well over a million commits.

Hm. The point is that it _should_ improve things by several orders
of magnitude by using generation numbers to avoid walking a
significant portion of the commits. That is, unless the commit is
extremely old.

But what you were originally asking was also about filtering the
set of branches to pick, instead of just the commits that are
walked.

In that case, perhaps you should use 

  git for-each-ref --format="%(refname)" --contains=<oid> <ref1> <ref2> ... <refN>

or use ref patterns instead of exact refs, if you have such a
grouping?

Thanks,
-Stolee

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: limiting git branch --contains
  2023-03-24 18:20         ` Derrick Stolee
@ 2023-03-24 19:02           ` Oswald Buddenhagen
  2023-03-24 19:13             ` Jeff King
  0 siblings, 1 reply; 15+ messages in thread
From: Oswald Buddenhagen @ 2023-03-24 19:02 UTC (permalink / raw)
  To: git

On Fri, Mar 24, 2023 at 02:20:01PM -0400, Derrick Stolee wrote:
>Hm. The point is that it _should_ improve things by several orders
>of magnitude [...]
>
well, at that point it would be kinda sufficient. ^^
but it really doesn't do anything at all (i tried moving away the graph 
for comparison).
maybe the operation just forgets to load the graph?

>But what you were originally asking was also about filtering the
>set of branches to pick,
>
i didn't, i was just misunderstood.

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: limiting git branch --contains
  2023-03-24 17:23     ` Derrick Stolee
  2023-03-24 18:15       ` Oswald Buddenhagen
@ 2023-03-24 19:10       ` Jeff King
  1 sibling, 0 replies; 15+ messages in thread
From: Jeff King @ 2023-03-24 19:10 UTC (permalink / raw)
  To: Derrick Stolee; +Cc: Oswald Buddenhagen, git

On Fri, Mar 24, 2023 at 01:23:32PM -0400, Derrick Stolee wrote:

> Could you make sure to run 'git commit-graph write --reachable' before
> testing again?
> 
> When the commit-graph exists on disk, the algorithm does do a single
> reachability walk from all the initial points. If it does not exist,
> then each starting point triggers its own reachability walk, which
> is significantly slower. See repo_is_descendant_of() in commit-reach.c
> for more information on this split.

I'm a bit confused by that reference. We do switch behavior based on the
presence of generation numbers in repo_is_descendant_of(). But
ref-filter calls that function from commit_contains(), which is only fed
one ref at a time. So we'll still do several walks, one per ref.

In commit_contains() we'll use the "tag algo" instead of calling
repo_is_descendant_of(). It still sees the refs individually, but it
keeps a cache to avoid walking over the same parts of history. We didn't
traditionally use that algorithm for branches because it has a tendency
to walk down to the roots (which is OK for tags, where you have old ones
that require walking down that far anyway, but not for branches, where
you can usually stop at a recent merge base). But now that we have
reliable generation numbers, we can stop that traversal early.

But it doesn't look like we actually trigger the tag algo for anything
but git-tag. I.e., I wonder if we should be doing something like this:

diff --git a/commit-reach.c b/commit-reach.c
index 7c0c39fd286..16c1a341bf5 100644
--- a/commit-reach.c
+++ b/commit-reach.c
@@ -712,7 +712,8 @@ static enum contains_result contains_tag_algo(struct commit *candidate,
 int commit_contains(struct ref_filter *filter, struct commit *commit,
 		    struct commit_list *list, struct contains_cache *cache)
 {
-	if (filter->with_commit_tag_algo)
+	if (filter->with_commit_tag_algo ||
+	    generation_numbers_enabled(the_repository))
 		return contains_tag_algo(commit, list, cache) == CONTAINS_YES;
 	return repo_is_descendant_of(the_repository, commit, list);
 }

The speedup is pretty minor compared to using commit-graphs at all.
Doing "git for-each-ref --format='%(refname)' --contains HEAD" on a
clone of linux.git gets me:

  - with no commit graph: 1m40s
  - after "commit-graph write --reachable": 30ms
  - plus the patch above; 23ms

So most of the help comes from not parsing the commit objects (courtesy
of the commit graph) and perhaps some early cutoffs (due to the use of
generation numbers in repo_is_descendant_of()). Using the cached walk
helps a little, but it may be more so for certain patterns of data.

I also scratched my head a little that we are still using
commit_contains() at all. I thought we now had functions to do a single
walk that would give us an answer for each ref, and that we could
trigger that in filter_refs(). And we do have reach_filter() there, but
I think it only handles --merged/--no-merged.

I admit I haven't kept up with the state of things here, so I'm not sure
what tools we have available.

-Peff

^ permalink raw reply related	[flat|nested] 15+ messages in thread

* Re: limiting git branch --contains
  2023-03-24 19:02           ` Oswald Buddenhagen
@ 2023-03-24 19:13             ` Jeff King
  2023-03-24 19:58               ` Oswald Buddenhagen
  0 siblings, 1 reply; 15+ messages in thread
From: Jeff King @ 2023-03-24 19:13 UTC (permalink / raw)
  To: Oswald Buddenhagen; +Cc: git

On Fri, Mar 24, 2023 at 08:02:53PM +0100, Oswald Buddenhagen wrote:

> On Fri, Mar 24, 2023 at 02:20:01PM -0400, Derrick Stolee wrote:
> > Hm. The point is that it _should_ improve things by several orders
> > of magnitude [...]
> > 
> well, at that point it would be kinda sufficient. ^^
> but it really doesn't do anything at all (i tried moving away the graph for
> comparison).
> maybe the operation just forgets to load the graph?

That seems weird. I get a 3000x speedup just by using building the
commit-graph. Are you seeing any change at all? What version of Git are
you using?

I'd be curious, too, if you can try the patch I posted elsewhere in the
thread to see if that improves things.

-Peff

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: limiting git branch --contains
  2023-03-24 19:13             ` Jeff King
@ 2023-03-24 19:58               ` Oswald Buddenhagen
  2023-03-24 20:45                 ` Jeff King
  0 siblings, 1 reply; 15+ messages in thread
From: Oswald Buddenhagen @ 2023-03-24 19:58 UTC (permalink / raw)
  To: git

On Fri, Mar 24, 2023 at 03:13:02PM -0400, Jeff King wrote:
>On Fri, Mar 24, 2023 at 08:02:53PM +0100, Oswald Buddenhagen wrote:
>> maybe the operation just forgets to load the graph?
>
so i strace'd the thing, and there is indeed no appearance of 
'commit-graph' in the log.

so i tried git log --graph ... and still nothing?!

and yes, core.commitgraph is true (originally absent, so same thing).

>That seems weird.
>
indeed.

so weird in fact, that i tried another repository. and it works!

so apparently something is wrong with my/the linux repository.
things i can imagine contributing to throwing it off somehow:

$ git remote -v
alsa    git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound.git (fetch)
alsa    git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound.git (push)
history git://git.kernel.org/pub/scm/linux/kernel/git/tglx/history.git (fetch)
history git://git.kernel.org/pub/scm/linux/kernel/git/tglx/history.git (push)
linux-mips      git://git.linux-mips.org/pub/scm/ralf/linux (fetch)
linux-mips      git://git.linux-mips.org/pub/scm/ralf/linux (push)
linux-wireless  git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/wireless-drivers (fetch)
linux-wireless  git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/wireless-drivers (push)
origin  git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git (fetch)
origin  git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git (push)
ossi    git@github.com:ossilator/linux.git (fetch)
ossi    git@github.com:ossilator/linux.git (push)

(the linux-* remotes haven't been pulled for years.)

$ grep replace .git/packed-refs
a3628e41a9946c4fe93d9b2ae5906e1b2184fa8e refs/replace/1da177e4c3f41524e886b7f1b8a0c1fc7321cac2

>What version of Git are you using?
>
rather recent master. dogfeeding my contributions.

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: limiting git branch --contains
  2023-03-24 19:58               ` Oswald Buddenhagen
@ 2023-03-24 20:45                 ` Jeff King
  2023-03-24 22:06                   ` Oswald Buddenhagen
  0 siblings, 1 reply; 15+ messages in thread
From: Jeff King @ 2023-03-24 20:45 UTC (permalink / raw)
  To: Oswald Buddenhagen; +Cc: Derrick Stolee, git

On Fri, Mar 24, 2023 at 08:58:39PM +0100, Oswald Buddenhagen wrote:

> On Fri, Mar 24, 2023 at 03:13:02PM -0400, Jeff King wrote:
> > On Fri, Mar 24, 2023 at 08:02:53PM +0100, Oswald Buddenhagen wrote:
> > > maybe the operation just forgets to load the graph?
> > 
> so i strace'd the thing, and there is indeed no appearance of 'commit-graph'
> in the log.
> 
> so i tried git log --graph ... and still nothing?!

That "--graph" option is unrelated. It asks for Git to draw a graph in
the output. Commit-graph is a fancy name for "a cache file which stores
some metadata about commits so we can quickly answer graph-like queries
such as ancestry, etc".

> so weird in fact, that i tried another repository. and it works!
> 
> so apparently something is wrong with my/the linux repository.
> things i can imagine contributing to throwing it off somehow:
> 
> $ git remote -v
> alsa    git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound.git (fetch)
> alsa    git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound.git (push)
> history git://git.kernel.org/pub/scm/linux/kernel/git/tglx/history.git (fetch)
> history git://git.kernel.org/pub/scm/linux/kernel/git/tglx/history.git (push)
> linux-mips      git://git.linux-mips.org/pub/scm/ralf/linux (fetch)
> linux-mips      git://git.linux-mips.org/pub/scm/ralf/linux (push)
> linux-wireless  git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/wireless-drivers (fetch)
> linux-wireless  git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/wireless-drivers (push)
> origin  git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git (fetch)
> origin  git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git (push)
> ossi    git@github.com:ossilator/linux.git (fetch)
> ossi    git@github.com:ossilator/linux.git (push)
> 
> (the linux-* remotes haven't been pulled for years.)
> 
> $ grep replace .git/packed-refs
> a3628e41a9946c4fe93d9b2ae5906e1b2184fa8e refs/replace/1da177e4c3f41524e886b7f1b8a0c1fc7321cac2

Ah, that is your problem. When "replace" refs are in use, the data
stored in the commit-graph can't reliably be used. It is storing
invariants like "commit XYZ is the Nth generation from the root", which
is an immutable property of a commit with a given hash. But as soon as
you use grafts or replace refs, now we don't know if that information is
valid or not (not just for the replaced commit, but for any of its
ancestors which might have been replaced). So the whole thing is
disabled.

I'd guess you are grafting the "history" remote's contents onto the
start of Linus's repo. It's probably better to do that in a one-off
repository, rather than your day-to-day working one. But you can also
flip it off and on at will. Try:

  git -c core.useReplaceRefs=false branch --contains ...

which I think should get faster. And likewise you can set it to "false"
in your config for day-to-day use, and then flip it on when you want to
run a command that you think might query all the way down into ancient
history.

If it does make things faster for you, I'd still be curious to see the
difference between "just commit graphs" and "commit graphs plus the
patch I showed earlier". I think it should make things faster, but if
it's only a few milliseconds on average, it's not that urgent to pursue.

-Peff

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: limiting git branch --contains
  2023-03-24 20:45                 ` Jeff King
@ 2023-03-24 22:06                   ` Oswald Buddenhagen
  2023-03-25  6:30                     ` Jeff King
  0 siblings, 1 reply; 15+ messages in thread
From: Oswald Buddenhagen @ 2023-03-24 22:06 UTC (permalink / raw)
  To: git

On Fri, Mar 24, 2023 at 04:45:04PM -0400, Jeff King wrote:
>On Fri, Mar 24, 2023 at 08:58:39PM +0100, Oswald Buddenhagen wrote:
>> so i tried git log --graph ... and still nothing?!
>
>That "--graph" option is unrelated. It asks for Git to draw a graph in
>the output.
>
i know. it just happens to be the go-to example from derrick's blog post 
about commit-graph, so that not working was a dead giveaway that 
something is really wrong.

>> a3628e41a9946c4fe93d9b2ae5906e1b2184fa8e refs/replace/1da177e4c3f41524e886b7f1b8a0c1fc7321cac2
>
>Ah, that is your problem. When "replace" refs are in use, the data
>stored in the commit-graph can't reliably be used. [...]
>
why isn't the commit-graph built with the replaces applied (and tagged 
by a hash of the used replaces, so we know when to ignore it)?

at minimum, i'd expect a warning giving a reason when the graph is 
ignored.

>  git -c core.useReplaceRefs=false branch --contains ...
>
>which I think should get faster.
>
yes, that works. and _rather_ convincingly, to put it that way.

>I'd still be curious to see the
>difference between "just commit graphs" and "commit graphs plus the
>patch I showed earlier". I think it should make things faster, but if
>it's only a few milliseconds on average, it's not that urgent to pursue.
>
if there is a speed difference at all, it gets drowned out by the noise.

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: limiting git branch --contains
  2023-03-24 22:06                   ` Oswald Buddenhagen
@ 2023-03-25  6:30                     ` Jeff King
  2023-03-25  8:05                       ` Oswald Buddenhagen
  0 siblings, 1 reply; 15+ messages in thread
From: Jeff King @ 2023-03-25  6:30 UTC (permalink / raw)
  To: Oswald Buddenhagen; +Cc: git

On Fri, Mar 24, 2023 at 11:06:55PM +0100, Oswald Buddenhagen wrote:

> > Ah, that is your problem. When "replace" refs are in use, the data
> > stored in the commit-graph can't reliably be used. [...]
> > 
> why isn't the commit-graph built with the replaces applied (and tagged by a
> hash of the used replaces, so we know when to ignore it)?

I think a similar idea has come up before, but we decided to do the
simplest safe thing (disabling optimizations) to start with. And then
somebody who really cared about making optimizations work with commit
graphs could come along and do so later. Nobody has yet; you could be
that someone. ;)

> at minimum, i'd expect a warning giving a reason when the graph is ignored.

That might be reasonable. The commit graph is an optimization, so we'd
never produce a wrong answer by ignoring it. And since the fallback was
the status quo before the optimizations were implemented, it didn't seem
like that big a deal. But these days the performance many of us expect
is with those optimizations, so perhaps the tables have turned.

I do think there might be some complications, though. I think we may
build commit graphs by default these days during "gc" and even
incrementally after "fetch". If we warned when the graphs are disabled,
it basically means that every command in a repo with replace refs would
issue the warning.

> > I'd still be curious to see the
> > difference between "just commit graphs" and "commit graphs plus the
> > patch I showed earlier". I think it should make things faster, but if
> > it's only a few milliseconds on average, it's not that urgent to pursue.
> > 
> if there is a speed difference at all, it gets drowned out by the noise.

OK, thanks for testing. I do think that looking into a true single
traversal might make sense, but I don't think we've seen a case yet
where it's a substantial speedup.

-Peff

^ permalink raw reply	[flat|nested] 15+ messages in thread

* Re: limiting git branch --contains
  2023-03-25  6:30                     ` Jeff King
@ 2023-03-25  8:05                       ` Oswald Buddenhagen
  0 siblings, 0 replies; 15+ messages in thread
From: Oswald Buddenhagen @ 2023-03-25  8:05 UTC (permalink / raw)
  To: git

On Sat, Mar 25, 2023 at 02:30:35AM -0400, Jeff King wrote:
> Nobody has yet; you could be that someone. ;)
>
damn ;)

>I do think there might be some complications, though. I think we may
>build commit graphs by default these days during "gc" and even
>incrementally after "fetch". If we warned when the graphs are disabled,
>it basically means that every command in a repo with replace refs would
>issue the warning.
>
yeah, i thought about that, too ...

it would be easy enough to squelch the warning by manually disabling 
writing or using the graph. the downside is that if the root cause gets 
fixed, the user would be still missing out (unless they read the 
changelog and remembered to reconfigure all affected repos).

one could make it an advisory message which can be explictly squelched.

^ permalink raw reply	[flat|nested] 15+ messages in thread

end of thread, other threads:[~2023-03-25  8:06 UTC | newest]

Thread overview: 15+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-03-23 18:54 limiting git branch --contains Oswald Buddenhagen
2023-03-23 19:42 ` Junio C Hamano
2023-03-23 20:44   ` Oswald Buddenhagen
2023-03-24 17:23     ` Derrick Stolee
2023-03-24 18:15       ` Oswald Buddenhagen
2023-03-24 18:20         ` Derrick Stolee
2023-03-24 19:02           ` Oswald Buddenhagen
2023-03-24 19:13             ` Jeff King
2023-03-24 19:58               ` Oswald Buddenhagen
2023-03-24 20:45                 ` Jeff King
2023-03-24 22:06                   ` Oswald Buddenhagen
2023-03-25  6:30                     ` Jeff King
2023-03-25  8:05                       ` Oswald Buddenhagen
2023-03-24 19:10       ` Jeff King
2023-03-23 20:56 ` Felipe Contreras

Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).