annotate examples/trac/contrib/trac-post-commit-hook @ 49:9b5255d72e33

convert Trac search page to Markup
author mgood
date Tue, 04 Jul 2006 05:08:22 +0000
parents 71ecbe90aafc
children
rev   line source
39
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
1 #!/usr/bin/env python
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
2
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
3 # trac-post-commit-hook
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
4 # ----------------------------------------------------------------------------
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
5 # Copyright (c) 2004 Stephen Hansen
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
6 #
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
7 # Permission is hereby granted, free of charge, to any person obtaining a copy
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
8 # of this software and associated documentation files (the "Software"), to
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
9 # deal in the Software without restriction, including without limitation the
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
10 # rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
11 # sell copies of the Software, and to permit persons to whom the Software is
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
12 # furnished to do so, subject to the following conditions:
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
13 #
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
14 # The above copyright notice and this permission notice shall be included in
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
15 # all copies or substantial portions of the Software.
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
16 #
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
17 # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
18 # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
19 # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
20 # THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
21 # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
22 # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
23 # IN THE SOFTWARE.
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
24 # ----------------------------------------------------------------------------
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
25
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
26 # This Subversion post-commit hook script is meant to interface to the
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
27 # Trac (http://www.edgewall.com/products/trac/) issue tracking/wiki/etc
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
28 # system.
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
29 #
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
30 # It should be called from the 'post-commit' script in Subversion, such as
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
31 # via:
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
32 #
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
33 # REPOS="$1"
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
34 # REV="$2"
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
35 # LOG=`/usr/bin/svnlook log -r $REV $REPOS`
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
36 # AUTHOR=`/usr/bin/svnlook author -r $REV $REPOS`
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
37 # TRAC_ENV='/somewhere/trac/project/'
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
38 # TRAC_URL='http://trac.mysite.com/project/'
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
39 #
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
40 # /usr/bin/python /usr/local/src/trac/contrib/trac-post-commit-hook \
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
41 # -p "$TRAC_ENV" \
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
42 # -r "$REV" \
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
43 # -u "$AUTHOR" \
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
44 # -m "$LOG" \
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
45 # -s "$TRAC_URL"
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
46 #
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
47 # It searches commit messages for text in the form of:
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
48 # command #1
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
49 # command #1, #2
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
50 # command #1 & #2
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
51 # command #1 and #2
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
52 #
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
53 # You can have more then one command in a message. The following commands
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
54 # are supported. There is more then one spelling for each command, to make
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
55 # this as user-friendly as possible.
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
56 #
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
57 # closes, fixes
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
58 # The specified issue numbers are closed with the contents of this
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
59 # commit message being added to it.
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
60 # references, refs, addresses, re
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
61 # The specified issue numbers are left in their current status, but
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
62 # the contents of this commit message are added to their notes.
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
63 #
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
64 # A fairly complicated example of what you can do is with a commit message
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
65 # of:
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
66 #
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
67 # Changed blah and foo to do this or that. Fixes #10 and #12, and refs #12.
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
68 #
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
69 # This will close #10 and #12, and add a note to #12.
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
70
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
71 import re
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
72 import os
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
73 import sys
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
74 import time
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
75
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
76 from trac.env import open_environment
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
77 from trac.ticket.notification import TicketNotifyEmail
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
78 from trac.ticket import Ticket
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
79 from trac.ticket.web_ui import TicketModule
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
80 # TODO: move grouped_changelog_entries to model.py
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
81 from trac.web.href import Href
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
82
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
83 try:
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
84 from optparse import OptionParser
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
85 except ImportError:
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
86 try:
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
87 from optik import OptionParser
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
88 except ImportError:
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
89 raise ImportError, 'Requires Python 2.3 or the Optik option parsing library.'
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
90
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
91 parser = OptionParser()
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
92 parser.add_option('-e', '--require-envelope', dest='env', default='',
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
93 help='Require commands to be enclosed in an envelope. If -e[], '
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
94 'then commands must be in the form of [closes #4]. Must '
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
95 'be two characters.')
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
96 parser.add_option('-p', '--project', dest='project',
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
97 help='Path to the Trac project.')
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
98 parser.add_option('-r', '--revision', dest='rev',
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
99 help='Repository revision number.')
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
100 parser.add_option('-u', '--user', dest='user',
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
101 help='The user who is responsible for this action')
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
102 parser.add_option('-m', '--msg', dest='msg',
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
103 help='The log message to search.')
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
104 parser.add_option('-s', '--siteurl', dest='url',
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
105 help='The base URL to the project\'s trac website (to which '
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
106 '/ticket/## is appended). If this is not specified, '
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
107 'the project URL from trac.ini will be used.')
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
108
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
109 (options, args) = parser.parse_args(sys.argv[1:])
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
110
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
111 if options.env:
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
112 leftEnv = '\\' + options.env[0]
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
113 rghtEnv = '\\' + options.env[1]
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
114 else:
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
115 leftEnv = ''
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
116 rghtEnv = ''
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
117
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
118 commandPattern = re.compile(leftEnv + r'(?P<action>[A-Za-z]*).?(?P<ticket>#[0-9]+(?:(?:[, &]*|[ ]?and[ ]?)#[0-9]+)*)' + rghtEnv)
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
119 ticketPattern = re.compile(r'#([0-9]*)')
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
120
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
121 class CommitHook:
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
122 _supported_cmds = {'close': '_cmdClose',
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
123 'closed': '_cmdClose',
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
124 'closes': '_cmdClose',
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
125 'fix': '_cmdClose',
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
126 'fixed': '_cmdClose',
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
127 'fixes': '_cmdClose',
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
128 'addresses': '_cmdRefs',
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
129 're': '_cmdRefs',
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
130 'references': '_cmdRefs',
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
131 'refs': '_cmdRefs',
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
132 'see': '_cmdRefs'}
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
133
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
134 def __init__(self, project=options.project, author=options.user,
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
135 rev=options.rev, msg=options.msg, url=options.url):
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
136 self.author = author
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
137 self.rev = rev
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
138 self.msg = "(In [%s]) %s" % (rev, msg)
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
139 self.now = int(time.time())
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
140 self.env = open_environment(project)
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
141 if url is None:
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
142 url = self.env.config.get('project', 'url')
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
143 class Request(object):
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
144 def __init__(self):
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
145 self.href = self.abs_href = Href(url)
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
146
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
147 cmdGroups = commandPattern.findall(msg)
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
148
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
149 tickets = {}
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
150 for cmd, tkts in cmdGroups:
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
151 funcname = CommitHook._supported_cmds.get(cmd.lower(), '')
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
152 if funcname:
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
153 for tkt_id in ticketPattern.findall(tkts):
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
154 func = getattr(self, funcname)
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
155 tickets.setdefault(tkt_id, []).append(func)
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
156
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
157 for tkt_id, cmds in tickets.iteritems():
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
158 try:
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
159 db = self.env.get_db_cnx()
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
160
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
161 ticket = Ticket(self.env, int(tkt_id), db)
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
162 for cmd in cmds:
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
163 cmd(ticket)
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
164
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
165 # determine sequence number...
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
166 cnum = 0
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
167 tm = TicketModule(self.env)
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
168 for change in tm.grouped_changelog_entries(ticket, db):
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
169 if change['permanent']:
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
170 cnum += 1
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
171
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
172 ticket.save_changes(self.author, self.msg, self.now, db, cnum+1)
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
173 db.commit()
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
174
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
175 tn = TicketNotifyEmail(self.env)
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
176 tn.notify(ticket, Request(), newticket=0, modtime=self.now)
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
177 except Exception, e:
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
178 # import traceback
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
179 # traceback.print_exc(file=sys.stderr)
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
180 print>>sys.stderr, 'Unexpected error while processing ticket ' \
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
181 'ID %s: %s' % (tkt_id, e)
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
182
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
183
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
184 def _cmdClose(self, ticket):
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
185 ticket['status'] = 'closed'
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
186 ticket['resolution'] = 'fixed'
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
187
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
188 def _cmdRefs(self, ticket):
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
189 pass
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
190
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
191
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
192 if __name__ == "__main__":
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
193 if len(sys.argv) < 5:
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
194 print "For usage: %s --help" % (sys.argv[0])
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
195 else:
71ecbe90aafc Copy Trac to main branch.
cmlenz
parents:
diff changeset
196 CommitHook()
Copyright (C) 2012-2017 Edgewall Software