Introducing guts, a simple tool to manage and create code repositories. (Essentially just a simpler version of git)
Guts is split into 2 programs, the server and the client. The server allows you to manage repositories from a command line interface, and the client allows you to connect to a server and manage repositories remotely.
The root directory holds the guts.c
file, which is the entry point. There are different directories for the server and client, along with included programs and libraries.
All the code is written in C, with some bash scripts to help with installation and updating. You can find all code in the ./guts-core
directory.
- Create and manage repositories
- Server mode to manage repositories from a command line interface
- Client mode to connect to a server and manage repositories remotely
- Database to store all repository and user information
- User authentication
- Admin privileges
- Backup system
To install guts simply run the following command:
curl -s https://raw.githubusercontent.com/colack/guts/install.sh | bash
--version, -v
Print version information--help, -h
Print a help message--config, -c
Specify a configuration file--debug, -d
Enable debug mode--quiet, -q
Suppress all output--update, -u
Update the program--uninstall, -U
Uninstall the program--fix-install, -f
Fix the installation
The configuration file is a JSON file that contains the following options:
repo
: The base repository for the whole programdirectory
: Directory of all repositoriesserver
: The server mode for the programport
: The port for the server modedefault
: The default repository options for creating new repositories
The repository options are as follows:
name
: The name of the repositorydescription
: The description of the repositoryfiles
: The files in the repositorycommits
: The commits in the repositorybranches
: The branches in the repositorytags
: The tags in the repository
create <name>
: Create a new repositorydelete <name>
: Delete a repositorylist
: List all repositoriesadd <name> <file>
: Add a file to a repositoryremove <name> <file>
: Remove a file from a repositorycommit <name>
: Commit changes to a repositorypush <name>
: Push changes to a repositorypull <name>
: Pull changes from a repositorystatus <name>
: Get the status of a repositorymove <name> <newname>
: Move a repository to a new nameclone <name>
: Clone a repositoryrename <name> <newname>
: Rename a repositorylog <name>
: Get the log of a repositoryhistory <name>
: Get the history of a repository
The server mode allows you to manage repositories from a command line interface. Clients can connect to the server and manage repositories remotely. You can connect to the server by running the following command:
guts connect <server> <port>
Note: Servers will require username and password authentication.
The server mode also comes with a database that stores all the repositories and their information, along with user information. The database is a 2 file system that contains the following files:
users.json
: Contains all the user informationrepositories.json
: Contains all the repository information
users
: List all usersadduser <username>
: Add a userremoveuser <username>
: Remove a userchangepassword <username> <password>
: Change a user's passworduser <username>
: Get a user's informationban <username>
: Ban a userupdate
: Update the server (requires admin privileges and a restart of the server)restart
: Restart the server (requires admin privileges)stop
: Stop the server (requires admin privileges)quit
: Quit the server (requires admin privileges)login <username> <password>
: Login to the serverbackup
: Backup all the server data along with repositories and user information. (Requires admin privileges)
The client mode allows you to manage repositories from a command line interface. You can connect to a server by running the following command:
guts connect <server> <port>
connect <server> <port>
: Connect to a serverlogin <username> <password>
: Login to the serverregister <username> <password>
: Register a new user (You will have to have your account approved by an admin.)create <name>
: Create a new repositorydelete <name>
: Delete a repositorylist
: List all repositoriesadd <name> <file>
: Add a file to a repositoryremove <name> <file>
: Remove a file from a repositorycommit <name>
: Commit changes to a repositorypush <name>
: Push changes to a repositorypull <name>
: Pull changes from a repositorystatus <name>
: Get the status of a repositorymove <name> <newname>
: Move a repository to a new nameclone <name>
: Clone a repositoryrename <name> <newname>
: Rename a repositorylog <name>
: Get the log of a repositoryhistory <name>
: Get the history of a repositoryquit
: Quit the server
This whole program is still in development and is not yet ready for production. Please use at your own risk.
This project is licensed under the GPL v3 License - see the LICENSE file for details