got

package module
v0.0.4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 21, 2022 License: GPL-3.0 Imports: 4 Imported by: 0

README

Got

Like Git, but with an 'o'

Got is version control, with a model similar to Git's. It provides end-to-end encryption and uses an improved data structure with good support for large files and directories.

Features/Roadmap

  • Content-Defined chunking of large files into blobs with a maximum size.
  • E2E encryption. Branch names, directory names, file names, and file sizes can all be hidden from remote repositories.
  • Efficiently add/remove large files and directories to/from existing filesystems.
  • Stage changes with add, rm, put, and discard commands.
  • Inspect branch state with cat and ls.
  • Print and change the active branch with active command.
  • Commit changes, with commit.
  • Create, delete, and list branches with branch commands.
  • Copy one branch state to another with sync.
  • Share repositories over INET256 using serve command.
  • Share repositories using QUIC with the serve-quic command.
  • Branch level access control using ACL defined in a .got/policy file.
  • Efficiently pack many small files into fewer blobs.
  • Checkout the head of a branch to the working directory.
  • Merge 2 branches.

Getting Started

Either download a prebuilt binary or build one from source.

Then initialize a repository in the current working directory. Make sure you cd to where you want the repository.

$ got init

Contributing

To run the tests:

$ make test

Installs to $GOPATH/bin with make. If that isn't on your path, just copy the executable from there to wherever you want.

$ make install

To build release binaries

TAG=v0.0.x make build

Where TAG is an environment variable which should be set to the release version, or the Git hash of the source used for the build. The release binaries will be under the out directory.

Got in Action

Got importing a 3GB file.

$ got add large_file.dat
[1.608s]
  [1.564s] large_file.dat data_in=(1.24GB Δ=799.35MB/s)
    [1.564s] worker-0 blobs_in=(182blobs Δ=117.26blobs/s), data_in=(157.09MB Δ=101.21MB/s)
    [1.564s] worker-1 blobs_in=(197blobs Δ=127.43blobs/s), data_in=(158.19MB Δ=102.33MB/s)
    [1.564s] worker-2 blobs_in=(181blobs Δ=116.50blobs/s), data_in=(154.83MB Δ=99.66MB/s)
    [1.564s] worker-3 blobs_in=(172blobs Δ=112.63blobs/s), data_in=(154.01MB Δ=100.85MB/s)
    [1.564s] worker-4 blobs_in=(179blobs Δ=116.82blobs/s), data_in=(157.34MB Δ=102.68MB/s)
    [1.564s] worker-5 blobs_in=(177blobs Δ=115.36blobs/s), data_in=(156.12MB Δ=101.75MB/s)
    [1.564s] worker-6 blobs_in=(199blobs Δ=130.09blobs/s), data_in=(155.20MB Δ=101.46MB/s)
    [1.564s] worker-7 blobs_in=(161blobs Δ=104.50blobs/s), data_in=(150.69MB Δ=97.81MB/s)

More

Read more about the configuration objects in doc/Config.md.

Support and development discussion happen in the INET256 discord.

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func ConfigureRepo

func ConfigureRepo(p string, fn func(RepoConfig) RepoConfig) error

func InitRepo

func InitRepo(p string) error

Types

type Ref

type Ref = gdat.Ref

type Repo

type Repo = gotrepo.Repo

func OpenRepo

func OpenRepo(p string) (*Repo, error)

type RepoConfig

type RepoConfig = gotrepo.Config

type Root

type Root = gotfs.Root

type Snap

type Snap = gotvc.Snap

type SnapInfo

type SnapInfo = gotvc.SnapInfo

Directories

Path Synopsis
cmd
got
pkg
adapters/gotiofs
package gotiofs provides an adapter from Got to an io/fs.FS
package gotiofs provides an adapter from Got to an io/fs.FS
porting
package porting deals with importing and exporting to and from gotfs
package porting deals with importing and exporting to and from gotfs

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL