Skip to content

Renovate

In the ModernLeft Org on Forgjo, we use renovate for dependancy update checking. Here's the basics to manually test and merge.

Fetch, checkout, and rebase the branch

git fetch -u origin renovate/major-eslint-monorepo:renovate/major-eslint-monorepo
git switch renovate/major-eslint-monorepo
git rebase main # more commonly development

Run tests, we usually have a makefile with targets for this.

make ci
# or
make test
# or
make build
# etc
git switch main
git merge --no-edit renovate/major-eslint-monorepo
git push

At this point you can manually close the PR with manual merge, or wait for renovate to close it on its next run.

Resolving a pnpm-lock.yaml conflict during rebase

When the rebase in step one stops on a pnpm-lock.yaml conflict, don't hand-edit the lockfile — it's generated. Resolve package.json, then let pnpm regenerate the lock.

# 1. Make sure you're on the renovate branch and it's clean
git switch renovate/eslint-monorepo
git status                                 # expect: clean tree, up to date with origin

# 2. Start the rebase onto development's tip
git rebase development                     # stops on the pnpm-lock.yaml conflict

# 3. Resolve the lockfile (NEVER hand-edit it — it's generated)
git checkout --theirs -- pnpm-lock.yaml    # take renovate's side as the base; --theirs = commit being replayed
pnpm install --lockfile-only               # regenerate lockfile to match the already-resolved package.json

# 4. Sanity-check before continuing (optional)
rg -c '^(<<<<<<<|=======|>>>>>>>)' pnpm-lock.yaml   # should print nothing = no conflict markers left

# 5. Stage the resolved lockfile and finish the rebase
git add pnpm-lock.yaml
git rebase --continue                      # opens editor for commit msg; save & close to finish

# 6. Verify result, then force-push (rebase rewrote history)
git status                                 # expect: clean, diverged from origin (that's normal)
git push --force-with-lease origin renovate/eslint-monorepo

If it goes sideways: git rebase --abort returns you to the exact pre-rebase state.