Creating the Legacy Branch
Learn how to set up a branch for the can-* project you are interested in updating.
CanJS projects should be set up with a branch named <major version>.x-legacy that can be used for making changes compatible with CanJS 3.x. For example, if canjs@3 depends on can-unicorn@3.5.3, there should be a 3.x-legacy branch for can-unicorn. If this branch does not exist yet, you can use the steps below to create it.
Note: this only applies to projects that bumped their major versions between
canjs@3andcanjs@4. Ifcanjs@3andcanjs@4depend on the same major version of the project you're working on, you can follow the contributing guidelines at canjs.com.
Find the latest tag
The new "legacy" branch should not be created from the master branch since it will contain changes in the new major version. To create a branch for the previous major version, you can use its git tag.
To see the available tags, run this command from the git directory:
get fetch --tags
git tag
This will show a long list with entries like v3.5.2. You will use the final piece of this in the next step.
Create the branch
Our release scripts create the tag on the release branch, so we actually want to use the first parent of the tag to create our new branch. To do this, we will append ^1 to the version number found in the previous step.
To create the new branch and check it out, run this command:
git checkout -b 3.x-legacy v3.5.2^1
Update release scripts
There are a few changes that need to be made to the release scripts for legacy branches:
Remove unneeded scripts
There is no need for major and pre scripts in legacy branches. These can be deleted.
Prevent the postpublish branch from switching back to the master branch
The postpublish (or postversion in repos that were never corrected) has something like this:
&& get checkout master &&
This should be changed so that it switches back to the 3.x-legacy branch instead:
&& git checkout - &&
Make sure the package is published to the 3.x-legacy tag in npm instead of the latest tag
In the release:patch and release:minor script, the npm publish commands should be changed so that they do not overwrite the latest tag when publishing to NPM:
"release:patch": "npm version patch && npm publish --tag 3.x-legacy",
"release:minor": "npm version minor && npm publish --tag 3.x-legacy",