It does seem excessive. It may be possible to deal with only one git repository. That all depends on the capabilities of the
ikiwiki infrastructure (of which I know nothing about).
The reason you'll want the repository to be a bare repository is because a non-bare repository almost always will have a branch checked out. Other git repositories will are not allowed to deliver to a branch that is checked out on the destination repository (imagine working on the branch, a push happens to your machine, and files get changed from under your nose).
You may be able to work out of the
srcdir instead of cloning the "repository" one. Although this may cause a resource contention if you can modify the files at the same time that a web-side edit can. Also, it could get messy with you pushing manually and having the
ikiwiki.cgi pushes happening too. The
ikiwiki may put in hooks you don't want running on a push. For this reason, I suppose they recommend you clone from the "repository".
A Feature of Git
When you clone a git repository from a local machine, git does significant optimizations. If you use the
--local option (which is the default if you do
git clone /path/to/repo), it uses hardlinking of the common history they share, thus saving disk space. Here is an excerpt from
git help clone:
When the repository to clone from is on a local machine,
this flag bypasses the normal "Git aware" transport
mechanism and clones the repository by making a copy of
HEAD and everything under objects and refs directories.
The files under .git/objects/ directory are hardlinked to
save space when possible.
The excess disk space is not in the
.git/objects directory, but rather in the checkout itself. If that's still too excessive for you, then you may want to continue looking for another solution.
Unless you know a lot about the inner-workings of
ikiwiki, I wouldn't attempt to circumvent their recommended way of setting it up. I would consider it unsafe. If you want a better answer than that, you may want to go to a better forum with more knowledge about
The extra used disk space is less of an issue when you realize git performs hard-linking of the internal git object files.