Mercurial > hg
comparison mercurial/hgweb.py @ 1112:87cbfaf79124
hgweb: add mdiff / fix sorting of archives
author | mpm@selenic.com |
---|---|
date | Sat, 27 Aug 2005 18:40:25 -0700 |
parents | 0cb9c72b6c03 |
children | 7fca9752d945 |
comparison
equal
deleted
inserted
replaced
1111:addcb77fe500 | 1112:87cbfaf79124 |
---|---|
5 # | 5 # |
6 # This software may be used and distributed according to the terms | 6 # This software may be used and distributed according to the terms |
7 # of the GNU General Public License, incorporated herein by reference. | 7 # of the GNU General Public License, incorporated herein by reference. |
8 | 8 |
9 import os, cgi, time, re, socket, sys, zlib | 9 import os, cgi, time, re, socket, sys, zlib |
10 import mdiff | |
10 from hg import * | 11 from hg import * |
11 from ui import * | 12 from ui import * |
12 | 13 |
13 | 14 |
14 def templatepath(): | 15 def templatepath(): |
647 mf = self.repo.manifest.read(mnode) | 648 mf = self.repo.manifest.read(mnode) |
648 rev = self.repo.manifest.rev(mnode) | 649 rev = self.repo.manifest.rev(mnode) |
649 reponame = re.sub(r"\W+", "-", self.reponame) | 650 reponame = re.sub(r"\W+", "-", self.reponame) |
650 name = "%s-%s/" % (reponame, short(cnode)) | 651 name = "%s-%s/" % (reponame, short(cnode)) |
651 | 652 |
653 files = mf.keys() | |
654 files.sort() | |
655 | |
652 if type == 'zip': | 656 if type == 'zip': |
653 import zipfile | 657 import zipfile |
654 | 658 |
655 try: | 659 try: |
656 tmp = tempfile.mkstemp()[1] | 660 tmp = tempfile.mkstemp()[1] |
657 zf = zipfile.ZipFile(tmp, "w", zipfile.ZIP_DEFLATED) | 661 zf = zipfile.ZipFile(tmp, "w", zipfile.ZIP_DEFLATED) |
658 | 662 |
659 for f in mf.keys(): | 663 for f in files: |
660 zf.writestr(name + f, self.repo.file(f).read(mf[f])) | 664 zf.writestr(name + f, self.repo.file(f).read(mf[f])) |
661 zf.close() | 665 zf.close() |
662 | 666 |
663 f = open(tmp, 'r') | 667 f = open(tmp, 'r') |
664 httphdr('application/zip', name[:-1] + '.zip', | 668 httphdr('application/zip', name[:-1] + '.zip', |
676 tf = tarfile.TarFile.open(mode='w|' + type, fileobj=sys.stdout) | 680 tf = tarfile.TarFile.open(mode='w|' + type, fileobj=sys.stdout) |
677 mff = self.repo.manifest.readflags(mnode) | 681 mff = self.repo.manifest.readflags(mnode) |
678 mtime = int(time.time()) | 682 mtime = int(time.time()) |
679 | 683 |
680 httphdr('application/octet-stream', name[:-1] + '.tar.' + type) | 684 httphdr('application/octet-stream', name[:-1] + '.tar.' + type) |
681 for fname in mf.keys(): | 685 for fname in files: |
682 rcont = self.repo.file(fname).read(mf[fname]) | 686 rcont = self.repo.file(fname).read(mf[fname]) |
683 finfo = tarfile.TarInfo(name + fname) | 687 finfo = tarfile.TarInfo(name + fname) |
684 finfo.mtime = mtime | 688 finfo.mtime = mtime |
685 finfo.size = len(rcont) | 689 finfo.size = len(rcont) |
686 finfo.mode = mff[fname] and 0755 or 0644 | 690 finfo.mode = mff[fname] and 0755 or 0644 |