hg push getting worse?

John Coomes John.Coomes at sun.com
Tue Aug 11 11:33:33 PDT 2009

Andrew John Hughes (gnu_andrew at member.fsf.org) wrote:
> > ...
> > From my experience with the OpenJDK servers, I think it may be jcheck.
> >  Unfortunately, jcheck itself is not Free Software, so it is
> > impossible for me to say for definite.  Instead, we seem to be
> > discovering what checks it performs only when failures occur.
> > 
> > I do know it does the following:
> >
> > * Checks the use of whitespace in changesets, rejecting the use of
> > tabs and trailing whitespace.
> > * Checks the format of the commit message.  It must even follow the
> > bugid/summary/reviewer format documented in the developer guide or
> > simply be 'Merge'.
> > * Checks that the bugid used is not used by any other changeset.
> >
> > I've run into all of these with different changesets.  I can
> > definitely see how the latter could take a while on something like the
> > jdk repository (which dwarfs the others in size).

I think jcheck is relatively light-weight compared to the zfs snapshot
and auto-push that are also done.  But it would be nice to know for

> > jcheck appears to perform its check on the changeset once committed to
> > the remote repository and then performs a rollback if it fails,
> > although you don't see any of this feedback in realtime on the client.
> >  I presume this also means it has to get Mercurial to generate the
> > changeset (and others for the bugid check) which would take time.

That's the standard way that mercurial hooks work, and the reason we
have the extra *-gate forests.  In more recent versions of mercurial,
the pending changesets aren't visible until the hooks have completed
successfully, so the *-gate forests become unnecessary.  We haven't
been able to update because the server-side of the forest extension
doesn't work w/recent mercurial releases.

> > It would be much better if we could perform these sanity checks
> > locally, though we'd still need some way of checking this had been
> > done on the server side (or who knows, we could trust the developers
> > to have done it...).
> I should also note that duplicate bugids can appear completely
> legitimately in certain merge cases.  This is the current issue with
> updating OpenJDK6's HotSpot..  Fixes for bugs occur both in the
> original (rebased) OpenJDK6 HotSpot and the copy of HotSpot being
> merged from the hs14 repository, resulting in duplicate bugids which
> jcheck rejects.  I presume this is to protect against the case that
> someone mistypes the bugid as another legitimate bugid, but it is
> certainly an expensive check for what seems a fairly unlikely
> occurrence.

The goal is to prevent people from checking in fixes piece-meal,
scattering a bug fix over 2, 3 or more changesets.  Having a bug fix
isolated to a single changeset makes backporting it to a different
release much, much easier.  We lived with the practice of partial
fixes for quite some time, and I'd rather not go back.


More information about the web-discuss mailing list