Trac Lightningを導入して、Eclipseのsubversiveからコミットすると、post-commitフックが動かない

という問題にはまったが解決した。

コミットはできるものの、Tracのチケット連携がうまくいかずコミット内容が反映されていなかった。

SVNクライアントは、SVN Kit (SVN/1.6.2 SVN Kit/1.3.0)。


C:\TracLight\projects\svn\SampleProject\hooks\post-commit.bat

FOR /F "usebackq delims==" %%i IN (`python.exe -c "import sys,re;r=re.split('\\\\',sys.argv[1]);print r[len(r)-1]" %REPOS%`) DO SET PROJECT=%%i

のre.split()のdelimiterを変更して、以下のようにしたらpost-commitフックが正しく動くようになった。

FOR /F "usebackq delims==" %%i IN (`python.exe -c "import sys,re;r=re.split('/|\\\\',sys.argv[1]);print r[len(r)-1]" %REPOS%`) DO SET PROJECT=%%i


Heretic Programmer(2008-07-06)

SVN1.4で動いていたpost-commitフックが正しく動かないので、色々調べ居てると、フックに渡ってくるパスの形式が、SVN1.4までC:/project/svn/SampleProjectだったが、SVN1.5からC:\project\svn\SampleProjectと変更になっている。

ということだったので、
C:\TracLight\projects\svn\SampleProject\hooks\post-commit.bat

内で、

echo %1,%2 > C:\TracLight\projects\svn\SampleProject\hooks\test.txt

を実行してみたところ、

C:/TracLight/projects/svn/SampleProject,7

だった("7"はRevision)。

クライアントによって、どっちのパス形式で渡させるのかが違いそうだから、どっちでも切れるようにしておくのがよさげ。