Use the 'pyTooling/SynchronizeForks' action, and synchronize this namespace - #1
Conversation
…espace.
The inline shell script is replaced by a call to the reusable action.
This also fixes what the script did: it carried 'targetOrganisation=PLC2' from the repository it was copied from,
so every run of this workflow synchronized 'PLC2/*' - never 'VHDL/*' - and reported success, because that script
never sets a non-zero exit code. The action defaults to '${{ github.repository_owner }}', which is 'VHDL' here.
'OSVVM.repos' named 'OSVVM/osvvm' as the upstream of all 13 entries. The real parent of each fork is taken from
GitHub and written into the file, because the action reports the upstream in its progress and error output.
'OSVVM-DPRAM' is disabled: no fork of that name exists in this namespace, so the line would fail on the first run
against 'VHDL'.
The README is regenerated from the configuration files - it listed repositories that are commented out and left
'*others*' as 'tbd'.
Co-Authored-By: Patrick Lehmann <Paebbels@gmail.com>
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RnpaXYDwfNwnJrQew78j3f
'pyTooling/SynchronizeForks' released v1.0.0 and its 'v1' major-version branch now carries the action, so the workflow pins the branch rather than 'main'. The branch is moved to each release. Co-Authored-By: Patrick Lehmann <Paebbels@gmail.com> Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01RnpaXYDwfNwnJrQew78j3f
| @@ -13,42 +13,7 @@ jobs: | |||
| - name: '🧰 Checkout' | |||
There was a problem hiding this comment.
update the checkout icon to what we use in Paebbels/Synchronize.
There was a problem hiding this comment.
Done — ⏬ Checkout, matching Paebbels/SynchronizeForks.
I took the neighbouring step with it, since the point is that the two repositories read alike: Synchronize Repositories is now 🔄 Synchronize Repositories there too. Both steps are identical in both repositories now, so the two logs line up.
I've also carried over the four README findings from your review of Paebbels/SynchronizeForks#3, since both files came from the same template:
- the introduction says the configuration files list the forks as well as the branches and tags to synchronize,
- the inventory no longer repeats each fork's branch list — the
*.reposfiles are three sections down in the same repository, so the copy is what goes stale, - the line format documents the optional fourth field,
[:<tagPatterns>], - the closing section points at
pyTooling/SynchronizeForksinstead of GitHub's syncing a fork page.
Two of the Paebbels findings don't apply here: this README has no Steps to Setup section, so there was nothing to say about writing your own configuration or about README.md versus LICENSE.md.
The checkout step carries the '⏬' icon used in 'Paebbels/SynchronizeForks', and the synchronize step the '🔄' it uses there too - the same two names in both repositories. Carried over from the review of the sibling pull-request: * The introduction says the configuration files list the forks as well as the branches and tags to synchronize. * The inventory no longer repeats the branch list of every fork; the '*.repos' files in the same repository are the truth and the copy is what goes stale. * The line format gains the optional tag field. * The closing section points at 'pyTooling/SynchronizeForks' instead of GitHub's 'syncing a fork' page. Co-Authored-By: Patrick Lehmann <Paebbels@gmail.com> Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01RnpaXYDwfNwnJrQew78j3f
Bug Fixes
VHDLnamespace. Its script carriedtargetOrganisation=PLC2— copied fromPLC2/Synchronizeand never adjusted — so every run issuedgh repo sync PLC2/<fork>, updating PLC2's forks from this repository's configuration files.VHDL/OSVVM,VHDL/OSVVM-Scripts,VHDL/OSVVM-Common,VHDL/OSVVM-AXI4,VHDL/OSVVM-UARTandVHDL/OSVVM-Ethernetall existand are all listed here, and none of them was ever touched by it.
It looked healthy the whole time: the last five scheduled runs report success, because that script never sets a
non-zero exit code — the same defect the action fixed. The action takes the namespace from
${{ github.repository_owner }}, so the constant is gone rather than corrected.OSVVM.reposnamedOSVVM/osvvmas the upstream of all 13 entries. That's one real repository (GitHub matchesnames case-insensitively), so it was right for
OSVVMand wrong for the other twelve. Each fork's real parent isnow in the file, read from GitHub:
OSVVM-ScriptsOSVVM/osvvmOSVVM/OSVVM-ScriptsOSVVM-CommonOSVVM/osvvmOSVVM/OSVVM-CommonOSVVM-AXI4OSVVM/osvvmOSVVM/AXI4OSVVM-UARTOSVVM/osvvmOSVVM/UARTOSVVM-EthernetOSVVM/osvvmOSVVM/EthernetOSVVM-LibrariesOSVVM/osvvmOSVVM/OsvvmLibrariesOSVVM-DPRAMOSVVM/osvvmOSVVM/DpRamOSVVM/osvvmIt matters now: the action prints the upstream in every progress line and every error annotation.
OSVVM-DPRAMis disabled, with a comment saying why: noVHDL/OSVVM-DPRAMexists. It was an active line, andit only ever worked because it was resolving against
PLC2/OSVVM-DPRAM. ForkOSVVM/DpRaminto this namespace andre-enable the line.
Changes
.github/workflows/Synchronize.ymlcallspyTooling/SynchronizeForksinstead of carrying the algorithm.Trigger, schedule and checkout are unchanged; the
Check GitHub APIstep moved into the action.What the run gains: a missing
<organisation>.repos, a malformed line and a failinggh repo syncare countederrors that fail the job, multi-line error output survives into the annotation, each organisation is a collapsible
group, and the run ends with a summary and a
Not synchronized:list.Documentation
README.mdis regenerated from the configuration files. It listed ten OSVVM repositories as synchronized, of whichfour are commented out (
OSVVM-Libraries,OSVVM-CoSim,OSVVM-Documentation, and nowOSVVM-DPRAM), named noupstreams or branches, and left
*others*astbd—_Others.reposis empty. Each entry now reads<fork> ⇐ <upstream> — <branches>and disabled ones are marked.Others
main/devof six forks to move.secrets.GH_TOKENneeds write access toVHDL/*— worth confirming, because until now the token was only everexercised against
PLC2/*. If it isn't, the run fails loudly instead of silently, which is the point.@v1.pyTooling/SynchronizeForksreleasedv1.0.0, and its
v1major-version branch nowcarries the action. That branch is moved to each release by the action's own pipeline, so this workflow follows
v1.x without being edited; a breaking v2 would need a deliberate change to
@v2here.Related Issues and Pull-Requests
PLC2/Synchronizestill carries the inline script, and itsOSVVM.reposhas the sameOSVVM/osvvmupstream onevery line. No credentials for that namespace are available here.
🤖 Generated with Claude Code