dispatch: move part of callcatch to scmutil
Per discussion at
39149b6036e6 [1], we need "callcatch" in worker.py. Move
it to scmutil.py to avoid cycles.
Note that dispatch's callcatch handles some additional high-level exceptions
related to config parsing, and commands. Moving them to scmutil will make
scmutil depend on "commands" or require "_formatparse" and "_getsimilar"
(and "difflib") to be moved as well. In the worker use-case, it is forked
when config and commands are fully loaded. So it should not care about those
exceptions.
[1]: https://www.mercurial-scm.org/pipermail/mercurial-devel/2016-August/087116.html
https://bz.mercurial-scm.org/842
$ hg init
$ echo foo > a
$ hg ci -Ama
adding a
$ hg up -r0000
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ echo bar > a
Should issue new head warning:
$ hg ci -Amb
adding a
created new head
$ hg up -r0000
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ echo stuffy > a
Should not issue new head warning:
$ hg ci -q -Amc
$ hg up -r0000
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
$ echo crap > a
$ hg branch testing
marked working directory as branch testing
(branches are permanent and global, did you want a bookmark?)
Should not issue warning:
$ hg ci -q -Amd