eclipse-ecal/Cherry Pick To
Cherry-pick the commits of a push onto every branch named by the merged pull request's cherry-pick labels, and open one pull request per target branch.
View on GitHubTrust Signals
- Scorecard Score
- not yet scored
- Maintenance Recency
- Activelast commit Jul 9, 2026
- License
- MIT
Pinned Snippet
uses: eclipse-ecal/cherry-pick-to@cd9bc0b1df79fe36092a59b7b776fc8782fa6642 # no releases — HEAD as of 2026-07-11tags can be moved; commit SHAs can't. why a SHA?
Inputs
| name | description | required | default |
|---|---|---|---|
| token | Token used for checkout, pushing, and the GitHub CLI calls (finding the source PR, reading its labels, creating labels and the cherry-pick PRs). Defaults to the workflow's GITHUB_TOKEN, which works out of the box (given a permissions block with contents/pull-requests/issues write) and is great for trying the action out — but pull requests created with it cannot trigger other workflows, so CI will not run on the cherry-pick PRs. Pass a fine-grained PAT for production use. | no | ${{ github.token }} |
| label-prefix | Labels of the form "<label-prefix><branch>" on the source pull request select the branches to cherry-pick to. | no | cherry-pick-to- |
| allowed-target-branches | Optional space-separated list of glob patterns (e.g. "support/* release/*") restricting which branches may be targeted via labels. Empty (the default) allows any branch. Use this to bound what people with labeling permissions can trigger. | no | "" |
| success-label | Label attached to a created PR when the cherry-pick succeeded. | no | Auto cherry-pick success ✅ |
| failure-label | Label attached to a created PR when the cherry-pick failed. | no | Auto cherry-pick failure ⚠️ |
| use-draft-pr | Create the PR as a draft when the cherry-pick failed. Off by default because some repositories (e.g. private repos on free plans) do not support draft pull requests, which would make the PR creation fail. | no | false |
| branch-prefix | Prefix for the created branches. Each branch is named "<branch-prefix>/<short-sha>/<target-branch>". | no | cherry-pick |
| before-commit | Start (exclusive) of the commit range to cherry-pick as a full 40-char SHA. Defaults to github.event.before of the push event. | no | "" |
| after-commit | End (inclusive) of the commit range to cherry-pick as a full 40-char SHA. Defaults to github.event.after of the push event. | no | "" |
| git-user-name | Git user.name for the cherry-picked commits. Defaults to the pusher of the triggering push event. | no | "" |
| git-user-email | Git user.email for the cherry-picked commits. Defaults to the pusher of the triggering push event. | no | "" |
| checkout | Whether the action checks out the repository itself (with full history and the given token). Set to "false" to manage the checkout in the calling workflow; note that an expired token then fails your checkout step before this action can report a meaningful error — use the check-token sub-action of this repository before your checkout step in that case. | no | true |
| token-expiry-warning-days | Emit a workflow warning when the token expires within this many days. | no | 14 |
| token-expiry-warning-in-pr-body | Also append the token expiry warning to the body of every pull request this action creates while the token expires within token-expiry-warning-days days. Disabled by default. Has no effect with the default GITHUB_TOKEN, which is ephemeral by design and therefore never expiry-checked. | no | false |
| error-hint | Extra text appended to token error and warning messages, e.g. a link to your token renewal runbook or helpdesk ticket. | no | "" |
Outputs
| name | description |
|---|---|
| performed | "true" if at least one cherry-pick pull request was created. |
| pr-urls | Newline-separated URLs of the created cherry-pick pull requests. Empty if none. |
| results | JSON array with one entry per discovered target branch: [{"target": "...", "outcome": "success|conflict|skipped-...|error", "pr-url": "..."}]. Empty array if no cherry-pick label matched. |
| source-pr-number | Number of the merged pull request the pushed commits belong to. Empty if none was found. |
| token-expiration-date | Expiration date of the token. Empty if the token does not expire. |