Geo: Recovery from @geo-temporary directory doesn't work if the namespace directory doesn't exist
From https://gitlab.com/gitlab-org/gitlab-ee/issues/5406, one side effect of moving from a temporary path within the namespace to the @geo-temporary
directory is that it's possible to get into a state where the project namespace doesn't exist on disk, so when Geo attempts to move the temporary directory to the original directory, the move fails.
I saw two examples of this, and this may be why we have so many thousands of failures here.
In the pre-Gitaly world, I thought we used to have some sort of call that ensured the namespace directory exists.
Now I think we should just call GitlabShell#add_namespace
: https://gitlab.com/gitlab-org/gitlab-ee/blob/28a53e89523bbc642092b6d8f129de0b537e3ea8/lib/gitlab/shell.rb#L297-311 every time we try to sync a repository.