summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README31
-rw-r--r--TODO136
-rw-r--r--doc/intro.rst10
-rw-r--r--lib/git/objects/tree.py2
4 files changed, 28 insertions, 151 deletions
diff --git a/README b/README
index 9643dcf5..9473d447 100644
--- a/README
+++ b/README
@@ -4,37 +4,44 @@ GitPython
GitPython is a python library used to interact with Git repositories.
-GitPython is a port of the grit_ library in Ruby created by
+GitPython is a port of the grit library in Ruby created by
Tom Preston-Werner and Chris Wanstrath.
-.. _grit: http://grit.rubyforge.org
REQUIREMENTS
============
-* Git_ tested with 1.5.3.7
-* `Python Nose`_ - used for running the tests
-* `Mock by Michael Foord`_ used for tests. Requires 0.4
-
-.. _Git: http://git.or.cz/
-.. _Python Nose: http://code.google.com/p/python-nose/
-.. _Mock by Michael Foord: http://www.voidspace.org.uk/python/mock.html
+* Git ( tested with 1.5.3.7 )
+* Python Nose - used for running the tests
+* Mock by Michael Foord used for tests. Requires 0.5
INSTALL
=======
+If you have downloaded the source code:
python setup.py install
+
+or if you want to obtain a copy more easily:
+
+ easy_install gitpython
+
+A distribution package can be obtained for manual installation at:
+
+ http://pypi.python.org/pypi/GitPython
SOURCE
======
-GitPython's git repo is available on Gitorious, which can be browsed at:
+GitPython's git repo is available on Gitorious and GitHub, which can be browsed at:
http://gitorious.org/projects/git-python/
+http://github.com/Byron/GitPython
+
+and cloned using:
-and cloned from:
+git clone git://gitorious.org/git-python/mainline.git git-python
+git clone git://github.com/Byron/GitPython.git git-python
-git://gitorious.org/git-python/mainline.git
LICENSE
=======
diff --git a/TODO b/TODO
index 45c63073..2643676c 100644
--- a/TODO
+++ b/TODO
@@ -1,139 +1,7 @@
-====
-TODO
-====
+For a list of tickets, please visit
+http://byronimo.lighthouseapp.com/projects/51787-gitpython/overview
-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.
-* git command on windows may be killed using the /F options which probably is like
- SIGKILL. This is bad as the process might be doing something, leaving the resource
- locked and/or in an inconsistent state. Without the /F option, git does not terminate
- itself, probably it listens to SIGINT which is not sent by TASKKILL. We can't really
- help it, but may be at some point git handles windows signals properly.
-
-Object
-------
-* DataStream method should read the data itself. This would be easy once you have
- the actul loose object, but will be hard if it is in a pack. In a distant future,
- we might be able to do that or at least implement direct object reading for loose
- objects ( to safe a command call ). Currently object information comes from
- persistent commands anyway, so the penalty is not that high. The data_stream
- though is not based on persistent commands.
- It would be good to improve things there as cat-file keeps all the data in a buffer
- before it writes it. Hence it does not write to a stream directly, which can be
- bad if files are large, say 1GB :).
-
-Config
-------
-* Cache the config_reader of the repository and check whether they need to
- update their information as the local file(s) have changed. Currently
- we re-read all configuration data each time a config-reader is created.
- In a way this leaves it to the user to actually keep the config-reader for
- multiple uses, but there are cases when the user can hardly do that.
-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
-* Config: auto-generated module does not appear at all ( except for two lines )
- - its probably related to some fishy error lines:
- :0: (ERROR/3) Unexpected indentation.
- :0: (ERROR/3) Unexpected indentation.
-* Rewrite doc-strings to use default sphinx fields, such as :param x:
-Index
------
-* [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
------
-* For performance reasons it would be good to reimplement git-update-ref to be
- fully equivalent to what the command does. Currently it does some checking and
- handles symbolic refs as well as normal refs, updating the reflog if required.
- Its low-priority though as we don't set references directly that often.
-* I have read that refs can be symbolic refs as well which would imply the need
- to possibly dereference them. This makes sense as they originally where possibly
- a symbolic link. This would mean References could be derived from SymbolicReference
- officially, but it would still be bad as not all References are symbolic ones.
-* Making the reflog available as command might be useful actually. This way historical
- references/commits can be returned. Git internally manages this if refs are specified
- with HEAD@{0} for instance
-* Possibly follow symbolic links when manually parsing references by walking the
- directory tree. Currently the packed-refs file wouldn't be followed either.
-
-Remote
-------
-* 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
-----
-* 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. It should be index based, but provide
- all necessary information to the ones willing to ask for it. The index implementation
- actually provides this already, but some real use-cases would be great to have a least.
-
-Submodules
-----------
-* add submodule support
-* see tree
-
-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 )
-* Work through test and check for test-case cleanup and completeness ( what about
- testing whether it raises on invalid input ? ). See 6dc7799d44e1e5b9b77fd19b47309df69ec01a99
-
diff --git a/doc/intro.rst b/doc/intro.rst
index 42879155..6a3fbd86 100644
--- a/doc/intro.rst
+++ b/doc/intro.rst
@@ -68,13 +68,15 @@ An organized section of the GitPthon API is at :ref:`api_reference_toplevel`.
Source Code
===========
-GitPython's git repo is available on Gitorious, which can be browsed at:
+GitPython's git repo is available on Gitorious and GitHub, which can be browsed at:
-http://gitorious.org/projects/git-python/
+ * http://gitorious.org/projects/git-python/
+ * http://github.com/Byron/GitPython
-and cloned from:
+and cloned using::
-git://gitorious.org/git-python/mainline.git
+ $ git clone git://gitorious.org/git-python/mainline.git git-python
+ $ git clone git://github.com/Byron/GitPython.git git-python
License Information
===================
diff --git a/lib/git/objects/tree.py b/lib/git/objects/tree.py
index 5bd29a2a..a9e60981 100644
--- a/lib/git/objects/tree.py
+++ b/lib/git/objects/tree.py
@@ -132,7 +132,7 @@ class Tree(base.IndexObject, diff.Diffable, utils.Traversable):
elif type_id == self.tree_id:
yield Tree(self.repo, hexsha, mode, path)
elif type_id == self.commit_id:
- # todo
+ # submodules
yield None
else:
raise TypeError( "Unknown type found in tree data %i for path '%s'" % (type_id, path))