RFC: Revised branching implementation

John D. Mitchell jdmitchell at gmail.com
Fri Sep 15 18:59:33 UTC 2006


On 9/15/06, Mark Williamson <mark.williamson at cl.cam.ac.uk> wrote:
> > > Practically speaking, it can't be done. The entire contents of the
> > > changelog are hashed. That's simultaneously a security feature, an
> > > integrity feature, and a correctness feature. Upgrading the format
> > > from old to new means changing all changelog hashes. And this means
> > > upgrading all users simultaneously. Again, given that there are still
> > > users who are steadfastly using 0.7, this isn't realistic.
> >
> > Huh?  That doesn't require that everybody upgrade all at once.  The
> > people who are using e.g., 0.7 stick with using that until they are
> > ready to upgrade.  When they upgrade to v1.x or whatever, they get
> > their repositories upgraded.  That's a one-way upgrade but they can
> > control when they do that.
> >
> > If you mean that you want to support mix-version usage, then you only
> > have to make the new versions understand the old format for some
> > transitional period.
> >
> > Or am I missing something?
>
> Since changesets are identified by their hash, it'll break push/pull unless
> you can guarantee all participating users have matching versions.  This is
> probably worse than the case where a user just has to re-encode their own
> repositories.

But, doesn't hg need to deal with that problem of identifying which
version is on each end of a conversation?  That is a general problem
and, over time, it's not possible to assume that things will always be
compatible.

Thanks,
John



More information about the Mercurial mailing list