D2007: narrowrepo: make repo requirement include the string 'experimental'

indygreg (Gregory Szorc) phabricator at mercurial-scm.org
Fri Feb 2 13:25:12 EST 2018


indygreg added a comment.


  We can treat two requirements strings as equivalent.
  
  The trick is once we introduce a requirements string in the wild, we can't make BC changes to its format. i.e. the behavior surrounding a store requirement must be immutable over time. So e.g. if we introduce `narrowhg-experimental` today, any repos with that requirement will be openable by any Mercurial supporting that requirement, even if we change the store format. That's not good. Especially if we ship `narrowhg-experimental` with different behavior in say 4.6 and 4.7.
  
  One trick I like to do (which I'll be doing with the wire protocol shortly), is introduce a version component. e.g. `experimental-narrow-0001`. If you make a change to the format, you bump to `experimental-narrow-0002`. This basically requires that a specific revision of Mercurial must be used for all operations. When we finally make the transition to non-experimental, you can optionally teach new clients to treat the latest experimental version as equivalent to the final version.

REPOSITORY
  rHG Mercurial

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

To: durin42, #hg-reviewers
Cc: indygreg, mercurial-devel


More information about the Mercurial-devel mailing list