Skip to content

diezo/EncGit

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

EncGit - An Encrypted VCS Written in Java

wakatime

LinkedIn GitHub

An encrypted version control system written in Java

Note

This project is under active experimentation, and not yet suitable for production use.

📦 Features

  • ✅ SHA-256 Object Hashing
  • zlib deflate Object Compression
  • ✅ Staging Area
  • ✅ Commits
  • ✅ AES-256 Encrypted Blob Storage
  • Branching
  • Diff Engine
  • Garbage Collector (Explicit + Implicit)
  • Unit Tests Integration
  • Object Integrity Checks
  • Configuration Support

🔑 AES-256 Object Encryption

EncGit encrypts all object data at rest using AES-256.

During encgit init, a cryptographically secure 256-bit key is generated and stored in the user's home directory (outside the repository). The repository maintains only a reference to this key via .encgit/ref.key.

All subsequent operations use this key to perform transparent encryption and decryption of object data.

Key reference format (.encgit/ref.key):

ref: C:\Users\jake\.encgit-keys\9e0bd17bfb0c5e53ed19acee5969486c.key

Warning

Loss of the key file results in permanent data loss, as encrypted objects cannot be recovered without it.

⚒️ Porcelain Commands (High-level)

Here's the list of supported user-friendly commands:

encgit init

Initializes directory as an empty EncGit repository

encgit init
encgit add

Adds files to the staging area

encgit add <file1> <file2> ...
encgit commit

Creates a commit from the current staging area

encgit commit -m <message>

⚒️ Plumbing Commands (Low-level)

Here's the list of supported internal commands:

encgit cat-file

Pretty-prints details of the specified object

encgit cat-file <flag> <object-hash>

Flags:

  • -t prints object type
  • -p prints object content

About

An Encrypted Version Control System Written in Java

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages