A Git Implementation in pure Dart

Build Status License: AGPL v3
Donate Paypal Sponsor via GitHub

This is an experimental reimplementation of Git in pure Dart. The GitJournal project is currently using libgit2, but it's a pain using it - the cross compilation, java ndk bindings + ios bindings. Also, it doesn't let us easily control the FS layer. We eventually want to encrypt the git repo.

Therefore, this is an experimental start at reimplementing Git in Dart. Right now the plan is to just implement a subset of features required by GitJournal.

Comparison with git

dart-git aims to be fully compatible with git, all the porcelain operations will be implemented to work exactly as git does.

Git is a humongous project with years of development by thousands of contributors, dart-git does not aim to implement all its features. It's primarily driven by the needs of the GitJournal project. You can find a comparison of dart-git vs git in the compatibility documentation.

License

This project has been heavily inspired by the go-git project and has often adapted code from that project. go-git is licensed under Apache License Version 2.0

dart-git is licensed under Apache License Version 2.0, see LICENSE

Libraries

add
ascii_helper
blob
branch
bytes_data_reader
cat_file
checkout
checkout
commands
commit
commit
commit_iterator
config
dart_git
date_time_tz_offset
diff
diff_commit
diff_tree
diff_tree
dump_index
exceptions
file_mode
fs
git
git_hash
git_url_parse
hash_object
idx_file
index
index_storage
init
kvlm
log
ls_tree
main
merge_base
merge_base
object
object_storage
object_storage_exception_catcher
pack_file
pack_file_delta
reference
reference_storage
remote
reset
result
rm
status
status
tag
tree
uint8list
utils
worktree
write_tree