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.

  rHG Mercurial


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

Reply via email to