phabricator: introduce a `phabricator.retry` option
For the past 2 days, my connection to phab.mercurial-scm.org became extremely
poor. In practice this mean that any conduit call has a fairly high change to
hang and die. Giving the amount of call done by the phabricator extension, it
means the when I am lucky I can get 1 or 2 Diff to update after a few try, but
anything sizeable doesn't have any hope to get through.
This changesets introduce a new option for the fabricator extension to try retry
failed command itself. So that I can get Diff through.
As you can guess, this changeset managed to reach Phabricator thanks to itself.
Differential Revision: https://phab.mercurial-scm.org/D9449
$ cat > abortcommit.py <<EOF
> from mercurial import error
> def hook(**args):
> raise error.Abort(b"no commits allowed")
> def reposetup(ui, repo):
> repo.ui.setconfig(b"hooks", b"pretxncommit.nocommits", hook)
> EOF
$ abspath=`pwd`/abortcommit.py
$ cat <<EOF >> $HGRCPATH
> [extensions]
> mq =
> abortcommit = $abspath
> EOF
$ hg init foo
$ cd foo
$ echo foo > foo
$ hg add foo
mq may keep a reference to the repository so __del__ will not be
called and .hg/journal.dirstate will not be deleted:
$ hg ci -m foo
error: pretxncommit.nocommits hook failed: no commits allowed
transaction abort!
rollback completed
abort: no commits allowed
[255]
$ hg ci -m foo
error: pretxncommit.nocommits hook failed: no commits allowed
transaction abort!
rollback completed
abort: no commits allowed
[255]
$ cd ..