summaryrefslogtreecommitdiff
path: root/eggs/mercurial-1.7.3-py2.6-linux-x86_64.egg/mercurial/archival.py
diff options
context:
space:
mode:
authorNishanth Amuluru2011-01-11 22:41:51 +0530
committerNishanth Amuluru2011-01-11 22:41:51 +0530
commitb03203c8cb991c16ac8a3d74c8c4078182d0bb48 (patch)
tree7cf13b2deacbfaaec99edb431b83ddd5ea734a52 /eggs/mercurial-1.7.3-py2.6-linux-x86_64.egg/mercurial/archival.py
parent0c50203cd9eb94b819883c3110922e873f003138 (diff)
downloadpytask-b03203c8cb991c16ac8a3d74c8c4078182d0bb48.tar.gz
pytask-b03203c8cb991c16ac8a3d74c8c4078182d0bb48.tar.bz2
pytask-b03203c8cb991c16ac8a3d74c8c4078182d0bb48.zip
removed all the buildout files
Diffstat (limited to 'eggs/mercurial-1.7.3-py2.6-linux-x86_64.egg/mercurial/archival.py')
-rw-r--r--eggs/mercurial-1.7.3-py2.6-linux-x86_64.egg/mercurial/archival.py274
1 files changed, 0 insertions, 274 deletions
diff --git a/eggs/mercurial-1.7.3-py2.6-linux-x86_64.egg/mercurial/archival.py b/eggs/mercurial-1.7.3-py2.6-linux-x86_64.egg/mercurial/archival.py
deleted file mode 100644
index a2b0e93..0000000
--- a/eggs/mercurial-1.7.3-py2.6-linux-x86_64.egg/mercurial/archival.py
+++ /dev/null
@@ -1,274 +0,0 @@
-# archival.py - revision archival for mercurial
-#
-# Copyright 2006 Vadim Gelfer <vadim.gelfer@gmail.com>
-#
-# This software may be used and distributed according to the terms of the
-# GNU General Public License version 2 or any later version.
-
-from i18n import _
-from node import hex
-import cmdutil
-import util
-import cStringIO, os, stat, tarfile, time, zipfile
-import zlib, gzip
-
-def tidyprefix(dest, kind, prefix):
- '''choose prefix to use for names in archive. make sure prefix is
- safe for consumers.'''
-
- if prefix:
- prefix = util.normpath(prefix)
- else:
- if not isinstance(dest, str):
- raise ValueError('dest must be string if no prefix')
- prefix = os.path.basename(dest)
- lower = prefix.lower()
- for sfx in exts.get(kind, []):
- if lower.endswith(sfx):
- prefix = prefix[:-len(sfx)]
- break
- lpfx = os.path.normpath(util.localpath(prefix))
- prefix = util.pconvert(lpfx)
- if not prefix.endswith('/'):
- prefix += '/'
- if prefix.startswith('../') or os.path.isabs(lpfx) or '/../' in prefix:
- raise util.Abort(_('archive prefix contains illegal components'))
- return prefix
-
-exts = {
- 'tar': ['.tar'],
- 'tbz2': ['.tbz2', '.tar.bz2'],
- 'tgz': ['.tgz', '.tar.gz'],
- 'zip': ['.zip'],
- }
-
-def guesskind(dest):
- for kind, extensions in exts.iteritems():
- if util.any(dest.endswith(ext) for ext in extensions):
- return kind
- return None
-
-
-class tarit(object):
- '''write archive to tar file or stream. can write uncompressed,
- or compress with gzip or bzip2.'''
-
- class GzipFileWithTime(gzip.GzipFile):
-
- def __init__(self, *args, **kw):
- timestamp = None
- if 'timestamp' in kw:
- timestamp = kw.pop('timestamp')
- if timestamp is None:
- self.timestamp = time.time()
- else:
- self.timestamp = timestamp
- gzip.GzipFile.__init__(self, *args, **kw)
-
- def _write_gzip_header(self):
- self.fileobj.write('\037\213') # magic header
- self.fileobj.write('\010') # compression method
- # Python 2.6 deprecates self.filename
- fname = getattr(self, 'name', None) or self.filename
- if fname and fname.endswith('.gz'):
- fname = fname[:-3]
- flags = 0
- if fname:
- flags = gzip.FNAME
- self.fileobj.write(chr(flags))
- gzip.write32u(self.fileobj, long(self.timestamp))
- self.fileobj.write('\002')
- self.fileobj.write('\377')
- if fname:
- self.fileobj.write(fname + '\000')
-
- def __init__(self, dest, mtime, kind=''):
- self.mtime = mtime
-
- def taropen(name, mode, fileobj=None):
- if kind == 'gz':
- mode = mode[0]
- if not fileobj:
- fileobj = open(name, mode + 'b')
- gzfileobj = self.GzipFileWithTime(name, mode + 'b',
- zlib.Z_BEST_COMPRESSION,
- fileobj, timestamp=mtime)
- return tarfile.TarFile.taropen(name, mode, gzfileobj)
- else:
- return tarfile.open(name, mode + kind, fileobj)
-
- if isinstance(dest, str):
- self.z = taropen(dest, mode='w:')
- else:
- # Python 2.5-2.5.1 have a regression that requires a name arg
- self.z = taropen(name='', mode='w|', fileobj=dest)
-
- def addfile(self, name, mode, islink, data):
- i = tarfile.TarInfo(name)
- i.mtime = self.mtime
- i.size = len(data)
- if islink:
- i.type = tarfile.SYMTYPE
- i.mode = 0777
- i.linkname = data
- data = None
- i.size = 0
- else:
- i.mode = mode
- data = cStringIO.StringIO(data)
- self.z.addfile(i, data)
-
- def done(self):
- self.z.close()
-
-class tellable(object):
- '''provide tell method for zipfile.ZipFile when writing to http
- response file object.'''
-
- def __init__(self, fp):
- self.fp = fp
- self.offset = 0
-
- def __getattr__(self, key):
- return getattr(self.fp, key)
-
- def write(self, s):
- self.fp.write(s)
- self.offset += len(s)
-
- def tell(self):
- return self.offset
-
-class zipit(object):
- '''write archive to zip file or stream. can write uncompressed,
- or compressed with deflate.'''
-
- def __init__(self, dest, mtime, compress=True):
- if not isinstance(dest, str):
- try:
- dest.tell()
- except (AttributeError, IOError):
- dest = tellable(dest)
- self.z = zipfile.ZipFile(dest, 'w',
- compress and zipfile.ZIP_DEFLATED or
- zipfile.ZIP_STORED)
-
- # Python's zipfile module emits deprecation warnings if we try
- # to store files with a date before 1980.
- epoch = 315532800 # calendar.timegm((1980, 1, 1, 0, 0, 0, 1, 1, 0))
- if mtime < epoch:
- mtime = epoch
-
- self.date_time = time.gmtime(mtime)[:6]
-
- def addfile(self, name, mode, islink, data):
- i = zipfile.ZipInfo(name, self.date_time)
- i.compress_type = self.z.compression
- # unzip will not honor unix file modes unless file creator is
- # set to unix (id 3).
- i.create_system = 3
- ftype = stat.S_IFREG
- if islink:
- mode = 0777
- ftype = stat.S_IFLNK
- i.external_attr = (mode | ftype) << 16L
- self.z.writestr(i, data)
-
- def done(self):
- self.z.close()
-
-class fileit(object):
- '''write archive as files in directory.'''
-
- def __init__(self, name, mtime):
- self.basedir = name
- self.opener = util.opener(self.basedir)
-
- def addfile(self, name, mode, islink, data):
- if islink:
- self.opener.symlink(data, name)
- return
- f = self.opener(name, "w", atomictemp=True)
- f.write(data)
- f.rename()
- destfile = os.path.join(self.basedir, name)
- os.chmod(destfile, mode)
-
- def done(self):
- pass
-
-archivers = {
- 'files': fileit,
- 'tar': tarit,
- 'tbz2': lambda name, mtime: tarit(name, mtime, 'bz2'),
- 'tgz': lambda name, mtime: tarit(name, mtime, 'gz'),
- 'uzip': lambda name, mtime: zipit(name, mtime, False),
- 'zip': zipit,
- }
-
-def archive(repo, dest, node, kind, decode=True, matchfn=None,
- prefix=None, mtime=None, subrepos=False):
- '''create archive of repo as it was at node.
-
- dest can be name of directory, name of archive file, or file
- object to write archive to.
-
- kind is type of archive to create.
-
- decode tells whether to put files through decode filters from
- hgrc.
-
- matchfn is function to filter names of files to write to archive.
-
- prefix is name of path to put before every archive member.'''
-
- if kind == 'files':
- if prefix:
- raise util.Abort(_('cannot give prefix when archiving to files'))
- else:
- prefix = tidyprefix(dest, kind, prefix)
-
- def write(name, mode, islink, getdata):
- if matchfn and not matchfn(name):
- return
- data = getdata()
- if decode:
- data = repo.wwritedata(name, data)
- archiver.addfile(prefix + name, mode, islink, data)
-
- if kind not in archivers:
- raise util.Abort(_("unknown archive type '%s'") % kind)
-
- ctx = repo[node]
- archiver = archivers[kind](dest, mtime or ctx.date()[0])
-
- if repo.ui.configbool("ui", "archivemeta", True):
- def metadata():
- base = 'repo: %s\nnode: %s\nbranch: %s\n' % (
- repo[0].hex(), hex(node), ctx.branch())
-
- tags = ''.join('tag: %s\n' % t for t in ctx.tags()
- if repo.tagtype(t) == 'global')
- if not tags:
- repo.ui.pushbuffer()
- opts = {'template': '{latesttag}\n{latesttagdistance}',
- 'style': '', 'patch': None, 'git': None}
- cmdutil.show_changeset(repo.ui, repo, opts).show(ctx)
- ltags, dist = repo.ui.popbuffer().split('\n')
- tags = ''.join('latesttag: %s\n' % t for t in ltags.split(':'))
- tags += 'latesttagdistance: %s\n' % dist
-
- return base + tags
-
- write('.hg_archival.txt', 0644, False, metadata)
-
- for f in ctx:
- ff = ctx.flags(f)
- write(f, 'x' in ff and 0755 or 0644, 'l' in ff, ctx[f].data)
-
- if subrepos:
- for subpath in ctx.substate:
- sub = ctx.sub(subpath)
- sub.archive(archiver, prefix)
-
- archiver.done()