obsolete: compute unstable changeset
An unstable changeset is a changeset *not* obsolete but with some obsolete
ancestors.
The current logic to decide if a changeset is unstable is naive and very
inefficient. A better solution is to compute the set of unstable changeset with
a simple revset and to cache the result. But this require cache invalidation
logic. Simpler version goes first.
revset: add an `obsolete` symbol
This predicate matches obsolete changesets.
This is a naive implementation to be improved later.
push: refuse to push obsolete changesets
This is a first version. Simple but not very efficient.
Note that this changeset introduce the "obsolete" word in the UI.
parsers.c: remove warning: 'size' may be used uninitialized in this function
Some compilers / compiler options (such as gcc 4.7) would emit warnings:
mercurial/parsers.c: In function 'pack_dirstate':
mercurial/parsers.c:306:18: warning: 'size' may be used uninitialized in this function [-Wmaybe-uninitialized]
mercurial/parsers.c:306:12: warning: 'mode' may be used uninitialized in this function [-Wmaybe-uninitialized]
It is apparently not smart enough to figure out how the 'err' arithmetics makes
sure that it can't happen.
'err' is now replaced with simple checks and goto. That might also help the
optimizer when it is inlining getintat().
graphlog: remove unused ASCIIDATA constant
It was introduced by
d9acbe7b0049, returned by asciiformat() but never
read anywhere.
20140c249e63 stopped using it completely, and the
graphmod.CHANGESET type is passed through all functions.