[webkit-dev] WebKit Transition to Git

Ryosuke Niwa rniwa at webkit.org
Sun Oct 4 15:22:50 PDT 2020

On Sun, Oct 4, 2020 at 2:41 PM Konstantin Tokarev <annulen at yandex.ru> wrote:
> 02.10.2020, 19:46, "Jonathan Bedard" <jbedard at apple.com>:
> > Monotonic Commit Identifiers
> > Of great interest to Apple’s engineers has been retaining some kind of ordered tag we can use to refer to commits to make defending CI and bisection easier. We’ve developed a scheme for this that assigns commits an ordered identifier per-branch, outlined in https://trac.webkit.org/wiki/commit-identifiers, designed to be used alongside git hashes. These identifiers can be used in our current Subversion repository, and we would like to start using them before the project has transitions to git.
> AFAIU, this is very close to what `git describe` does: you give it git hash, it gives you new identifier consisting of 3 parts:
> <closest git tag>-<number of commits since that tag>-<abbreviated commit hash>

We don't want to be using a number from the closest tag. We need a
contiguous monotonically increasing number on the main branch.

> Note that resulting identifier can be used in all git operations which require git reference (like `git log` or `git show`).
> So, if you push git tags to main repository (maybe lightweight tags, if you are planning to have lots of them), there is no need to invent any other identifiers.
> As for bisection, git bisect works just fine when given two commit hashes.

"git bisect" is wholly inadequate for our purposes. Not only can
building between each step can take ages (15-40min depending on a
machine) even for correctness bisections, some of our performance
tests will require many hours to measure statistically significant
results. On top of that, many of our bisections can take weeks if not
months to conduct and could span hundreds of commits in between. In
some cases, we have to compare time series charts of performance data
across multiple operating systems and device classes. Furthermore, we
have to communicate all this information between different teams
working on the bisection, someone who wrote the original patch, QA
people testing various builds, etc... It's extremely important that we
have a **human readable number** which is easy to memorize and intuit
during these analyses and communications.

- R. Niwa

More information about the webkit-dev mailing list