D1082: split: new extension to split changesets

quark (Jun Wu) phabricator at mercurial-scm.org
Tue Oct 17 16:57:58 EDT 2017


quark added a comment.


  In https://phab.mercurial-scm.org/D1082#19507, @lothiraldan wrote:
  
  > I'm still concerned about possible obsmarkers explosion as we move to more and more auto-stabilizing commands in core. For leaving a trace of the problem, if we use auto-stabilizing commands on every changeset on the stack (rewrite the first changeset, all parent get stabilized, rewrite the second changeset, all parents get stabilized, etc..), we will end up creating N²/2 obsmarkers with a stack of N:
  >
  >   stack of 4 changeset: 8 obs-markers,
  >   stack of 10 changesets: 50 obs-markers,
  >   stack of 30 changesets: 450 obs-markers,
  >   
  >
  > I'm not saying that everyone has a 30 changesets stack but even with a small stack going back and forth in the stack while making editions would rapidly grow the number of obsmarkers created which will cause scalability issues when exchanging markers.
  >
  > There is a couple of interesting lead to solve this, maybe we could do something special when more than X (configurable) obs-markers are created. Probably avoid the stabilization and point to some documentation or commands (like restack).
  
  
  In my opinion, the "obsmarkers explosion" problem is because the current algorithm loads the entire obsstore while it is not necessary to know all markers in all cases. i.e. "obsmarkers explosion" is NOT a problem if the algorithm is smarter that only parses or loads markers needed for certain calculations. i.e. `obsolete()` and all obsmarker-related revsets are lazy. Of course it takes some time to rewrite them into lazy versions.
  
  In additional, the `N^2` case you are talking about only happens if the user splits every commit in their draft stack, which is unrealistic. I don't think that should block the default behavior here.

REPOSITORY
  rHG Mercurial

REVISION DETAIL
  https://phab.mercurial-scm.org/D1082

To: quark, #hg-reviewers
Cc: lothiraldan, martinvonz, dlax, mercurial-devel


More information about the Mercurial-devel mailing list