A Git Implementation in pure Dart
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
- ascii_helper
- checkout
- commands/add
- commands/branch
- commands/cat_file
- commands/checkout
- commands/commands
- commands/diff
- commands/diff_tree
- commands/dump_index
- commands/hash_object
- commands/init
- commands/log
- commands/ls_tree
- commands/merge_base
- commands/remote
- commands/reset
- commands/rm
- commands/status
- commands/write_tree
- commit
- config
- dart_git
- diff_commit
- diff_tree
- exceptions
- fs
- git
- git_hash
- git_url_parse
- main
- merge_base
- plumbing/commit_iterator
- plumbing/idx_file
- plumbing/index
- plumbing/objects/blob
- plumbing/objects/commit
- plumbing/objects/object
- plumbing/objects/tag
- plumbing/objects/tree
- plumbing/pack_file
- plumbing/pack_file_delta
- plumbing/reference
- status
- storage/index_storage
- storage/object_storage
- storage/object_storage_exception_catcher
- storage/reference_storage
- utils
- utils/bytes_data_reader
- utils/date_time_tz_offset
- utils/file_mode
- utils/kvlm
- utils/result
- utils/uint8list
- worktree