- Rust 94.6%
- Shell 5%
- Dockerfile 0.4%
[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