# HG changeset patch # User Pierre-Yves David # Date 1708665909 -3600 # Node ID ad10665342370fe5b48cc63c24bbc344b6e71340 # Parent dd519ea71416d188d933e9f91a642486f6961c05 chainsaw-update: exit early if one of the intermediate command fails That will prevent the user to be presented with a start that pretend to be consistent with the request, but is not. diff -r dd519ea71416 -r ad1066534237 hgext/chainsaw.py --- a/hgext/chainsaw.py Fri Feb 23 03:32:35 2024 +0100 +++ b/hgext/chainsaw.py Fri Feb 23 06:25:09 2024 +0100 @@ -194,10 +194,18 @@ overrides = {(b'ui', b'quiet'): True} with repo.ui.configoverride(overrides, b'chainsaw-update'): pull = cmdutil.findcmd(b'pull', commands.table)[1][0] - pull(repo.ui, repo, source, rev=pull_revs, remote_hidden=False) + ret = pull( + repo.ui, + repo, + source, + rev=pull_revs, + remote_hidden=False, + ) + if ret: + return ret purge = cmdutil.findcmd(b'purge', commands.table)[1][0] - purge( + ret = purge( ui, repo, dirs=True, @@ -205,10 +213,14 @@ files=opts.get('purge_unknown'), confirm=False, ) + if ret: + return ret ui.status(_(b'updating to revision \'%s\'\n') % rev) update = cmdutil.findcmd(b'update', commands.table)[1][0] - update(ui, repo, rev=rev, clean=True) + ret = update(ui, repo, rev=rev, clean=True) + if ret: + return ret ui.status( _(