this implementation broke pushing multiple commits altogether and I never even knew. This partially reverts b781c21. Going to switch to Alex's implementation instad.
first stab at handling non-fast forward pushes
Use more modern file processing
remove xfailingness fixed by Alex's work.