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