A web interface for git remotes configuration would be very handy.

  • Should make it really easy to set up pushing to github.
  • Should be possible to push a site to any other git repo too.
  • A special case is pushing changes to a site over to a branch of that site.


ikisite already handles backup/restore of .ssh/id_*, so ssh-keygen can be used a generate a passwordless ssh key for a site when remotes are first set up. Provide a way to download the ssh public key, to provide to github, etc.

For each remote, the user only needs to configure:

  • The git URI, in any of the forms git recognises, except file:/// and a bare path to a local repo.
  • Whether to make the remote a mirror. (git push --mirror; force-update the remote refs) Or find a sane default.
  • Possibly, the remote branch to push origin/master to. (Or a prefix, so it pushes to foo/master, foo/setup, etc.) Being able to push origin/master to github/branchable might be nice, but this feature could be omitted for simplicity initially.

The pushing should be run by a post-update hook. Currently, the post-update hook is the ikiwiki wrapper. So, the pushing could be implemented by an ikiwiki plugin. It could use the refresh hook, which will always be called when a change is made or received.

The plugin should daemonize, drop locks, wait a short while to avoid contending with the main site build, and then push to configured remotes.


ssh host key checking needs to be dealt with somehow. By disabling StrictHostKeyChecking in ~/.ssh/config? Should be ok for public/branchable repositories. The risk is that for a non-public repository, an unsafe push could be done, exposing its contents.

ssh (or http) could stall asking for a password. The daemonization should avoid this by ensuring that any controlling terminal is detached from.

May need to force push if pushing to an empty remote. (--mirror avoids that problem)

basic gitpush plugin now done --Joey