develooper Front page | perl.perl5.porters | Postings from December 2008

Revised git related information in -v/-V output (and %Config)

Thread Next
December 30, 2008 17:11
Revised git related information in -v/-V output (and %Config)
Message ID:
Below is the commit message for the commit I just applied, I thought I
should forward it on so people know what to expect, and to get a
thread started to discuss the changes if necessary.



- Log -----------------------------------------------------------------
commit 46807d8e809cc127621bf85d9e9cea2f838eb477
Author: Yves Orton <>
Date:   Wed Dec 31 01:16:23 2008 +0100

   much better git related version numbering in our (*nix for now) build process

   The net result of this patch is to make available via and -v/-V the
   details about the git version info we have available for the build.
When built within
   a git repository git is queried directly. When built from a
snapshot or bundle
   it is assumed that the source is unchanged, and that the required details are
   avaialble in a file called .patch, whose format current is a four
field string
   in the following format: "$branchname $date.$time $sha1 $describe". The
   generator of these files currently resides on

   * git-describe is now used more directly with -v.
       When the prefix of git-describe matches the version number
       as determined by the defines in patchlevel.h then we use ONLY
       the git-describe output, otherwise we include
       the git describe in parenthesis after the version number. Either way
       the describe text is optionally followed by a star should there be
       uncommitted changes.
       eg: This is perl, v5.11.0 (GitLive-blead-136-g58ca560) built
for i686-linux
       or: This is perl, v5.11.0-1-g58ca560 built for i686-linux
       or: This is perl, v5.11.0 built for i686-linux

   * include the SHA1 in perl -V summary, and automatically include unpushed
       commits in the registered patches list

   * include various git/version/.patch details in %Config, as follows:

       git_commit_id             # sha1 of HEAD
       git_ancestor              # ancestor in $remote/$branch
(presumably canonical)
       git_describe              # git describe
       git_branch                # current branch
       git_uncommitted_changes   # "true" if there are any, empty otherwise
       git_unpushed_commits      # List of sha1's of unpushed commits
       git_commit_id_title       # Used to make the perl -V summary output

   Additionally one more value is added depending on build process used: when
   building from an rsynced snapshot (or any dist including a file called
   .patch) then the second field will be used to populate the
   "git_snapshot_date" field. Otherwise if built in a git directory
(as is hopefully
   recommended these day) then the field will be "git_commit_date"
which will be the
   commit date of HEAD.

   This patch introduces two new files (on top of .patchnum) that will
be generated by "lib/" and "unpushed.h", the former
is used to make
   git data available to without rebuilding
everything else, and the
   second is used to expose unpushed commits (if any) via the
registered patch facility
   of patchlevel.h

Summary of changes:
 .gitignore       |    1 +
 Makefile.SH      |    9 ++++-
 cflags.SH        |   10 +++---
 configpm         |   19 +++++++++-   |    1 +
 installperl      |    2 +-
 lib/.gitignore   |    1 + |  102 ++++++++++++++++++++++++++++++++++++++++--------------
 myconfig.SH      |    1 +
 patchlevel.h     |   14 +++++++-
 perl.c           |   38 ++++++++++++--------
 t/run/switches.t |    5 ++-
 12 files changed, 149 insertions(+), 54 deletions(-)

perl -Mre=debug -e "/just|another|perl|hacker/"

Thread Next Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at | Group listing | About