yacgit is a lightweight implementation of Git core features in C. This project aims to provide a simple, educational, and functional implementation of Git's core concepts, including blobs, trees, and commits. It also includes a basic hashing function to support Git-like object storage.
- Blobs: Store file contents as blobs in memory.
- Hashing: Generate SHA-1-like hashes for Git objects.
- Commits: Create commits that reference trees and blobs.
- Trees: Represent directory structures using trees.
- Diff:
- Merge:
- Blobs compress
- Branches
- Subfolders
- Rebase
To build and run yacgit, you need:
- A C compiler (e.g.,
gccorclang). CMake(version 3.10 or higher).
-
Clone the repository
-
Configure the project using CMake:
cmake -DCMAKE_BUILD_TYPE=Release -S . -B build -
Build the project:
cmake --build build
-
Run the executable:
./build/LC.x