Добавил тут для одного из проектов хук в репозиторий, который закрывает тикеты по коммит-логам.
Неочевидное тут вот что:
закрывать тикеты надо тогда, когда коммит попадает на master (такая у нас модель разработки), соответственно надо отлавливать мержи и в случае мержа просматривать смерженные коммиты.
Upd: Гит оказался умнее меня и сам (rev-list) выводит коммиты со смерженных веток. Поэтому всё намного проще и получившийся скрипт даже и не интересен ни разу.
Скрипт получился такой:
#!/bin/sh # This script is run after receive-pack has accepted a pack and the # repository has been updated. It is passed arguments in through stdin # in the form # oldrev newrev refname # For example: # aa453216d1b3e49e7f6f98441fa56946ddcd6a20 68f7abf4e6f922807889f52bc043ecd31b79f814 refs/heads/master TRAC_HOOK="/srv/git/hooks/trac-post-commit-hook" TRAC_DIR="/srv/trac/stand" procrevs() { while read gitrev; do "$TRAC_HOOK" -p "$TRAC_DIR" -r "$gitrev" done } while read OLD NEW NAME;do test "$NAME" == "refs/heads/master"||continue git rev-list --no-merges "$OLD..$NEW"|procrevs done
Где TRAC_HOOK – это trac-post-commit-hook из дистрибутива trac, TRAC_DIR – каталог с проектом trac. В самом trac’е должен быть включен и настроен плагин trac-git.