git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Derrick Stolee <stolee@gmail.com>
To: Antonio Russo <aerusso@aerusso.net>, Junio C Hamano <gitster@pobox.com>
Cc: Aiyee Bee <shane.880088.supw@gmail.com>, git@vger.kernel.org
Subject: Re: DEVEL: Help with feature implementation
Date: Tue, 19 Jan 2021 21:21:06 -0500	[thread overview]
Message-ID: <ac68007e-ca66-0229-fa8f-4ceb7d6d8f23@gmail.com> (raw)
In-Reply-To: <9fc9d752-06f4-e75d-1549-f257fd34e0c3@aerusso.net>

On 1/19/2021 9:52 AM, Antonio Russo wrote:
> On 1/18/21 6:24 PM, Junio C Hamano wrote:
>> Antonio Russo <aerusso@aerusso.net> writes:
>>
>>> As a side note, would this list be willing to look at patches that remove
>>> the need to use revs->limited?  Adding new features would be much easier if
>>> we could restrict git to use streaming algorithms for these simplifications.
>>
>> Do you mean you will write new implementations of operations like
>> "--simplify-merges", "--ancestory-path" and all its friends without
>> the need for the "limited" bit?
> 
> Yes.
> 
>> Willing to look at?  I do not know about others, but sure, it would
>> make be extremely excited.
>>
>> You may be able to rewrite some other operations that implicitly
>> require the limited bit into an incremental implementation, but I am
>> skeptical that you can do "simplify-merges" in a streaming fashion
>> in such a way that we'd dig a bit but not all the way down before
>> making decisions on which commits should be included in the output
>> and how their parenthood relationship should appear etc.  I and
>> Linus tried independently and we did not get that far in our
>> attempts (note: there wasn't commit-graph back then).
> 
> Yeah, it's a big task (but, it'd be useful work, rather than doing
> another rewrite of my feature to make it work when revs->limited).
> Each of the flags (simplify-merges, ancestry-path, etc.) is its own
> little sub-project.
> 
> I haven't thought about any one flag specifically, but the fact that
> two complete code paths exist right now just seem like a nightmare.
> I'm not necessarily interested in making the implementations faster,
> but rather getting rid of the duplicated code path.

It's definitely a long shot to remove the limited flag altogether,
but a good start would be to remove sort_in_topological_order().
All of its logic is already re-implemented in the streaming version
(see every use of "struct topo_walk_info" in revision.c). The
streaming is designed to be faster in the presence of a commit-graph
file, but it should still work correctly without one. Since all
commits with have "generation number infinity," each phase of the
walk will do the same as the limit_list() and walk all reachable
commits before returning the first result.

The only thing to ask is: what is the overhead of the streaming
version over sort_in_topological_order()? Is there one? You'd need
to do performance tests without a commit-graph file.

This has long been on my own TODO list, but I haven't been able to
prioritize it over other things. I'd be happy to review the change.
It also would be a good way to familiarize yourself with the code
and how we already do some streaming things, even when "extra"
information is needed to accomplish that.

Thanks,
-Stolee

  reply	other threads:[~2021-01-20  2:23 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-01-18 18:06 DEVEL: Help with feature implementation Aiyee Bee
2021-01-18 18:19 ` Antonio Russo
2021-01-18 18:26 ` Derrick Stolee
2021-01-18 19:15   ` Aiyee Bee
2021-01-18 22:54     ` Junio C Hamano
2021-01-18 19:25   ` Aiyee Bee
2021-01-18 19:31   ` Aiyee Bee
2021-01-18 20:58     ` Derrick Stolee
2021-01-19  0:54       ` Antonio Russo
2021-01-19  1:24         ` Junio C Hamano
2021-01-19 14:52           ` Antonio Russo
2021-01-20  2:21             ` Derrick Stolee [this message]
2021-01-19  2:39         ` Derrick Stolee
2021-01-19  5:35           ` Aiyee Bee
2021-01-19  5:38           ` Aiyee Bee
2021-01-19 15:13           ` Antonio Russo
  -- strict thread matches above, loose matches on Subject: below --
2021-01-19  5:20 Aiyee Bee
2021-01-19  4:58 Aiyee Bee
2021-01-18 18:00 FriendlyNeighborhoodShane

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=ac68007e-ca66-0229-fa8f-4ceb7d6d8f23@gmail.com \
    --to=stolee@gmail.com \
    --cc=aerusso@aerusso.net \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=shane.880088.supw@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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 NNTP newsgroup(s).