Mercurial > hg
changeset 12319:381f131220ad stable
archive: set date to 1980 for very old zip files
The zip file format stores the date using "MS-DOS format" which
apparently means that they use 1980 as their epoch. Python's zipfile
module emits deprecation warnings of this form
/usr/lib/python2.6/zipfile.py:1108: DeprecationWarning: struct
integer overflow masking is deprecated
self.fp.write(zinfo.FileHeader())
/usr/lib/python2.6/zipfile.py:1108: DeprecationWarning: 'H' format
requires 0 <= number <= 65535
self.fp.write(zinfo.FileHeader())
/home/mg/src/mercurial-crew/mercurial/archival.py:169:
DeprecationWarning: struct integer overflow masking is deprecated
self.z.close()
/home/mg/src/mercurial-crew/mercurial/archival.py:169:
DeprecationWarning: 'H' format requires 0 <= number <= 65535
self.z.close()
when it is given such old timestamps. This fixes this by silently
clamping the date to 1980.
author | Martin Geisler <mg@aragost.com> |
---|---|
date | Mon, 20 Sep 2010 15:33:39 +0200 |
parents | ed639917c825 |
children | 40c40c6f20b8 |
files | mercurial/archival.py tests/test-archive tests/test-archive.out |
diffstat | 3 files changed, 22 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/archival.py Fri Sep 17 12:44:35 2010 -0500 +++ b/mercurial/archival.py Mon Sep 20 15:33:39 2010 +0200 @@ -139,6 +139,13 @@ 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):
--- a/tests/test-archive Fri Sep 17 12:44:35 2010 -0500 +++ b/tests/test-archive Mon Sep 20 15:33:39 2010 +0200 @@ -140,4 +140,11 @@ cd ../empty hg archive ../test-empty +echo '% old file -- date clamped to 1980' +touch -d 1975-01-01 old +hg add old +hg commit -m old +hg archive ../old.zip +unzip -l ../old.zip + exit 0
--- a/tests/test-archive.out Fri Sep 17 12:44:35 2010 -0500 +++ b/tests/test-archive.out Mon Sep 20 15:33:39 2010 +0200 @@ -80,3 +80,11 @@ % server errors % empty repo abort: no working directory: please specify a revision +% old file -- date clamped to 1980 +Archive: ../old.zip + Length Date Time Name +--------- ---------- ----- ---- + 147 1980-01-01 00:00 old/.hg_archival.txt + 0 1980-01-01 00:00 old/old +--------- ------- + 147 2 files