# Git SQL
This is an experimental implementation of Git storage and operations on top of PostgreSQL.
## Why
Git is a very flexible platform for version control and content-addressable storage.
GitSQL aims to take advantage of the server-side abilities of PostgreSQL to implement
Git operations using PostgreSQL features. This is still experimental, and is not
recommended for production use.
## Installation
Install from Git:
```bash
cargo install git-sql --git https://github.com/SpinlockLabs/GitSQL.git
```
Install from [crates.io](https://crates.io):
```bash
cargo install git-sql
```
## Usage
- Create a database in PostgreSQL, such as `gitdb`.
- Create a configuration file as `gitdb.toml`:
```toml
# Repositories are specified under named tables.
[repositories.mygitrepo]
# The URL to connect to the database.
postgres-url = "postgres://127.0.0.1/gitdb"
# A path to a local repository, used to update the SQL repository.
local-path = "/path/to/my/local/repo"
# Git Server Configuration
# URL format: http://myhost:port/mygitrepo
[server]
# Binds to the given host and port.
bind = "0.0.0.0:3020"
```
- Initialize the GitSQL schema:
```bash
git-sql -c config.toml -r mygitrepo init
```
- Import the Git repository into the SQL database:
```bash
git-sql -c config.toml -r mygitrepo update
```
- Run the Git server:
```bash
git-sql -c config.toml serve
```
- Clone the repository:
```bash
git clone http://localhost:8080/mygitrepo
```