I want to have git repository available via \"smart\" HTTP to which only I can push, but which anybody (or anybody with account) can clone / fetch from.
You have to update your repo .git/config
file with the following value:
[http]
receivepack = true
One not so complex alternative is to use gitolite in addition of your Apache-git setup.
You can plug gitolite to Apache easily enough (no ssh config required).
See as an example: httpd.conf, combined with this local gitolite installation script.
You can then easily declare Apache logins for Write access, and @all
for read access.