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:
parent
48257ccfed
commit
b7c0b40491
1
.gitattributes
vendored
Normal file
1
.gitattributes
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
src/IDF/version.php export-subst
|
@ -87,6 +87,7 @@ class IDF_Middleware
|
|||||||
'markdown' => 'IDF_Template_Markdown',
|
'markdown' => 'IDF_Template_Markdown',
|
||||||
'showuser' => 'IDF_Template_ShowUser',
|
'showuser' => 'IDF_Template_ShowUser',
|
||||||
'ashowuser' => 'IDF_Template_AssignShowUser',
|
'ashowuser' => 'IDF_Template_AssignShowUser',
|
||||||
|
'appversion' => 'IDF_Template_AppVersion',
|
||||||
));
|
));
|
||||||
$params['modifiers'] = array_merge($params['modifiers'],
|
$params['modifiers'] = array_merge($params['modifiers'],
|
||||||
array(
|
array(
|
||||||
|
61
src/IDF/Template/AppVersion.php
Normal file
61
src/IDF/Template/AppVersion.php
Normal 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";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -32,6 +32,7 @@
|
|||||||
{block extraheader}{/block}
|
{block extraheader}{/block}
|
||||||
<title>{block pagetitle}{$page_title|strip_tags}{/block}{if $project} - {$project.shortdesc}{/if}</title>
|
<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>
|
<script type="text/javascript" src="{media '/idf/js/jquery-1.2.6.min.js'}"></script>
|
||||||
|
{appversion}
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="{block docid}doc3{/block}">
|
<div id="{block docid}doc3{/block}">
|
||||||
|
@ -32,6 +32,7 @@
|
|||||||
{block extraheader}{/block}
|
{block extraheader}{/block}
|
||||||
<title>{block pagetitle}{$page_title|strip_tags}{/block}</title>
|
<title>{block pagetitle}{$page_title|strip_tags}{/block}</title>
|
||||||
<script type="text/javascript" src="{media '/idf/js/jquery-1.2.6.min.js'}"></script>
|
<script type="text/javascript" src="{media '/idf/js/jquery-1.2.6.min.js'}"></script>
|
||||||
|
{appversion}
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="{block docid}doc3{/block}" class="{block docclass}yui-t3{/block}">
|
<div id="{block docid}doc3{/block}" class="{block docclass}yui-t3{/block}">
|
||||||
|
@ -32,6 +32,7 @@
|
|||||||
{block extraheader}{/block}
|
{block extraheader}{/block}
|
||||||
<title>{block pagetitle}{$page_title|strip_tags}{/block}{if $project} - {$project.shortdesc}{/if}</title>
|
<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>
|
<script type="text/javascript" src="{media '/idf/js/jquery-1.2.6.min.js'}"></script>
|
||||||
|
{appversion}
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="{block docid}doc3{/block}" class="{block docclass}yui-t3{/block}">
|
<div id="{block docid}doc3{/block}" class="{block docclass}yui-t3{/block}">
|
||||||
|
@ -31,6 +31,7 @@
|
|||||||
{block extraheader}{/block}
|
{block extraheader}{/block}
|
||||||
<title>{block pagetitle}{$page_title|strip_tags}{/block}</title>
|
<title>{block pagetitle}{$page_title|strip_tags}{/block}</title>
|
||||||
<script type="text/javascript" src="{media '/idf/js/jquery-1.2.6.min.js'}"></script>
|
<script type="text/javascript" src="{media '/idf/js/jquery-1.2.6.min.js'}"></script>
|
||||||
|
{appversion}
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<div id="{block docid}doc3{/block}" class="{block docclass}yui-t3{/block}">
|
<div id="{block docid}doc3{/block}" class="{block docclass}yui-t3{/block}">
|
||||||
|
5
src/IDF/version.php
Normal file
5
src/IDF/version.php
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
<?php
|
||||||
|
return array(
|
||||||
|
'version' => '1.1-dev',
|
||||||
|
'revision' => '$Format:%H$',
|
||||||
|
);
|
Loading…
Reference in New Issue
Block a user