タイトル長っ!
TracLightningを使っている場合、標準でSubversionのリポジトリと連携するように環境が整えられています。設定をすればGitのリポジトリと連携するようにも出来ますが、チケットとの連携等を考えるとそのままSubversionを使うのがお手軽で便利なのではないかと思い、以下の組み合わせでの使い心地を試してみました。
| サーバ | TracLightning+Subversion |
| クライアント | Git |
ちなみに、TracLightningのプロジェクトは新規に作成した物を使いました。
まずはclone
Subversionからデータを持ってこないと話になりませんので、まずは git svn clone します。
nakaji@PC01 /d/Work/myproject (master) $ git svn clone http://localhost/svn/myproject/ Initialized empty Git repository in d:/Work/myproject/.git/
ローカルで編集
適当にローカルでファイルを編集して commit します。
nakaji@PC01 /d/Work/myproject (master) $ git add trygitsvn.txt nakaji@PC01 /d/Work/myproject (master) $ git commmit nakaji@PC01 /d/Work/myproject (master) $ git commit [master e01153b] blog title was decided 蜑肴嶌縺阪r譖ク縺・◆縲・refs #1 1 files changed, 2 insertions(+), 0 deletions(-) create mode 100644 trygitsvn.txt
この辺は普通にGit使ってる時と同じですね。
ちなみに、ログには以下の様な事を書きました。
日本語のログが正しく反映されるか、「refs #1」がチケット#1に連携されるかがポイントかな。
blog title was decided
前書きを書いた。
refs #1
最後に、dcommit
最後にGitでの編集内容をSubversionリポジトリに戻すために、dcommitしてみます。
$ git svn dcommit Unable to determine upstream SVN information from HEAD history. Perhaps the repository is empty. at C:\Program Files (x86)\Git/libexec/git-core/git-svn line 505.
あれ?怒られてしまいました。
メッセージを見る限り、空のリポジトリだとダメみたい。
気を取り直してリトライ
今度は予めファイルをSubversionで1回コミットして同じ事をしてみました。
nakaji@PC01 /d/Work
$ git svn clone http://localhost/svn/myproject/
Initialized empty Git repository in d:/Work/myproject/.git/
A trygitsvn.txt
r1 = 2d49e79f5b8e67abf9f54d2108c16eeaaf9aa41c (refs/remotes/git-svn)
Checked out HEAD:
http://localhost/svn/myproject r1
nakaji@PC01 /d/Work/myproject (master)
$ git commit -a
[master aaf9af5] blog title was decided 蜑肴嶌縺阪r譖ク縺・◆縲・refs #1
1 files changed, 53 insertions(+), 0 deletions(-)
$ git svn dcommit
Committing to http://localhost/svn/myproject ...
M trygitsvn.txt
Committed r2
M trygitsvn.txt
r2 = 526169cb3746ce237656ba7826abb863d5bef027 (refs/remotes/git-svn)
No changes between current HEAD and refs/remotes/git-svn
Resetting to the latest refs/remotes/git-svnお、上手くいったみたい。

[1]は予め行ったSubversionでのコミットログで、[2]がGitから行ったdcommitです。
日本語ファイル名(フォルダ名も)を使わなければ、結構お手軽でいい構成かもしれませんね。
他に確認したいこと
TracLightningで「チケットに関するコメントを必須にする - タイトルは未定」の設定を行ってた場合、git commitする時にチケット番号入れ忘れると面倒なことになりそうですね。dcommitする時に怒られると思うので、後からまとめてコミットログを修正しないといけなくなる…
この辺はローカルの「commit-msg」フックを使ってチェックするようにしたらいいんだろうなぁ。ということで、これは今度考えてみよう。