diff -r 8154119ed236 -r 407ec7f3ff02 mercurial/cmdutil.py --- a/mercurial/cmdutil.py Tue Nov 07 13:46:15 2017 -0800 +++ b/mercurial/cmdutil.py Tue Nov 07 13:48:33 2017 -0800 @@ -3029,6 +3029,11 @@ if fntemplate: filename = makefilename(repo, fntemplate, ctx.node(), pathname=os.path.join(prefix, path)) + # attempt to create the directory if it does not already exist + try: + os.makedirs(os.path.dirname(filename)) + except OSError: + pass with formatter.maybereopen(basefm, filename, opts) as fm: data = ctx[path].data() if opts.get('decode'):