Documentation
¶
Overview ¶
Command seed makes nova-sprint's seed tree from a nova-tools checkout, by the rules in tools/seed/RECIPE: the sprint's packages are moved whole, the nova-tools packages they import are copied with their import specs rewritten to this module, and the sprint's docs and TLA+ models come with them.
It writes a new directory and touches nothing else; the caller commits it. The nova-tools checkout is at a release tag; a checkout at no release tag, or with uncommitted changes, is refused. The nova-tools a seeded nova-sprint needs is go.mod's requirement of it (sprint.NovaToolsRequired), the one source. A re-seed is this command and a three-way merge:
git -C ../nova-tools checkout <the release tag> git worktree add ../seed-tree <the last seed commit> go run ./tools/seed -from ../nova-tools -keep . -out ../seed-new rsync -a --delete --exclude=.git ../seed-new/ ../seed-tree/ (cd ../seed-tree && go mod tidy && git add -A && git commit) git checkout -b <branch> main && git cherry-pick <that commit>
The cherry-pick carries nova-tools' changes since the last seed onto main and keeps nova-sprint's own; where both touched a line, git stops and asks.