Skip to content

Commit f1f0430

Browse files
authored
Add Contributed backport command (#22643)
This PR provides a contributed backport command to help create backports for Gitea. It represents a significant improvement on my previously described shell-script. It can be installed using `go install contrib/backport/backport.go`. Signed-off-by: Andrew Thornton <art27@cantab.net>
1 parent 519939f commit f1f0430

File tree

3 files changed

+481
-18
lines changed

3 files changed

+481
-18
lines changed

Diff for: CONTRIBUTING.md

+2-18
Original file line numberDiff line numberDiff line change
@@ -267,26 +267,10 @@ with the rest of the summary matching the original PR. Similarly for frontports
267267

268268
---
269269

270-
The below is a script that may be helpful in creating backports. YMMV.
270+
A command to help create backports can be found in `contrib/backport` and can be installed (from inside the gitea repo root directory) using:
271271

272272
```bash
273-
#!/bin/sh
274-
PR="$1"
275-
SHA="$2"
276-
VERSION="$3"
277-
278-
if [ -z "$SHA" ]; then
279-
SHA=$(gh api /repos/go-gitea/gitea/pulls/$PR -q '.merge_commit_sha')
280-
fi
281-
282-
if [ -z "$VERSION" ]; then
283-
VERSION="v1.16"
284-
fi
285-
286-
echo git checkout origin/release/"$VERSION" -b backport-$PR-$VERSION
287-
git checkout origin/release/"$VERSION" -b backport-$PR-$VERSION
288-
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
289-
273+
go install contrib/backport/backport.go
290274
```
291275

292276
## Developer Certificate of Origin (DCO)

Diff for: contrib/backport/README

+41
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
`backport`
2+
==========
3+
4+
`backport` is a command to help create backports of PRs. It backports a
5+
provided PR from main on to a released version.
6+
7+
It will create a backport branch, cherry-pick the PR's merge commit, adjust
8+
the commit message and then push this back up to your fork's remote.
9+
10+
The default version will read from `docs/config.yml`. You can override this
11+
using the option `--version`.
12+
13+
The upstream branches will be fetched, using the remote `origin`. This can
14+
be overrided using `--upstream`, and fetching can be avoided using
15+
`--no-fetch`.
16+
17+
By default the branch created will be called `backport-$PR-$VERSION`. You
18+
can override this using the option `--backport-branch`. This branch will
19+
be created from `--release-branch` which is `release/$(VERSION)`
20+
by default and will be pulled from `$(UPSTREAM)`.
21+
22+
The merge-commit as determined by the github API will be used as the SHA to
23+
cherry-pick. You can override this using `--cherry-pick`.
24+
25+
The commit message will be amended to add the `Backport` header.
26+
`--no-amend-message` can be set to stop this from happening.
27+
28+
If cherry-pick is successful the backported branch will be pushed up to your
29+
fork using your remote. These will be determined using `git remote -v`. You
30+
can set your fork name using `--fork-user` and your remote name using
31+
`--remote`. You can avoid pushing using `--no-push`.
32+
33+
If the push is successful, `xdg-open` will be called to open a backport url.
34+
You can stop this using `--no-xdg-open`.
35+
36+
Installation
37+
============
38+
39+
```bash
40+
go install contrib/backport/backport.go
41+
```

0 commit comments

Comments
 (0)