diff --git a/hgext3rd/noverify.py b/hgext3rd/noverify.py new file mode 100644 --- /dev/null +++ b/hgext3rd/noverify.py @@ -0,0 +1,39 @@ +# noverify.py +# +# Copyright 2017 Facebook, Inc. +# +# This software may be used and distributed according to the terms of the +# GNU General Public License version 2 or any later version. + +""" +disables hg verify + +Verify can be extremely slow on large repos, so this extension disables it if +``verify.disable`` is True:: + + [verify] + disable = true + +This also disables the verification step of rollback. +""" + +from __future__ import absolute_import + +from mercurial import ( + extensions, + hg, +) +from mercurial.i18n import _ + +testedwith = 'ships-with-fb-hgext' + +def extsetup(ui): + extensions.wrapfunction(hg, 'verify', verify) + +def verify(orig, repo): + if repo.ui.configbool("verify", "disable", False): + repo.ui.warn(_("[verify] disable is set in config; skipping deep " + "verification of repo\n")) + return 1 + else: + return orig(repo) diff --git a/tests/test-noverify.t b/tests/test-noverify.t new file mode 100644 --- /dev/null +++ b/tests/test-noverify.t @@ -0,0 +1,25 @@ + $ cat >> $HGRCPATH << EOF + > [extensions] + > drawdag=$RUNTESTDIR/drawdag.py + > noverify=$TESTDIR/../hgext3rd/noverify.py + > EOF + +Turn verify on and off: + $ hg init repo1 + $ cd repo1 + $ hg debugdrawdag <<'EOS' + > b c + > |/ + > a + > EOS + $ hg verify + checking changesets + checking manifests + crosschecking files in changesets and manifests + checking files + 3 files, 3 changesets, 3 total revisions + $ echo "[verify]" >> $HGRCPATH + $ echo "disable=1" >> $HGRCPATH + $ hg verify + [verify] disable is set in config; skipping deep verification of repo + [1]