view tests/test-qrecord.out @ 11989:f853873fc66d

aliases: provide more flexible ways to work with shell alias arguments This patch changes the functionality of shell aliases to add more powerful options for working with shell alias arguments. First: the alias name + arguments to a shell alias are set as an HG_ARGS environment variable, delimited by spaces. This matches the behavior of hooks. Second: any occurrences of "$@" (without quotes) are replaced with the arguments, separated by spaces. This happens *before* the alias gets to the shell. Third: any positive numeric variables ("$1", "$2", etc) are replaced with the appropriate argument, indexed from 1. "$0" is replaced with the name of the alias. Any "extra" numeric variables are replaced with an empty string. This happens *before* the alias gets to the shell. These changes allow for more flexible shell aliases: [alias] echo = !echo $@ count = !hg log -r "$@" --template='.' | wc -c | sed -e 's/ //g' qqueuemv = !mv "`hg root`/.hg/patches-$1" "`hg root`/.hg/patches-$2" In action: $ hg echo foo foo $ hg count 'branch(default)' 901 $ hg count 'branch(stable) and keyword(fixes)' 102 $ hg qqueuemv myfeature somefeature
author Steve Losh <steve@stevelosh.com>
date Wed, 18 Aug 2010 18:56:44 -0400
parents 226a328a7ff3
children
line wrap: on
line source

% help (no mq, so no qrecord)
hg: unknown command 'qrecord'
Mercurial Distributed SCM

basic commands:

 add        add the specified files on the next commit
 annotate   show changeset information by line for each file
 clone      make a copy of an existing repository
 commit     commit the specified files or all outstanding changes
 diff       diff repository (or selected files)
 export     dump the header and diffs for one or more changesets
 forget     forget the specified files on the next commit
 init       create a new repository in the given directory
 log        show revision history of entire repository or files
 merge      merge working directory with another revision
 pull       pull changes from the specified source
 push       push changes to the specified destination
 remove     remove the specified files on the next commit
 serve      start stand-alone webserver
 status     show changed files in the working directory
 summary    summarize working directory state
 update     update working directory (or switch revisions)

use "hg help" for the full list of commands or "hg -v" for details
% help (mq present)
hg qrecord [OPTION]... PATCH [FILE]...

interactively record a new patch

    See "hg help qnew" & "hg help record" for more information and usage.

options:

 -e --edit                 edit commit message
 -g --git                  use git extended diff format
 -U --currentuser          add "From: <current user>" to patch
 -u --user USER            add "From: <USER>" to patch
 -D --currentdate          add "Date: <current date>" to patch
 -d --date DATE            add "Date: <DATE>" to patch
 -I --include PATTERN [+]  include names matching the given patterns
 -X --exclude PATTERN [+]  exclude names matching the given patterns
 -m --message TEXT         use text as commit message
 -l --logfile FILE         read commit message from file

[+] marked option can be specified multiple times

use "hg -v help qrecord" to show global options
% base commit
% changing files
% whole diff
diff -r 1057167b20ef 1.txt
--- a/1.txt
+++ b/1.txt
@@ -1,5 +1,5 @@
 1
-2
+2 2
 3
-4
+4 4
 5
diff -r 1057167b20ef 2.txt
--- a/2.txt
+++ b/2.txt
@@ -1,5 +1,5 @@
 a
-b
+b b
 c
 d
 e
diff -r 1057167b20ef dir/a.txt
--- a/dir/a.txt
+++ b/dir/a.txt
@@ -1,4 +1,4 @@
-hello world
+hello world!
 
 someone
 up
% qrecord a.patch
diff --git a/1.txt b/1.txt
2 hunks, 2 lines changed
examine changes to '1.txt'? [Ynsfdaq?] 
@@ -1,3 +1,3 @@
 1
-2
+2 2
 3
record change 1/6 to '1.txt'? [Ynsfdaq?] 
@@ -3,3 +3,3 @@
 3
-4
+4 4
 5
record change 2/6 to '1.txt'? [Ynsfdaq?] 
diff --git a/2.txt b/2.txt
1 hunks, 1 lines changed
examine changes to '2.txt'? [Ynsfdaq?] 
@@ -1,5 +1,5 @@
 a
-b
+b b
 c
 d
 e
record change 4/6 to '2.txt'? [Ynsfdaq?] 
diff --git a/dir/a.txt b/dir/a.txt
1 hunks, 1 lines changed
examine changes to 'dir/a.txt'? [Ynsfdaq?] 

% after qrecord a.patch 'tip'
changeset:   1:5d1ca63427ee
tag:         a.patch
tag:         qbase
tag:         qtip
tag:         tip
user:        test
date:        Thu Jan 01 00:00:00 1970 +0000
summary:     aaa

diff -r 1057167b20ef -r 5d1ca63427ee 1.txt
--- a/1.txt	Thu Jan 01 00:00:00 1970 +0000
+++ b/1.txt	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +1,5 @@
 1
-2
+2 2
 3
 4
 5
diff -r 1057167b20ef -r 5d1ca63427ee 2.txt
--- a/2.txt	Thu Jan 01 00:00:00 1970 +0000
+++ b/2.txt	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +1,5 @@
 a
-b
+b b
 c
 d
 e


% after qrecord a.patch 'diff'
diff -r 5d1ca63427ee 1.txt
--- a/1.txt
+++ b/1.txt
@@ -1,5 +1,5 @@
 1
 2 2
 3
-4
+4 4
 5
diff -r 5d1ca63427ee dir/a.txt
--- a/dir/a.txt
+++ b/dir/a.txt
@@ -1,4 +1,4 @@
-hello world
+hello world!
 
 someone
 up
% qrecord b.patch
diff --git a/1.txt b/1.txt
1 hunks, 1 lines changed
examine changes to '1.txt'? [Ynsfdaq?] 
@@ -1,5 +1,5 @@
 1
 2 2
 3
-4
+4 4
 5
record change 1/3 to '1.txt'? [Ynsfdaq?] 
diff --git a/dir/a.txt b/dir/a.txt
1 hunks, 1 lines changed
examine changes to 'dir/a.txt'? [Ynsfdaq?] 
@@ -1,4 +1,4 @@
-hello world
+hello world!
 
 someone
 up
record change 3/3 to 'dir/a.txt'? [Ynsfdaq?] 

% after qrecord b.patch 'tip'
changeset:   2:b056198bf878
tag:         b.patch
tag:         qtip
tag:         tip
user:        test
date:        Thu Jan 01 00:00:00 1970 +0000
summary:     bbb

diff -r 5d1ca63427ee -r b056198bf878 1.txt
--- a/1.txt	Thu Jan 01 00:00:00 1970 +0000
+++ b/1.txt	Thu Jan 01 00:00:00 1970 +0000
@@ -1,5 +1,5 @@
 1
 2 2
 3
-4
+4 4
 5
diff -r 5d1ca63427ee -r b056198bf878 dir/a.txt
--- a/dir/a.txt	Thu Jan 01 00:00:00 1970 +0000
+++ b/dir/a.txt	Thu Jan 01 00:00:00 1970 +0000
@@ -1,4 +1,4 @@
-hello world
+hello world!
 
 someone
 up


% after qrecord b.patch 'diff'

% --- end ---