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
next prev parent 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).