Like cgit, but in rust. Forked from rgit.
  • Rust 86.2%
  • HTML 9.7%
  • SCSS 3.8%
  • Dockerfile 0.2%
  • Makefile 0.1%
Find a file
2026-01-08 10:10:44 -06:00
.cargo Expose tokio-console 2024-05-12 11:03:58 +01:00
src router: Offer up summary page also at repo/summary to mimic cgit; #23 2026-01-08 10:10:44 -06:00
statics theme: Tweak colors on dark mode, add experimental footer 2025-12-12 13:49:10 -06:00
templates commit.body: Make links clickable in web interface 2025-12-15 15:05:35 -06:00
themes Move from syntect to tree-sitter 2024-09-29 04:07:03 +04:00
tree-sitter-grammar-repository Update to Rust 2024 Edition 2025-05-25 18:38:05 +08:00
.dockerignore Add installation instructions 2023-08-14 14:13:05 +01:00
.gitignore Add flake.nix 2022-12-04 20:29:29 +00:00
build.rs rebrand/cleanup: Forking under a new name. gitore 2025-11-21 16:13:14 -06:00
Cargo.lock gitore: Bump version to 0.2.3 2026-01-02 14:28:22 -06:00
Cargo.toml gitore: Bump version to 0.2.3 2026-01-02 14:28:22 -06:00
deny.toml Update dependencies 2025-04-08 02:13:37 +07:00
docker-compose.yml rebrand/cleanup: Forking under a new name. gitore 2025-11-21 16:13:14 -06:00
Dockerfile container: Switch to rust / debian base 2025-11-22 08:04:23 -06:00
gitore.png README: reduce logo size 2025-11-21 16:17:57 -06:00
LICENSE license: Relicense to MIT from WTFPL 2025-11-25 12:47:39 -06:00
Makefile version: Bump to 0.2.1 2025-12-12 14:01:07 -06:00
README.md README: A few basic cleanups 2025-12-15 15:29:36 -06:00
rustfmt.toml Split repo methods into their own modules 2022-07-23 14:14:56 +01:00
taplo.toml Move to crane 2024-09-28 15:00:37 +04:00

gitore

gitore

Introduction

A gitweb/cgit-like interface for the modern age. Written in Rust using Axum, gitoxide, Askama and RocksDB.

Includes a dark mode for late night committing.

Table of Contents

Features

  • Efficient Metadata Storage
    RocksDB is used to store all metadata about a repository, including commits, branches, and tags. Metadata is reindexed, and the reindex interval is configurable (default: every 5 minutes), resulting in up to 97% faster load times for large repositories.

  • On-Demand Loading
    Files, trees, and diffs are loaded using gitoxide directly upon request. A small in-memory cache is included for rendered READMEs and diffs, enhancing performance.

  • Dark Mode Support
    Enjoy a dark mode for late-night committing, providing a visually comfortable experience during extended coding sessions.

Getting Started

Before you begin, ensure that you have the Rust toolchain and Cargo installed. If you haven't installed them yet, you can do so by following the instructions provided on the official Rust website:

Once you have Rust and Cargo installed, you can proceed with setting up and running the project.

Note: This software is designed to work exclusively with bare Git repositories. Make sure to set up bare repositories beforehand by following the Git on the Server documentation.

Usage

To get up and running quickly, run gitore with the following:

gitore -s /path/to/my-bare-repos -d /tmp/gitore-cache.db

Notes:

  • Repository indexing is recursive.
  • The database is quick to generate, so this can be pointed to temporary storage.

Configuration

Repository Description

To set a repository description, edit the file named description inside the bare git repository. Add your desired description text to this file.

Repository Owner

To assign an owner to a repository, edit the file named config inside the bare git repository and include the following content:

[gitweb]
    owner = "Al Gorithm"

Replace Al Gorithm with the desired owner's name.

Docker

Running gitore in Docker is straightforward. Follow these steps, ensuring that your repository directory is correctly mounted:

docker run --mount type=bind,source=/path/to/my-bare-repos,target=/git \
  --user $UID:$GID \
  -e SCAN_PATH=/git -e DB_STORE=/tmp/repo.db \
  -it codeberg.org/kallisti5/gitore:latest

Note: Replace $UID and $GID with the UID and GID of the user that owns the directory containing your repositories. If these values are incorrect, errors will occur. Learn how to find the UID of a user here.

Contributing

Pull requests are welcome

License

  • gitore is licensed under the MIT.
  • gitore is originally based on rgit, released under the WTFPL
    • Per the terms of the WTFPL license, gitore was relicensed under the more well known MIT.

Troubleshooting

Cloning Repositories

Repository not exported

Symptom: When attempting to clone repositories via HTTPS, you encounter the error message:

Git returned an error: Repository not exported

Solution: Create a file named git-daemon-export-ok in the bare git repository. This file signals to the git daemon that the repository is exportable.

Launching the Application

...is not owned by the current user

Symptom: When launching the application, you receive the error message:

repository path '/git/path/to/my/repository.git/' is not owned by the current user

Solution: Ensure that the user launching gitore or the Docker container has the same permissions as the user that owns the repositories directory.

Application Usage

Newly initialized repositories do not appear

Symptom: When using the application, a newly initialized bare repository without commits does not appear in the list.

Solution: Run the following command inside the repository to initialize it:

git pack-refs --all

Alternatively, push a commit with at least one file to the repository. This will also make the repository appear in the list.