Hiki on Rack again
投稿者 okkez
Hiki の Rack 対応のために Hiki の svn リポジトリに rack ブランチを切りました。 一応、ページの編集はできます。
動作確認してないのは
- XML-RPC
- ほとんどのプラグイン
です。
で、ローカルでの開発には git-svn を使っています。 使ってみた感じでは、いい感じだったのでちょっと手順をメモしておきます。
branches/rack は先に svn cp で作っておきました。 Hiki は svn の 標準的なディレクトリ構成になっているので -s オプションでいけました。
$ git svn clone --prefix svn/ -s https://svn.sourceforge.jp/svnroot/hiki/hiki/ hiki-git
$ git br -a
svn/hitoshi
svn/rack
svn/tags/V0_4_2a
........ (tags/ なブランチが多いので略)
svn/tags/v0_8_8
svn/tags/v0_8_8_1
svn/trunk
svn/v0_5_branch
svn/v0_6
svn/v0_8_8
$ git br
* master
$ git svn info
Path: .
URL: https://svn.sourceforge.jp/svnroot/hiki/hiki/trunk
Repository Root: https://svn.sourceforge.jp/svnroot/hiki
Repository UUID: 684b846f-27f2-41ea-b66a-77a1bafa84c1
Revision: 1006
Node Kind: directory
Schedule: normal
Last Changed Author: fdiary
Last Changed Rev: 1006
Last Changed Date: 2009-08-24 14:53:26 +0900 (月, 24 8月 2009)最初にできる master ブランチで git svn info を実行してみて URL が trunk じゃなかったら master を作り直した方が いいと思います。こんな感じです。
$ git co -b master2 remotes/svn/trunk
$ git br -D master
$ git br -m master2 master
$ git svn info
Path: .
URL: https://svn.sourceforge.jp/svnroot/hiki/hiki/trunk
Repository Root: https://svn.sourceforge.jp/svnroot/hiki
Repository UUID: 684b846f-27f2-41ea-b66a-77a1bafa84c1
Revision: 1006
Node Kind: directory
Schedule: normal
Last Changed Author: fdiary
Last Changed Rev: 1006
Last Changed Date: 2009-08-24 14:53:26 +0900 (月, 24 8月 2009)この状態で master ブランチを編集して git svn dcommit すると svn の trunk に反映されます。 次に svn の rack ブランチをローカルでいじるためのブランチを用意します。
$ git co -b rack remotes/svn/rack
$ git svn info
Path: .
URL: https://svn.sourceforge.jp/svnroot/hiki/hiki/branches/rack
Repository Root: https://svn.sourceforge.jp/svnroot/hiki
Repository UUID: 684b846f-27f2-41ea-b66a-77a1bafa84c1
Revision: 1007
Node Kind: directory
Schedule: normal
Last Changed Author: okkez
Last Changed Rev: 1007
Last Changed Date: 2009-08-25 00:33:07 +0900 (火, 25 8月 2009)URL が変わっていることに注意してください。 これでこのブランチをいじって git svn dcommit すると svn の rack ブランチに反映されます。
trunk の変更を rack ブランチに取り込む場合は git merge を使うのではなく、 git format-patch と git am を使うと綺麗に出来るようです。
trunk への変更が一つの場合。
$ git co master
$ git format-patch HEAD^
(0001-xxx.patch というファイルが作成される)
$ git co rack
$ git am <さっきのファイル> # 複数ある場合は複数指定可能。ちゃんと順番にパッチをあててくれる。
$ git svn dcommit複数の変更を取り込む場合は、git format-patch HEAD^ とかやるといいです。 パッチの数が多くなるときは -o オプションで出力先ディレクトリを分けておくと便利かもしれません。


