タイトル長っ!
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」フックを使ってチェックするようにしたらいいんだろうなぁ。ということで、これは今度考えてみよう。