D1332: cmdutil: create dirs for templated cat file output
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
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