A WIP implementation of a simplified Git client in C++.
-
git find-object hash
-
git cat-object hash
Displays the contents of a Git object (currently supports blobs only).
-
git status
Shows the status of the working directory and staging area.
Before changes:
After changes (removedfeatures.txt
, addedf3.txt
, modifiedf1.txt
):
- refactor code
- add error handling - ignored all / any edge cases for now
- singleton class
- learn other design patterns & refactor accordingly
- Would have been better to add test / edge cases handling from the start , now I have forgotten what assumptions i took . Never doing this again
- Learnt c++ while implementing this , fun :) , now i think i will pick up a book
- Deeper understanding of how GIT works under the hood. I simplified some optimisations for storing index . Did not add multi branch feature for now.
- C++17
- zlib for compression
- openssl for sha1