CONTRIBUTING revision 1.2
11.1SchristosContributing to the tz code and data
21.1Schristos
31.1SchristosThe time zone database is by no means authoritative: governments
41.1Schristoschange timekeeping rules erratically and sometimes with little
51.1Schristoswarning, the data entries do not cover all of civil time before
61.1Schristos1970, and undoubtedly errors remain in the code and data.  Feel
71.1Schristosfree to fill gaps or fix mistakes, and please email improvements
81.1Schristosto tz@iana.org for use in the future.
91.1Schristos
101.1SchristosTo email small changes, please run a POSIX shell command like
111.1Schristos'diff -u old/europe new/europe >myfix.patch', and attach
121.1Schristosmyfix.patch to the email.
131.1Schristos
141.1SchristosFor more-elaborate changes, please read the Theory file and browse
151.1Schristosthe mailing list archives <http://mm.icann.org/pipermail/tz/> for
161.1Schristosexamples of patches that tend to work well.  Ideally, additions to
171.1Schristosdata should contain commentary citing reliable sources as
181.1Schristosjustification.
191.1Schristos
201.1SchristosPlease submit changes against either the latest release in
211.2Schristos<ftp://ftp.iana.org/tz/> or the master branch of the development
221.2Schristosrepository.  If you use Git the following workflow may be helpful:
231.1Schristos
241.2Schristos  * Copy the development repository.
251.1Schristos
261.1Schristos      git clone https://github.com/eggert/tz.git
271.1Schristos      cd tz
281.1Schristos
291.1Schristos  * Get current with the master branch.
301.1Schristos
311.1Schristos      git checkout master
321.1Schristos      git pull
331.1Schristos
341.1Schristos  * Switch to a new branch for the changes.  Choose a different
351.1Schristos    branch name for each change set.
361.1Schristos
371.1Schristos      git checkout -b mybranch
381.1Schristos
391.1Schristos  * Edit source files.  Include commentary that justifies the
401.1Schristos    changes by citing reliable sources.
411.1Schristos
421.1Schristos  * Debug the changes, e.g.:
431.1Schristos
441.1Schristos      make check
451.1Schristos      make install
461.1Schristos      ./zdump -v America/Los_Angeles
471.1Schristos
481.1Schristos  * For each separable change, commit it in the new branch, e.g.:
491.1Schristos
501.1Schristos      git add northamerica
511.1Schristos      git commit
521.1Schristos
531.1Schristos    See recent 'git log' output for the commit-message style.
541.1Schristos
551.1Schristos  * Create patch files 0001-*, 0002-*, ...
561.1Schristos
571.1Schristos      git format-patch master
581.1Schristos
591.1Schristos  * After reviewing the patch files, send the patches to tz@iana.org
601.1Schristos    for others to review.
611.1Schristos
621.1Schristos      git send-email master
631.1Schristos
641.1Schristos  * Start anew by getting current with the master branch again
651.1Schristos    (the second step above).
661.1Schristos
671.1SchristosPlease do not create issues or pull requests on GitHub, as the
681.1Schristosproper procedure for proposing and distributing patches is via
691.1Schristosemail as illustrated above.
70