Fix getVersionDescription() to prioritize version tags over non-version tags (#673)
* Fix getVersionDescription() to prioritize version tags over non-version tags This fix modifies the getVersionDescription() method to ensure it only considers valid version tags when describing the current version. It retrieves all tags merged into the current branch, filters them based on a version-compatible regex, and uses the most recent valid version tag for description. If no valid tags are found, it falls back to the default description behavior. This resolves the issue of incorrect tags being used when multiple tags are present. * Update versioning.ts Rewrote getting the description for the last valid tag using `rev-list` and `rev-parse` * Fix formatting * Revert "dist" This reverts commit bd58cbedf7e9f6928ab3b7ca6dd858622c5c1f13. * Revert "dist" This reverts commit bd58cbedf7e9f6928ab3b7ca6dd858622c5c1f13.
This commit is contained in:
10
dist/index.js
generated
vendored
10
dist/index.js
generated
vendored
@@ -8010,8 +8010,18 @@ class Versioning {
|
|||||||
* identifies the current commit.
|
* identifies the current commit.
|
||||||
*/
|
*/
|
||||||
static async getVersionDescription() {
|
static async getVersionDescription() {
|
||||||
|
const versionTags = (await this.git(['tag', '--list', '--merged', 'HEAD', '--sort=-creatordate']))
|
||||||
|
.split('\n')
|
||||||
|
.filter(tag => new RegExp(this.grepCompatibleInputVersionRegex).test(tag));
|
||||||
|
if (versionTags.length === 0) {
|
||||||
|
core.warning('No valid version tags found. Using fallback description.');
|
||||||
return this.git(['describe', '--long', '--tags', '--always', 'HEAD']);
|
return this.git(['describe', '--long', '--tags', '--always', 'HEAD']);
|
||||||
}
|
}
|
||||||
|
const latestVersionTag = versionTags[0];
|
||||||
|
const commitsCount = (await this.git(['rev-list', `${latestVersionTag}..HEAD`, '--count'])).trim();
|
||||||
|
const commitHash = (await this.git(['rev-parse', '--short', 'HEAD'])).trim();
|
||||||
|
return `${latestVersionTag}-${commitsCount}-g${commitHash}`;
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* Returns whether there are uncommitted changes that are not ignored.
|
* Returns whether there are uncommitted changes that are not ignored.
|
||||||
*/
|
*/
|
||||||
|
|||||||
2
dist/index.js.map
generated
vendored
2
dist/index.js.map
generated
vendored
File diff suppressed because one or more lines are too long
@@ -207,9 +207,23 @@ export default class Versioning {
|
|||||||
* identifies the current commit.
|
* identifies the current commit.
|
||||||
*/
|
*/
|
||||||
static async getVersionDescription() {
|
static async getVersionDescription() {
|
||||||
|
const versionTags = (await this.git(['tag', '--list', '--merged', 'HEAD', '--sort=-creatordate']))
|
||||||
|
.split('\n')
|
||||||
|
.filter((tag) => new RegExp(this.grepCompatibleInputVersionRegex).test(tag));
|
||||||
|
|
||||||
|
if (versionTags.length === 0) {
|
||||||
|
core.warning('No valid version tags found. Using fallback description.');
|
||||||
|
|
||||||
return this.git(['describe', '--long', '--tags', '--always', 'HEAD']);
|
return this.git(['describe', '--long', '--tags', '--always', 'HEAD']);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const latestVersionTag = versionTags[0];
|
||||||
|
const commitsCount = (await this.git(['rev-list', `${latestVersionTag}..HEAD`, '--count'])).trim();
|
||||||
|
const commitHash = (await this.git(['rev-parse', '--short', 'HEAD'])).trim();
|
||||||
|
|
||||||
|
return `${latestVersionTag}-${commitsCount}-g${commitHash}`;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns whether there are uncommitted changes that are not ignored.
|
* Returns whether there are uncommitted changes that are not ignored.
|
||||||
*/
|
*/
|
||||||
|
|||||||
Reference in New Issue
Block a user