maybe `#save` should be setting the `sha` to nil? It's a bit awkward to remember to need to do this before calling save.