## Code Review for Git

Gerrit provides web based code review and repository management for
the [Git][git] version control system.

[git]: http://git-scm.com/

|||---||| 2,2,2,3,:1,2
![diffy the kung fu review cuckoo](images/diffy100.png)

### Discuss code

and boost your team's code fu by talking about specifics.

### Serve Git

as an integrated experience within the larger code review flow.

### Manage workflows

with deeply integrated and delegatable access controls.

*** promo

## Download

[Gerrit 2.13.4][download]

***

|||---|||

## Discuss code

Read old and new versions of files with syntax highlighting and
colored differences.  Discuss specific sections with others to make
the right changes.

![side-by-side compare](images/sbs.png)

## Manage and serve Git repositories

Gerrit includes Git-enabled SSH and HTTPS servers compatible with all
Git clients.  Simplify management by hosting many Git repositories
together.

|||---||| 6,2,4

#### Navigate projects

![project list](images/project-list.png)

#### Control access

![access panel](images/access.png)

#### Update branches

![branch list](images/branches.png)
|||---|||

Schedule [git gc] over all managed repositories and [replicate] to
geographical mirrors for latency reduction and backup servers for hot
spare redundancy.

## Extensible through plugins

Gerrit Code Review can be extended and further customized by installing
[server-side plugins][plugins]. Source code for additional plugins
can be found through the [project listing](https://gerrit.googlesource.com/plugins/).

## Get in touch

|||---||| 2,2,2,:4,2

### Mailing list

[repo-discuss](https://groups.google.com/group/repo-discuss)

### Social media

[![Google+](https://ssl.gstatic.com/images/icons/gplus-32.png)](https://plus.google.com/communities/111271594706618791655)

### IRC

[freenode](https://freenode.net/) #gerrit

[Channel log](http://echelog.com/logs/browse/gerrit/)

|||---|||

[download]: /releases/2.13.md
[git gc]: https://gerrit-documentation.storage.googleapis.com/Documentation/2.13.4/config-gerrit.html#gc
[plugins]: https://gerrit-documentation.storage.googleapis.com/Documentation/2.13.4/config-plugins.html
[replicate]: https://gerrit.googlesource.com/plugins/replication/+doc/master/src/main/resources/Documentation/config.md
