ARG. git can autopack the repo IN THE BACKGROUND after a git-fetch, so you can have code that does the quite reasonable steps of:
$ git fetch
$ tar -cf ../blah.tar .
and it'll fail, because tar will notice that all the files are moving around because git is actually still rewriting the files