aboutsummaryrefslogtreecommitdiff
path: root/scripts/tests/sync-language-bundle.bats
diff options
context:
space:
mode:
authorCraig Jennings <c@cjennings.net>2026-07-31 13:36:21 -0500
committerCraig Jennings <c@cjennings.net>2026-07-31 13:36:21 -0500
commitf69dc22c80156f92c6e3519e87bc014558d77dbf (patch)
tree6cee5efc1a2822abeb114ad90e25438426aca7b7 /scripts/tests/sync-language-bundle.bats
parenta212eeb7c92f291045344f2769c9a7f85f2a38d5 (diff)
downloadrulesets-f69dc22c80156f92c6e3519e87bc014558d77dbf.tar.gz
rulesets-f69dc22c80156f92c6e3519e87bc014558d77dbf.zip
fix(sync): narrow the dirty-rulesets guard to per-file excludes
One uncommitted file under the synced template paths used to skip all three rsyncs for every project. On 2026-07-30 that froze every template everywhere for a full day, and five workflow files went stale in one project alone with nothing reporting it. The blast radius had no relation to what I was editing. Each dirty path now becomes an --exclude on its own rsync. rsync honors an exclude on both sides, so a withheld file is neither overwritten nor deleted downstream. Every clean file still propagates. A dirty protocols.org skips only its own single-file transfer. A rename withholds both names, since sweeping the old copy would delete a file the project still runs mid-rename. The run now names what it held back, so a project can see it's one file behind. The behind-upstream guard stays all-or-nothing. That staleness lives in the destination, so there's no single source file to narrow to. I verified it against the real checkout mid-change: 48 workflows propagated while the two files dirty at the time were withheld and named. The same run under the old guard would have synced nothing.
Diffstat (limited to 'scripts/tests/sync-language-bundle.bats')
0 files changed, 0 insertions, 0 deletions