[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 b94ebd309a6d: 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]
hgext.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 cefdb8d0b741: d/f2
transaction abort!
rollback completed
abort: pretxncommit.crlf hook failed
forgetting d/f2


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


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


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


changeset:   2:b94ebd309a6d
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:7654104f33c3
tag:         tip
user:        test
date:        Thu Jan 01 00:00:00 1970 +0000
files:       d
description:
d


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


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


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


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


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


changeset:   2:b94ebd309a6d
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 7654104f33c3: d
in 9be4c2808cc9: b
in 9be4c2808cc9: 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]
hgext.win32text =
[encode]
** = cleverencode:
[decode]
** = cleverdecode:
transaction abort!
rollback completed
abort: pretxnchangegroup.crlf hook failed

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


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


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


changeset:   2:b94ebd309a6d
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>
