Skip to content

Use the 'pyTooling/SynchronizeForks' action, and synchronize this namespace - #1

Merged
Paebbels merged 3 commits into
mainfrom
claude/use-synchronizeforks-action
Sep 11, 2026
Merged

Use the 'pyTooling/SynchronizeForks' action, and synchronize this namespace#1
Paebbels merged 3 commits into
mainfrom
claude/use-synchronizeforks-action

Conversation

@vhdl-claude

@vhdl-claude vhdl-claude Bot commented Sep 10, 2026

Copy link
Copy Markdown

Bug Fixes

  • ⚠️ This workflow has never synchronized the VHDL namespace. Its script carried
    targetOrganisation=PLC2 — copied from PLC2/Synchronize and never adjusted — so every run issued
    gh 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-UART and VHDL/OSVVM-Ethernet all exist
    and 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.repos named OSVVM/osvvm as the upstream of all 13 entries. That's one real repository (GitHub matches
    names case-insensitively), so it was right for OSVVM and wrong for the other twelve. Each fork's real parent is
    now in the file, read from GitHub:

    Fork Upstream, was Upstream, is
    OSVVM-Scripts OSVVM/osvvm OSVVM/OSVVM-Scripts
    OSVVM-Common OSVVM/osvvm OSVVM/OSVVM-Common
    OSVVM-AXI4 OSVVM/osvvm OSVVM/AXI4
    OSVVM-UART OSVVM/osvvm OSVVM/UART
    OSVVM-Ethernet OSVVM/osvvm OSVVM/Ethernet
    OSVVM-Libraries OSVVM/osvvm OSVVM/OsvvmLibraries
    OSVVM-DPRAM OSVVM/osvvm OSVVM/DpRam
    …and the five other disabled entries OSVVM/osvvm their own repositories

    It matters now: the action prints the upstream in every progress line and every error annotation.

  • OSVVM-DPRAM is disabled, with a comment saying why: no VHDL/OSVVM-DPRAM exists. It was an active line, and
    it only ever worked because it was resolving against PLC2/OSVVM-DPRAM. Fork OSVVM/DpRam into this namespace and
    re-enable the line.

Changes

  • .github/workflows/Synchronize.yml calls
    pyTooling/SynchronizeForks instead of carrying the algorithm.
    Trigger, schedule and checkout are unchanged; the Check GitHub API step moved into the action.

          - name: Synchronize Repositories
            uses: pyTooling/SynchronizeForks@v1
            with:
              github-token: ${{ secrets.GH_TOKEN }}
  • What the run gains: a missing <organisation>.repos, a malformed line and a failing gh repo sync are counted
    errors 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.md is regenerated from the configuration files. It listed ten OSVVM repositories as synchronized, of which
    four are commented out (OSVVM-Libraries, OSVVM-CoSim, OSVVM-Documentation, and now OSVVM-DPRAM), named no
    upstreams or branches, and left *others* as tbd_Others.repos is empty. Each entry now reads
    <fork> ⇐ <upstream> — <branches> and disabled ones are marked.

Others

  • The first run after merging will do real work, since these forks have never been synchronized from here. Expect
    main/dev of six forks to move.
  • secrets.GH_TOKEN needs write access to VHDL/* — worth confirming, because until now the token was only ever
    exercised against PLC2/*. If it isn't, the run fails loudly instead of silently, which is the point.
  • The action pins @v1. pyTooling/SynchronizeForks released
    v1.0.0, and its v1 major-version branch now
    carries 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 @v2 here.

Related Issues and Pull-Requests

  • pyTooling/SynchronizeForks#1 — the action.
  • Paebbels/SynchronizeForks#3 — the matching conversion.
  • PLC2/Synchronize still carries the inline script, and its OSVVM.repos has the same OSVVM/osvvm upstream on
    every line. No credentials for that namespace are available here.

🤖 Generated with Claude Code

…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
Comment thread .github/workflows/Synchronize.yml Outdated
@@ -13,42 +13,7 @@ jobs:
- name: '🧰 Checkout'

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

update the checkout icon to what we use in Paebbels/Synchronize.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 *.repos files 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/SynchronizeForks instead 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
@Paebbels
Paebbels merged commit 7f62be2 into main Sep 11, 2026
@Paebbels
Paebbels deleted the claude/use-synchronizeforks-action branch September 11, 2026 06:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants