RELEASE.md: multi-extension distribution versioning procedure - #16
Open
jnasbyupgrade wants to merge 1 commit into
Open
Conversation
A single distribution can provide more than one extension (test_factory is the first repo in the org to actually hit this: test_factory + test_factory_pgtap), each with its own default_version. The existing process implicitly assumed one extension version moving in lockstep with the distribution version -- doesn't work here, since most releases will only touch one of the two extensions. Documented the actual decision procedure: the distribution version always advances at every release; each extension's own version only moves if its sql/<ext>--<last-released>--stable.sql update script has real content (inspected at release time), and when it does move, it moves to the same value as the new distribution version rather than an independently-numbered scheme. An extension with nothing pending gets its default_version reverted to its own last real version for the archive (never left at the literal 'stable' in a tagged release), and its stable-named update script stays as a genuine no-op, excluded from the release archive via .gitattributes export-ignore rather than git mv'd to a real name. This requires maintaining a stable-target update script for every extension a distribution provides, not just the one(s) a given PR happens to touch -- otherwise there's nothing to inspect at release time to decide whether an untouched extension needs anything at all. Added that to the "ongoing development" section, and fixed a stale "step 7" cross-reference (should have said step 8) that predated this change but was caught while touching the same paragraph. CLAUDE.md: also documented a gotcha caught while implementing this on test_factory -- the stable pseudo-version's gitignore entry must name sql/<ext>--stable.sql exactly, not a sql/*--stable.sql glob, since that glob's `*` also matches across the update script's own second `--` and silently sweeps up a file that must stay committed. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
|
Important Review skippedAuto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
test_factory+test_factory_pgtap).sql/<ext>--<last-released>--stable.sqlupdate script has real content by release time -- and when it does move, it moves to the same value as the new distribution version, not an independently-numbered scheme.default_versionreverted to its own last real version for the tagged archive (never left at the literalstable), and its no-op update script gets excluded from the release archive via.gitattributesexport-ignore.CLAUDE.md: documented a gotcha caught while implementing this ontest_factory-- thestablepseudo-version's gitignore entry must namesql/<ext>--stable.sqlexactly, not asql/*--stable.sqlglob (which also matches across the update script's own second--and silently sweeps up a file that must stay committed).Test plan
This is a documentation-only change. Verified against a real implementation on
test_factory(Postgres-Extensions/test_factory#42): the export-ignore glob behavior, the no-op update script requirement (ALTER EXTENSION ... UPDATEgenuinely fails without one, even for a no-op transition), and the gitignore glob-ambiguity gotcha were all confirmed directly there before writing this up.