view tests/test-win32text.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 f2618cacb485
children
line wrap: on
line source

[hooks]
pretxncommit.crlf = python:hgext.win32text.forbidcrlf
pretxnchangegroup.crlf = python:hgext.win32text.forbidcrlf

commit should succeed

updating to branch default
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
commit should fail
Attempt to commit or push text file(s) using CRLF line endings
in f583ea08d42a: f
transaction abort!
rollback completed
abort: pretxncommit.crlf hook failed

commits should succeed

push should fail
pushing to ../zoz
searching for changes
adding changesets
adding manifests
adding file changes
added 2 changesets with 2 changes to 2 files
Attempt to commit or push text file(s) using CRLF line endings
in bc2d09796734: g
in b1aa5cde7ff4: f

To prevent this mistake in your local repository,
add to Mercurial.ini or .hg/hgrc:

[hooks]
pretxncommit.crlf = python:hgext.win32text.forbidcrlf

and also consider adding:

[extensions]
win32text =
[encode]
** = cleverencode:
[decode]
** = cleverdecode:
transaction abort!
rollback completed
abort: pretxnchangegroup.crlf hook failed

commit should succeed

push should succeed
pushing to ../zoz
searching for changes
adding changesets
adding manifests
adding file changes
added 3 changesets with 3 changes to 2 files

and now for something completely different
Attempt to commit or push text file(s) using CRLF line endings
in 053ba1a3035a: d/f2
transaction abort!
rollback completed
abort: pretxncommit.crlf hook failed
forgetting d/f2


changeset:   5:f0b1c8d75fce
tag:         tip
user:        test
date:        Thu Jan 01 00:00:00 1970 +0000
files:       bin
description:
5


changeset:   4:77796dbcd4ad
user:        test
date:        Thu Jan 01 00:00:00 1970 +0000
files:       f
description:
4


changeset:   3:7c1b5430b350
user:        test
date:        Thu Jan 01 00:00:00 1970 +0000
files:       f g
description:
2.3


changeset:   2:bc2d09796734
user:        test
date:        Thu Jan 01 00:00:00 1970 +0000
files:       g
description:
2.2


changeset:   1:b1aa5cde7ff4
user:        test
date:        Thu Jan 01 00:00:00 1970 +0000
files:       f
description:
2


changeset:   0:fcf06d5c4e1d
user:        test
date:        Thu Jan 01 00:00:00 1970 +0000
files:       f
description:
1



updating to branch default
1 files updated, 0 files merged, 0 files removed, 0 files unresolved

adding dupe/a
adding dupe/b
adding dupe/c
adding dupe/d
changeset:   8:67ac5962ab43
tag:         tip
user:        test
date:        Thu Jan 01 00:00:00 1970 +0000
files:       d
description:
d


changeset:   7:68c127d1834e
user:        test
date:        Thu Jan 01 00:00:00 1970 +0000
files:       b c
description:
b/c


changeset:   6:adbf8bf7f31d
user:        test
date:        Thu Jan 01 00:00:00 1970 +0000
files:       a
description:
a


changeset:   5:f0b1c8d75fce
user:        test
date:        Thu Jan 01 00:00:00 1970 +0000
files:       bin
description:
5


changeset:   4:77796dbcd4ad
user:        test
date:        Thu Jan 01 00:00:00 1970 +0000
files:       f
description:
4


changeset:   3:7c1b5430b350
user:        test
date:        Thu Jan 01 00:00:00 1970 +0000
files:       f g
description:
2.3


changeset:   2:bc2d09796734
user:        test
date:        Thu Jan 01 00:00:00 1970 +0000
files:       g
description:
2.2


changeset:   1:b1aa5cde7ff4
user:        test
date:        Thu Jan 01 00:00:00 1970 +0000
files:       f
description:
2


changeset:   0:fcf06d5c4e1d
user:        test
date:        Thu Jan 01 00:00:00 1970 +0000
files:       f
description:
1



pulling from dupe
searching for changes
adding changesets
adding manifests
adding file changes
added 3 changesets with 4 changes to 4 files
Attempt to commit or push text file(s) using CRLF line endings
in 67ac5962ab43: d
in 68c127d1834e: b
in 68c127d1834e: c

To prevent this mistake in your local repository,
add to Mercurial.ini or .hg/hgrc:

[hooks]
pretxncommit.crlf = python:hgext.win32text.forbidcrlf

and also consider adding:

[extensions]
win32text =
[encode]
** = cleverencode:
[decode]
** = cleverdecode:
transaction abort!
rollback completed
abort: pretxnchangegroup.crlf hook failed

changeset:   5:f0b1c8d75fce
tag:         tip
user:        test
date:        Thu Jan 01 00:00:00 1970 +0000
files:       bin
description:
5


changeset:   4:77796dbcd4ad
user:        test
date:        Thu Jan 01 00:00:00 1970 +0000
files:       f
description:
4


changeset:   3:7c1b5430b350
user:        test
date:        Thu Jan 01 00:00:00 1970 +0000
files:       f g
description:
2.3


changeset:   2:bc2d09796734
user:        test
date:        Thu Jan 01 00:00:00 1970 +0000
files:       g
description:
2.2


changeset:   1:b1aa5cde7ff4
user:        test
date:        Thu Jan 01 00:00:00 1970 +0000
files:       f
description:
2


changeset:   0:fcf06d5c4e1d
user:        test
date:        Thu Jan 01 00:00:00 1970 +0000
files:       f
description:
1



hello<NUL><CR><LF>
some<LF>text<LF>
rem empty<CR><LF>

[extensions]
win32text = 
[decode]
** = cleverdecode:
[encode]
** = cleverencode:

WARNING: f4.bat already has CRLF line endings
and does not need EOL conversion by the win32text plugin.
Before your next commit, please reconsider your encode/decode settings in 
Mercurial.ini or ..../.hg/hgrc.
3 files updated, 0 files merged, 0 files removed, 0 files unresolved
hello<NUL><CR><LF>
some<CR><LF>text<CR><LF>
rem empty<CR><LF>

# empty<CR><LF>
# empty<LF>
% just linefeed<LF>
% just linefeed<LF>
no changes needed to linefeed
% just linefeed<LF>
M linefeed
reverting linefeed
% just linefeed<CR><LF>