mirror of
https://github.com/facebook/sapling.git
synced 2024-12-26 22:47:26 +03:00
24363ad52f
Summary: `hg rollback` was long disabled in production setup. It has weird behavior and is likely incompatible with modern transaction frameworks. Remove its usage in tests. Reviewed By: DurhamG Differential Revision: D22240180 fbshipit-source-id: 453684ebbc77132e09b1b717b6ad1e106dcad214
222 lines
5.9 KiB
Perl
222 lines
5.9 KiB
Perl
#chg-compatible
|
|
|
|
$ disable treemanifest
|
|
#require no-fsmonitor
|
|
|
|
Test the EOL hook
|
|
|
|
$ hg init main
|
|
$ cat > main/.hg/hgrc <<EOF
|
|
> [hooks]
|
|
> pretxnchangegroup = python:hgext.eol.hook
|
|
> EOF
|
|
$ hg clone main fork
|
|
updating to branch default
|
|
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
|
|
$ cd fork
|
|
|
|
Create repo
|
|
$ cat > .hgeol <<EOF
|
|
> [patterns]
|
|
> mixed.txt = BIN
|
|
> crlf.txt = CRLF
|
|
> **.txt = native
|
|
> EOF
|
|
$ hg add .hgeol
|
|
$ hg commit -m 'Commit .hgeol'
|
|
|
|
$ printf "first\nsecond\nthird\n" > a.txt
|
|
$ hg add a.txt
|
|
$ hg commit -m 'LF a.txt'
|
|
$ hg push ../main
|
|
pushing to ../main
|
|
searching for changes
|
|
adding changesets
|
|
adding manifests
|
|
adding file changes
|
|
added 2 changesets with 2 changes to 2 files
|
|
|
|
$ printf "first\r\nsecond\r\nthird\n" > a.txt
|
|
$ hg commit -m 'CRLF a.txt'
|
|
$ hg push ../main
|
|
pushing to ../main
|
|
searching for changes
|
|
adding changesets
|
|
adding manifests
|
|
adding file changes
|
|
added 1 changesets with 1 changes to 1 files
|
|
error: pretxnchangegroup hook failed: end-of-line check failed:
|
|
a.txt in a8ee6548cd86 should not have CRLF line endings
|
|
transaction abort!
|
|
rollback completed
|
|
abort: end-of-line check failed:
|
|
a.txt in a8ee6548cd86 should not have CRLF line endings
|
|
[255]
|
|
|
|
$ printf "first\nsecond\nthird\n" > a.txt
|
|
$ hg commit -m 'LF a.txt (fixed)'
|
|
$ hg push ../main
|
|
pushing to ../main
|
|
searching for changes
|
|
adding changesets
|
|
adding manifests
|
|
adding file changes
|
|
added 2 changesets with 2 changes to 1 files
|
|
|
|
$ printf "first\nsecond\nthird\n" > crlf.txt
|
|
$ hg add crlf.txt
|
|
$ hg commit -m 'LF crlf.txt'
|
|
$ hg push ../main
|
|
pushing to ../main
|
|
searching for changes
|
|
adding changesets
|
|
adding manifests
|
|
adding file changes
|
|
added 1 changesets with 1 changes to 1 files
|
|
error: pretxnchangegroup hook failed: end-of-line check failed:
|
|
crlf.txt in 004ba2132725 should not have LF line endings
|
|
transaction abort!
|
|
rollback completed
|
|
abort: end-of-line check failed:
|
|
crlf.txt in 004ba2132725 should not have LF line endings
|
|
[255]
|
|
|
|
$ printf "first\r\nsecond\r\nthird\r\n" > crlf.txt
|
|
$ hg commit -m 'CRLF crlf.txt (fixed)'
|
|
$ hg push ../main
|
|
pushing to ../main
|
|
searching for changes
|
|
adding changesets
|
|
adding manifests
|
|
adding file changes
|
|
added 2 changesets with 2 changes to 1 files
|
|
|
|
$ printf "first\r\nsecond" > b.txt
|
|
$ hg add b.txt
|
|
$ hg commit -m 'CRLF b.txt'
|
|
$ hg push ../main
|
|
pushing to ../main
|
|
searching for changes
|
|
adding changesets
|
|
adding manifests
|
|
adding file changes
|
|
added 1 changesets with 1 changes to 1 files
|
|
error: pretxnchangegroup hook failed: end-of-line check failed:
|
|
b.txt in fbcf9b1025f5 should not have CRLF line endings
|
|
transaction abort!
|
|
rollback completed
|
|
abort: end-of-line check failed:
|
|
b.txt in fbcf9b1025f5 should not have CRLF line endings
|
|
[255]
|
|
|
|
$ hg up -r -2
|
|
0 files updated, 0 files merged, 1 files removed, 0 files unresolved
|
|
$ printf "some\nother\nfile" > c.txt
|
|
$ hg add c.txt
|
|
$ hg commit -m "LF c.txt, b.txt doesn't exist here"
|
|
$ hg push -f ../main
|
|
pushing to ../main
|
|
searching for changes
|
|
adding changesets
|
|
adding manifests
|
|
adding file changes
|
|
added 2 changesets with 2 changes to 2 files
|
|
error: pretxnchangegroup hook failed: end-of-line check failed:
|
|
b.txt in fbcf9b1025f5 should not have CRLF line endings
|
|
transaction abort!
|
|
rollback completed
|
|
abort: end-of-line check failed:
|
|
b.txt in fbcf9b1025f5 should not have CRLF line endings
|
|
[255]
|
|
|
|
Test checkheadshook alias
|
|
|
|
$ cat > ../main/.hg/hgrc <<EOF
|
|
> [hooks]
|
|
> pretxnchangegroup = python:hgext.eol.checkheadshook
|
|
> EOF
|
|
$ hg push -f ../main
|
|
pushing to ../main
|
|
searching for changes
|
|
adding changesets
|
|
adding manifests
|
|
adding file changes
|
|
added 2 changesets with 2 changes to 2 files
|
|
error: pretxnchangegroup hook failed: end-of-line check failed:
|
|
b.txt in fbcf9b1025f5 should not have CRLF line endings
|
|
transaction abort!
|
|
rollback completed
|
|
abort: end-of-line check failed:
|
|
b.txt in fbcf9b1025f5 should not have CRLF line endings
|
|
[255]
|
|
|
|
We can fix the head and push again
|
|
|
|
$ cp -R $TESTTMP/main $TESTTMP/main2
|
|
$ hg up 6
|
|
1 files updated, 0 files merged, 1 files removed, 0 files unresolved
|
|
$ printf "first\nsecond" > b.txt
|
|
$ hg ci -m "remove CRLF from b.txt"
|
|
$ hg push -f ../main2
|
|
pushing to ../main2
|
|
searching for changes
|
|
adding changesets
|
|
adding manifests
|
|
adding file changes
|
|
added 3 changesets with 3 changes to 2 files
|
|
|
|
Test it still fails with checkallhook
|
|
|
|
$ cat > ../main/.hg/hgrc <<EOF
|
|
> [hooks]
|
|
> pretxnchangegroup = python:hgext.eol.checkallhook
|
|
> EOF
|
|
$ hg push -f ../main
|
|
pushing to ../main
|
|
searching for changes
|
|
adding changesets
|
|
adding manifests
|
|
adding file changes
|
|
added 3 changesets with 3 changes to 2 files
|
|
error: pretxnchangegroup hook failed: end-of-line check failed:
|
|
b.txt in fbcf9b1025f5 should not have CRLF line endings
|
|
transaction abort!
|
|
rollback completed
|
|
abort: end-of-line check failed:
|
|
b.txt in fbcf9b1025f5 should not have CRLF line endings
|
|
[255]
|
|
|
|
But we can push the clean head
|
|
|
|
$ hg push -r7 -f ../main
|
|
pushing to ../main
|
|
searching for changes
|
|
adding changesets
|
|
adding manifests
|
|
adding file changes
|
|
added 1 changesets with 1 changes to 1 files
|
|
|
|
Test multiple files/revisions output
|
|
|
|
$ printf "another\r\nbad\r\none" > d.txt
|
|
$ hg add d.txt
|
|
$ hg ci -m "add d.txt"
|
|
$ hg push -f ../main
|
|
pushing to ../main
|
|
searching for changes
|
|
adding changesets
|
|
adding manifests
|
|
adding file changes
|
|
added 3 changesets with 3 changes to 2 files
|
|
error: pretxnchangegroup hook failed: end-of-line check failed:
|
|
b.txt in fbcf9b1025f5 should not have CRLF line endings
|
|
d.txt in a7040e68714f should not have CRLF line endings
|
|
transaction abort!
|
|
rollback completed
|
|
abort: end-of-line check failed:
|
|
b.txt in fbcf9b1025f5 should not have CRLF line endings
|
|
d.txt in a7040e68714f should not have CRLF line endings
|
|
[255]
|
|
|
|
$ cd ..
|