[WORKFLOW] sync Forgejo with Gitea #51
Labels
No labels
arch
amd64
arch
arm6
arch
arm64
arch
arm7
arch
riscv64
backport/v1.19
backport/v1.20
backport/v1.21/forgejo
backport/v7.0/forgejo
backport/v8.0/forgejo
breaking
bug
bug
confirmed
bug
duplicate
bug
needs-more-info
bug
new-report
bug
reported-upstream
codeberg
database
CockroachDB
database
MySQL
database
PostgreSQL
database
SQLite
dependency-upgrade
dependency
ACT
dependency
alpine
dependency
asciinema-player
dependency
bleve
dependency
cache
dependency
certmagic
dependency
chart.js
dependency
Chi
dependency
Chroma
dependency
citation.js
dependency
codespell
dependency
css-loader
dependency
devcontainers
dependency
dropzone
dependency
editorconfig-checker
dependency
elasticsearch
dependency
enmime
dependency
F3
dependency
ForgeFed
dependency
garage
dependency
Git
dependency
git-backporting
dependency
Gitea
dependency
gitignore
dependency
go-ap
dependency
go-enry
dependency
go-gitlab
dependency
Go-org
dependency
go-rpmutils
dependency
go-sql-driver mysql
dependency
go-swagger
dependency
go-version
dependency
go-webauthn
dependency
gocron
dependency
Golang
dependency
goldmark
dependency
goquery
dependency
Goth
dependency
grpc-go
dependency
happy-dom
dependency
Helm
dependency
image-spec
dependency
jsonschema
dependency
KaTeX
dependency
lint
dependency
MariaDB
dependency
Mermaid
dependency
minio-go
dependency
misspell
dependency
Monaco
dependency
PDFobject
dependency
playwright
dependency
postcss
dependency
postcss-plugins
dependency
pprof
dependency
prometheus client_golang
dependency
protobuf
dependency
relative-time-element
dependency
renovate
dependency
reply
dependency
ssh
dependency
swagger-ui
dependency
tailwind
dependency
temporal-polyfill
dependency
terminal-to-html
dependency
tests-only
dependency
text-expander-element
dependency
urfave
dependency
vfsgen
dependency
vite
dependency
Woodpecker CI
dependency
x tools
dependency
XORM
Discussion
duplicate
enhancement/feature
forgejo/accessibility
forgejo/actions
forgejo/api
forgejo/branding
forgejo/ci
forgejo/documentation
forgejo/email
forgejo/federation
forgejo/furnace cleanup
forgejo/internationalization
forgejo/moderation
forgejo/privacy
forgejo/release
forgejo/scaling
forgejo/security
forgejo/ui
Gain
High
Gain
Nice to have
Gain
Undefined
Gain
Very High
good first issue
issue
closed
issue
do-not-exist-yet
issue
open
manual test
Manually tested during feature freeze
OS
FreeBSD
OS
Linux
OS
MacOS
OS
Windows
regression
release blocker
Release Cycle
Feature Freeze
release-blocker
v7.0
release-blocker
v7.0.1
release-blocker
v7.0.2
release-blocker
v7.0.3
release-blocker
v7.0.4
release-blocker
v8.0.0
run-end-to-end-tests
test
manual
test
needed
test
needs-help
test
not-needed
test
present
untested
valuable code
worth a release-note
User Research - Accessibility
User Research - bug
User Research - Config (instance)
User Research - Dashboard
User Research - documentation
User Research - Errors
User Research - feature
User Research - federation
User Research - Filters
User Research - governance
User Research - Labels
User Research - Moderation
User Research - Needs Input
User Research - Notifications
User Research - release
User Research - Repo creation
User Research - Repo Units
User Research - security
User Research - Settings (in-app)
User Research - testing
User Research - UI
User Research - UX
No milestone
No project
No assignees
3 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: forgejo/forgejo#51
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Tracking the weekly sync with Gitea main and Gitea stable releases, as described in the workflow.
The person assigned to the issue is responsible for carrying out the required actions and documenting any problem and their resolution in this issue.
[WORKFLOW] sync Forgeo with Giteato [WORKFLOW] sync Forgejo with GiteaFirst rebase on top of Gitea main at
eec1c71880Gitea main
there has been 26 commits in Gitea since last week
e0c205082d9a69ea5d2dgit reset --hard https://codeberg.org/forgejo/forgejo/src/branch/forgejo-ciandgit cherry-pick a99deecbcd4c4ec3eebf2560499f59dcab478b6b..a21a8d18631f6363dfd1188f68367a4ad56a42fd(i.e. commits from the former forgejo-development branch)Gitea v1.18
there has been 6 commits in Gitea since last week
@dachary it looks like a couple of commits were lost in this process, including
44903a5b8cand4c98c3c324Did you forget to pull before rebasing?
I've cherry-picked those two commits onto
forgeo-development, I hope that's okay.Apparently I did.
Absolutely, thank you for fixing my mistake!
Archive
The previous branches are prefixed
soft-fork/2022-12-10/*Gitea main
there has been 20 commits in Gitea since last week
Gitea v1.18
there has been 9 commits in Gitea since last week
CI
The runs were done but all over the place because of #35
Archive
The previous branches are prefixed
soft-fork/2022-12-17/*PRs
#110 base moved to
soft-fork/2022-12-17/forgejo-developmentGitea main & stable
push Gitea main, release/v1.18, release/v1.17 in forgejo
forgejo-ci
v1.18/forgejo-ciforgejo-development
forgejo-ciforgejo-developmentforgejo
forgejo-developmenttoforgejov1.18/forgejo-ci & v1.18/forgejo
forgejo-ciand resolve conflict on Dockerfile because of the maintener name change that is close to the alpine version (3.17 in main, 3.16 in v1.18)Archive
The previous branches are prefixed
soft-fork/2022-12-24/*PRs
#148 base moved to
soft-fork/2022-12-24/forgejo-developmentGitea main & stable
push Gitea main, release/v1.18, release/v1.17 in forgejo
forgejo-ci
v1.18/forgejo-ciforgejo-development
forgejo-ciforgejo-developmentforgejo-branding
forgejo-developmentforgejo-brandingforgejo-privacy
forgejo-developmentforgejo-privacyforgejo-i18n
forgejo-developmentbuild/merge-forgejo-locales.goforgejo-i18nforgejo
forgejo-{privacy,i18n,branding}intoforgejoforgejov1.18/forgejo-ci
forgejo-ciand resolve conflict on Dockerfile because of the maintener name change that is close to the alpine version (3.17 in main, 3.16 in v1.18)v1.18/forgejo-branding
forgejo-brandingcommits on top ofv1.18/forgejo-civ1.18/forgejo-brandingv1.18/forgejo-privacy
forgejo-privacycommits on top ofv1.18/forgejo-civ1.18/forgejo-privacyv1.18/forgejo-i18n
forgejo-i18ncommits on top ofv1.18/forgejo-civ1.18/forgejo-i18nv1.18/forgejo
v1.18/forgejo-{privacy,i18n,branding}intov1.18/forgejov1.18/forgejoShifting this to tomorrow because it feels like #188 should really be ready to make a more robust release cycle.
Shift this to tomorrow because #188 required more work than anticipated.
Archive
The previous branches are prefixed
soft-fork/2023-01-03/*PRs
Provide detailed instructions to explain how to cherry pick
Gitea main & stable
push Gitea main, release/v1.18 in forgejo
forgejo-ci
v1.18/forgejo-ciforgejo-development
forgejo-ciforgejo-developmentforgejo-branding
forgejo-developmentforgejo-brandingforgejo-privacy
forgejo-developmentforgejo-privacyforgejo-i18n
forgejo-developmentforgejo-i18nforgejo
forgejo-{privacy,i18n,branding}intoforgejoforgejov1.18/forgejo-ci
forgejo-ciand resolve conflict on Dockerfile because of the maintener name change that is close to the alpine version (3.17 in main, 3.16 in v1.18)v1.18/forgejo-branding
forgejo-brandingcommits on top ofv1.18/forgejo-civ1.18/forgejo-brandingv1.18/forgejo-privacy
forgejo-privacycommits on top ofv1.18/forgejo-civ1.18/forgejo-privacyv1.18/forgejo-i18n
forgejo-i18ncommits on top ofv1.18/forgejo-civ1.18/forgejo-i18nv1.18/forgejo
v1.18/forgejo-{privacy,i18n,branding}intov1.18/forgejov1.18/forgejo@dachary out of curiosity, how long does it take you each time to do the weekly rebase?
Would it be possible to automate most of this work, or is it quick enough not to be worthwhile?
It's taking me a lot of time for a lot of different reasons. The sync itself is around one hour of manual work total, which is not much.
But I spent dozens of hours working on the context to make that possible (the CI being the most time consuming) as well as the tiny details (method and rationale for archiving the branches under soft-fork/* for instance).
As you can see from the logs, last week rebase involved a lot of tag builds and this is no longer the case. Also this time around I worked on how to communicate the cherry-pick with people who have open pull requests: it went better than I expected but there were bumps.
I tend to manually do things and document them as much as humanly possible before writing tools, specially in the early days. Once the manual process repeats a few times and seems sound, I'll write tools to automate the most tedious / error prone parts.
My main concern is to figure out how comfortable people are working on top of feature branches that need rebasing. My hope is that it will feel like working on any other Free Software project most of the time. I think we are yet to discover friction points and it is possible that reducing/removing these friction points will require adopting a different rebasing workflow than what I'm currently doing. It will be easier to do that if there is no tooling at all. If there is tooling, there is also going to be some resistance to change because of the working committed to write and test these tools.
I'm rambling a little but hopefully you get why and how I'm approaching this 😄
Thanks for the detailed answer. It seems like more work than I would initially have assumed, but roughly what I had come to understand after seeing it done a few times.
Very wise, this makes a lot of sense.
Yes, I saw that. It's a pity we have to put that extra burden on contributors, but I don't have any better ideas. It would be great if we could clearly and simply document that workflow somewhere, to make it as easy as possible.
Similarly, we should document the easiest way for people to keep all their
forgejo-*branches up to date after each rebase, sincegit pulldoesn't work.You suggested:
I normally do this:
and the same for each
forgejo-*branch. This has the advantage of not needing to check out each branch. I was actually thinking of writing a quick shell script to iterate over the branches doing it for me.(I'm not a git expert so there may be a disadvantage to this technique that I'm not aware of.)
I think the problem is that effectively all PRs become stale after every rebase, and the process to refresh them (cherry-picking) is something most people are not familiar with. But I don't have a better solution, other than documenting it as simply as possible.
Definitely, thanks!
I must second this thank you, your work in forgejo is fundamental and has given me a lot of knowledge and good practices.
Archive
The current branches are archived using main.sh archive_branches.
The branch archives from
soft-fork/2022-12-10andsoft-fork/2022-12-17are removed to not clutter the list of branches.PRs
Provide detailed instructions to explain how to cherry pick
Gitea main & stable
push Gitea main, release/v1.18 in forgejo
forgejo-ci
v1.18/forgejo-ciforgejo-development
forgejo-ciforgejo-developmentforgejo-branding
forgejo-developmentforgejo-brandingforgejo-privacy
forgejo-developmentforgejo-privacyforgejo-i18n
forgejo-developmentforgejo-brandingforgejo-i18nforgejo
forgejo-{privacy,i18n,branding}intoforgejoforgejov1.18/forgejo-ci
forgejo-ciand resolve conflict on Dockerfile because of the maintener name change that is close to the alpine version (3.17 in main, 3.16 in v1.18)v1.18/forgejo-development
forgejo-developmentcommits on top ofv1.18/forgejo-civ1.18/forgejo-developmentv1.18/forgejo-branding
forgejo-brandingcommits on top ofv1.18/forgejo-developmentv1.18/forgejo-brandingv1.18/forgejo-privacy
forgejo-privacycommits on top ofv1.18/forgejo-developmentv1.18/forgejo-privacyv1.18/forgejo-i18n
forgejo-i18ncommits on top ofv1.18/forgejo-developmentv1.18/forgejo-i18nv1.18/forgejo
v1.18/forgejo-{privacy,i18n,branding}intov1.18/forgejov1.18/forgejo@caesar with this rebase the
forgejo-i18nfeature branch had a some commits squashed which helps for maintenance. Instead of cherry-picking an ever growing list of commits, these are neatly organized chronological commits that tell a kind of story. Should a conflict occur, it will be easier to deal with.I refrained from doing the same with the
forgejo-brandingbranch since you're actively working on it and I don't know how much you rely on its full history. Would you like to do something similar?@dachary I can see the logic behind doing this, but I also worry about hiding authorship information: is it fair to contributors if we strip their attribution from the commit history (by squashing commits from multiple authors into one) for the sake of tidiness / an easier workflow? I don't know the answer, I can see arguments both ways; it just made me a bit uncomfortable.
Maybe we could at least add a
Co-authored-bytrailer to the commit message for each author whose commits are squashed into a single one?GitHub displays the information from that commit trailer in the UI. I'm not sure if Forgejo does; if not, it should.
To be honest I'm not really actively working on it right now so it wouldn't be a problem, but thanks for thinking of me.
Since I've done a lot of the work in that branch though, I'm happy to be the one who goes through and squashes what makes sense.
What's the best way for me to do that while fitting in with your workflow? I guess i shouldn't force-push to that branch now you've already merged it into
forgejo, or would it not be a problem?This is on of the reason for archiving the branches under
soft-fork/YYYY-MM-DD/*. Another is forensic analysis if (I should write "when" because accidents happen) a commit gets lost or a regression is introduced in a rebase. It is vitally important to not loose any commit.As the number of archive branches grow it will cause UI issues (clutter, slowness) and it is likely they will need to be moved to a
forgejo-archiverepository for safekeeping. But this is something that can be addressed when and if it becomes a problem.I agree.
I think it does something of the kind when a PR is merged, in the merge commit comment.
Great! In your own time though, there is no pressure.
You can force push
forgejo-brandingand it will be merged intoforgejoon the next rebase on top of Gitea. Your changes won't be in theforgejobranch in the meantime. When I rework the commit history of a feature branch I take a look at pending pull requests targeting it because they are going to be impacted.Perfect, thanks. I'll do it some time in the next few days.
Archive
The current branches are archived using main.sh archive_branches.
PRs
Provide detailed instructions to explain how to cherry pick
Gitea main & stable
push Gitea main, release/v1.18 in forgejo
forgejo-ci
forgejo-development
forgejo-ciforgejo-developmentforgejo-branding
forgejo-developmentforgejo-brandingforgejo-privacy
forgejo-developmentforgejo-privacyforgejo-i18n
forgejo-developmentforgejo-i18nforgejo
forgejo-{privacy,i18n,branding}intoforgejoforgejov1.18/forgejo-ci
40229a7dd8Skip GitHub migration tests if the API token is undefined (#21824)v1.18/forgejo-development
forgejo-developmentcommits on top ofv1.18/forgejo-civ1.18/forgejo-developmentv1.18/forgejo-branding
forgejo-brandingcommits on top ofv1.18/forgejo-developmentAllowedHeaders: append([]string{"Authorization", "X-Gitea-OTP", "X-Forgejo-OTP"}, setting.CORSConfig.Headers...),wasAllowedHeaders: []string{"Authorization", "X-Gitea-OTP", "X-Forgejo-OTP"},v1.18/forgejo-brandingv1.18/forgejo-privacy
forgejo-privacycommits on top ofv1.18/forgejo-developmentv1.18/forgejo-privacyv1.18/forgejo-i18n
forgejo-i18ncommits on top ofv1.18/forgejo-developmentv1.18/forgejo-i18nv1.18/forgejo
v1.18/forgejo-{privacy,i18n,branding}intov1.18/forgejov1.18/forgejoI won't work on tooling this time around because 1.18.1-0 should happen soon.
Thanks @dachary for this.
I have one question about conflicts: I understand that each conflict should be resolved at each branch for futures syncs in order to avoid conflict escalation. I mean, if a function change its name, or change the scope of a modified code, that modification should be updated to fit to the new upstream code to prevent future conflicts in this sync, I am right?
I am not shure if this is obvious or should be documented to avoid confusion.
The rebase and the release are delayed until the Codeberg performance problems are resolved.
The rebase is complete and the release is available in experimental. Codeberg is not back to normal but using git only is a viable workaround for the release process.
Archive
The current branches are archived using main.sh archive_branches.
PRs
Provide detailed instructions to explain how to cherry pick
Gitea main & stable
push Gitea main, release/v1.18 in forgejo
forgejo-ci
forgejo-development
forgejo-ciforgejo-developmentforgejo-branding
forgejo-developmentforgejo-brandingforgejo-privacy
forgejo-developmentforgejo-privacyforgejo-i18n
forgejo-developmentforgejo-i18nforgejo
forgejo-{privacy,i18n,branding}intoforgejoforgejov1.18/forgejo-ci
40229a7dd8Skip GitHub migration tests if the API token is undefined (#21824)v1.18/forgejo-development
forgejo-developmentcommits on top ofv1.18/forgejo-civ1.18/forgejo-developmentv1.18/forgejo-branding
forgejo-brandingcommits on top ofv1.18/forgejo-developmentAllowedHeaders: []string{"Authorization", "X-Gitea-OTP", "X-Forgejo-OTP"},v1.18/forgejo-brandingv1.18/forgejo-privacy
forgejo-privacycommits on top ofv1.18/forgejo-developmentv1.18/forgejo-privacyv1.18/forgejo-i18n
forgejo-i18ncommits on top ofv1.18/forgejo-developmentv1.18/forgejo-i18nv1.18/forgejo
v1.18/forgejo-{privacy,i18n,branding}intov1.18/forgejov1.18/forgejoArchive
The current branches are archived using main.sh archive_branches.
PRs
Provide detailed instructions to explain how to cherry pick
Gitea main & stable
push Gitea main, release/v1.18 in forgejo
forgejo-ci
forgejo-development
forgejo-ciforgejo-developmentforgejo-branding
forgejo-developmentforgejo-brandingforgejo-privacy
forgejo-developmentforgejo-privacyforgejo-i18n
forgejo-developmentforgejo-i18nforgejo
forgejo-{privacy,i18n,branding}intoforgejoforgejov1.18/forgejo-ci
40229a7dd8Skip GitHub migration tests if the API token is undefined (#21824)v1.18/forgejo-development
forgejo-developmentcommits on top ofv1.18/forgejo-civ1.18/forgejo-developmentv1.18/forgejo-branding
forgejo-brandingcommits on top ofv1.18/forgejo-developmentAllowedHeaders: []string{"Authorization", "X-Gitea-OTP", "X-Forgejo-OTP"},v1.18/forgejo-brandingv1.18/forgejo-privacy
forgejo-privacycommits on top ofv1.18/forgejo-developmentv1.18/forgejo-privacyv1.18/forgejo-i18n
forgejo-i18ncommits on top ofv1.18/forgejo-developmentv1.18/forgejo-i18nv1.18/forgejo
v1.18/forgejo-{privacy,i18n,branding}intov1.18/forgejov1.18/forgejoArchive
The current branches are archived using main.sh archive_branches.
PRs
Provide detailed instructions to explain how to cherry pick
Gitea main & stable
push Gitea main, release/v1.18 in forgejo
test-env
forgejo-ci
forgejo-development
forgejo-ciforgejo-cibranchforgejo-developmentforgejo-branding
forgejo-developmentforgejo-brandingforgejo-privacy
forgejo-developmentforgejo-privacyforgejo-i18n
forgejo-developmentforgejo-i18nforgejo-a11y
forgejo-developmentforgejo-a11yforgejo
forgejo-{privacy,i18n,branding,a11y}intoforgejoforgejov1.18/forgejo-ci
ae6474ba93[CI] use test-env:1.1840229a7dd8Skip GitHub migration tests if the API token is undefined (#21824)v1.18/forgejo-development
forgejo-developmentcommits on top ofv1.18/forgejo-civ1.18/forgejo-developmentv1.18/forgejo-branding
forgejo-brandingcommits on top ofv1.18/forgejo-developmentAllowedHeaders: []string{"Authorization", "X-Gitea-OTP", "X-Forgejo-OTP"},v1.18/forgejo-brandingv1.18/forgejo-privacy
forgejo-privacycommits on top ofv1.18/forgejo-developmentv1.18/forgejo-privacyv1.18/forgejo-i18n
forgejo-i18ncommits on top ofv1.18/forgejo-developmentv1.18/forgejo-i18nv1.18/forgejo-a11y
forgejo-a11ycommits on top ofv1.18/forgejo-developmentv1.18/forgejo-a11yv1.18/forgejo
v1.18/forgejo-{privacy,i18n,branding,a11y}intov1.18/forgejov1.18/forgejoI got busy with other things, therefore postponed one more day.
Archive
The current branches are archived using main.sh archive_branches.
PRs
Provide detailed instructions to explain how to cherry pick
Gitea main & stable
push Gitea main, release/v1.18 in forgejo
test-env
Rebase milestone
Test run of release
Moved the notes to a dedicated issue in the milestone tracking the rebase. This concludes this long standing issue: further rebase will be a set of PR & issues grouped into a milestone.