##// END OF EJS Templates
added annotate...
jake@edge2.net -
r136:0e8d60d2 default
parent child Browse files
Show More
@@ -0,0 +1,1 b''
1 <a class="revnumlink" href="?cmd=chkin;nd=#cnode#">#cnum#</a>:<a class="annlinelink" href="?cmd=file;fn=#fn#;cs=#cnode#">#line#</a>
@@ -82,8 +82,8 b' class page:'
82 print '</pre>'
82 print '</pre>'
83
83
84 class errpage(page):
84 class errpage(page):
85 def __init__(self):
85 def __init__(self, tmpl_dir):
86 page.__init__(self, title="Mercurial Web Error Page")
86 page.__init__(self, tmpl_dir, title="Mercurial Web Error Page")
87
87
88 class change_list(page):
88 class change_list(page):
89 def __init__(self, repo, tmpl_dir, reponame, numchanges = 50):
89 def __init__(self, repo, tmpl_dir, reponame, numchanges = 50):
@@ -204,12 +204,32 b' class filepage(page):'
204 print '<div class="filename">%s (%s)</div>' % \
204 print '<div class="filename">%s (%s)</div>' % \
205 (cgi.escape(self.fn), self.nodestr, )
205 (cgi.escape(self.fn), self.nodestr, )
206 print '<a href="?cmd=hist;fn=%s">history</a><br />' % self.fn
206 print '<a href="?cmd=hist;fn=%s">history</a><br />' % self.fn
207 print '<a href="?cmd=ann;fn=%s;nd=%s">annotate</a><br />' % \
208 (self.fn, self.nodestr)
207
209
208 def content(self):
210 def content(self):
209 print '<pre>'
211 print '<pre>'
210 print cgi.escape(self.repo.file(self.fn).read(self.node))
212 print cgi.escape(self.repo.file(self.fn).read(self.node))
211 print '</pre>'
213 print '</pre>'
212
214
215 class annpage(page):
216 def __init__(self, repo, tmpl_dir, fn, node):
217 page.__init__(self, tmpl_dir)
218 self.repo = repo
219 self.fn = fn
220 self.nodestr = node
221 self.node = hg.bin(node)
222 print '<div class="annotation">Annotated: %s (%s)</div>' % \
223 (cgi.escape(self.fn), self.nodestr, )
224
225 def content(self):
226 print '<pre>'
227 for n, l in self.repo.file(self.fn).annotate(self.node):
228 cnode = self.repo.changelog.lookup(n)
229 write(self.tmpl.do_page('annline.tmpl', cnode=hg.hex(cnode),
230 cnum='% 6s' % n, fn=self.fn, line=cgi.escape(l[:-1])))
231 print '</pre>'
232
213 class mfpage(page):
233 class mfpage(page):
214 def __init__(self, repo, tmpl_dir, node):
234 def __init__(self, repo, tmpl_dir, node):
215 page.__init__(self, tmpl_dir)
235 page.__init__(self, tmpl_dir)
@@ -285,7 +305,7 b' class hgweb:'
285
305
286 elif args['cmd'][0] == 'chkin':
306 elif args['cmd'][0] == 'chkin':
287 if not args.has_key('nd'):
307 if not args.has_key('nd'):
288 page = errpage()
308 page = errpage(self.tmpl_dir)
289 print '<div class="errmsg">No Node!</div>'
309 print '<div class="errmsg">No Node!</div>'
290 else:
310 else:
291 page = checkin(repo, self.tmpl_dir, args['nd'][0])
311 page = checkin(repo, self.tmpl_dir, args['nd'][0])
@@ -295,7 +315,7 b' class hgweb:'
295 elif args['cmd'][0] == 'file':
315 elif args['cmd'][0] == 'file':
296 if not (args.has_key('nd') and args.has_key('fn')) and \
316 if not (args.has_key('nd') and args.has_key('fn')) and \
297 not (args.has_key('cs') and args.has_key('fn')):
317 not (args.has_key('cs') and args.has_key('fn')):
298 page = errpage()
318 page = errpage(self.tmpl_dir)
299 print '<div class="errmsg">Invalid Args!</div>'
319 print '<div class="errmsg">Invalid Args!</div>'
300 else:
320 else:
301 if args.has_key('nd'):
321 if args.has_key('nd'):
@@ -309,7 +329,7 b' class hgweb:'
309
329
310 elif args['cmd'][0] == 'mf':
330 elif args['cmd'][0] == 'mf':
311 if not args.has_key('nd'):
331 if not args.has_key('nd'):
312 page = errpage()
332 page = errpage(self.tmpl_dir)
313 print '<div class="errmsg">No Node!</div>'
333 print '<div class="errmsg">No Node!</div>'
314 else:
334 else:
315 page = mfpage(repo, self.tmpl_dir, args['nd'][0])
335 page = mfpage(repo, self.tmpl_dir, args['nd'][0])
@@ -318,13 +338,26 b' class hgweb:'
318
338
319 elif args['cmd'][0] == 'hist':
339 elif args['cmd'][0] == 'hist':
320 if not args.has_key('fn'):
340 if not args.has_key('fn'):
321 page = errpage()
341 page = errpage(self.tmpl_dir)
322 print '<div class="errmsg">No Filename!</div>'
342 print '<div class="errmsg">No Filename!</div>'
323 else:
343 else:
324 page = histpage(repo, self.tmpl_dir, args['fn'][0])
344 page = histpage(repo, self.tmpl_dir, args['fn'][0])
325 page.content()
345 page.content()
326 page.endpage()
346 page.endpage()
327
347
348 elif args['cmd'][0] == 'ann':
349 if not args.has_key('fn'):
350 page = errpage(self.tmpl_dir)
351 print '<div class="errmsg">No Filename!</div>'
352 elif not args.has_key('nd'):
353 page = errpage(self.tmpl_dir)
354 print '<div class="errmsg">No Node!</div>'
355 else:
356 page = annpage(repo, self.tmpl_dir, args['fn'][0],
357 args['nd'][0])
358 page.content()
359 page.endpage()
360
328 elif args['cmd'][0] == 'branches':
361 elif args['cmd'][0] == 'branches':
329 httphdr("text/plain")
362 httphdr("text/plain")
330 nodes = []
363 nodes = []
@@ -355,7 +388,7 b' class hgweb:'
355 sys.stdout.write(z.flush())
388 sys.stdout.write(z.flush())
356
389
357 else:
390 else:
358 page = errpage()
391 page = errpage(self.tmpl_dir)
359 print '<div class="errmsg">unknown command: %s</div>' % \
392 print '<div class="errmsg">unknown command: %s</div>' % \
360 cgi.escape(args['cmd'][0])
393 cgi.escape(args['cmd'][0])
361 page.endpage()
394 page.endpage()
@@ -9,9 +9,14 b' table { font-size: 12px; }'
9 .filename { font-size: 150%; color: purple; }
9 .filename { font-size: 150%; color: purple; }
10 .manifest { font-size: 150%; color: purple; }
10 .manifest { font-size: 150%; color: purple; }
11 .filehist { font-size: 150%; color: purple; }
11 .filehist { font-size: 150%; color: purple; }
12 .annotation { font-size: 150%; color: purple; }
12 .plusline { color: green; }
13 .plusline { color: green; }
13 .minusline { color: red; }
14 .minusline { color: red; }
14 .atline { color: purple; }
15 .atline { color: purple; }
16 a.annlinelink { text-decoration: none; color: black; }
17 a.revnumlink { text-decoration: none; color: black; }
18 a.annlinelink:hover { text-decoration: none; color: blue; }
19 a.revnumlink:hover { text-decoration: none; color: blue; }
15 </style>
20 </style>
16 </HEAD>
21 </HEAD>
17 <BODY>
22 <BODY>
General Comments 0
You need to be logged in to leave comments. Login now