To facilitate tracking the upstream changes:
- Added a git remote called "upstream" which points at the github repo,
- Added a local branch called "github/main" to track the "upstream" remote's "main" branch
To pull changes from the upstream project, run:
git checkout upstream/main
git pull
git push origin
git pull upstream --tags --force
git push origin --tags --force
git checkout merge/upstream-main
git merge main
git merge upstream/main
# See "Merge Strategy" instructions below
# ...resolve merge conflicts...
git add --all
git commit --amend --no-edit
# Create new upstream-## tag
git tag $(git tag --sort v:refname -l 'upstream-*' | tail -n 1 | awk '{ gsub(/upstream-/, ""); printf "upstream-%02d\n", $1 + 1 }')
git push
git push --tags
Where conflicts arise, compare OUR changes since last upstream merge to THEIR changes since last upstream merge:
- Diff of OUR changes since previous merge (replacing
upstream-{##}
with the previous merge tag number):- {bitbucket_url}/compare/diff?sourceBranch=main&targetBranch=tags/upstream-{##}
- Diff of THEIR changes since previous merge (replacing
upstream-{##}
with the previous merge tag number):- {bitbucket_url}/compare/diff?sourceBranch=tags/nightly&targetBranch=tags/upstream-{##}
NOTE: Always discard lockfile changes. Complete the merge, then see "Package Changes" below for package dependency update strategy.
Ensure updates to the python pyproject.toml
and npm package.json
packages are appropriately made. Oftentimes OUR updates will incorrectly clobber THEIR updates, resulting in outdated package versions persisting across the upstream merge. Don't let this happen.
- Compare THEIR
pyproject.toml
andpackage.json
diffs to OUR diffs (see above). Whichever has the latest package version shall prevail. - Discard lockfile changes if merge conflicts exist. Update python
uv install
and npmnpm install
packages.