Skip to content

Scripts for importing tzdata/tzcode releases into a git repository. This is not an automated process as commit messages are generated from messages to mailing list.

Notifications You must be signed in to change notification settings

lyda/tz-history-scripts

Repository files navigation

Contents: what, why, how, decisions / issues

== What? ==

This is a collection of scripts and data which can be used to construct
a metadata preserving git or hg repository of all the zoneinfo releases
since 1986.

== Why? ==

On that note let me say a huge thank you to the combined half a century
of work that Paul and Arthur and everyone else has contributed here.
It is out of respect for the work everyone has done here that I've tried
to create a faithful reproduction of the work you have all given to us.

Last year I read
http://blog.jonudell.net/2009/10/23/a-literary-appreciation-of-the-olsonzoneinfotz-database/
and was hugely impressed by the quiet work we all take for granted.
So hearing about the current issues the maintainers are having I didn't
want the history to be lost.

If you feel the data here is incomplete and you have ideas on additional
information, please contact me so that I may make this archive more
complete.  Thanks.  The easiest way to do this is to issue a pull request
on github.  Alternatively, send me mail at kevin@ie.subric.net.

== How? ==

Instead of using these scripts you can instead get the git or hg
repositories generated by them here:

Git version: https://github.com/lyda/tz
Hg version: https://bitbucket.org/lyda/tz

Note that these are not used by the maintainer - don't send them
pull requests.  And as this set of scripts evolve those repositories
are deleted and recreated so it's a good idea not to pull/fetch from
them either.

For generating the repositories yourself:

* See the */FETCH_DATA files and gather the required data.
* Choose a VCS you want to use.  Currently git or hg are supported.
  Set $VCS to the one you want - i.e. VCS=git
* Go to the work-usenix/ directory and run: ./add.sh "$VCS"
  This will then generate $VCS.settz - a repository that contains all
  known usenet releases.
* Go to the work/ directory.  If you want to copy over the repository
  created in the first step, run: ./cpsettz "$VCS"
* Now run the migration script: ./add "$VCS"
* You will then have a $VCS.tz repository with all changes from 1986 to
  the present (assuming you downloaded the tarballs as described in the
  FETCH_DATA instructions).

== Decisions / Issues ==

These scripts make a number of decisions people could debate.  I have
listed them here so that others could review.

1)  I date each commit based on the date of the message announcing the
    release.  It's possible to extract an arguably more accurate date from
    the files within the repository but since the commit message is based
    on the release message, it was my opinion that date was more correct.

2)  The following files are referred to in the tzarchive (thank you IANA
    for hosting the archive and to GMANE for filling in the blanks).
    I'm pretty sure all of these existed.

      tzcode2002a.tar.gz  tzcode2006e.tar.gz
      tzcode2008e.tar.tz  tzcode2010b.tar.gz  tzcode93g.tar.gz
      tzcode94b.tar.gz    tzcode94c.tar.gz    tzcode94d.tar.gz
      tzcode94e.tar.gz    tzcode94f.tar.gz    tzcode94g.tar.gz
      tzcode94h.tar.gz    tzcode95a.tar.gz    tzcode95b.tar.gz
      tzcode95c.tar.gz    tzcode95f.tar.gz    tzcode96e.tar.gz
      tzcode96f.tar.gz    tzcode96k.tar.gz    tzdata1996m.tar.gz
      tzdata1998f.tar.gz  tzdata1998g.tar.gz  tzdata2002a.tar.gz
      tzdata2006e.tar.gz  tzdata93g.tar.gz    tzdata94a.tar.gz
      tzdata94b.tar.gz    tzdata94d.tar.gz    tzdata94e.tar.gz
      tzdata94f.tar.gz    tzdata94h.tar.gz    tzdata95a.tar.gz
      tzdata95b.tar.gz    tzdata95j.tar.gz    tzdata96f.tar.gz
      tzdata96g.tar.gz

    Notes from reviewing the missing files:

      tzcode94c.tar.gz - can be recreated with
                         <9402101356.AA19044@elsie.nci.nih.gov>
      tzcode94e.tar.gz - might be recreatable w/
                         <9403310434.AA22475@elsie.nci.nih.gov>
      tzcode95a.tar.gz may be bogus
      Possibly missing: betatzcode.tar.gz betatzdata.tar.gz
                        classictzcode.tar.gz classictzdata.tar.gz
                        (they go just before tzcode95a.tar.gz)
      tzcode96k.tar.gz - not bogus but might have been pulled?
                         <9609082035.AA12565@elsie.nci.nih.gov>
                         <9609082115.AA12896@elsie.nci.nih.gov>
      tzdata94a.tar.gz - recreatable with
                         <9402031404.AA26306@elsie.nci.nih.gov>

3)  The tzcode and tzdata files are in the same directory - that's
    how they initially started in 1986.  One could argue that starting
    with releases in 1993 that the code and data should be broken out
    into different directories.

4)  Each commit message has the Message-Id header of the message it
    came from.  That can be used to find the messages and related threads
    in mailing list archives in the future.

5)  For the Usenet files:

      * It's possible there was a release prior to:
        comp.sources.unix/volume4/settz
      * It's possible (likely?) there were releases between:
        comp.sources.unix/volume14/localtime3
        comp.sources.unix/volume18/localtime3

6)  Credits.  All the commits (except the last (currently) by kre)
    are credited to ado.  However in his commit messages he will
    frequently credit others - eggert primarily.  It's possible this
    info is in SCCS but I doubt it.

7)  Since mercurial does not support empty commits, the hg.tz and hg.settz
    created repos have a .hg-migrate.txt file which gives some information
    about each revision in the repository.  For some releases it is the
    only file that changes (obviously the commit text changes as well).

8)  The Usenix archive is not complete.  There's an obvious gap from the
    settz era to the tarballs on elsie.  There might be earlier tarballs;
    there might have been later releases on Usenet.  I have not found any.
    There were discussions about this on mod.sources, comp.sources.unix
    and comp.std.unix.  In addition there were dome related releases on
    comp.sources.unix that I have not included (and might yet):

      volume25/posix-date
      volume26/strftime
      volume26/strftime-2.0
      volume26/strftime-3.0
      volume27/strftime-6.0
      volume28/strftime-6.1
      volume29/strftime-7.0

    In addition there was the volume6/datediffs patch - but it was just
    a diff against the date command on four different unix versions.

About

Scripts for importing tzdata/tzcode releases into a git repository. This is not an automated process as commit messages are generated from messages to mailing list.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages