aboutsummaryrefslogtreecommitdiff
path: root/TODO
diff options
context:
space:
mode:
authorSebastian Thiel <byronimo@gmail.com>2009-11-03 14:50:29 +0100
committerSebastian Thiel <byronimo@gmail.com>2009-11-03 14:50:29 +0100
commit615fc1984b0cc09c8eeab51a1d1c4e05b583b4a7 (patch)
tree4e18b08cf9fcda3be762522113151dbd1063885e /TODO
parent2792e534dd55fe03bca302f87a3ea638a7278bf1 (diff)
parentec3d91644561ef59ecdde59ddced38660923e916 (diff)
downloadGitPython-615fc1984b0cc09c8eeab51a1d1c4e05b583b4a7.tar.gz
GitPython-615fc1984b0cc09c8eeab51a1d1c4e05b583b4a7.zip
Merge branch 'remotes' into improvements
* remotes: Finished all push tests I could think of so far. More error cases should be studied, but they would be hard to 'produce' Intermediate commit with a few added and improved tests as well as many fixes Implemented PushProgress and PushInfo class including basic test cases. Now many more test-cases need to be added to be sure we can truly deal with everything git throws at us Added frame for push testing and push implemenation Another attempt to make fetch emit progress information, but in fact its proven now that this is not happening if stderr is being redirected. A test is in place that will most likely fail in case this ever changes Added repo.refs for completeness (as remote.refs is there as well and quite nice to use) Tried to use shallow repository - this works in case it is remote, but unfortunately, deepening the repository fails if the server is used. This is bad, but a workaround is to create another shared repo which pushes a changes that we fetch into our given repo. This should provide more output to properly test the fetch handling. Harder than I thought Fixed bug when listing remotes - it was based on references which is incorrect as it cannot always work FetchInfo class is not a subclass of Remote class anymore, as more classes are to be added it cluttered up the view and made things more complex as well IterableList: added support for prefix allowing remote.refs.master constructs, previously it was remote.refs['%s/master'%remote] tag handling tests finished, unfortunately there is not yet a rejected case, but it will assuambly follow with the push tests Implemented handling of FETCH_HEAD and tags, some test cases still missing dealing with deletion and movements of remote tags ( which in fact is discouraged, but we should be able to deal with it, shouldnt we ;) Added special cases to test that shows we cannot yet: Added remote stale_refs property including test, tested new remote branch handling and deletion of stale remote branches renamed remote_branch to remote_head, improved errror message Added non-fast forward test case, fixed parsing issue caused by initial line stripping implemented test for rejection handling and fixed a bug when parsing remote reference paths Added testing frame for proper fetch testing to be very sure this works as expected. Plenty of cases still to be tested Reference._from_string will now create the appropriate type, not just the type of the actual class. This could result in a symbolic reference returned even though you technically requested a reference - this issue must still be addressed. put _make_file helper method into TestBase class
Diffstat (limited to 'TODO')
-rw-r--r--TODO28
1 files changed, 25 insertions, 3 deletions
diff --git a/TODO b/TODO
index d841f774..147eb02d 100644
--- a/TODO
+++ b/TODO
@@ -43,6 +43,8 @@ Config
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.
+ - If you are at it, why not start a new project that reimplements the ConfigWriter
+ properly, honestly. Tune it for usability ... .
Diff
----
@@ -96,14 +98,19 @@ Refs
- 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
+* Reference.from_path may return a symbolic reference although it is not related
+ to the reference type. Split that up into two from_path on each of the types,
+ and provide a general method outside of the type that tries both.
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.
+* iter_items should parse the configuration file manually - currently a command
+ is issued which is much slower than it has to be ( compared to manual parsing )
* 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
+* When parsing fetch-info, the regex will not allow spaces in the target remote ref as
+ I couldn't properly parse the optional space separated note in that case. Probably
+ the regex should be improved to handle this gracefully.
Repo
----
@@ -111,11 +118,26 @@ Repo
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
+* There should be a way to create refs and delete them, instead of having to use
+ the awkward Head.create( repo, ... ) way
+* repo.checkout should be added that does everything HEAD.reset does, but in addition
+ it allows to checkout heads beforehand, hence its more like a repo.head.reference = other_head.
+
Submodules
----------
* add submodule support
+TestSystem
+----------
+* Figure out a good way to indicate the required presense of a git-daemon to host
+ a specific path. Ideally, the system would detect the missing daemon and inform
+ the user about the required command-line to start the daemon where we need it.
+ Reason for us being unable to start a daemon is that it will always fork - we can
+ only kill itself, but not its children. Even if we would a pgrep like match, we still
+ would not know whether it truly is our daemons - in that case user permissions should
+ stop us though.
+
Tree
----
* Should return submodules during iteration ( identifies as commit )