==== TODO ==== General ------- * Classes requiring repo actually only need the git command - this should be changed to limit their access level and make things a little safer. * Check for correct usage of id, ref and hexsha and define their meanings, currently its not so clear what id may be in cases or not - afaik its usually a sha or ref unless cat-file is used where it must be a sha * Overhaul command caching - currently its possible to create many instances of the std-in command types, as it appears they are not killed when the repo gets deleted. * References should be parsed 'manually' to get around command invocation, but be sure to be able to read packed refs. Config ------ * Expand .get* methods of GitConfigParser to support default value. If it is not None, it will be returned instead of raising. This way the class will be much more usable, and ... I truly hate this config reader as it is so 'old' style. Its not even a new-style class yet showing that it must be ten years old. Diff ---- * Check docs on diff-core to be sure the raw-format presented there can be read properly: - http://www.kernel.org/pub/software/scm/git-core/docs/gitdiffcore.html Docs ---- Overhaul docs - check examples, check looks, improve existing docs Index ----- * Index class required for special handling ? Probably considering what I want to do ! Dulwich can already write the index, and read trees, although it could be improved as well and could possibly be made faster unless we want to use the c modules ( not for now ) * Index Merge ( merge two trees into the index to quickly see conflicts ). Its possible to write it into a separate index file that can be read separately. Repo ---- * Nice fetch/pull handling, at least supported/wired throuhg to the git command * Blame: Read the blame format making assumptions about its structure, currently regex are used a lot although we can deduct what will be next. - Read data from a stream directly from git command Submodules ---------- * add submodule support Tree ---- * Should return submodules during iteration ( identifies as commit ) * Work through test and check for test-case cleanup and completeness ( what about testing whether it raises on invalid input ? ). See 6dc7799d44e1e5b9b77fd19b47309df69ec01a99 * Derive from Iterable, simple pipe it through to Commit objects and iterate using commit.tree. Testing ------- * Create a test-repository that can be written to and changed in addition to the normal read-only testing scheme that operates on the own repository. Doing this could be a simple as forking a shared repo in a tmp directory. In that moment, we probably want to facility committing and checkouts as well.