Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package pinact for openSUSE:Factory checked in at 2025-11-19 14:54:48 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/pinact (Old) and /work/SRC/openSUSE:Factory/.pinact.new.2061 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "pinact" Wed Nov 19 14:54:48 2025 rev:2 rq:1318469 version:3.4.4 Changes: -------- --- /work/SRC/openSUSE:Factory/pinact/pinact.changes 2025-11-18 15:34:47.834683786 +0100 +++ /work/SRC/openSUSE:Factory/.pinact.new.2061/pinact.changes 2025-11-19 14:57:52.694142316 +0100 @@ -1,0 +2,13 @@ +Mon Nov 17 12:24:22 UTC 2025 - Johannes Kastl <[email protected]> + +- Update to version 3.4.4: + * Bug Fixes + - Skip prerelease tags when current version is stable + @fredericlepied + * Dependencies + - chore(deps): update dependency aquaproj/aqua-registry to + v4.436.0 (#1215) + - chore(deps): update dependency suzuki-shunsuke/pinact to + v3.4.3 (#1214) + +------------------------------------------------------------------- Old: ---- pinact-3.4.3.obscpio New: ---- pinact-3.4.4.obscpio ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ pinact.spec ++++++ --- /var/tmp/diff_new_pack.cIvlyy/_old 2025-11-19 14:57:58.234376845 +0100 +++ /var/tmp/diff_new_pack.cIvlyy/_new 2025-11-19 14:57:58.234376845 +0100 @@ -17,7 +17,7 @@ Name: pinact -Version: 3.4.3 +Version: 3.4.4 Release: 0 Summary: CLI to edit GitHub Workflows and pin versions of Actions and Reusable Workflows License: MIT ++++++ _service ++++++ --- /var/tmp/diff_new_pack.cIvlyy/_old 2025-11-19 14:57:58.302379724 +0100 +++ /var/tmp/diff_new_pack.cIvlyy/_new 2025-11-19 14:57:58.314380231 +0100 @@ -3,7 +3,7 @@ <param name="url">https://github.com/suzuki-shunsuke/pinact.git</param> <param name="scm">git</param> <param name="exclude">.git</param> - <param name="revision">refs/tags/v3.4.3</param> + <param name="revision">refs/tags/v3.4.4</param> <param name="versionformat">@PARENT_TAG@</param> <param name="versionrewrite-pattern">v(.*)</param> <param name="changesgenerate">enable</param> ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.cIvlyy/_old 2025-11-19 14:57:58.354381924 +0100 +++ /var/tmp/diff_new_pack.cIvlyy/_new 2025-11-19 14:57:58.370382602 +0100 @@ -1,6 +1,6 @@ <servicedata> <service name="tar_scm"> <param name="url">https://github.com/suzuki-shunsuke/pinact.git</param> - <param name="changesrevision">6abf4616d28c0f2fd51e7ad2039c885f65c80d1c</param></service></servicedata> + <param name="changesrevision">50fd4d7458ba44c8b45ec7dec5275347e426ff0e</param></service></servicedata> (No newline at EOF) ++++++ pinact-3.4.3.obscpio -> pinact-3.4.4.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pinact-3.4.3/README.md new/pinact-3.4.4/README.md --- old/pinact-3.4.3/README.md 2025-11-15 04:43:18.000000000 +0100 +++ new/pinact-3.4.4/README.md 2025-11-17 12:01:26.000000000 +0100 @@ -1,6 +1,6 @@ # pinact -[Motivation](#motivation) | [Install](INSTALL.md) | [How to use](#how-to-use) | [GitHub Actions](https://github.com/suzuki-shunsuke/pinact-action) | [Configuration](#configuration) | [Contributing](CONTRIBUTING.md) | [LICENSE](LICENSE) +[NotebookLM](https://notebooklm.google.com/notebook/31982d97-104e-4778-9a8f-3b2c044a719d) | [Install](INSTALL.md) | [How to use](#how-to-use) | [Configuration](#configuration) pinact is a CLI to edit GitHub Workflow and Composite action files and pin versions of Actions and Reusable Workflows. pinact can also [update their versions](#update-actions), [verify version annotations](docs/codes/001.md), and [create reviews](#create-reviews). diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pinact-3.4.3/USAGE.md new/pinact-3.4.4/USAGE.md --- old/pinact-3.4.3/USAGE.md 2025-11-15 04:43:18.000000000 +0100 +++ new/pinact-3.4.4/USAGE.md 2025-11-17 12:01:26.000000000 +0100 @@ -11,7 +11,7 @@ pinact [global options] [command [command options]] VERSION: - 3.4.2 + 3.4.3 COMMANDS: init Create .pinact.yaml if it doesn't exist @@ -78,12 +78,12 @@ OPTIONS: - --verify, -v Verify if pairs of commit SHA and version are correct (default: false) - --check Exit with a non-zero status code if actions are not pinned. If this is true, files aren't updated (default: false) - --update, -u Update actions to latest versions (default: false) - --review Create reviews (default: false) - --fix Fix code. By default, this is true. If -check or -diff is true, this is false by default (default: false) - --diff Output diff. By default, this is false (default: false) + --verify, -v Verify if pairs of commit SHA and version are correct + --check Exit with a non-zero status code if actions are not pinned. If this is true, files aren't updated + --update, -u Update actions to latest versions + --review Create reviews + --fix Fix code. By default, this is true. If -check or -diff is true, this is false by default + --diff Output diff. By default, this is false --repo-owner string GitHub repository owner [$GITHUB_REPOSITORY_OWNER] --repo-name string GitHub repository name --sha string Commit SHA to be reviewed @@ -148,7 +148,7 @@ Set GitHub Access token to keyring. OPTIONS: - --stdin Read GitHub Access token from stdin (default: false) + --stdin Read GitHub Access token from stdin --help, -h show help ``` @@ -180,7 +180,7 @@ pinact version OPTIONS: - --json, -j Output version in JSON format (default: false) + --json, -j Output version in JSON format --help, -h show help ``` diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pinact-3.4.3/aqua/aqua-checksums.json new/pinact-3.4.4/aqua/aqua-checksums.json --- old/pinact-3.4.3/aqua/aqua-checksums.json 2025-11-15 04:43:18.000000000 +0100 +++ new/pinact-3.4.4/aqua/aqua-checksums.json 2025-11-17 12:01:26.000000000 +0100 @@ -306,38 +306,38 @@ "algorithm": "sha256" }, { - "id": "github_release/github.com/suzuki-shunsuke/pinact/v3.4.2/pinact_darwin_amd64.tar.gz", - "checksum": "5E2A94BC37BDAEF84F409B0B811F4E56EBFFFAE227624B86D58A172085AB73AA", + "id": "github_release/github.com/suzuki-shunsuke/pinact/v3.4.3/pinact_darwin_amd64.tar.gz", + "checksum": "505965C3E18D862F35985082283502B597EFBB654C280D4A496B00C13AE564F0", "algorithm": "sha256" }, { - "id": "github_release/github.com/suzuki-shunsuke/pinact/v3.4.2/pinact_darwin_arm64.tar.gz", - "checksum": "354811A84886C99422269B39DEEC399C8A42CE97FCF2E586C4F2F6B57E1E63EE", + "id": "github_release/github.com/suzuki-shunsuke/pinact/v3.4.3/pinact_darwin_arm64.tar.gz", + "checksum": "30E289D6A5EEE87C1178A3FFF4A17528AED8460607544C0B4F4AD6C3BF65055D", "algorithm": "sha256" }, { - "id": "github_release/github.com/suzuki-shunsuke/pinact/v3.4.2/pinact_linux_amd64.tar.gz", - "checksum": "CF2F26FF37F195FADB7E5368CD618733107F7EA92C808CA4256521FC4BD6EA4F", + "id": "github_release/github.com/suzuki-shunsuke/pinact/v3.4.3/pinact_linux_amd64.tar.gz", + "checksum": "0F4ED8164659A554C5B06ED01158C9B29DA32DCB8A9AD22AE71B15419B946398", "algorithm": "sha256" }, { - "id": "github_release/github.com/suzuki-shunsuke/pinact/v3.4.2/pinact_linux_arm64.tar.gz", - "checksum": "CF109ED679276D60414366719EA721744F75F7E27F6F7B8394C66F3412F86A64", + "id": "github_release/github.com/suzuki-shunsuke/pinact/v3.4.3/pinact_linux_arm64.tar.gz", + "checksum": "398CAB2EA8A74D5F7099E4680DBE320866C6CFC74DB1EFA0704122E38700907C", "algorithm": "sha256" }, { - "id": "github_release/github.com/suzuki-shunsuke/pinact/v3.4.2/pinact_windows_amd64.zip", - "checksum": "34715E03474BD94E9A873450771A0E78B369F17DBA580E7134C19728BFBA5846", + "id": "github_release/github.com/suzuki-shunsuke/pinact/v3.4.3/pinact_windows_amd64.zip", + "checksum": "21ACF44EC679ECB46015E6618837A11770FF6A0F0480BB4AD4819F4F5815AA6A", "algorithm": "sha256" }, { - "id": "github_release/github.com/suzuki-shunsuke/pinact/v3.4.2/pinact_windows_arm64.zip", - "checksum": "9DFC4477E4BC0DEB16B53A597F5759C04DB3BD37B2424CEE8644890A1F5D4B5B", + "id": "github_release/github.com/suzuki-shunsuke/pinact/v3.4.3/pinact_windows_arm64.zip", + "checksum": "F88449D9F319F9D0DD5B2A6A9C2E33047F15F80C74858FA0C4FC2F4FA332286A", "algorithm": "sha256" }, { - "id": "registries/github_content/github.com/aquaproj/aqua-registry/v4.435.0/registry.yaml", - "checksum": "A933288EE36456016440AB7B1258DB1FD1FE06EB52CC26FF4985B886D2729F91E318D9743A67B1A09A2FFE6CCD4F30B6CEEEBF6FB39DF6DC67CCEC7B37DE8D34", + "id": "registries/github_content/github.com/aquaproj/aqua-registry/v4.436.0/registry.yaml", + "checksum": "D10A9E3D8F3D28C8A75E536FD30C8B1C2E91C92637DF4BC97B61E375E133DDF271E277F9F7F628DBC8A1CA2C5F03CD4CAADB338EEB549B3C00C4BA9F5E444BEB", "algorithm": "sha512" } ] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pinact-3.4.3/aqua/aqua.yaml new/pinact-3.4.4/aqua/aqua.yaml --- old/pinact-3.4.3/aqua/aqua.yaml 2025-11-15 04:43:18.000000000 +0100 +++ new/pinact-3.4.4/aqua/aqua.yaml 2025-11-17 12:01:26.000000000 +0100 @@ -7,5 +7,5 @@ require_checksum: true registries: - type: standard - ref: v4.435.0 # renovate: depName=aquaproj/aqua-registry + ref: v4.436.0 # renovate: depName=aquaproj/aqua-registry import_dir: imports diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pinact-3.4.3/aqua/imports/pinact.yaml new/pinact-3.4.4/aqua/imports/pinact.yaml --- old/pinact-3.4.3/aqua/imports/pinact.yaml 2025-11-15 04:43:18.000000000 +0100 +++ new/pinact-3.4.4/aqua/imports/pinact.yaml 2025-11-17 12:01:26.000000000 +0100 @@ -1,2 +1,2 @@ packages: - - name: suzuki-shunsuke/[email protected] + - name: suzuki-shunsuke/[email protected] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pinact-3.4.3/pkg/controller/run/github.go new/pinact-3.4.4/pkg/controller/run/github.go --- old/pinact-3.4.3/pkg/controller/run/github.go 2025-11-15 04:43:18.000000000 +0100 +++ new/pinact-3.4.4/pkg/controller/run/github.go 2025-11-17 12:01:26.000000000 +0100 @@ -137,15 +137,24 @@ // - currentVersion: current version to check if stable (empty string to include all versions) // // Returns the latest version string or an error. -func (c *Controller) getLatestVersion(ctx context.Context, logE *logrus.Entry, owner string, repo string, currentVersion string) (string, error) { - lv, err := c.getLatestVersionFromReleases(ctx, logE, owner, repo, currentVersion) +func (c *Controller) getLatestVersion(ctx context.Context, logE *logrus.Entry, owner, repo, currentVersion string) (string, error) { + isStable := isStableVersion(currentVersion) + lv, err := c.getLatestVersionFromReleases(ctx, logE, owner, repo, isStable) if err != nil { logerr.WithError(logE, err).Debug("get the latest version from releases") } if lv != "" { return lv, nil } - return c.getLatestVersionFromTags(ctx, logE, owner, repo) + return c.getLatestVersionFromTags(ctx, logE, owner, repo, isStable) +} + +func isStableVersion(v string) bool { + if v == "" { + return false + } + cv, err := version.NewVersion(v) + return err == nil && cv.Prerelease() == "" } // compare evaluates a tag against the current latest version. @@ -187,7 +196,7 @@ // - currentVersion: current version to check if stable (empty string to include all versions) // // Returns the latest version string or an error. -func (c *Controller) getLatestVersionFromReleases(ctx context.Context, logE *logrus.Entry, owner string, repo string, currentVersion string) (string, error) { +func (c *Controller) getLatestVersionFromReleases(ctx context.Context, logE *logrus.Entry, owner, repo string, isStable bool) (string, error) { opts := &github.ListOptions{ PerPage: 30, //nolint:mnd } @@ -196,20 +205,11 @@ return "", fmt.Errorf("list releases: %w", err) } - // Check if current version is stable (issue #1095) - currentIsStable := false - if currentVersion != "" { - cv, err := version.NewVersion(currentVersion) - if err == nil && cv.Prerelease() == "" { - currentIsStable = true - } - } - var latestSemver *version.Version latestVersion := "" for _, release := range releases { // Skip prereleases if current version is stable (issue #1095) - if currentIsStable && release.GetPrerelease() { + if isStable && release.GetPrerelease() { continue } tag := release.GetTagName() @@ -231,15 +231,17 @@ // getLatestVersionFromTags finds the latest version from repository tags. // It retrieves tags from GitHub API and compares them to find the highest // version using semantic versioning when possible, falling back to string comparison. +// It filters out prerelease versions when currentVersion is stable. // // Parameters: // - ctx: context for cancellation and timeout control // - logE: logrus entry for structured logging // - owner: repository owner // - repo: repository name +// - currentVersion: current version to check if stable (empty string to include all versions) // // Returns the latest version string or an error. -func (c *Controller) getLatestVersionFromTags(ctx context.Context, logE *logrus.Entry, owner string, repo string) (string, error) { +func (c *Controller) getLatestVersionFromTags(ctx context.Context, logE *logrus.Entry, owner, repo string, isStable bool) (string, error) { opts := &github.ListOptions{ PerPage: 30, //nolint:mnd } @@ -247,10 +249,19 @@ if err != nil { return "", fmt.Errorf("list tags: %w", err) } + var latestSemver *version.Version latestVersion := "" for _, tag := range tags { t := tag.GetName() + + // Skip prereleases if current version is stable (issue #1095) + if isStable { + if tv, err := version.NewVersion(t); err == nil && tv.Prerelease() != "" { + continue + } + } + ls, lv, err := compare(latestSemver, latestVersion, t) latestSemver = ls latestVersion = lv @@ -278,7 +289,7 @@ // - err: error to report (mutually exclusive with suggestion) // // Returns the HTTP status code and any error. -func (c *Controller) review(ctx context.Context, filePath string, sha string, line int, suggestion string, err error) (int, error) { +func (c *Controller) review(ctx context.Context, filePath, sha string, line int, suggestion string, err error) (int, error) { cmt := &github.PullRequestComment{ Body: github.Ptr(""), Path: github.Ptr(filePath), diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pinact-3.4.3/pkg/controller/run/github_internal_test.go new/pinact-3.4.4/pkg/controller/run/github_internal_test.go --- old/pinact-3.4.3/pkg/controller/run/github_internal_test.go 2025-11-15 04:43:18.000000000 +0100 +++ new/pinact-3.4.4/pkg/controller/run/github_internal_test.go 2025-11-17 12:01:26.000000000 +0100 @@ -180,12 +180,12 @@ func TestController_getLatestVersionFromReleases(t *testing.T) { //nolint:funlen t.Parallel() tests := []struct { - name string - releases []*github.RepositoryRelease - listErr error - currentVersion string - wantVersion string - wantErr bool + name string + releases []*github.RepositoryRelease + listErr error + isStable bool + wantVersion string + wantErr bool }{ { name: "single semver release", @@ -290,9 +290,9 @@ {TagName: github.Ptr("v5.0.0"), Prerelease: github.Ptr(false)}, {TagName: github.Ptr("v4.3.0"), Prerelease: github.Ptr(false)}, }, - currentVersion: "v5.0.0", - wantVersion: "v5.0.0", - wantErr: false, + isStable: true, + wantVersion: "v5.0.0", + wantErr: false, }, { name: "prerelease version can update to newer prerelease (issue #1095)", @@ -300,9 +300,9 @@ {TagName: github.Ptr("v6-beta"), Prerelease: github.Ptr(true)}, {TagName: github.Ptr("v5.0.0"), Prerelease: github.Ptr(false)}, }, - currentVersion: "v6-alpha", - wantVersion: "v6-beta", - wantErr: false, + isStable: false, + wantVersion: "v6-beta", + wantErr: false, }, } @@ -322,7 +322,7 @@ ctx := t.Context() logE := logrus.NewEntry(logrus.New()) - gotVersion, err := c.getLatestVersionFromReleases(ctx, logE, "owner", "repo", tt.currentVersion) + gotVersion, err := c.getLatestVersionFromReleases(ctx, logE, "owner", "repo", tt.isStable) if (err != nil) != tt.wantErr { t.Errorf("getLatestVersionFromReleases() error = %v, wantErr %v", err, tt.wantErr) @@ -479,7 +479,7 @@ ctx := t.Context() logE := logrus.NewEntry(logrus.New()) - gotVersion, err := c.getLatestVersionFromTags(ctx, logE, "owner", "repo") + gotVersion, err := c.getLatestVersionFromTags(ctx, logE, "owner", "repo", false) if (err != nil) != tt.wantErr { t.Errorf("getLatestVersionFromTags() error = %v, wantErr %v", err, tt.wantErr) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pinact-3.4.3/pkg/controller/run/parse_line_internal_test.go new/pinact-3.4.4/pkg/controller/run/parse_line_internal_test.go --- old/pinact-3.4.3/pkg/controller/run/parse_line_internal_test.go 2025-11-15 04:43:18.000000000 +0100 +++ new/pinact-3.4.4/pkg/controller/run/parse_line_internal_test.go 2025-11-17 12:01:26.000000000 +0100 @@ -190,6 +190,12 @@ Response: &github.Response{}, }, }, + Releases: map[string]*ListReleasesResult{ + "actions/checkout/0": { + Releases: []*github.RepositoryRelease{}, // Empty releases forces fallback to tags + Response: &github.Response{}, + }, + }, Commits: map[string]*GetCommitSHA1Result{ "actions/checkout/v3": { SHA: "8e5e7e5ab8b370d6c329ec480221332ada57f0ab", ++++++ pinact.obsinfo ++++++ --- /var/tmp/diff_new_pack.cIvlyy/_old 2025-11-19 14:57:58.778399874 +0100 +++ /var/tmp/diff_new_pack.cIvlyy/_new 2025-11-19 14:57:58.810401229 +0100 @@ -1,5 +1,5 @@ name: pinact -version: 3.4.3 -mtime: 1763178198 -commit: 6abf4616d28c0f2fd51e7ad2039c885f65c80d1c +version: 3.4.4 +mtime: 1763377286 +commit: 50fd4d7458ba44c8b45ec7dec5275347e426ff0e ++++++ vendor.tar.gz ++++++
