korthout/backport-action cherry-picks a merged PR's commits one at a time and reads any non-zero exit as a conflict: on exit 1 it commits the working tree as BACKPORT-CONFLICT and opens a draft PR for manual fixup. An empty cherry-pick also exits 1, but leaves nothing to commit, so the action's own `git commit` exits 1 in turn, it aborts the whole cherry-pick and throws. The commits it had already applied are discarded, no branch is pushed and no PR is opened -- the original PR gets "Backport failed ... unable to cherry-pick the commit(s)" and the fix never reaches the release line. So a single `git commit --allow-empty`, the usual way to re-trigger CI, was enough to lose an entire backport, reported as a merge conflict that does not exist. A commit whose change the target branch already carries did the same thing. hack/backport-git-shim.sh is installed as `git` ahead of the real one on PATH for the backport job's own duration. It adds `--allow-empty --empty=drop` to `git cherry-pick` and passes everything else through, including the sequencer verbs, which `--empty` refuses to be combined with. Measured on git 2.55, cherry-picking one commit onto a branch: flags originally empty already upstream conflicting (none) exit 1, lost exit 1, lost exit 1 --allow-empty carried over exit 1, lost exit 1 --empty=drop exit 1, lost dropped exit 1 --allow-empty --empty=drop carried over dropped exit 1 The last column is what keeps it safe: a real conflict still exits 1 with unmerged paths, so the draft-PR path is untouched and only the two cases that used to be misreported as conflicts change. PATH is the only injection point available. Neither the pinned action nor upstream v4 accepts cherry-pick flags, and git has no config knob for either behaviour. The install step drives the wrapper against a throwaway repository before the action depends on it, because both ways this wiring can break -- a git without `--empty`, a wrapper that cannot resolve the real one -- otherwise surface as a failed backport on somebody's merged PR, which is the failure being removed. hack/backport-git-shim.bats covers the behaviour, including the unwrapped case, so the day upstream fixes this the suite says so instead of passing for a reason that no longer holds. Assisted-By: LLM Signed-off-by: Myasnikov Daniil <myasnikovdaniil2001@gmail.com>
Cozystack
Cozystack is a free platform and framework for building clouds.
Cozystack is a CNCF Sandbox Level Project that was originally built and sponsored by Ænix.
With Cozystack, you can transform a bunch of servers into an intelligent system with a simple REST API for spawning Kubernetes clusters, Database-as-a-Service, virtual machines, load balancers, HTTP caching services, and other services with ease.
Use Cozystack to build your own cloud or provide a cost-effective development environment.
Use-Cases
-
Using Cozystack to build a public cloud
You can use Cozystack as a backend for a public cloud -
Using Cozystack to build a private cloud
You can use Cozystack as a platform to build a private cloud powered by Infrastructure-as-Code approach -
Using Cozystack as a Kubernetes distribution
You can use Cozystack as a Kubernetes distribution for Bare Metal
Documentation
The documentation is located on the cozystack.io website.
Read the Getting Started section for a quick start.
If you encounter any difficulties, start with the troubleshooting guide and work your way through the process that we've outlined.
Versioning
Versioning adheres to the Semantic Versioning principles.
A full list of the available releases is available in the GitHub repository's Release section.
Contributions
Contributions are highly appreciated and very welcomed!
In case of bugs, please check if the issue has already been opened by checking the GitHub Issues section. If it isn't, you can open a new one. A detailed report will help us replicate it, assess it, and work on a fix.
You can express your intention to on the fix on your own. Commits are used to generate the changelog, and their author will be referenced in it.
If you have a concrete feature request, open an issue. For a cross-cutting or architectural change, open a design proposal in the community repo. For questions or early ideas, use GitHub Discussions. See CONTRIBUTING.md for the full routing.
Community
You are welcome to join our Telegram group and come to our weekly community meetings. Add them to your Google Calendar or iCal for convenience.
License
Cozystack is licensed under Apache 2.0.
The code is provided as-is with no warranties.
Commercial Support
A list of companies providing commercial support for this project can be found on official site.
