Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add Contributed backport command #22643

Merged
merged 16 commits into from
Jan 31, 2023
Merged
20 changes: 2 additions & 18 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -267,26 +267,10 @@ with the rest of the summary matching the original PR. Similarly for frontports

---

The below is a script that may be helpful in creating backports. YMMV.
A command to help create backports can be found in `contrib/backport` and can be installed using:
zeripath marked this conversation as resolved.
Show resolved Hide resolved

```bash
#!/bin/sh
PR="$1"
SHA="$2"
VERSION="$3"

if [ -z "$SHA" ]; then
SHA=$(gh api /repos/go-gitea/gitea/pulls/$PR -q '.merge_commit_sha')
fi

if [ -z "$VERSION" ]; then
VERSION="v1.16"
fi

echo git checkout origin/release/"$VERSION" -b backport-$PR-$VERSION
git checkout origin/release/"$VERSION" -b backport-$PR-$VERSION
git cherry-pick $SHA && git commit --amend && git push zeripath backport-$PR-$VERSION && xdg-open https://github.com/go-gitea/gitea/compare/release/"$VERSION"...zeripath:backport-$PR-$VERSION

go install contrib/backport/backport.go
```

## Developer Certificate of Origin (DCO)
Expand Down
41 changes: 41 additions & 0 deletions contrib/backport/README
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
`backport`
==========

`backport` is a command to help create backports of PRs. It backports a
provided PR from main on to a released version.

It will create a backport branch, cherry-pick the PR's merge commit, adjust
the commit message and then push this back up to your fork's remote.

The default version will read from `docs/config.yml`. You can override this
using the option `--version`.

The upstream branches will be fetched, using the remote `origin`. This can
be overrided using `--upstream`, and fetching can be avoided using
`--no-fetch`.

By default the branch created will be called `backport-$PR-$VERSION`. You
can override this using the option `--backport-branch`. This branch will
be created from `--release-branch` which is `$(UPSTREAM)/release/$(VERSION)`
delvh marked this conversation as resolved.
Show resolved Hide resolved
by default.

The merge-commit as determined by the github API will be used as the SHA to
cherry-pick. You can override this using `--cherry-pick`.

The commit will be amended to add the `Backport` header. `--no-amend` can
be set to stop this.

If cherry-pick is successful the backported branch will be pushed up to your
fork using your remote. These will be determined using `git remote -v`. You
can set your fork name using `--fork-user` and your remote name using
`--remote`. You can avoid pushing using `--no-push`.

If the push is successful, `xdg-open` will be called to open a backport url.
You can stop this using `--no-xdg-open`.

Installation
============

```bash
go install contrib/backport/backport.go
```