On 1/18/21 6:24 PM, Junio C Hamano wrote: > Antonio Russo <aerusso@xxxxxxxxxxx> 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 also a long-term goal, but it's nice to hear that people would be interested in it. > If you are talking about precomputed stuff like commit-graph, that > may change the equation, but we'd prefer to have the system work > without requiring these auxiliary data (in other words, it would be > fine to use them as optimization). No, I understand that generation numbers can only be used as an optimization (i.e., they might all be GENERATION_NUMBER_INFINITY).