Mercurial > hg
changeset 2477:857591c586e0
use commit time as mtime for file archives.
now output from two run of "hg archive -t zip" is same.
author | Vadim Gelfer <vadim.gelfer@gmail.com> |
---|---|
date | Wed, 21 Jun 2006 15:31:23 -0700 |
parents | 0f7e4a39d9af |
children | 287b7da4aeaa |
files | mercurial/archival.py |
diffstat | 1 files changed, 12 insertions(+), 11 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/archival.py Wed Jun 21 15:15:06 2006 -0700 +++ b/mercurial/archival.py Wed Jun 21 15:31:23 2006 -0700 @@ -37,10 +37,10 @@ '''write archive to tar file or stream. can write uncompressed, or compress with gzip or bzip2.''' - def __init__(self, dest, prefix, kind=''): + def __init__(self, dest, prefix, mtime, kind=''): self.prefix = tidyprefix(dest, prefix, ['.tar', '.tar.bz2', '.tar.gz', '.tgz', 'tbz2']) - self.mtime = int(time.time()) + self.mtime = mtime if isinstance(dest, str): self.z = tarfile.open(dest, mode='w:'+kind) else: @@ -78,7 +78,7 @@ '''write archive to zip file or stream. can write uncompressed, or compressed with deflate.''' - def __init__(self, dest, prefix, compress=True): + def __init__(self, dest, prefix, mtime, compress=True): self.prefix = tidyprefix(dest, prefix, ('.zip',)) if not isinstance(dest, str): try: @@ -88,7 +88,7 @@ self.z = zipfile.ZipFile(dest, 'w', compress and zipfile.ZIP_DEFLATED or zipfile.ZIP_STORED) - self.date_time = time.gmtime(time.time())[:6] + self.date_time = time.gmtime(mtime)[:6] def addfile(self, name, mode, data): i = zipfile.ZipInfo(self.prefix + name, self.date_time) @@ -106,7 +106,7 @@ class fileit: '''write archive as files in directory.''' - def __init__(self, name, prefix): + def __init__(self, name, prefix, mtime): if prefix: raise util.Abort(_('cannot give prefix when archiving to files')) self.basedir = name @@ -130,14 +130,14 @@ archivers = { 'files': fileit, 'tar': tarit, - 'tbz2': lambda name, prefix: tarit(name, prefix, 'bz2'), - 'tgz': lambda name, prefix: tarit(name, prefix, 'gz'), - 'uzip': lambda name, prefix: zipit(name, prefix, False), + 'tbz2': lambda name, prefix, mtime: tarit(name, prefix, mtime, 'bz2'), + 'tgz': lambda name, prefix, mtime: tarit(name, prefix, mtime, 'gz'), + 'uzip': lambda name, prefix, mtime: zipit(name, prefix, mtime, False), 'zip': zipit, } def archive(repo, dest, node, kind, decode=True, matchfn=None, - prefix=None): + prefix=None, mtime=None): '''create archive of repo as it was at node. dest can be name of directory, name of archive file, or file @@ -160,8 +160,9 @@ data = fp.getvalue() archiver.addfile(name, mode, data) - archiver = archivers[kind](dest, prefix) - mn = repo.changelog.read(node)[0] + change = repo.changelog.read(node) + mn = change[0] + archiver = archivers[kind](dest, prefix, mtime or change[2][0]) mf = repo.manifest.read(mn).items() mff = repo.manifest.readflags(mn) mf.sort()