1
0
Fork
You've already forked gitguild
0
Git Server with FS architecture for GG unix collaboration
  • Rust 94.6%
  • Shell 5%
  • Dockerfile 0.4%
2025年08月26日 10:55:19 +01:00
.cargo all makefile is not gtasks except release script 2025年08月24日 16:11:49 +01:00
assets fix output on giguild_cmd and typo on config 2025年08月24日 20:19:44 +01:00
gconfig system files included in install / pod cache works for sudo 2025年08月24日 17:28:17 +01:00
ggate release: readme update gitguild@0.4.1 gtask@0.3.1 ggate@0.7.1 2025年08月26日 10:55:19 +01:00
gguild update readme 2025年08月25日 13:49:25 +01:00
glogger big refactor to not make xtask weird 2025年08月07日 11:24:48 +01:00
gsystem fix: config path installing 2025年08月24日 18:25:24 +01:00
gtask release: readme update gitguild@0.4.1 gtask@0.3.1 ggate@0.7.1 2025年08月26日 10:55:19 +01:00
scripts refactor ggate clean main 2025年08月07日 10:58:33 +01:00
tests system files included in install / pod cache works for sudo 2025年08月24日 17:28:17 +01:00
.gitignore some refactor and stuff for mock 2025年07月26日 23:24:03 +01:00
build.rs makefile and order dependencies on worskpace 2025年07月25日 18:29:09 +01:00
Cargo.lock release: readme update gitguild@0.4.1 gtask@0.3.1 ggate@0.7.1 2025年08月26日 10:55:19 +01:00
Cargo.toml release: readme update gitguild@0.4.1 gtask@0.3.1 ggate@0.7.1 2025年08月26日 10:55:19 +01:00
LICENSE full restructure like rustaceans do 2025年07月22日 19:06:32 +01:00
README.md release: readme update gitguild@0.4.1 gtask@0.3.1 ggate@0.7.1 2025年08月26日 10:55:19 +01:00

[GG] the git guild (alpha)

an unixy ssh cli based git server with superpowers (wip)

gitguild is a just another git server, but not exactly like other git servers. It does the minimum, in the sense that it doesn't try to replace any unix tool. Where other git servers use big databases and code to handle users, groups, actions and repositories, we use unix users, groups, files and permissions, keeping the magic to a minimum.

It works with unix, not against it, so much that if you decide you want to uninstall it, you will still have a perfectly valid old school git server that you can access with ssh user@server and a login shell.

It also aims to extend this to its limits using the tools we all know and love, from within rust and outisde of it, to provide as much functionality while being as close to metal as possible. All of this without leaving the terminal, so you can say GG (WP) to yourself at the end of your day ;)




Collaboration and contributions are wellcome! It's a work in progress and I'm not that knowledgeable of unix and rust as I'd like, so even just comments and proposals will be appreciated :)




installation


You should make sure that you can use cargo as root / with sudo.

git clone https://codeberg.org/javlocan/gitguild.git && cd gitguild
sudo cargo gg install

For testing, partial installation, or just to know more about other xtasks, refer to gtask crate.



usage

First of all, we'll need a user. After producing a key pair and making the public one available to the administrator, he should run a command like this.

# with default configuration
/opt/gg/bin/ggate register --username <username> --public-key <a_valid_ssh_public_key*>

Refer to ggate for more information.

After this, it's just as easy as quering by ssh from the client.



You can use any git command, or just a plan ssh command to read the help and navigate from there. You're invited to explore, as the cli will be changing a lot in the near future as we add functionality :)

[friend@local ~]$ git clone gg@server:/friend/repo.git
Cloning into 'repo'...
fatal: 'repo.git' does not appear to be a git repository
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.

And then:

[friend@local ~]$ ssh -T gg@server
┌――――――――――――――――――――――――――――――――――――――――――――――┐
│ hello friend ! │
│ <=== gguild v0.4.0 ===> │
│ the GitGuild project │
├――――――――――――――――――――――――――――――――――――――――――――――┤
│ Usage: ssh -T gg@server <COMMAND> │
└――――――――――――――――――――――――――――――――――――――――――――――┘
 Commands:
 repo Here you can handle your
 repositories. More info on the
 subcommand help
 hook So much hook stuff - gotta try it -
 foh sure
 Options:
 -h, --help Print help
 -V, --version Print version

Let's check:

[friend@local ~]$ ssh -T gg@server repo ls
----------------------------------------
no repos yet!
----------------------------------------



usage (without ggate)

WIP



license

This project is licensed under AGPL-3. Full information in the LICENSE file.



roadmap

  • do the thing
  • start wondering again about what's next
  • do this readme
  • start with this part
  • finish building the gate
  • start building the gate