A software forge based on Forgejo

Every commit a layer.

Self-hosted git with everything Forgejo does, plus credit for every co-author and packages that belong to their repository. Switch in, switch back, keep your data.

acme/rocket · commit d32bbc47a8
A Damast commit page: the commit by Jonas Berg shows his co-authors Mira Stein and Lea Wolf with avatars next to his name.
Co-authors

Pair programming gets the credit it deserves.

Forgejo shows Co-authored-by trailers as plain text. Damast reads them and puts every co-author next to the author, with avatar and profile link.

  • On commit pages and in every commit list.
  • Co-authors without an account still show, with an avatar from their email.
  • Nothing to configure: write the trailer, Damast does the rest.
A commit list where each author has small co-author avatars next to their name.
Commit list: co-author avatars next to each author
Repo-bound packages

Packages belong to their repository.

In Forgejo a package belongs to the user or organisation, and only its owners can publish. In Damast it belongs to the repository it was built from, like on GitHub.

  • New packages link to their repository by themselves: from the Actions run, the repo URL in the metadata, or the name.
  • Write on the repository lets you publish. Read lets you download, even from a private organisation.
  • Actions workflows publish with their built-in token. Pull requests from forks can only read.
  • One switch per package turns it off. Existing packages keep Forgejo's rules.
The package rocket 1.4.0, published by jonas in acme/rocket and linked to that repository.
Jonas is a repo collaborator, not an org member, and still publishes
Package settings with the switch: Inherit access from the linked repository.
One switch per package
Drop-in, both ways

Same data. Same config. A way back, any time.

Damast vX.Y.Z-damast.N is built on Forgejo vX.Y.Z and follows every release. It never changes Forgejo's database schema; its extras live in separate damast_* tables.

Switch inSwap the binary

Stop Forgejo, start Damast of the same version on the same data and app.ini.

Stay currentFollows Forgejo

Every Forgejo release arrives as a pull request within a day and ships as a Damast release of the same version.

Switch backStart Forgejo again

Same version, same data. Forgejo ignores the extra tables, and packages keep their repository link.

FeatureForgejoDamast
Co-authored-by trailersPlain text in the messageShown with avatar and link on every commit
Who can publish a packageOwners of the user or organisationAlso anyone with write on the linked repository
Who can download a packageAnyone who can see the user or organisationAlso anyone with read on the linked repository
Actions tokenPublishes to the ownerPublishes and links to its own repository
Everything elseIdentical
CLI

mast, the command-line companion.

mast is a soft fork of forgejo-cli (fj) and follows its releases the same way. Every fj command works, and it shares fj's logins, so you can use both side by side.

Damast-specific commands are next on the list.

# install from source
$ cargo install --git https://github.com/damast-dev/mast
$ mast version
mast v0.7.0
$ mast auth login
$ mast whoami
Get started

Build it, run it.

Prebuilt releases start with v17.0.1-damast.1. Until then, build from source like Forgejo. The Forgejo admin docs apply to Damast unchanged.

$ git clone https://github.com/damast-dev/damast && cd damast
$ TAGS="bindata sqlite sqlite_unlock_notify" make build
$ ./gitea web   # same binary interface as Forgejo