crosswalk-project/crosswalk — pull request #2109 by rakuco (2014-06-19 15:35:53+00:00)
Title: Start fetching all dependencies from git.

Chromium is soon going to switch its canonical source repository to git
and we would have to follow suit anyway. In addition, this makes it
easier to cache directories across machines and, in some cases, the
network communication is faster and more reliable when using git.

The implementation is quite simple once one understands how Crosswalk's
checkout process currently works:

* `.gclient` has `src/xwalk` and points to Crosswalk's git repository.

* A hook in Crosswalk's `DEPS` parses `.DEPS.xwalk` and creates
`.gclient-xwalk`, which points to a Chromium release's `DEPS` file and
overrides some of its entries (such as `src`, `src/v8` etc) so that our
forks are used instead of the upstream repositories.

* Another hook then runs `gclient sync` with `.gclient-xwalk`, effectively
downloading all other repositories used by Crosswalk and running
whatever hooks are in the Chromium release's `DEPS` file.

The problem is that this Chromium release's `DEPS` file is stored in
Subversion and all the repositories it points to are also in Subversion.

We have since started rebasing our chromium-crosswalk repositories on
top of a special tagged commit in Chromium's git mirror that contains
the right `DEPS` and `.DEPS.git` entries for a given release (as they are
not regularly updated in the Subversion branches).

With that done, we can now make Crosswalk's checkout process do the
following instead:

* `.gclient` has `src/xwalk` and points to crosswalk's git repository.

* There is no `.DEPS.xwalk` anymore. Instead, the repositories that used
to be there are now in Crosswalk's `DEPS` file and are automatically
checked out and synced after Crosswalk itself is checked out and
synced.

* A hook in Crosswalk's `DEPS` parses `DEPS` and creates `.gclient-xwalk`,
which does not point to any URL and is now used only to check out
additional Chromium repositories from chromium-crosswalk's `.DEPS.git`.
`.gclient-xwalk` has overrides for entries such as `src/` and `src/v8` so
that our forks, which have already been checked out in the step above,
are not in conflict with Chromium's upstream entries or are synced
again.

BUG=XWALK-1894