D1332: cmdutil: create dirs for templated cat file output

2017-11-09 Thread ryanmce (Ryan McElroy)
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=3373

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

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

CHANGE DETAILS

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'):



To: ryanmce, #hg-reviewers, mbthomas, yuja
Cc: mercurial-devel
___
Mercurial-devel mailing list
Mercurial-devel@mercurial-scm.org
https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel


D1332: cmdutil: create dirs for templated cat file output

2017-11-07 Thread ryanmce (Ryan McElroy)
ryanmce created this revision.
Herald added a subscriber: mercurial-devel.
Herald added a reviewer: hg-reviewers.

REVISION SUMMARY
  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.

REPOSITORY
  rHG Mercurial

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

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

CHANGE DETAILS

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'):



To: ryanmce, #hg-reviewers
Cc: mercurial-devel
___
Mercurial-devel mailing list
Mercurial-devel@mercurial-scm.org
https://www.mercurial-scm.org/mailman/listinfo/mercurial-devel