# Gitiles - A simple JGit repository browser

Gitiles is a simple repository browser for Git repositories, built on JGit. Its
guiding principle is simplicity: it has no formal access controls, no write
access, no fancy Javascript, etc.

Gitiles automatically renders `*.md` Markdown files into HTML for simplified
documentation. Refer to the [Markdown documentation](/Documentation/markdown.md)
for details.

## Configuration

Gitiles is configurable in a git-style configuration file named
`gitiles.config`. Refer to the [configuration documentation](/Documentation/config.md)
for details.

## Bugs

Use the [issue tracker at github](https://github.com/google/gitiles/issues) to
file bugs.

## Contributing to Gitiles

Please refer to the [Developer Guide](/Documentation/developer-guide.md).
