|
@@ -60,7 +60,7 @@ class VersionGuesser
|
|
|
* @param array $packageConfig
|
|
|
* @param string $path Path to guess into
|
|
|
*
|
|
|
- * @return null|array versionData, 'version', 'pretty_version' and 'commit' keys
|
|
|
+ * @return null|array versionData, 'version', 'pretty_version' and 'commit' keys, if the version is a feature branch, 'feature_version' and 'feature_pretty_version' keys may also be returned
|
|
|
*/
|
|
|
public function guessVersion(array $packageConfig, $path)
|
|
|
{
|
|
@@ -89,10 +89,18 @@ class VersionGuesser
|
|
|
|
|
|
private function postprocess(array $versionData)
|
|
|
{
|
|
|
+ if (!empty($versionData['feature_version']) && $versionData['feature_version'] === $versionData['version'] && $versionData['feature_pretty_version'] === $versionData['feature_pretty_version']) {
|
|
|
+ unset($versionData['feature_version'], $versionData['feature_pretty_version']);
|
|
|
+ }
|
|
|
+
|
|
|
if ('-dev' === substr($versionData['version'], -4) && preg_match('{\.9{7}}', $versionData['version'])) {
|
|
|
$versionData['pretty_version'] = preg_replace('{(\.9{7})+}', '.x', $versionData['version']);
|
|
|
}
|
|
|
|
|
|
+ if (!empty($versionData['feature_version']) && '-dev' === substr($versionData['feature_version'], -4) && preg_match('{\.9{7}}', $versionData['feature_version'])) {
|
|
|
+ $versionData['feature_pretty_version'] = preg_replace('{(\.9{7})+}', '.x', $versionData['feature_version']);
|
|
|
+ }
|
|
|
+
|
|
|
return $versionData;
|
|
|
}
|
|
|
|
|
@@ -102,6 +110,8 @@ class VersionGuesser
|
|
|
$commit = null;
|
|
|
$version = null;
|
|
|
$prettyVersion = null;
|
|
|
+ $featureVersion = null;
|
|
|
+ $featurePrettyVersion = null;
|
|
|
$isDetached = false;
|
|
|
|
|
|
// try to fetch current version from git branch
|
|
@@ -136,6 +146,8 @@ class VersionGuesser
|
|
|
}
|
|
|
|
|
|
if ($isFeatureBranch) {
|
|
|
+ $featureVersion = $version;
|
|
|
+ $featurePrettyVersion = $prettyVersion;
|
|
|
// try to find the best (nearest) version branch to assume this feature's version
|
|
|
$result = $this->guessFeatureVersion($packageConfig, $version, $branches, 'git rev-list %candidate%..%branch%', $path);
|
|
|
$version = $result['version'];
|
|
@@ -148,6 +160,8 @@ class VersionGuesser
|
|
|
if ($result) {
|
|
|
$version = $result['version'];
|
|
|
$prettyVersion = $result['pretty_version'];
|
|
|
+ $featureVersion = null;
|
|
|
+ $featurePrettyVersion = null;
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -158,6 +172,10 @@ class VersionGuesser
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ if ($featureVersion) {
|
|
|
+ return array('version' => $version, 'commit' => $commit, 'pretty_version' => $prettyVersion, 'feature_version' => $featureVersion, 'feature_pretty_version' => $featurePrettyVersion);
|
|
|
+ }
|
|
|
+
|
|
|
return array('version' => $version, 'commit' => $commit, 'pretty_version' => $prettyVersion);
|
|
|
}
|
|
|
|
|
@@ -200,6 +218,8 @@ class VersionGuesser
|
|
|
// try to find the best (nearest) version branch to assume this feature's version
|
|
|
$result = $this->guessFeatureVersion($packageConfig, $version, $branches, 'hg log -r "not ancestors(\'%candidate%\') and ancestors(\'%branch%\')" --template "{node}\\n"', $path);
|
|
|
$result['commit'] = '';
|
|
|
+ $result['feature_version'] = $version;
|
|
|
+ $result['feature_pretty_version'] = $version;
|
|
|
|
|
|
return $result;
|
|
|
}
|