CONTRIBUTING revision 1.3
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.3Schristosto tz@iana.org for use in the future. In your email, please give 91.3Schristosreliable sources that reviewers can check. 101.3Schristos 111.3Schristos----- 121.3Schristos 131.3SchristosDevelopers can contribute technical changes to the source code and 141.3Schristosdata as follows. 151.1Schristos 161.1SchristosTo email small changes, please run a POSIX shell command like 171.1Schristos'diff -u old/europe new/europe >myfix.patch', and attach 181.1Schristosmyfix.patch to the email. 191.1Schristos 201.3SchristosFor more-elaborate changes, please read the theory.html file and browse 211.3Schristosthe mailing list archives <https://mm.icann.org/pipermail/tz/> for 221.3Schristosexamples of patches that tend to work well. Additions to 231.1Schristosdata should contain commentary citing reliable sources as 241.3Schristosjustification. Citations should use https: URLs if available. 251.1Schristos 261.1SchristosPlease submit changes against either the latest release in 271.3Schristos<https://www.iana.org/time-zones> or the master branch of the development 281.2Schristosrepository. If you use Git the following workflow may be helpful: 291.1Schristos 301.2Schristos * Copy the development repository. 311.1Schristos 321.1Schristos git clone https://github.com/eggert/tz.git 331.1Schristos cd tz 341.1Schristos 351.1Schristos * Get current with the master branch. 361.1Schristos 371.1Schristos git checkout master 381.1Schristos git pull 391.1Schristos 401.1Schristos * Switch to a new branch for the changes. Choose a different 411.1Schristos branch name for each change set. 421.1Schristos 431.1Schristos git checkout -b mybranch 441.1Schristos 451.1Schristos * Edit source files. Include commentary that justifies the 461.1Schristos changes by citing reliable sources. 471.1Schristos 481.1Schristos * Debug the changes, e.g.: 491.1Schristos 501.1Schristos make check 511.1Schristos make install 521.1Schristos ./zdump -v America/Los_Angeles 531.1Schristos 541.1Schristos * For each separable change, commit it in the new branch, e.g.: 551.1Schristos 561.1Schristos git add northamerica 571.1Schristos git commit 581.1Schristos 591.1Schristos See recent 'git log' output for the commit-message style. 601.1Schristos 611.1Schristos * Create patch files 0001-*, 0002-*, ... 621.1Schristos 631.1Schristos git format-patch master 641.1Schristos 651.1Schristos * After reviewing the patch files, send the patches to tz@iana.org 661.1Schristos for others to review. 671.1Schristos 681.1Schristos git send-email master 691.1Schristos 701.1Schristos * Start anew by getting current with the master branch again 711.1Schristos (the second step above). 721.1Schristos 731.1SchristosPlease do not create issues or pull requests on GitHub, as the 741.1Schristosproper procedure for proposing and distributing patches is via 751.1Schristosemail as illustrated above. 76