Use git fast-import instead of git commit. This means we no longer need to muck about with directories and (except for git checkout-index --temp to grab original contents) temp files. Also means there's no window during which a crash will leave a bunch of .~...~N files lying around with the working tree corrupted.