From patchwork Wed Apr 16 04:45:17 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [1,of,2] cat: explicitly document the supported formatter rules From: Matt Harbison X-Patchwork-Id: 4382 Message-Id: <3c598f1d1b79671030d3.1397623517@Envy> To: mercurial-devel@selenic.com Date: Wed, 16 Apr 2014 00:45:17 -0400 # HG changeset patch # User Matt Harbison # Date 1397618959 14400 # Node ID 3c598f1d1b79671030d3e6a550dd8727f3429eb9 # Parent 157480606e029f97d01fdfeb16bd564aa83dcb59 cat: explicitly document the supported formatter rules The previous documentation pointed to the export command, but even if the user recognized that instead of only reading the cat specific list of rules, not all of the export rules applied anyway (specifically %N, %n and %m). The new items are a copy/paste from export's list. These rules have existed since at least version 0.5. Note that %m gets substituted with 'None' because the commit message isn't passed to cmdutil.makefilename(). %R and %r are currently effectively the same, since no revwidth is passed, however they both work. There aren't any existing tests for these rules, so they are added to prevent future regression. diff --git a/mercurial/commands.py b/mercurial/commands.py --- a/mercurial/commands.py +++ b/mercurial/commands.py @@ -1162,12 +1162,17 @@ no revision is given, the parent of the working directory is used. Output may be to a file, in which case the name of the file is - given using a format string. The formatting rules are the same as - for the export command, with the following additions: - + given using a format string. The formatting rules as follows: + + :``%%``: literal "%" character :``%s``: basename of file being printed :``%d``: dirname of file being printed, or '.' if in repository root :``%p``: root-relative path name of file being printed + :``%H``: changeset hash (40 hexadecimal digits) + :``%R``: changeset revision number + :``%h``: short-form changeset hash (12 hexadecimal digits) + :``%r``: zero-padded changeset revision number + :``%b``: basename of the exporting repository Returns 0 on success. """ diff --git a/tests/test-cat.t b/tests/test-cat.t --- a/tests/test-cat.t +++ b/tests/test-cat.t @@ -32,3 +32,22 @@ 1 3 + $ mkdir tmp + $ hg cat --output tmp/HH_%H c + $ hg cat --output tmp/RR_%R c + $ hg cat --output tmp/h_%h c + $ hg cat --output tmp/r_%r c + $ hg cat --output tmp/%s_s c + $ hg cat --output tmp/%d%%_d c + $ hg cat --output tmp/%p_p c + $ hg log -r . --template "{rev}: {node|short}\n" + 2: 45116003780e + $ find tmp -type f | sort + tmp/.%_d + tmp/HH_45116003780e3678b333fb2c99fa7d559c8457e9 + tmp/RR_2 + tmp/c_p + tmp/c_s + tmp/h_45116003780e + tmp/r_2 +