Clone this repo:

Branches

  1. 4d540a5 Some equal git branches are more equal than others by Anthony Polito · 6 days ago master
  2. 89a9ed7 Adjust to changes in Gerrit core by Joerg Zieren · 2 months ago
  3. f0458b2 add support for treating 2 parent branches as 'equal' by Anthony Polito · 3 months ago
  4. c14c6e4 add golden path tests to PossitionFooter by Anthony Polito · 3 months ago
  5. a095f7d Format Java files with google-java-format by David Pursehouse · 7 months ago

Git Numberer Gerrit Plugin

This plugin ensures commit footers in a repository comply with rules of Git number footers for Chromium and is part of the Git Numberer for Chromium system.

Summary

For every new commit C that is about to be pushed with git push or landed using Gerrit API/UI (called merged in Gerrit), this plugin ensures:

  1. commit C having exactly at most one parent, namely commit P.
  2. commit P contains footer Cr-Commit-Position: refs/foo/bar@{#X}, where X is positive integer.
  3. commit C contains footer Cr-Commit-Position: refs/foo/bar@{#Y} such that Y = X+1.

There is more to it in the doc Git number footers for Chromium.

Plugin structure

This plugin consists of verification and generation parts, each working independently of each other, but share common libraries. While each part can be enabled on specific refs independently of another, it's recommended that verifier is enabled on all refs on which generation is enabled.

Verification

Safety comes first. This plugin installs a verifier that ensures that all new commits on enabled refs comply with the numbering scheme. The new commits may be created as a result of landing (merging) a Gerrit changelist, or as a result of a git push operation.

NOTE This is a Gerrit plugin and thus it only works for operations done through Gerrit. Thus, this plugin won‘t protect from bad commits being pushed by someone with direct access to Git repository filesystem on Gerrit’s server. Google's deployment of Gerrit internally calls such access _direct push. Such access could be useful to administrators when pushing humongous histories as in during Chromium + Blink merge, but then administrators are responsible for verification.

Generation

TODO(Tandrii): implement and document.

See also:

  • git cl and its fork in Commit Queue which generate footers for Rietveld issues.

Development

Get Ready, only once.

Follow this general Gerrit guide first to get basic set up correctly.

Code/Build/Test

Checkout (or symlink) this repo into plugins/git-numberer directory inside primary Gerrit checkout.

bazel build git-numberer
bazel test git_numberer_tests

References