PSA: Eliminate WebRTC Subtree mirror in Chromium

198 views
Skip to first unread message

mbon...@webrtc.org

unread,
Sep 14, 2017, 5:50:10 AM9/14/17
to discuss-webrtc

TL:DR; WebRTC will move the content of the src/webrtc directory up to the src/ directory.


As part of the migration from Rietveld to Gerrit for code review, we have to eliminate the WebRTC subtree mirror (in Chromium) in order to fix the following issues:

  • We won't be able to apply WebRTC patches on Chromium trybots (which is a very useful feature, especially as we plan to have such trybots in our default trybot set). This is because PolyGerrit needs the repo in Chromium to be the same as the WebRTC repo, otherwise it won’t be able to apply the patch.

  • CLs created from src/third_party/webrtc (in Chromium) cannot be submitted to the main repo, since they're created from another repo (a Git subtree repo).

  • Git hashes from these repos are different than the ones for our main repo, making it hard to track which version is currently pinned (although this information is available in the Git footers of the mirrored commits. Example:

  • To fully automate rolling into Chromium DEPS, we wish to use the LKGR finder, but doing so is blocked on this (it needs the same revision hashes to avoid ugly hacks). See crbug.com/666726.


When will this happen?

We have been testing this migration in the last few weeks and we will do it on Friday September 15, starting at 7.30am CEST.


Why such short notice?

We have had to do an enormous amount of preparation work, and it was hard to predict when it would be done. We’re up against a deadline at the end of the month, when Chrome infra stops supporting Rietveld. Furthermore, we will have to rebase some very large and complex patches if we delay.


What do I need to do?

Hopefully this will not cause problems with ongoing CLs - Git rebase should be able to figure out the moved files and the minor modifications needed (header guards, include paths) shouldn't conflict with most normal work.


Historical Context

For a long time, WebRTC and libjingle were different repos, each pulled via Chromium DEPS file into the following locations:

  • src/third_party/webrtc

  • src/third_party/libjingle/source


Over time, it was decided to merge libjingle into WebRTC, at which point the top-level directory structure changed:

  • webrtc/ -  all WebRTC code was moved here

  • talk/ -  libjingle code was moved here


A slow migration of code from talk/ to webrtc/ then started and after years of work webrtc:4256 was closed as fixed (and after 4 more months also crbug.com/677948).


The way these directories were synced at the Subversion days of Chromium was that simply the DEPS file pointed at a subdirectory of the WebRTC repo. That's an easy solution for Subversion, but doesn't work at all for Git. So after the SVN to Git migration, each of these directories got a so-called "Git subtree mirror" setup:


This mirroring is done by a Chrome infra-powered service and happens automatically after the main repo gets a new commit submitted.


mbon...@webrtc.org

unread,
Sep 15, 2017, 1:16:03 AM9/15/17
to discuss-webrtc
This is happening now.

mbon...@webrtc.org

unread,
Sep 15, 2017, 6:57:44 AM9/15/17
to discuss-webrtc
The migration is completed, let us know if you experience any problems.

Thanks for your patience.
Reply all
Reply to author
Forward
0 new messages