## 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.14][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)

[![Twitter](https://www.gerritforge.com/images/Twitter_Logo_Blue.png)](https://twitter.com/gerritreview)

### IRC

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

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

|||---|||

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