nameau / project-versioner
一个基于Composer、文件mtime等维护项目/子项目版本的工具。
1.0.4
2017-06-15 15:48 UTC
Requires
- symfony/finder: ~3.3
Requires (Dev)
- phpunit/phpunit: ~5.4
This package is not auto-updated.
Last update: 2024-09-14 16:44:58 UTC
README
这是一个简单的工具,用于获取PHP项目的“版本”。
安装
通过composer安装
composer require naneau/project-versioner=~0
示例
这个库围绕一个“版本器”构建,该版本器接受一个或多个“读取器”。
使用Git
如果你的项目使用Git维护,你可以用它来查看版本。
提交
使用最后的提交作为版本
use Naneau\ProjectVersioner\Versioner; use Naneau\ProjectVersioner\Reader\Git\Commit\Exec as GitCommitReader; // Create a versioner $versioner = new Versioner(array(new GitCommitReader)); // Short commit hash like "gd8587c8" $version = $versioner->get('/foo/bar');
标签
使用最新的标签(可从该提交访问)
use Naneau\ProjectVersioner\Versioner; use Naneau\ProjectVersioner\Reader\Git\Tag\Exec as GitTagReader; // Create a versioner $versioner = new Versioner(array(new GitTagReader)); // Last tag $version = $versioner->get('/foo/bar');
描述版本
使用 git describe
的输出,它结合了最新的(可访问)标签和随后的提交
use Naneau\ProjectVersioner\Versioner; use Naneau\ProjectVersioner\Reader\Git\Tag\Exec as GitTagReader; // Create a versioner $versioner = new Versioner(array(new GitTagReader)); // Last tag + commit info, like 4.3.2-9-gd504031 $version = $versioner->get('/foo/bar');
使用文件
从单个文件中读取版本
假设你维护一个名为 VERSION
的文件,你(或你的CI堆栈)在其中填充版本。
use Naneau\ProjectVersioner\Versioner; use Naneau\ProjectVersioner\Reader\File as FileReader; // Create a versioner $versioner = new Versioner(array( // Reader for "VERSION" file new FileReader('VERSION') )); // Retrieve version from versioner $version = $versioner->get('/foo/bar');
使用MTime
在常见场景中,一组文件(独立)更新,你想使用最高/最近的时间(mtime
)作为版本。这个版本可以用来破坏缓存等。
use Naneau\ProjectVersioner\Versioner; use Naneau\ProjectVersioner\Reader\Finder\MTime as MTimeReader; // Create a versioner $versioner = new Versioner(array( new MTimeReader('*.txt') // Look at all *.txt files )); // Highest mtime, like 1410806782 $version = $versioner->get('/foo/bar');
使用内容
使用不同的读取器,可以使用找到的文件的 内容
use Naneau\ProjectVersioner\Versioner; use Naneau\ProjectVersioner\Reader\Finder\Contents as ContentsReader; $versioner = new Versioner(array( new ContentsReader('*.jpg') )); // Short hash of file contents, like gd504031 $version = $versioner->get('/foo/bar');
Composer
如果你的项目依赖于一组 Composer 依赖项,你可以使用Composer读取器根据已安装的包获取版本。
所有包
查看所有包的组合
use Naneau\ProjectVersioner\Versioner; use Naneau\ProjectVersioner\Reader\Composer as ComposerReader; $versioner = new Versioner(array(new ComposerReader)); // Short hash like "ae9b8a" $version = $versioner->get('/foo/bar');
使用特定包
或者,查找特定包
use Naneau\ProjectVersioner\Versioner; use Naneau\ProjectVersioner\Reader\ComposerPackage as ComposerPackageReader; $versioner = new Versioner(array( new ComposerPackageReader('symfony/filesystem') )); // Composer Version (SemVer) like "v2.5.4" $version = $versioner->get('/foo/bar');
组合读取器
对于某些项目,你可能想组合读取器,例如,如果某个读取器不提供输出,则作为回退机制,或者获取由多个读取器输出组成的版本。
组合Composer和Git
use Naneau\ProjectVersioner\Versioner; use Naneau\ProjectVersioner\Reader\ComposerPackage as ComposerPackageReader; use Naneau\ProjectVersioner\Reader\Git\Tag\Exec as GitTagReader; $versioner = new Versioner(array( new ComposerPackageReader('symfony/filesystem'), new GitTagReader )); // First version found $version = $versioner->get('/foo/bar'); // Composite of all readers, like "v0.3.4-gd504031" $combinedVersion = $versioner->getCombined('/foo/bar'); // You can specify the separator $combinedVersionUnderscore = $versioner->getCombined('/foo/bar', '_');
备注
- 获取版本不可避免地会使用(可能是昂贵的)I/O。你可能想要缓存结果。
- 基于
exec
的Git读取器目前仅适用于UN*X