When trying to implement William's suggestion, I found that indeed it's quite reasonable for Launchpad to take care of creating a GitRepository row when asked to translate-for-writing a well-formed path it doesn't know about yet, but it's still useful for turnip to deal with the "git init" bit when trying to receive into a repository path that doesn't yet exist on disk. This makes the interface between Launchpad and turnip much simpler when creating repositories.
When trying to implement William's suggestion, I found that indeed it's quite reasonable for Launchpad to take care of creating a GitRepository row when asked to translate- for-writing a well-formed path it doesn't know about yet, but it's still useful for turnip to deal with the "git init" bit when trying to receive into a repository path that doesn't yet exist on disk. This makes the interface between Launchpad and turnip much simpler when creating repositories.
I've amended this branch with this new approach.