Date: Fri, 14 Sep 2012 10:09:41 -0700 From: Paul Eggert <eggert@cs.ucla.edu> Message-ID: <505364D5.2050208@cs.ucla.edu> | A downside of both of these | approaches, though, is that the two version numbers would be | in different places, making it more likely that I'll forget | to update one or the other. No, you don't want to do it that way, you want a single file in the repository that is the version number, and then the Makefile target that creates the distribution files incorporates that version number in whatever places in the eventual distribution it is decided that it should live (Makefile, zone.tab, README.xxx or even in every file if desired) just before making the tar file. That is, the distributed tgz is made out of (slightly) modified copies of (some of) the files from the repository, not those files directly. The only place in the repository that the version number is ever seen is in that one single file, and that one file I would not include in either the data or source distritions (it isn't needed to build or use the code or data, only to make distributions, and only the owner of the repository needs to be able to do that). You don't want to include it in just one tgz file, as then whever that file happens to be an older version than the other, this new file looks to have incorrect contents, and you don't want to include it in both, as that leads to races on extraction (which version you get depends which of the tgz's is extracted last). The strategy of just not uploading the code tgz when it hasn't changed means that the eventual distributed pair of files (files with different versionids in their names) would end up with an incorrect version number (as it is now in the Makefile) for the data (worse than not having one at all). And of course, people who only download the data (relying upon their system's integrated code version) don't get a version number at all (except the one in the tgz filename). kre