diff options
Diffstat (limited to 'TODO')
| -rw-r--r-- | TODO | 50 |
1 files changed, 43 insertions, 7 deletions
@@ -31,6 +31,12 @@ Object it should be renamed to 'sha'. There was a time when references where allowed as well, but now objects will be 'baked' to the actual sha to assure comparisons work. +Commit +------ +* message is stipped during parsing, which is wrong unless we parse from + rev-list output. In fact we don't know that, and can't really tell either. + Currently we strip away white space that might actually belong to the message + Config ------ * Expand .get* methods of GitConfigParser to support default value. If it is not None, @@ -50,32 +56,62 @@ Overhaul docs - check examples, check looks, improve existing docs Index ----- -* write_tree should write a tree directly, which would require ability to create +* [advanced] + write_tree should write a tree directly, which would require ability to create objects in the first place. Should be rather simple as it is "tree" bytes datablock | sha1sum and zipped. Currently we use some file swapping and the git command to do it which probably is much slower. The thing is that properly writing a tree from an index involves creating several tree objects, so in the end it might be slower. Hmm, probably its okay to use the command unless we go c(++) +* Implement diff so that temporary indices can be used as well ( using file swapping ) +* Proper merge handling with index and working copy +* Checkout individual blobs using the index and git-checkout. Blobs can already + be written using their stream_data method. +* index.add: could be implemented in python together with hash-object, allowing + to keep the internal entry cache and write once everything is done. Problem + would be that all other git commands are unaware of the changes unless the index + gets written. Its worth an evaluation at least. + A problem going with it is that there might be shell-related limitations on non-unix + where the commandline grows too large. +* index.remove: On windows, there can be a command line length overflow + as we pass the paths directly as argv. This is as we use git-rm to be able + to remove whole directories easily. This could be implemented using + git-update-index if this becomes an issue, but then we had to do all the globbing + and directory removal ourselves +* commit: advance head = False - tree object should get the base commit wrapping + that index uses after writing itself as tree. Perhaps it would even be better + to have a Commit.create method from a tree or from an index. Allowing the + latter would be quite flexible and would fit into the system as refs have + create methods as well Refs ----- -* If the HEAD is detached as it points to a specific commit, its not technically - a symbolic reference anymore. Currently, we cannot handle this that well - as we do not check for this case. This should be added though as it is - valid to have a detached head in some cases. - +* When adjusting the reference of a symbolic reference, the ref log might need + adjustments as well. This is not critical, but would make things totally 'right' + - same with adjusting references directly + !! - Could simply rewrite it using git-update-ref which works nicely for symbolic + and for normal refs !! +* Check whether we are the active reference HEAD.reference == this_ref + - NO: The reference dosnt need to know - in fact it does not know about the + main HEAD, so it may not use it. This is to be done in client code only. + Remove me + Remote ------ * 'push' method needs a test, a true test repository is required though, a fork of a fork would do :)! +* Fetch should return heads that where updated, pull as well. +* Creation and deletion methods for references should be part of the interface, allowing + repo.create_head(...) instaed of Head.create(repo, ...). Its a convenience thing, clearly Repo ---- * 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 - +* Figure out how to implement a proper merge API + Submodules ---------- * add submodule support |
