sebastianbergmann / version
Library that helps with managing the version number of Git-hosted PHP projects
AI Architecture Analysis
This repository is indexed by RepoMind. By analyzing sebastianbergmann/version in our AI interface, you can instantly generate complete architecture diagrams, visualize control flows, and perform automated security audits across the entire codebase.
Our Agentic Context Augmented Generation (Agentic CAG) engine loads full source files into context, avoiding the fragmentation of traditional RAG systems. Ask questions about the architecture, dependencies, or specific features to see it in action.
Repository Summary (README)
Previewsebastian/version
sebastian/version is a library that helps with managing the version number of Git-hosted PHP projects.
Installation
You can add this library as a local, per-project dependency to your project using Composer:
composer require sebastian/version
If you only need this library during development, for instance to run your project's test suite, then you should add it as a development-time dependency:
composer require --dev sebastian/version
Usage
The constructor of the SebastianBergmann\Version class expects two parameters:
$releaseis 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.$pathis 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: asString().
Here is a contrived example that shows the basic usage:
<?php declare(strict_types=1);
use SebastianBergmann\Version;
$version = new Version('1.0.0', __DIR__);
var_dump($version->asString());
string(18) "1.0.0-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::asString() works
- If
$pathis not (part of) a Git repository and$releaseis inX.Y.Zformat then$releaseis returned as-is. - If
$pathis not (part of) a Git repository and$releaseis inX.Yformat then$releaseis returned suffixed with-dev. - If
$pathis (part of) a Git repository and$releaseis inX.Y.Zformat then the output ofgit describe --tagsis returned as-is. - If
$pathis (part of) a Git repository and$releaseis inX.Yformat then a string is returned that begins withX.Yand ends with information fromgit describe --tags.