Change #273746
| Category | ffmpeg |
| Changed by | Kacper Michajłow <kasper93@gmail.com> |
| Changed at | Thu 02 Jul 2026 22:20:50 |
| Repository | https://git.ffmpeg.org/ffmpeg.git |
| Project | ffmpeg |
| Branch | master |
| Revision | 14ed5e8ae31d0c833afbb5ed0e0ca2c7cfc0db87 |
Comments
forgejo/workflows: rebase PR commits onto target branch before running verification This simulates the state of the repository after the PR is rebased-and-merged into the target branch and validates the merged result rather than the PR branch in isolation. Without this step, CI may run against a stale branch. A PR that merges cleanly can still fail verification after merging into target because the target branch may have advanced and changed tests. Conversely, the Docker image used for the build may no longer work with the old repository state when testing an old PR branch. This also allows the PR to be revalidated by simply rerunning CI, without requiring an explicit rebase. This change also fails CI early when rebase conflicts are detected. Since PRs with conflicts cannot be merged, there is no value in running the remaining verification steps. This is bit strict as it likely will fail to rebase merge commits, should they be present in the PR. However, we generally prefer linear history. It's rebased mostly to avoid search for merge commit in target branch. While for PR we can ask API how many commit there are and the parent of that should be merge-base commit, for target branch it's unknown how deep this common commit is. It would be trivial if we did full non-shallow clone, but we do shallow and probably want to keep it this way. This forces us to just replay commits from PR on the tip of the current target branch. It's fine, this is what we want in the end of the day. Incidentally this also fixes recently merged dd6ae3e02412021e016983cc52c242c35e2d7ab1, which tries to validate commit messages, but by default clone depth is 1 so only single commit message of head commit in PR was merged. After this change all commits will be visible. However, I still liked the API script that we had before, not sure why this was completely reworked. Signed-off-by: Kacper Michajłow <kasper93@gmail.com>
Changed files
- .forgejo/actions/rebase-pr/action.yml
- .forgejo/workflows/lint.yml
- .forgejo/workflows/test.yml