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.

## design

`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.

## gotchas

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]] 

[[!tag wishlist]]
