Skip to content

Updating from upstream Firefox

David K. edited this page Aug 8, 2025 · 6 revisions

This page describes the process to update the project Foxhound with upstream Firefox.

Project Foxhound is branched from the Firefox release branch.

Note that this is an expert task and requires a good understanding of the codebase.

Here are the update steps:

Clone Repositories Locally

Create a fork of the foxhound repo:

git clone git@github.com:SAP/project-foxhound.git

Change into the freshly checked out repo:

cd project-foxhound

Add the firefox upstream repository as a remote:

git add remote mozilla https://github.com/mozilla/gecko-dev.git
git fetch mozilla 

Checkout the gecko release branch:

git checkout -b firefox-upstream mozilla/release

(Optional) Update firefox branch on Foxhound

Push the firefox release branch to GitHub:

git push origin HEAD:firefox-upstream

Prepare Merge branches

Get your branches ready for merging. First create a new branch to do the merging:

git checkout -b merge-upstream origin/main

Now do the merge:

git merge firefox-upstream

Fix Merge conflicts

It is likely that there will be lots of merge conflicts, which need to be fixed. This is a tricky task which needs deep knowledge of the code base to make sure nothing gets broken. Once the conflicts have been fixed, commit to the local merge branch. Now check locally that everything builds and starts without crashes.

Push to GitHub

Push your update to GitHub:

git push origin HEAD:upstream-merge

And then open a pull request! Thanks for contributing!

Versioning

To find out which commits correspond to a certain Firefox commit, check here:

Another way to find a commit corresponding to a particular verison:

git log --author="Mozilla Releng Treescript" | grep -B 5 105_.*_RELEASE  | head

To find out which commits are used by Playwright, check here: https://github.com/microsoft/playwright/commits/main/browser_patches/firefox/UPSTREAM_CONFIG.sh

Updating to a Playwright version

This guide uses Playwright 1.53 as an example

  1. Check out the current main branch
git switch main
git pull
  1. Create a merge branch
git switch -c playwright-1.53
  1. Add Mozilla remote and fetch commits
git remote add mozilla https://github.com/mozilla/gecko-dev.git
git fetch mozilla
  1. Create a branch pointing to the upstream commit
git switch -c upstream-merge-pw153
git reset --hard 9cbfae27052e4aaeb064d2d08e7e869f31ee4288
  1. Now the merge, aka the fun, starts
git switch playwright-1.53
git merge upstream-merge-pw153

Clone this wiki locally