mirror of
https://github.com/facebook/sapling.git
synced 2024-10-06 23:07:18 +03:00
eol: make the hook check all new heads, not only tip (issue2666)
Report and test by Antoine Pitrou <solipsis@pitrou.net>
This commit is contained in:
parent
31042d7b6f
commit
25db85f436
17
hgext/eol.py
17
hgext/eol.py
@ -202,13 +202,20 @@ def parseeol(ui, repo, nodes):
|
||||
|
||||
def hook(ui, repo, node, hooktype, **kwargs):
|
||||
"""verify that files have expected EOLs"""
|
||||
# Extract heads and get touched files set at the same time
|
||||
files = set()
|
||||
heads = set()
|
||||
for rev in xrange(repo[node].rev(), len(repo)):
|
||||
files.update(repo[rev].files())
|
||||
tip = repo['tip']
|
||||
eol = parseeol(ui, repo, [tip.node()])
|
||||
if eol:
|
||||
eol.checkrev(repo, tip, files)
|
||||
ctx = repo[rev]
|
||||
files.update(ctx.files())
|
||||
heads.add(rev)
|
||||
for pctx in ctx.parents():
|
||||
heads.discard(pctx.rev())
|
||||
for rev in heads:
|
||||
ctx = repo[rev]
|
||||
eol = parseeol(ui, repo, [ctx.node()])
|
||||
if eol:
|
||||
eol.checkrev(repo, ctx, files)
|
||||
|
||||
def preupdate(ui, repo, hooktype, parent1, parent2):
|
||||
#print "preupdate for %s: %s -> %s" % (repo.root, parent1, parent2)
|
||||
|
@ -81,3 +81,38 @@ Create repo
|
||||
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: b.txt should not have CRLF line endings
|
||||
transaction abort!
|
||||
rollback completed
|
||||
abort: b.txt 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"
|
||||
created new head
|
||||
$ 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 (+1 heads)
|
||||
error: pretxnchangegroup hook failed: b.txt should not have CRLF line endings
|
||||
transaction abort!
|
||||
rollback completed
|
||||
abort: b.txt should not have CRLF line endings
|
||||
[255]
|
||||
|
Loading…
Reference in New Issue
Block a user