refactor copy-diffs, more tests and fixes

interesting question, I mean override cleanly, but with the potential for massive amounts of history loss if you do it to a repo you didn't mean to do it to. I thought of a few ways to protect against it but nothing seemed to make that much sense over just being careful. It's not like you can do this to a github repo or something, for example.