Patchwork D1332: cmdutil: create dirs for templated cat file output

login
register
mail settings
Submitter phabricator
Date Nov. 9, 2017, 2:03 p.m.
Message ID <87e9a6592396c6a57d9215f93d87053f@localhost.localdomain>
Download mbox | patch
Permalink /patch/25450/
State Not Applicable
Headers show

Comments

phabricator - Nov. 9, 2017, 2:03 p.m.
This revision was automatically updated to reflect the committed changes.
Closed by commit rHG407ec7f3ff02: cmdutil: create dirs for templated cat file output (authored by ryanmce, committed by ).

REPOSITORY
  rHG Mercurial

CHANGES SINCE LAST UPDATE
  https://phab.mercurial-scm.org/D1332?vs=3326&id=3373

REVISION DETAIL
  https://phab.mercurial-scm.org/D1332

AFFECTED FILES
  mercurial/cmdutil.py
  tests/test-cat.t

CHANGE DETAILS




To: ryanmce, #hg-reviewers, mbthomas, yuja
Cc: mercurial-devel

Patch

diff --git a/tests/test-cat.t b/tests/test-cat.t
--- a/tests/test-cat.t
+++ b/tests/test-cat.t
@@ -126,7 +126,6 @@ 
   $ echo a > foo/a
   $ hg add foo/a
   $ hg commit -qm "add foo/a"
-  $ mkdir output
   $ hg cat --output "output/%p" foo/a
-  abort: No such file or directory: output/foo/a
-  [255]
+  $ cat output/foo/a
+  a
diff --git a/mercurial/cmdutil.py b/mercurial/cmdutil.py
--- a/mercurial/cmdutil.py
+++ b/mercurial/cmdutil.py
@@ -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'):