subjectの文字化けを修正 refs #1234```

> <a title="Redmine-参照用キーワード(refsなど)無しでリビジョンとチケットを関連づける" href="" target="_blank">Redmine-参照用キーワード(refsなど)無しでリビジョンとチケットを関連づける</a>


> <a title="「リポジトリ」を開くまでSubversion等のリポジトリへのコミットが「活動」に表示されません" href="" target="_blank">Redmine-「リポジトリ」を開くまでSubversion等のリポジトリへのコミットが「活動」に表示されません</a>

現在のサーバーではコミット頻度が少なく、cronで定期的に取得するのは無駄が多いため、SVNのpost-commit Hookを使ってコミットのタイミングでRedmineに通知している。

> <a title="小技(0.9): コミットと同時にリポジトリの情報を取得する" href="" target="_blank">小技(0.9): コミットと同時にリポジトリの情報を取得する</a>

SVNのpost-commit Hook スクリプトは次のような設定にしている。


・ 中略


# commit "$REPOS" "$REV" /path/to/mailer.conf

# 以下は実際には改行無しで1行で記述
# コレが時間が掛かる?
/usr/local/bin/ruby -ropen-uri -e 'open("")' 

# wgetがインストールされていれば以下のようにしてもよいです
#/usr/bin/wget --no-check-certificate -q -O /dev/null```



redmine svn commit slow
まぁ仕方ないと思っていたがコミットが億劫になりバージョン管理すべきソースをcommitし忘れることが多くなった;; SVNのpost-commitからRedmineへの通知、なにか速くなる方法が無いか調べてみると、2つ速くなりそうな方法があった。 **<span style="color: #3366ff;">1.Redmine通知時にプロジェクトを限定する。</span>** /redmine/sys/fetch_changesetsのAPIキーは1つのようだが、Redmineは通知すると全プロジェクトの変更検知するのだろうか? と思っていたら、記載があった。 fetch_changesetsにidパラメータを指定し、プロジェクト識別子を指定できるようだ。指定しないとすべてのActiveプロジェクトが対象となるようだ。 ```terminal (=> fetches changesets for all active projects) (=> fetches changesets for project foo only)``` スクリプト版でもプロジェクトを絞れるようだ。(未確認) ```terminal redmine/script/runner "Project.find('..projname..').repository.fetch_changesets" -e production``` ・ <a title="Redmine Guide ? Administrator Guide ? Repositories" href="" target="_blank">Attaching an existing repository to a project</a> ・<a title="Is there a way to restrict the fetch changeset process to a specific project? (from within a subversion hook)" href="" target="_blank">Is there a way to restrict the fetch changeset process to a specific project? (from within a subversion hook)</a> **<span style="color: #3366ff;"> HookでのRedmine通知方法をBackgroundにする。</span>** post-commitスクリプトで呼び出す場合に「&」つけてバックグラウンド実行すると良いらしい。 ・<a title="Speedup svn post-commit hook for redmine or chiliproject" href="" target="_blank">Speedup svn post-commit hook for redmine or chiliproject</a> ・<a title="Redmine Frequently Asked Questions" href="" target="_blank">Frequently Asked Questions</a> > Repositories Commits don't show up in the activity until I click on 'Repository' By default, Redmine fetches the new commits from the repository only when you browse it. > > If you want the commits to be retrieved periodically by Redmine in the background for all your repositories, uncheck 'Autofetch commits' setting and add a cron that runs (with appropriate environment): > > rake -f /path/to/redmine/Rakefile RAILS\_ENV=production redmine:fetch\_changesets For SVN repositories you can also add the following command to a post-commit hook: > > ruby /path\_to\_redmine/redmine/script/runner "Repository.fetch_changesets" -e production *Note, the second method of post-commit hook will slow down commits and could possibly cause commits to fail if Redmine is not functioning. > > You can bypass these disadvantages by sending the ruby-command to background. > > ruby /path\_to\_redmine/redmine/script/runner "Repository.fetch_changesets" -e production > /dev/null 2>&1 & 結局、post-commitスクリプトを次のよう変更したところ、SVNのcommmitがとても速くなった!Redmine通知方法をBackgroundにしたのがとても効いているのだろう。 ・「id=プロジェクト識別子」 を指定 ・「 > /dev/null 2>&1 & 」でfetch_changesets への通知をバックグランドへ ```terminal #!/bin/sh # POST-COMMIT HOOK ・ 中略 REPOS="$1" REV="$2" # commit "$REPOS" "$REV" /path/to/mailer.conf # 以下は実際には改行無しで1行で記述 #/usr/local/bin/ruby -ropen-uri -e 'open("")' /usr/local/bin/ruby -ropen-uri -e 'open("")' > /dev/null 2>&1 & # wgetがインストールされていれば以下のようにしてもよいです #/usr/bin/wget --no-check-certificate -q -O /dev/null``` 今のところうまくいっているようなので、これで運用してみよう。