Edgewall Software

Ticket #1310: trac-post-commit-hook.0.10-stable.diff

File trac-post-commit-hook.0.10-stable.diff, 2.1 KB (added by markus, 2 years ago)

Patch for international characters in changeset and tickets

  • trac-post-commit-hook

     
    3232# 
    3333# REPOS="$1" 
    3434# REV="$2" 
    35 # LOG=`/usr/bin/svnlook log -r $REV $REPOS` 
    36 # AUTHOR=`/usr/bin/svnlook author -r $REV $REPOS` 
    3735# TRAC_ENV='/somewhere/trac/project/' 
    3836# TRAC_URL='http://trac.mysite.com/project/' 
    3937# 
    4038# /usr/bin/python /usr/local/src/trac/contrib/trac-post-commit-hook \ 
    4139#  -p "$TRAC_ENV"  \ 
    4240#  -r "$REV"       \ 
    43 #  -u "$AUTHOR"    \ 
    44 #  -m "$LOG"       \ 
    4541#  -s "$TRAC_URL" 
    4642# 
    4743# It searches commit messages for text in the form of: 
     
    8076# TODO: move grouped_changelog_entries to model.py 
    8177from trac.util.text import to_unicode 
    8278from trac.web.href import Href 
     79from trac.versioncontrol.svn_fs import SubversionRepository, SubversionChangeset 
     80from trac.log import logger_factory 
    8381 
    8482try: 
    8583    from optparse import OptionParser 
     
    137135    def __init__(self, project=options.project, author=options.user, 
    138136                 rev=options.rev, msg=options.msg, url=options.url, 
    139137                 encoding=options.encoding): 
    140         msg = to_unicode(msg, encoding) 
    141         self.author = author 
     138        self.env = open_environment(project) 
     139        self.env.get_repository() # will do a `sync` if needed 
     140        repos_dir = self.env.config.get('trac', 'repository_dir') 
     141        repos = SubversionRepository(repos_dir, '', logger_factory('test')) 
     142        change = repos.get_changeset(rev) 
     143        msg = change.message 
     144        to_unicode(msg) 
     145        msg = msg.decode('utf-8') 
     146        self.author = change.author 
    142147        self.rev = rev 
    143148        self.msg = "(In [%s]) %s" % (rev, msg) 
    144149        self.now = int(time.time())  
    145         self.env = open_environment(project) 
    146         self.env.get_repository() # will do a `sync` if needed 
    147150        if url is None: 
    148151            url = self.env.config.get('project', 'url') 
    149152        self.env.href = Href(url) 
     
    195198 
    196199 
    197200if __name__ == "__main__": 
    198     if len(sys.argv) < 5: 
     201    if len(sys.argv) < 3: 
    199202        print "For usage: %s --help" % (sys.argv[0]) 
    200203    else: 
    201204        CommitHook()