Skip to content

mellowagain/gitarena

Repository files navigation

GitArena

GitArena is a software development platform with built-in vcs, issue tracking and code review. It is meant as a lightweight and performant alternative to the likes of GitLab and Gitea, built with self-hosting and cross-platform/cross-architecture support in mind.

Features progress

Basics

  • Git protocol support
    • HTTP(S)
    • SSH
  • Repository management
    • Create
    • Fork
    • Rename
    • Branch listing
    • Tag listing
    • Releases
      • Autogenerated changelogs from merged PRs
      • Asset upload
      • Semantic version tagging UI
  • Web-based code browser
    • Syntax-highlighted file view
    • Blame
    • View raw
    • Commit history with diffs
  • User auth
    • Username and password auth
    • SSH key management
    • Org/team model for access control
  • Merge requests
    • Open, review, approve, merge
    • Inline comments on diffs
    • Merge strategies (merge commit, squash, rebase)
  • Issue tracker
    • open/close issues
    • Labels
    • Milestones
    • Assignees
    • Kanban
  • Webhooks
  • REST API
  • Protected branches
    • Require reviews
    • status checks before merge
    • Prevent direct pushes to main

Nice to haves

  • Woodpecker CI
  • Package registry
  • Wiki per repository
  • Code search
  • OAuth/SSO
  • CLI
  • MCP
  • Email notifications
  • Dependency/vulnerability scanning hooks
  • Commit/PR cross-linking

Stretch goals

  • Federation via ForgeFed/AT Proto
  • VS Code / JetBrains IDE integration
  • Review iteration tracking: show what changed between force-pushed versions of a PR (like Gerrit's patchset model)
  • Merge queue
  • Commit signing + verification
  • Mirror/sync: bi-directional

Building

Requirements:

  • Latest Rust stable toolchain

Compiling:

$ cargo build --release

Cargo will build all required dependencies as well as GitArena itself. The resulting binary can be found in ./target/release.

Usage

In order to run GitArena, the following environment variable needs to be set:

After start GitArena will automatically create the required tables. Please edit the settings table to configure your GitArena instance and restart GitArena. In the future this will be do-able in the web ui.

Afterwards your GitArena instance will be fully set up and you can register your account. In order to access the admin panel (/admin), please set admin on your user account in the users table to true.

Logs

By default, GitArena will write logs to a file (instead of the console) when built with --release. In order to view the logs, look for a file in the logs directory ending with the current date.

Optional environment variables

  • MAX_POOL_CONNECTIONS: Max amount of connections the Postgres connection pool should keep open and ready to use.
  • DATABASE_PASSWORD_FILE: This environment variable may contain a path to a file containing the Postgres database password. In that case, the password does not need to be specified in the Postgres connection string. This is for usage with Docker secrets.

Screenshots

Repository:

Repository

Repository commits:

Commits

File view:

File

Create repository:

Create

Import repository:

Import

Login:

Login

Sign up:

Sign up

Explore:

Explore

Thank you

Mintlify

GitArena is part of the Mintlify OSS Program, meaning we receive gracious support from them in the form of a free Mintlify Pro plan (normally $300/month) to host our documentation.

About

Rust-based Software development platform with built-in vcs, issue tracking and code review

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Sponsor this project

 

Packages

 
 
 

Contributors

Languages