Idea: keep tested-configuration rows from becoming a shared merge-conflict point #45
Labels
No labels
accessibility
autorelease: pending
autorelease: tagged
bug
dependencies
documentation
duplicate
enhancement
github_actions
good first issue
help wanted
invalid
needs measurements
question
testing wanted
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
MagicBeanDev/Longshot#45
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?
The idea
Keep the evidence requirement, but stop independent test results from competing for the same insertion point in
docs/tested-configurations.md. The merged Forgejo PR template still asks for a row for each measured run, and the contribution guide still asks contributors to rebase when main moves.Current scale, checked 2026-11-12 at 23:50 UTC: 1 of 18 open Longshot pull requests touches that file: PR 16 by TrashPanda. That comes from each open PR's changed-file list, not its description. The larger GitHub backlog has not moved here yet, so this is a preventive proposal, not a claim that today's forge already conflicts on every merge. I have not measured conflict-related check time on Forgejo; its ordinary CI migration is still open in PR 13.
Two possible steps:
A local-rebase convenience: add
docs/tested-configurations.md merge=unionto.gitattributes. Independent rows added at the same place are then both kept by local Git instead of requiring hand resolution.Measured on this forge, 2026-11-12, Forgejo 17.0.1: with that attribute on the base branch, two throwaway PRs adding a row at the same place were initially mergeable. After the first merged, the second reported
mergeable: falseand the forge refused it with merge, squash and rebase alike, just as for the control pair without the attribute. A localgit rebasewith the attribute kept both rows without stopping. The experiment used five throwaway PRs in my own fork; they and their test branches were cleaned up afterwards. The attribute does not remove Forgejo's conflict state or the need to push again; it only makes the contributor's local rebase automatic.Separate files for new rows: a PR adds a uniquely named small file under, for example,
docs/tested/, containing just its table rows. Distinct PRs would no longer edit the same table insertion point. A small script assembles the existing table and those rows for readers, and a game-free check validates the columns. Decide whether assembly is done at release time or presented as a generated view; do not require every contributor to commit the same regenerated table, which would recreate the conflict.The existing table can stay where it is; only new rows need the new path. I can prepare either step or both, including the guide/template changes so contributors still have one clear place to put evidence. Tools such as towncrier use separate fragments for the same reason.
Anything else
Would you prefer the union attribute as a small local convenience, separate files for new results, or no workflow change yet?
Moved from NotRexed/Hookshot#2924.
Assisted-by: Claude Fable 5.2
Co-Authored-By: Claude Fable 5.2 [email protected]
A data point from today for this idea. Main gained one results row at 01:35 UTC (the DLSS model settle fix, #39). At that moment 14 of my 16 open pull requests stopped merging, each with a conflict in
docs/tested-configurations.mdand nowhere else (checked withgit merge-treefor every head; the two that still merge add no row at the top of the table). Each of the 14 now needs a rebase and, by the rules, a fresh suite run on the new head, for a merge that touches none of their code. The rows all go in at the same place, the top of the table, which is why any two pull requests that add a row collide.Until there is a decision here I handle it on my side: a small script carries a branch onto the new main, keeps both sides' rows and refuses if anything outside the table differs. I can open a pull request for whichever fix is preferred: one small file per run, assembled into the table, or rows grouped under dated headings so that different days do not touch the same lines.
I recommend a separate file per run, with the combined table generated for reading but not committed. The prepared change is pull request 96 (work in progress, waiting for your decision on the workflow).
I checked Forgejo 17.0.1's source and replayed its Git commands with Git 2.56.0. Its conflict check runs this in the bare base repository:
A committed
merge=unionrule did not resolve the overlapping additions there. Its temporary merge repository also reproduced the conflicts withgit merge --no-ff --no-commit tracking,git merge --squash trackingand the rebase paths when the attribute was already shared. A full local checkout did honour union. This matches the live experiment already recorded above; I did not create more test pull requests or change the forge.The pinned sample now includes the 16 moved pull requests plus the two new ones, #75 and #78. Against main
77f605a25, 13 of the 18 heads conflict in the results table; 14 have any conflict. Moving just their inserted rows into distinct files reduces the table conflicts to 0, leaving the unrelated conflicts in #68 and #75. This is a conversion experiment, not a claim that the existing remote heads become mergeable without being updated. Six branches also need theiras abovewording expanded before the new row check accepts them.The prepared change migrates all 82 existing rows without changing their text or order. It preserves the three duplicate pairs already in the old table rather than deleting evidence. New files contain one self-contained row; checks cover the header, columns, date, duplicate rows and stale generated views. The contributor guide and pull request template name the same destination. Edits to the same existing file still conflict normally.
The remaining maintainer choice is whether this contributor workflow is wanted. There is no required server setting or release automation. A browser-hosted combined view could be added separately, but committing a regenerated table in every measured pull request should be avoided: it recreates the shared insertion point.