Changes to our Git infrastructure

Thiago Macieira thiago at
Sat Jan 3 11:07:30 GMT 2015

For Gerrit:

> - Code Reviews:
>   - CLI client to make changes to the code review system and to manage
> the review (including retrieving the commits/patches)

Check. It's ssh host gerrit <subcommand>

>     Client should have good documentation.
>   - System should automatically set the CC / Reviewers / etc for a
> review rather than the submitter needing to know who to set.


Also, from experience with Tizen's Gerrit: if the automatic list has more than 
3 people, all reviews stop getting done since everyone will be overwhelmed by 
reviews and they will thinki "it's someone else's problem on this one".

>   - Changes should be shown per-commit.


>   - Updates to reviews should leave prior reviews intact.


>   - Patches should be readable, commentable on line by line.


>   - Proposed changes are vetted by the CI system (compilability, tests,
> etc).

Check. The most common use is to run before merging into the official tree; Qt 
is the only project I know that does it after.

>  - Ability to accept the changes through the code review system


>   - Can mark a review as Bad (Don't Ship This) / Okay (Fine with it
> going in) / Good (Ship It)

Check. And you can change at will, add more categories, roles, etc.

>   - Can determine whether the review was by someone with commit rights.

Check. Not obvious, but it is doable, since you can look up people's group 
memberships. Might make a nicer feature to list the group(s) they're member of 
in the UI.

>   - Can produce a list of review requests given a certain set of
> criteria easily (preferrably savable)

Vague requirement without knowing what criteria were in mind here. So I'm 
going to go and say "check" since it can look up the criteria I want.

>   - Developers can tweak proposed changes easily before they are
> landed without the involvement of the submitter.

Check, you can push a new commit with the same Change-Id.

> - Post Commit Review:
>   - Be able to comment on reviews, other than by replying to a mail on
> kde-commits


> - Project Management:
>   - Coherent and Performant

It's Java, but unlike Jenkins, we don't seem to have had problems with it for 

>   - One canonical place to get the desired information (no more duplication)

Vague requirement.

> - Can either be links to elsewhere or directly hosted by the system 


> -
> Covers items like documentation (wiki, api), bug tracking, task boards, CI,
> code browsing and reviews, etc.

Vague. Assuming "items like documentation ..." are in Git, everything works.

> - Repository Hosting:
>   - Strong case has been made for retaining scratch repositories.

Out of scope, needs separate website and tools.

>   - A weaker case exists for clone repositories - making them more
> nice to have than critical.

Out of scope, needs separate website and tools.

Though it might be possible with the command-line, just not the web UI. I need 
to investigate.

>   - Anongit propagation should be within 1 minute.

Totally out of scope.

> - Overall: Sensible email notifications

Check, requires modifications from the Qt Project, since the default email 
notifications are not sensible.

> - Overall: Capable web APIs for the system as a whole


> There are also a couple of items which come from sysadmin, to make
> things easier for us in the long run:
> - Supported well:
>   Upstream should be stable with a viable future.
>   We should also be able to build a relationship with one or more
> developers who authored/maintain the application.
>   This is helpful in obtaining assistance should it be necessary and
> assists us in getting additions upstreamed.

Check. Dozens of projects use Gerrit.

> - Integrated:
>   A single application which handles everything will always be able to
> offer a better and more coherent experience than several applications
> we have connected to each other.
>   There is also a lower maintenance burden from an integrated
> application, as it is one piece of software to update - not 3 or 4.

Not check, since Gerrit alone will not correspond to KDE's desires (project 
creation, scratch clones, etc.)

> - Care about compatibility:
>   Upstream should have an interest in stable interfaces, both
> externally facing (Web APIs) and internal (application plugins, etc)
>   As the recent Dr Konqi problems have demonstrated, upstreams which
> act without regard for backwards compatibility can introduce
> significant problems for us.


> - Scalable:
>   The applications which make up our infrastructure need to be able to
> handle the demands we place on them without consuming resources
> unnecessarily.

I understand it is, but you'll have to speak to other sysadmins.

Thiago Macieira - thiago (AT) - thiago (AT)
   Software Architect - Intel Open Source Technology Center
      PGP/GPG: 0x6EF45358; fingerprint:
      E067 918B B660 DBD1 105C  966C 33F5 F005 6EF4 5358

More information about the kde-core-devel mailing list