Skip to content

SHRmsks/DCVS-mygit-

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Customized Version Control System

Key Feature

  • It is designed to solve inefficiencies where Git re-calculate hashes upon every single changes. It adopts Content-Defined Chunking(CDC) through Fast-Gear to find the cut pseudo-stochastically, where unchanged blobs will have same hash to avoid unnecessary rehashing.
  • It utilized Linked-List like Manifest to connect each shards that belong to each file. It guarantees the sparsity and efficiency.
  • Utilizing request-batching gRPC protocals to maximize the throughput and speed.
  • Different from Git's thin-pack on-fly, it uses modification bit and cached-list to ensure each add/commit is session based.

Benchmark Results

  1. on 512 MB random binary file, it's initial adding speed is 30% faster than Git, and pushing speed is 90% faster than Git
  2. on random 1 and random 2 cuts of 5MB in middle, the rehashing speed for Git is 8.77s, similar to its initial speed 8.7s, yet mygit took only 0.92s, 750% faster than normal git, and even 170% faster than Git LFS, though it's 70% slower than Git LFS on initial adding. The Disk usage is 50% less than both Git and Git LFS.
  3. It's 69% faster than Git even on Source file Add. On shift 1 byte test, mygit is 200% faster than Git

How to use it

  • make sure you have latest go binary and added into your Path based on the OS platform
  • run ./auto.sh, it will generate the binary file and automatically inject to /bin for CLI
  • commands can be found by looking through the main.go

** Still in Progress, the Demo can be found at Demo

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published