mercurial/hgweb/webcommands.py
changeset 19657 145636d31bb4
parent 19656 60ce14e41faf
child 19722 bf15935b68a3
equal deleted inserted replaced
19656:60ce14e41faf 19657:145636d31bb4
     7 
     7 
     8 import os, mimetypes, re, cgi, copy
     8 import os, mimetypes, re, cgi, copy
     9 import webutil
     9 import webutil
    10 from mercurial import error, encoding, archival, templater, templatefilters
    10 from mercurial import error, encoding, archival, templater, templatefilters
    11 from mercurial.node import short, hex, nullid
    11 from mercurial.node import short, hex, nullid
    12 from mercurial.util import binary
    12 from mercurial import util
    13 from common import paritygen, staticfile, get_contact, ErrorResponse
    13 from common import paritygen, staticfile, get_contact, ErrorResponse
    14 from common import HTTP_OK, HTTP_FORBIDDEN, HTTP_NOT_FOUND
    14 from common import HTTP_OK, HTTP_FORBIDDEN, HTTP_NOT_FOUND
    15 from mercurial import graphmod, patch
    15 from mercurial import graphmod, patch
    16 from mercurial import help as helpmod
    16 from mercurial import help as helpmod
    17 from mercurial import scmutil
    17 from mercurial import scmutil
    55     text = fctx.data()
    55     text = fctx.data()
    56     mt = 'application/binary'
    56     mt = 'application/binary'
    57     if guessmime:
    57     if guessmime:
    58         mt = mimetypes.guess_type(path)[0]
    58         mt = mimetypes.guess_type(path)[0]
    59         if mt is None:
    59         if mt is None:
    60             mt = binary(text) and 'application/binary' or 'text/plain'
    60             mt = util.binary(text) and 'application/binary' or 'text/plain'
    61     if mt.startswith('text/'):
    61     if mt.startswith('text/'):
    62         mt += '; charset="%s"' % encoding.encoding
    62         mt += '; charset="%s"' % encoding.encoding
    63 
    63 
    64     req.respond(HTTP_OK, mt, path, body=text)
    64     req.respond(HTTP_OK, mt, path, body=text)
    65     return []
    65     return []
    67 def _filerevision(web, tmpl, fctx):
    67 def _filerevision(web, tmpl, fctx):
    68     f = fctx.path()
    68     f = fctx.path()
    69     text = fctx.data()
    69     text = fctx.data()
    70     parity = paritygen(web.stripecount)
    70     parity = paritygen(web.stripecount)
    71 
    71 
    72     if binary(text):
    72     if util.binary(text):
    73         mt = mimetypes.guess_type(f)[0] or 'application/octet-stream'
    73         mt = mimetypes.guess_type(f)[0] or 'application/octet-stream'
    74         text = '(binary:%s)' % mt
    74         text = '(binary:%s)' % mt
    75 
    75 
    76     def lines():
    76     def lines():
    77         for lineno, t in enumerate(text.splitlines(True)):
    77         for lineno, t in enumerate(text.splitlines(True)):
   635         context = parsecontext(req.form['context'][0])
   635         context = parsecontext(req.form['context'][0])
   636     else:
   636     else:
   637         context = parsecontext(web.config('web', 'comparisoncontext', '5'))
   637         context = parsecontext(web.config('web', 'comparisoncontext', '5'))
   638 
   638 
   639     def filelines(f):
   639     def filelines(f):
   640         if binary(f.data()):
   640         if util.binary(f.data()):
   641             mt = mimetypes.guess_type(f.path())[0]
   641             mt = mimetypes.guess_type(f.path())[0]
   642             if not mt:
   642             if not mt:
   643                 mt = 'application/octet-stream'
   643                 mt = 'application/octet-stream'
   644             return [_('(binary file %s, hash: %s)') % (mt, hex(f.filenode()))]
   644             return [_('(binary file %s, hash: %s)') % (mt, hex(f.filenode()))]
   645         return f.data().splitlines()
   645         return f.data().splitlines()
   693     parity = paritygen(web.stripecount)
   693     parity = paritygen(web.stripecount)
   694     diffopts = patch.diffopts(web.repo.ui, untrusted=True, section='annotate')
   694     diffopts = patch.diffopts(web.repo.ui, untrusted=True, section='annotate')
   695 
   695 
   696     def annotate(**map):
   696     def annotate(**map):
   697         last = None
   697         last = None
   698         if binary(fctx.data()):
   698         if util.binary(fctx.data()):
   699             mt = (mimetypes.guess_type(fctx.path())[0]
   699             mt = (mimetypes.guess_type(fctx.path())[0]
   700                   or 'application/octet-stream')
   700                   or 'application/octet-stream')
   701             lines = enumerate([((fctx.filectx(fctx.filerev()), 1),
   701             lines = enumerate([((fctx.filectx(fctx.filerev()), 1),
   702                                 '(binary:%s)' % mt)])
   702                                 '(binary:%s)' % mt)])
   703         else:
   703         else: