|
||
---|---|---|
.. | ||
build | ||
src | ||
tests | ||
.gitattributes | ||
.gitignore | ||
ChangeLog.md | ||
LICENSE | ||
README.md | ||
build.xml | ||
composer.json |
README.md
Version
Version is a library that helps with managing the version number of Git-hosted PHP projects.
Installation
Composer
Simply add a dependency on sebastian/version
to your project's composer.json
file if you use Composer to manage the dependencies of your project.
PEAR Installer
The following two commands (which you may have to run as root
) are all that is required to install Version using the PEAR Installer:
pear config-set auto_discover 1
pear install pear.phpunit.de/Version
Usage
The constructor of the SebastianBergmann\Version
class expects two parameters:
$release
is the version number of the latest release (X.Y.Z
, for instance) or the name of the release series (X.Y
) when no release has been made from that branch / for that release series yet.$path
is the path to the directory (or a subdirectory thereof) where the sourcecode of the project can be found. Simply passing__DIR__
here usually suffices.
Apart from the constructor, the SebastianBergmann\Version
class has a single public method: getVersion()
.
Here is a contrived example that shows the basic usage:
<?php
$version = new SebastianBergmann\Version(
'3.7.10', '/usr/local/src/phpunit'
);
var_dump($version->getVersion());
?>
string(18) "3.7.10-17-g00f3408"
When a new release is prepared, the string that is passed to the constructor as the first argument needs to be updated.
How SebastianBergmann\Version::getVersion() works
- If
$path
is not (part of) a Git repository and$release
is inX.Y.Z
format then$release
is returned as-is. - If
$path
is not (part of) a Git repository and$release
is inX.Y
format then$release
is returned suffixed with-dev
. - If
$path
is (part of) a Git repository and$release
is inX.Y.Z
format then the output ofgit describe --tags
is returned as-is. - If
$path
is (part of) a Git repository and$release
is inX.Y
format then a string is returned that begins withX.Y
and ends with information fromgit describe --tags
.