Currently, Git manipulates the working copy in non-atomic ways. For instance, when checking out a different branch, Git will unlink files in the working copy, and later use open and mmap to write them out. I'd like some way to have Git handle files in the working copy atomically, such as by writing them out to a temporary file and atomically renaming them. In particular, this would make it much safer to use Git for things like /etc or $HOME. - Josh Triplett