Skip to content
Snippets Groups Projects
Commit 381f1312 authored by Martin Geisler's avatar Martin Geisler
Browse files

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.
parent ed639917
No related branches found
No related tags found
No related merge requests found
......@@ -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):
......
......@@ -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
......@@ -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
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment