I realise that Mercurial 1.4 was released in 2010 and is now fairly old, but noted that pretxnchangegroup hook fails for this version of Mercurial. My investigations into the issue showed:
line 474 "for rev in revrange(repo, ['%s::' % node]):" fails due to the second ':'. (Does revrange accept this notation for newer Mercurial versions? I have not been able to find good documentation about the notation that revrange accepts.)
If the second ':' on line 474, discussed above, is removed, then line 355 fails. This is because patch.diffui is not available in Mercurial 1.4. Is there a suitable substitute available in Mercurial 1.4? I have not been able to get beyond this error.