Add basic source version tracking.

Indefero's version is now noted in src/IDF/version.php;
just before a release is made, the '-dev' is removed and
after the release is made, the version should be increased and
'-dev' should be added back to denote that the development
for the next version started.

The revision identifier is automatically set when an archive
is created and is based on the revision that the archive creator
gave to git-archive(1). If people follow development, we try to
get the current deployed version with git-log(1) and if that
fails as well, the revision is determined to be 'unknown'.
Version and revision are then rendered as HTML meta tags in
the header of each template. (All this is done by the new
{appversion} tag.)
This commit is contained in:
Thomas Keller 2011-03-20 00:42:56 +01:00
parent 48257ccfed
commit b7c0b40491
8 changed files with 72 additions and 0 deletions

1
.gitattributes vendored Normal file
View File

@ -0,0 +1 @@
src/IDF/version.php export-subst

View File

@ -87,6 +87,7 @@ class IDF_Middleware
'markdown' => 'IDF_Template_Markdown',
'showuser' => 'IDF_Template_ShowUser',
'ashowuser' => 'IDF_Template_AssignShowUser',
'appversion' => 'IDF_Template_AppVersion',
));
$params['modifiers'] = array_merge($params['modifiers'],
array(

View File

@ -0,0 +1,61 @@
<?php
/* -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
# ***** BEGIN LICENSE BLOCK *****
# This file is part of InDefero, an open source project management application.
# Copyright (C) 2011 Céondo Ltd and contributors.
#
# InDefero is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# InDefero is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
#
# ***** END LICENSE BLOCK ***** */
/**
* AppVersion tag.
*
* Renders two meta tags that include the application's version and revision
*/
class IDF_Template_AppVersion extends Pluf_Template_Tag
{
function start($file = 'IDF/version.php')
{
if (!Pluf::fileExists($file)) {
return;
}
$info = include_once($file);
if (!is_array($info)) {
return;
}
if (array_key_exists('version', $info)) {
echo '<meta name="indefero-version" content="'.$info['version'].'" />'."\n";
}
if (array_key_exists('revision', $info)) {
if (strpos($info['revision'], '$') !== false) {
$info['revision'] = 'unknown';
$cmd = Pluf::f('idf_exec_cmd_prefix', '').
Pluf::f('git_path', 'git').
' log -1 --format=%H';
if (IDF_Scm::exec('IDF_Template_AppVersion::start', $cmd, $output)) {
$info['revision'] = trim(@$output[0]);
}
}
echo '<meta name="indefero-revision" content="'.$info['revision'].'" />'."\n";
}
}
}

View File

@ -32,6 +32,7 @@
{block extraheader}{/block}
<title>{block pagetitle}{$page_title|strip_tags}{/block}{if $project} - {$project.shortdesc}{/if}</title>
<script type="text/javascript" src="{media '/idf/js/jquery-1.2.6.min.js'}"></script>
{appversion}
</head>
<body>
<div id="{block docid}doc3{/block}">

View File

@ -32,6 +32,7 @@
{block extraheader}{/block}
<title>{block pagetitle}{$page_title|strip_tags}{/block}</title>
<script type="text/javascript" src="{media '/idf/js/jquery-1.2.6.min.js'}"></script>
{appversion}
</head>
<body>
<div id="{block docid}doc3{/block}" class="{block docclass}yui-t3{/block}">

View File

@ -32,6 +32,7 @@
{block extraheader}{/block}
<title>{block pagetitle}{$page_title|strip_tags}{/block}{if $project} - {$project.shortdesc}{/if}</title>
<script type="text/javascript" src="{media '/idf/js/jquery-1.2.6.min.js'}"></script>
{appversion}
</head>
<body>
<div id="{block docid}doc3{/block}" class="{block docclass}yui-t3{/block}">

View File

@ -31,6 +31,7 @@
{block extraheader}{/block}
<title>{block pagetitle}{$page_title|strip_tags}{/block}</title>
<script type="text/javascript" src="{media '/idf/js/jquery-1.2.6.min.js'}"></script>
{appversion}
</head>
<body>
<div id="{block docid}doc3{/block}" class="{block docclass}yui-t3{/block}">

5
src/IDF/version.php Normal file
View File

@ -0,0 +1,5 @@
<?php
return array(
'version' => '1.1-dev',
'revision' => '$Format:%H$',
);