Thread: Adding optionally commit number in PG_VERSION_STR

Adding optionally commit number in PG_VERSION_STR

From
Michael Paquier
Date:
Hi all,

It happens that I work occasionally on multiple builds based on
different stable branches at the same time to check fixes that need to
be backpatched, and I tend to easily lose track on which version the
build I created is based on (Duh!). There is of course the version
number up to the 3rd digit available (for example 9.2.4, 9.3beta2,
etc.), but as a developer I think that it would be helpful to include
the commit ID in PG_VERSION_STR to get a better reference on exactly
what the development build is based on. This could be controlled by an
additional flag in ./configure.in called something like
--enable-version-commit, of course disabled by default. If enabled,
PG_VERSION_STR would be generated with the new information. configure
would also return an error when this flag is enabled if git is either
not found, or if the repository where configure is not a native git
repository.

Thoughts?
--
Michael



Re: Adding optionally commit number in PG_VERSION_STR

From
Tom Lane
Date:
Michael Paquier <michael.paquier@gmail.com> writes:
> It happens that I work occasionally on multiple builds based on
> different stable branches at the same time to check fixes that need to
> be backpatched, and I tend to easily lose track on which version the
> build I created is based on (Duh!). There is of course the version
> number up to the 3rd digit available (for example 9.2.4, 9.3beta2,
> etc.), but as a developer I think that it would be helpful to include
> the commit ID in PG_VERSION_STR to get a better reference on exactly
> what the development build is based on. This could be controlled by an
> additional flag in ./configure.in called something like
> --enable-version-commit, of course disabled by default. If enabled,
> PG_VERSION_STR would be generated with the new information. configure
> would also return an error when this flag is enabled if git is either
> not found, or if the repository where configure is not a native git
> repository.

Personally, I'd find that pretty useless, because the build I'm running
has typically got uncommitted changes in it.  Also, there isn't any good
way to set PG_VERSION_STR except at configure time, which means the
common practice of doing (at most) "make clean" before rebuilding would
not result in an updated string even if you had committed.
        regards, tom lane



Re: Adding optionally commit number in PG_VERSION_STR

From
"Erik Rijkers"
Date:
On Wed, July 17, 2013 05:27, Tom Lane wrote:
> Michael Paquier <michael.paquier@gmail.com> writes:
>> It happens that I work occasionally on multiple builds based on


FWIW, I've been doing this for while:


where $project is mostly the patchname, $commit_hash is extracted like this:

commit_hash=$( cd /home/aardvark/pg_stuff/git/master; git log | head -n 1 | cut --delimiter=" " -f 2 );

version_string=${project}-${db_timestamp}-${commit_hash};

perl -i.original -ne "
s,(PACKAGE_.*[[:digit:]]+\.[[:digit:]]+(?:\.[[:digit:]]+)?(?:devel)?(?:(?:alpha|beta|rc)[[:digit:]]+)?),\\1-${version_string},;
   print;" configure
 


Which will then give:

PostgreSQL 9.4devel-HEAD-20130717_0828-ffcf654547ef38555203e6d716f47b7065a0a87d on x86_64-unknown-linux-gnu, compiled
by
gcc (GCC) 4.8.1, 64-bit


Btw, in an even more ugly hack I also stick some of that same config data in information_schema.sql_packages, with a
feature_id >= 100:

select * from information_schema.sql_packages where cast(substring(feature_id from E'^PKG([[:digit:]]+)') as integer)
>=100feature_id |    feature_name    | is_supported | is_verified_by |                               comments
 

------------+--------------------+--------------+----------------+----------------------------------------------------------------------PKG100
   | project name       | YES          | ej             | HEADPKG101     | patched            | NO           | ej
     | NOPKG103     | build time         | YES          | ej             | 2013-07-17 08:32:03.400521+02PKG104     |
server_version    | YES          | ej             |
 
9.4devel-HEAD-20130717_0828-ffcf654547ef38555203e6d716f47b7065a0a87dPKG105     | server_version_num | YES          | ej
           | 90400PKG106     | port               | YES          | ej             | 6544PKG110     | commit hash
|YES          | ej             | ffcf654547ef38555203e6d716f47b7065a0a87dPKG111     | catversion         | YES
|ej             | 201307161PKG112     | control version    | YES          | ej             | 937
 
(9 rows)



Needless to say, YMMV ...


Thanks,

Erik Rijkers






Re: Adding optionally commit number in PG_VERSION_STR

From
Dave Page
Date:
On Wed, Jul 17, 2013 at 2:55 AM, Michael Paquier
<michael.paquier@gmail.com> wrote:
> Hi all,
>
> It happens that I work occasionally on multiple builds based on
> different stable branches at the same time to check fixes that need to
> be backpatched, and I tend to easily lose track on which version the
> build I created is based on (Duh!). There is of course the version
> number up to the 3rd digit available (for example 9.2.4, 9.3beta2,
> etc.), but as a developer I think that it would be helpful to include
> the commit ID in PG_VERSION_STR to get a better reference on exactly
> what the development build is based on. This could be controlled by an
> additional flag in ./configure.in called something like
> --enable-version-commit, of course disabled by default. If enabled,
> PG_VERSION_STR would be generated with the new information. configure
> would also return an error when this flag is enabled if git is either
> not found, or if the repository where configure is not a native git
> repository.

FYI, we include the output from "git describe --always" in the pgAdmin
version meta info, which is displayed on the About box along with the
regular version info. That has proven to be extremely useful in the
past, particularly during QA where people may be testing snapshot
builds.

--
Dave Page
Blog: http://pgsnake.blogspot.com
Twitter: @pgsnake

EnterpriseDB UK: http://www.enterprisedb.com
The Enterprise PostgreSQL Company



Re: Adding optionally commit number in PG_VERSION_STR

From
Michael Paquier
Date:
On Wed, Jul 17, 2013 at 5:20 PM, Dave Page <dpage@pgadmin.org> wrote:
> On Wed, Jul 17, 2013 at 2:55 AM, Michael Paquier
> <michael.paquier@gmail.com> wrote:
>> Hi all,
>>
>> It happens that I work occasionally on multiple builds based on
>> different stable branches at the same time to check fixes that need to
>> be backpatched, and I tend to easily lose track on which version the
>> build I created is based on (Duh!). There is of course the version
>> number up to the 3rd digit available (for example 9.2.4, 9.3beta2,
>> etc.), but as a developer I think that it would be helpful to include
>> the commit ID in PG_VERSION_STR to get a better reference on exactly
>> what the development build is based on. This could be controlled by an
>> additional flag in ./configure.in called something like
>> --enable-version-commit, of course disabled by default. If enabled,
>> PG_VERSION_STR would be generated with the new information. configure
>> would also return an error when this flag is enabled if git is either
>> not found, or if the repository where configure is not a native git
>> repository.
>
> FYI, we include the output from "git describe --always" in the pgAdmin
> version meta info, which is displayed on the About box along with the
> regular version info. That has proven to be extremely useful in the
> past, particularly during QA where people may be testing snapshot
> builds.
Yes, that's also something tracked for the QA/QE tests at VMware.
Having such an option in core would be a good thing for many people
IMHO instead of using some manual scripting.
--
Michael