jellyfish-scm

0.0.9 • Public • Published

🪼 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}

Readme

Keywords

Package Sidebar

Install

npm i jellyfish-scm

Weekly Downloads

0

Version

0.0.9

License

MIT

Unpacked Size

131 kB

Total Files

36

Last publish

Collaborators

  • hkau