Hiki on Rack again

投稿者 okkez 2009-08-24 15:41:00 GMT

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 オプションで出力先ディレクトリを分けておくと便利かもしれません。

カテゴリ ,  | タグ , ,  | コメントなし | トラックバックなし

git の ブランチ名を zsh の右プロンプトに表示する

投稿者 okkez 2009-02-15 14:35:00 GMT

以下のようにすれば、とりあえず表示はできる。 けど、ブランチを切り替えたときに一回コマンドを実行するまではプロンプトの表示が古いままになってしまう。

DEFAULT_RPROMPT=$RPROMPT
# ...
typeset -ga chpwd_functions
typeset -ga preexec_functions
function _set_rprompt_git() {
  local git_branch
  git_branch="${$(git symbolic-ref HEAD 2> /dev/null)#refs/heads/}"
  if [ $? != '0' ]; then
    RPROMPT=$DEFAULT_RPROMPT
  else
    RPROMPT="${DEFAULT_RPROMPT}:%{${fg[blue]}%}${git_branch}%{${reset_color}%}"
  fi
}
chpwd_functions+=_set_rprompt_git
preexec_functions+=_set_rprompt_git

=== 参考

カテゴリ  | タグ ,  | コメントなし | トラックバックなし

Redmine works with git repository on github.com

投稿者 okkez 2009-02-15 04:02:00 GMT

github にある git リポジトリと自分で建ててる Redmine とを連携させてみる。

最初の一歩は公式の Redmine - RedmineRepositories - Redmine に載ってるので簡単。

$ cd /path/to/redmine
$ sudo mkdir git_repositories
$ sudo chmod ... # 権限を調整する
$ cd git_repositories
$ git clone --bare git://github.com/<your_name>/<your_repo_name>.git
$ cd <your_repo_name>
## ここからがポイント。
$ git --bare remote add origin git://github.com/<your_name>/<your_repo_name>.git
$ git --bare fetch

ポイントは git clone –bare が git clone と違って自動的に remote を登録してくれないこと。 これを手動で登録すれば OK。 もちろん config ファイルを自分で編集しても大丈夫。

あとは cron なり、何なりで fetch すればいいはず。

Redmine のリポジトリには今、作成した bare リポジトリのフルパスを指定すれば OK 。

追記 (2008-02-22)

以前、書いた部分がちょっと不十分だったようなので追記。

以下のようにしないと、ちゃんと反映されないみたい。

$ git --bare fetch git_repo_path master:master

カテゴリ ,  | タグ ,  | コメントなし | トラックバックなし

zsh と git でファイル名の補完が遅いとき

投稿者 okkez 2008-12-02 20:01:00 GMT

zsh 上で git を使っていてファイル名の補完が遅いことがありました。 特に git add のときに遅い場合は .gitignore にファイル数が多い untracked なディレクトリの名前を 追加すると良いです。

カテゴリ  | タグ ,  | コメントなし | トラックバックなし