vc
(short for version control
) is a rewrite of Git in Rust.
vc
is not yet stable or complete. In fact, it's not even useful quite yet. You shouldn't consider using it in this state unless you are interested in participating in the development of it.
- Learn Git internals by implementing them myself in Rust.
- Write the Git parts themselves in plain Rust using the standard library.
- Lean on external crates as much as possible for non-core-Git functionality.
- Start by mirroring the internal naming and location of logic from C Git where it makes sense.
- Making this work for anyone other than myself
- 100% bug-for-bug compatibility
- Command-line argument handling skeleton
-
init
(builtin/init-db.c
) in progress -
config
- Then go back and finish parts of
init
that interact withconfig
- Then go back and finish parts of
- Testing framework (
t/
)- Script that downloads
t/
fromgit/git
, and patches it to work t/0001-init.sh
can run and some of the tests pass
- Script that downloads
-
hash-object
-
cat-file
-
log
-
ls-tree
Block comments (using /* */
) are copied-and-pasted from C Git. For example:
/*
* GIT_WORK_TREE makes sense only in conjunction with GIT_DIR
* without --bare. Catch the error early.
*/
Any other style comment is from me. For example:
// todo: Do the thing...
/// This Rust struct represents the...
//! This module is for...
- Git -- which I'll refer to mostly as
C Git
- Write yourself a Git
- Git pack format