[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[groff] version and revision management
From: |
Bertrand Garrigues |
Subject: |
[groff] version and revision management |
Date: |
Sun, 14 Jan 2018 02:45:22 +0100 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/25.3 (gnu/linux) |
Hi,
I was starting to prepare the next release and would like to propose a
little change in the version system. Currently groff's version is set
in 'VERSION' and 'REVISION' files in the top source directory. When a
new release was planned, the VERSION and/or REVISION files were first
upgraded, then an initial tag was created (for example tag 1.22.3), and
after some testing and fixes the final tag was created with a 'real'
suffix (last tag was: '1.22.3.real').
In order to track more finely the version used when people report an
issue, I propose to use gnulib's script 'git-version-gen' to generate a
unique version. The other advantage is that installation bugs could be
more easily detected: groff install some data in
/usr/share/groff/<version>, so currently if a commit breaks the
installation of a file this can be unnoticed if the user did not
uninstall its previous version of groff.
'git-version-gen' relies on the command 'git describe' and works roughly
like this:
- From a git repository:
. if the current commit corresponds to a tag, then the version is
simply the tag name.
. Otherwise the version has the following format:
<tag>-<nb_commits>-<commit>
With:
-- tag: the most recent tag reachable from the current commit
-- nb_commits: number of commits between the most recent tag and
the current commit.
-- current commit sha1, abbreviated.
For example: 1.22.3.real.434-5aafd
If there are some local diff the script will also add a 'dirty'
suffix.
The version is stored in a file '.version'.
- From a tarball, the version is taken from a file '.tarball-version',
which is generated by the build system.
I've made the necessary changes on a branch 'unique-version'; to test
it:
git clone https://git.savannah.gnu.org/git/groff.git
cd groff
git checkout --track origin/unique-version
./bootstrap
mkdir build
cd build
../configure
make -j
and to generate the tarball:
make dist
Note: the full version is propagated in the various executables
generated by the build system (for example 'groff --verrsion' will give
something like "GNU troff (groff) version 1.22.3.real.434-5aafd").
However there is a register '\n[.Y]' that correspond to the revision of
groff; as I can't pass non alphanumeric characters to it (in the above
example the revision would be equal to '3.real.434-5aafd') this register
will be defined as the first alphanumeric digits of the revision.
If no one object to this change then I'll merge it on master.
Regards,
Bertrand Garrigues
- [groff] version and revision management,
Bertrand Garrigues <=