🪼 JellyFish
JellyFish provides an easy to use version control system, similar to git.
Install
JellyFish uses Bun as its runtime. Install bun from bun.sh.
After installing Bun, you can easily install JellyFish.
bun i -g jellyfish-scm
Features
- Quickly create a repository (
jelly init
/jelly i
) - Easily change branches (
jelly edit --checkout
/jelly e --checkout
) - Quickly scan repository for changes and stage them for commit (
jelly stage
/jelly s
) - Create commits (
jelly commit -m <message>
/jelly cm -m <message>
) - Clone repositories from a remote source (
jelly clone <source> [destination>
/jelly cl <source> [destination>
) - Pull from your remote repository quickly (
jelly upsteam
/jelly pull
/jelly up
/jelly pl
) - Push commits to your remote repository (
jelly push
/jelly ps
) - Host quick servers (
jelly web
) (Default port: 3675)
...see more commands and options with jelly -h
Todo
- Issues
- Finish Web UI
- API endpoints for push
- Issue management
Commit Example
jelly init # Create repository
touch README.md # Create README.md file
jelly edit --origin "https://example-remote-origin.com/example/example" # Set repo origin
jelly stage # Stage changes
jelly commit -m "Initial" # Create commit
jelly push # Push commit
Short Commit Example
All actions done through the JellyFish CLI can be done through shorter interfaces.
jelly i # Create repository
touch README.md # Create README.md file
jelly e -o "https://example-remote-origin.com/example/example" # Set repo origin
jelly s # Stage changes
jelly cm -m "Initial" # Create commit
jelly ps # Push commit
jellyignore.toml
Example
The jellyignore.toml
file is very similar to the .gitignore
file, but it matches files by regular expressions instead.
# This file ignores everything with the name "node_modules" (case sensitive)
[regex]
ignorelist = [
"(node_modules)"
]
This file will be created when you run jelly init
, some special files and folders will be automatically added to the file on creation.
Push Example
This example covers pushing commits to a local web server run from jelly web
.
# start the web server
jelly web
After starting the server, you must open it in the browser (localhost:3675
) and get your access token. Add this token to your localdev.toml
file with jelly edit --token <token>
jelly edit --token <token>
You can then push your changes to the server!
jelly push
File Schemas
.jelly/map.toml
-
objects
: Files (and their hashes) that exist in the current stage-
name
: File name {string} -
name_hash
: Hash of file name {string} -
parent
: Parent directory name hash {string} -
branch
: Name of branch this exists in {string} -
path
: Relative path to file from repository root {string}
-
-
branches
: All branches in the repository-
[name]
: Hash of branch name {string}
-
.jelly/jellyrepo.toml
-
repo
:-
name
: Repository name {string} -
mapBind
: Location of map file relative to jellyrepo.toml {string} -
masterBranch
:-
name
: Master branch name {string} -
hash
: Master branch name hash {string}
-
-
.jelly/localdev.toml
-
branch
: Name of the current editing branch {string} -
remotes
:-
origin
: URL of origin remote {string}
-
-
staged_changes
: List of changes {Array<[string, OBJECT_CHANGE]>}
export enum OBJECT_CHANGE {
CONTENT = "0", // content changes
CREATED = "1", // created file
DELETED = "-1", // deleted file
}
branches/[branch_name]/commits.toml
-
branch
: Hash of branch these commits belong to {string} -
commits
:-
hash
: Commit hash {string} -
changes
: List of changes, same as localdev.staged_changes {Array<[string, OBJECT_CHANGE]>} -
message
: Commit message {string}
-