make pdiff transactional (but at the cost of a CopyFile()