svnのプロジェクトをgithubにコピーし続ける

svnで公開されているオープンソースプロジェクトをgithubで追跡し続けたい。
変更したい場合gitの方が便利なので。なんかそういうサービス・プログラム既にありそうだけど見つからなかったです……(あったらそっち使うので誰か教えて……)
今回は flashからxmpp/jabberが使える xiff というプロジェクトをやってみる。

svn から git にclone

mkdir xiffsync # 作業用
git svn clone -s http://svn.igniterealtime.org/svn/repos/xiff
cd xiff/

標準的な構成だったので -s そのまま使えた。

このままだとtagがブランチになっているので、それぞれのブランチにタグを打つ

for i in `git branch -r|grep tags|sed 's/  tags\///g'`; do git tag $i tags/$i ; done

適当だけどこんな感じでまあ動いたので。

github に push。github上ではリポジトリが出来ている前提

git remote add origin git@github.com:nazoking/xiff.git

定期化

リポジトリにpush出来るだけの公開鍵を作る

cd .. # xiffsync に戻る
ssh-keygen -f github_deploy_key
cat github_deploy_key.pub

これをリポジトリの設定のDeploy keysに登録する。

git でこの鍵を使うためのsshラッパー xiffsync/git_ssh.sh

#!/bin/bash
BASEDIR=$(dirname $( readlink -f $(which $0) ))

ssh -i $BASEDIR/github_deploy_key "$@"

cron に登録するためのバッチ xiffsync/github_sync.sh

#!/bin/bash -x
BASEDIR=$(dirname $( readlink -f $(which $0) ))

cd $BASEDIR/xiff
git svn rebase
GIT_SSH=$BASEDIR/git_ssh.sh git push origin master

この xiffsync/github_sync.sh を定期的に動かせば大丈夫なはず……?

TODO:(誰か教えて)

  • git svn rebase して変化がなかったらgit pushしたくない
  • ブランチのコピー……
  • タグのコピーも自働化して……
  • github のプロジェクトをフォークした後にcloneし続ける手順も誰か……