Skip to content

feat(tool): dotskit upgrade brings a solution to the tool's version of the template, keeping the team's changes - #118

Merged
Vovanda merged 1 commit into
devfrom
feat/dotskit-upgrade
Oct 6, 2026
Merged

Vovanda merged 1 commit into
devfrom
feat/dotskit-upgrade

Conversation

@Vovanda

@Vovanda Vovanda commented Oct 6, 2026

Copy link
Copy Markdown
Collaborator

Closes #100.

dotskit upgrade is the merge of dotskit new with the manifest generated by the solution's version as the base and by the tool's as the target. What it adds for an upgrade:

  • a file the template moved (git diff -M between its two outputs) takes the team's changes to its new path;
  • the manifest's packages: updates minor, patch or none, and pinned versions, written into the template's side before the merge, with a line in the plan for each package that changes or is held;
  • one major version at a time, each step named from the solution's own major; a solution newer than the tool gets the tool update;
  • after writing, the build's errors are listed by project.

Left out, on purpose: steps 2-3 of "Repairing references" - the repair of project references and using lines from an index of where each type lives. No type moves between projects from 2.6.1 to 2.8, and a move is breaking, so 3.0 (#101) is the first that needs it. It is #117, tied to 3.0 in the plan.

Found by trying 2.6.2 and fixed here:

  • nuget.org has the template from 2.6.1 only: an earlier version cannot be generated, so init and upgrade refuse it and name the notes; the docs say the range;
  • a version was given parameters it does not have (--Agent for 2.6); generation now passes each version only its own, by a table taken from the tags;
  • dotskit init (feat(tool): dotskit init describes a solution made without dotskit, checked by generating it again #116) widened the solution by its services; the template alone leaves the root as the first command made it, so init now keeps the solution as read.

Tests: unit tests for the package policy, moves, a version's parameters, the manifest, the build errors and the refusals (123); scenarios take solutions of 2.6.1 and 2.7.0 from nuget.org - the first published minor and the previous one - through init and upgrade, keep a team's line and a pin, build, pass their tests and take a new service with dotskit new. This also carries the line of #99 "dotskit new adds a service to a 2.7.0 solution".

Reviewed before the PR by an agent without context, two rounds: seven findings taken, then closed.

🤖 Generated with Claude Code

https://claude.ai/code/session_01Vefp3uznXHA37YYMCkUouw

…f the template, keeping the team's changes

- the merge of dotskit new, with the manifest generated by the solution's version as the base and by the tool's as the target
- a file the template moved (git diff -M between its two outputs) takes the team's changes to the new path
- the manifest's packages: updates minor, patch or none, and pinned versions in any case, written into the template's side before the merge; a pin of no package of the template is reported
- the manifest explains its fields in place with _comment_ keys, written on every write and skipped on reading
- one major version at a time, each step named from the solution's own major; a version before 2.6.1, the first on nuget.org, is refused with the notes to follow
- a version is generated with only the parameters it has, so a manifest of 2.6 that names --Agent generates
- init no longer widens the solution by its services: the template alone made the root with the first command, and the base must reproduce it
- after writing, the build's errors are listed by project; dotskit new and upgrade share the end of a command, put together in Program.cs
- tests: the package policy, moves, the vocabulary of a version, the manifest, the build errors and the refusals as unit tests; solutions of 2.6.1 and 2.7.0 from nuget.org go through init and upgrade, keep a team's line and a pin, build, pass their tests and take a new service
- docs: dotskit (EN, RU) on upgrading, the versions it takes and package versions; upgrading.md says which part of 2.7 to 2.8 stays by hand; CONTRIBUTING on the upgrade window and the template's own package policy; the roadmap marks upgrade done
@Vovanda
Vovanda merged commit cf0b035 into dev Oct 6, 2026
17 checks passed
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.

dotskit upgrade: bring a solution to the tool's version, one major version at a time

1 participant