[tbb-dev] Using topic branches for Tor Browser patches

Nicolas Vigier boklm at mars-attacks.org
Tue May 26 17:38:54 UTC 2015


Hello,

Currently on tor-browser.git, each Tor Browser release has a single
branch that includes all our patches. This is simple, however it makes
it difficult to test each patch individually, and see which patch is
responsible for which test failure.

For instance, the patch to add preference overrides causes many tests
to fail, probably because many tests don't expect the default
preferences to change:

  31.7.0esr pass all tests:
  https://treeherder.mozilla.org/#/jobs?repo=try&revision=5bbe47119ac0

  31.7.0esr + preference overrides patch fails many tests:
  https://treeherder.mozilla.org/#/jobs?repo=try&revision=fdc349fbbf5f


After discussing about this quickly with intrigeri last week, I have
been thinking about a different way to organize the patches: maybe we
could use one branch for each topic, and merge all those branches in a
single branch when we prepare the release.

The naming of the branches could be:

 - ${firefox_version}/base:
   the commit for the firefox version we are using.

 - ${firefox_version}/${topic_name}:
   A branch containing patch(es) on a specific topic. $topic_name can be a
   bug number and/or a short description. We can submit those branches
   to Mozilla Try to see if they break some unit tests.
 
 - ${firefox_version}/${tbb_version}/${topic_name}:
   The same as the previous one, but for a topic that we only want to
   include in a specific Tor Browser version.

 - tor-browser-${firefox_version}-${tbb_version}-1:
   The branch that we use to build Tor Browser. This branch is based on
   ${firefox_version}/base, and includes merges of all branches matching
   ${firefox_version}/[^/]* or ${firefox_version}/${tbb_version}/[^/]*.
   
As an exemple, I have converted a few patches from tor-browser-31.7.0esr-4.5-1
to this new naming in this git repository:
https://github.com/boklm/gecko-dev/branches/all

With all topic branches merged to this tor-browser-31.7.0esr-4.5-1
branch:
https://github.com/boklm/gecko-dev/commits/tor-browser-31.7.0esr-4.5-1

I also started submitting some of them to Mozilla Try:

 31.7.0esr/2874-Block-Components.interfaces-from-content:
   https://treeherder.mozilla.org/#/jobs?repo=try&revision=91cd13cf0ac7
   (some mochitest tests failing)

 31.7.0esr/2950-Make-Permissions-Manager-memory-only:
   https://treeherder.mozilla.org/#/jobs?repo=try&revision=3f8cb0c1984e
   (tbb-tests/browser_tor_bug2950.js failing)

 31.7.0esr/2949-Make-Intermediate-Cert-Store-memory-only:
   https://treeherder.mozilla.org/#/jobs?repo=try&revision=139538724d04
   (no test failing)

 31.7.0esr/3547-Block-all-plugins-except-flash:
   https://treeherder.mozilla.org/#/jobs?repo=try&revision=c75fb4685994
   (some xpcshell, mochitest, mochitest-chrome, reftest failing)

 31.7.0esr/3229-Make-content-pref-service-memory-only-clearable:
   https://treeherder.mozilla.org/#/jobs?repo=try&revision=344873ae1513
   (1 xpcshell test failing)

 31.7.0esr/TB2-Provide-an-observer-event-to-close-persistent-connections:
   https://treeherder.mozilla.org/#/jobs?repo=try&revision=93af45d5111a
   (no test failing)

 31.7.0esr/2875-Limit-device-and-system-specific-CSS-Media-Queries:
   https://treeherder.mozilla.org/#/jobs?repo=try&revision=32244f089736
   (still running at the moment)

 31.7.0esr/2872-Limit-the-number-of-fonts-per-document:
   https://treeherder.mozilla.org/#/jobs?repo=try&revision=4abfb45bba86
   (still running at the moment)


We could also have some helpers scripts to make management of all
those branches easier:

- a script to merge / list all topic branches that have not yet been
  merged into their tor-browser-${firefox_version}-${tbb_version}-1
  branch.

- a script to push / list all branches that need to be pushed for a
  firefox or tbb version to a remote git repository.

- a script to rebase all patches from a previous firefox version to a
  new firefox version.


What do you think about this idea ?

Nicolas

-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 819 bytes
Desc: not available
URL: <http://lists.torproject.org/pipermail/tbb-dev/attachments/20150526/702a48d0/attachment.sig>


More information about the tbb-dev mailing list