# HG changeset patch # User Yuya Nishihara <y...@tcha.org> # Date 1506856910 -3600 # Sun Oct 01 12:21:50 2017 +0100 # Node ID 86c51cf6c4ff8a9a01e34e365c8fbc50415d072e # Parent b3a36705720f5ed1e7cc5129b27450ca59c7952b extdata: abort if external command exits with non-zero status
It could be a warning, but a warning in template output would be unreadable. diff --git a/mercurial/scmutil.py b/mercurial/scmutil.py --- a/mercurial/scmutil.py +++ b/mercurial/scmutil.py @@ -1039,7 +1039,7 @@ def extdatasource(repo, source): raise error.Abort(_("unknown extdata source '%s'") % source) data = {} - src = proc = None + src = proc = err = None try: if spec.startswith("shell:"): # external commands should be run relative to the repo root @@ -1065,8 +1065,13 @@ def extdatasource(repo, source): finally: if proc: proc.communicate() + if proc.returncode != 0: + err = (_("extdata command '%s' failed: %s") + % (cmd, util.explainexit(proc.returncode)[0])) if src: src.close() + if err: + raise error.Abort(err) return data diff --git a/tests/test-extdata.t b/tests/test-extdata.t --- a/tests/test-extdata.t +++ b/tests/test-extdata.t @@ -12,6 +12,7 @@ test revset support > filedata = file:extdata.txt > notes = notes.txt > shelldata = shell:cat extdata.txt | grep 2 + > fail = shell:false > EOF $ cat <<'EOF' > extdata.txt > 2 another comment on 2 @@ -50,6 +51,9 @@ test bad extdata() revset source $ hg log -qr "extdata(unknown)" abort: unknown extdata source 'unknown' [255] + $ hg log -qr "extdata(fail)" + abort: extdata command 'false' failed: exited with status 1 + [255] test template support: _______________________________________________ Mercurial-devel mailing list Mercurial-devel@mercurial-scm.org https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel