Mercurial > public > mercurial-scm > hg-stable
diff mercurial/cmdutil.py @ 35048:407ec7f3ff02
cmdutil: create dirs for templated cat file output
Previously, the caller was responsible for creating the directory structure of
files written out using a path template. This is onerous, especially if the
exact filenames are not known upfront, but are being accessed via a matcher.
This patch changes things so that hg will attempt to create the appropriate
directories before writing the output file.
Differential Revision: https://phab.mercurial-scm.org/D1332
author | Ryan McElroy <rmcelroy@fb.com> |
---|---|
date | Tue, 07 Nov 2017 13:48:33 -0800 |
parents | 602c168c0207 |
children | b22a0d9e0a83 |
line wrap: on
line diff
--- 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'):