comparison mercurial/cmdutil.py @ 35007: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
comparison
equal deleted inserted replaced
35006:8154119ed236 35007:407ec7f3ff02
3027 def write(path): 3027 def write(path):
3028 filename = None 3028 filename = None
3029 if fntemplate: 3029 if fntemplate:
3030 filename = makefilename(repo, fntemplate, ctx.node(), 3030 filename = makefilename(repo, fntemplate, ctx.node(),
3031 pathname=os.path.join(prefix, path)) 3031 pathname=os.path.join(prefix, path))
3032 # attempt to create the directory if it does not already exist
3033 try:
3034 os.makedirs(os.path.dirname(filename))
3035 except OSError:
3036 pass
3032 with formatter.maybereopen(basefm, filename, opts) as fm: 3037 with formatter.maybereopen(basefm, filename, opts) as fm:
3033 data = ctx[path].data() 3038 data = ctx[path].data()
3034 if opts.get('decode'): 3039 if opts.get('decode'):
3035 data = repo.wwritedata(path, data) 3040 data = repo.wwritedata(path, data)
3036 fm.startitem() 3041 fm.startitem()