aboutsummaryrefslogtreecommitdiff
path: root/lib/git/objects
AgeCommit message (Collapse)Author
2009-11-27Fixed issue with commit traversal due to missing visit_once in the traversal ↵Sebastian Thiel
method, improved code performance by disabling the visit-once flag by default for trees, which by nature are not recursive
2009-11-27ItemTraversal: Predicate and prune functions now provide depth information, ↵Sebastian Thiel
allowing the callee to know more about its environment
2009-11-27improved performance of item traversal, its nearly as fast as it was with ↵Sebastian Thiel
the first very pure implementation
2009-11-26tree: added traversal method, adjusted testsSebastian Thiel
Fixed critical bug in object code: IndexObjects now use their path as hashkey, not the data\!
2009-11-26objects.utils: Added Traversable base and implemented it for commits ↵Sebastian Thiel
including a test
2009-11-25diff: added __str__ method to diff classSebastian Thiel
IndexObject._mode_str_to_int: Now uses the 6 relevant bytes of the passed in octal string
2009-11-24commit: added create_from_tree method to untie commit creation from actually ↵Sebastian Thiel
using the current index. This makes it more flexible. For convenience, the index.commit method is still available, it delgates all the work
2009-11-06Fixed commit.count method which now handles the paths case properly. It ↵Sebastian Thiel
appears git-rev-list uses empty paths in some way, which is quite hard to specify on a shell, but easy if the process is spawned directly
2009-11-05Added utilities helping to create proper paths either with slashes or ↵Sebastian Thiel
backslashes depending on the operating system fixed test_refs and test_trees Many more issues remain though, this is just a first backup commit
2009-11-04Improved cmd error handling in case an invalid revision is specified for an ↵Sebastian Thiel
object repo.tree: improved to be less restricting
2009-11-04IndexObject: assured that .path fields are relative to the repository ( ↵Sebastian Thiel
previously it would just be a name ) added abspath property and name property to provide easy access to most common paths of an index object
2009-11-04tree: parsing would fail when symlinks where encountered. This has been fixedSebastian Thiel
2009-11-03object: renamed id attribute to sha as it in fact is always being rewritten ↵Sebastian Thiel
as sha, even if the passed in id was a ref. This is done to assure objects are uniquely identified and will compare correctly
2009-10-26Merge branch 'index' into improvementsSebastian Thiel
* index: index.add: Finished implemenation including through tests When parsing trees, we now store the originan type bits as well, previously we dropped it cmd.wait: AutoKill wrapped process will automatically raise on errors to unify error handling amongst clients using the process directly. It might be needed to add a flag allowing to easily override that added head kwarg to reset and commit method, allowing to automatically change the head to the given commit, which makes the methods more versatile refs.SymoblicRef: implemented direcft setting of the symbolic references commit, which possibly dereferences to the respective head index.commit: implemented initial version, but in fact some more changes are required to have a nice API. Tests are not yet fully done either actor: added __eq__, __ne__ and __hash__ methods including simple test index.remove implemented including throrough test Implemented index.reset method including test IndexEntry is now based on a 'minimal' version that is suitable to be fed into UpdateIndex. The Inode and device information is only needed to quickly compare the index against the working tree for changes, hence it should not be that dominant in the API either. More changes to come Added notes about git-update-ref Refs can now set the reference they are pointing to in a controlled fashion by writing their ref file directly Added TagRefernce creation and deletion including tests Implemented head methods: create, delete, rename, including tests refs: added create, delete and rename methods where appropriate. Tests are marked, implementation is needed for most of them Added frame for IndexFile add/remove/commit methods and respective test markers Added repo.index property including simple test, and additional ideas in the TODO list Renamed Index to IndexFile, adjusted tests, it will only operate on physical files, not on streams, as Indices are not streamed by any git command ( at least not in raw format )
2009-10-26When parsing trees, we now store the originan type bits as well, previously ↵Sebastian Thiel
we dropped it
2009-10-24actor: added __eq__, __ne__ and __hash__ methods including simple testSebastian Thiel
commit: Fixed long-standing issue during message parsing that would fail to parse properly in case we were created from data. Also it would strip white space from the messages although it shouldn't
2009-10-23index.remove implemented including throrough testSebastian Thiel
2009-10-23commit.name_rev property added for convenienceSebastian Thiel
2009-10-22Index: Is now diffable and appears to properly implement diffing against ↵Sebastian Thiel
other items as well as the working tree Diff.Diffable: added callback allowing superclasses to preprocess diff arguments Diff.Diff: added eq, ne and hash methods, string methods would be nice
2009-10-22Merge branch 'index' into improvementsSebastian Thiel
* index: Removed index test marker for custom commits as this boils down to a good way to add files to the index/remove them and make commits which are possibly customized with custom parents index writing now creates a sha on the content making it possible to write valid indices after manually removing or altering entriesgst Implemented merge/resolve handling , but realized that index writing is not yet working properly as it is sha1 checked as well. This explains what my 20 byte 'extension_data' actually is ;) index: Added write_tree method including test index.iter_blobs method added including tests ( which have been improved generally for more coverage ) tree.traverse: Added prune functionality - previously the predciate did both, pruning and preventing to return items Improved testing of index against trees, tests succeed with next commit Initial version of merge including tests for one-way, two-way and tree-way merge index writing added including simple test, improved docs of IndexEntry improved IndexEntry type and added test for parsing of the stage Improved tuple access of EntryIndex class including test, stage and type access still needs to be decoded though Added initial version of the index reading from file - IndexEntry interface is to be improved though, writing needs to be implemented as well Added frame for index implementation and testing
2009-10-22Stream_data streams data to a given output stream most efficiently with a ↵Sebastian Thiel
low memory footprint. Still, the git-cat-file command keeps all data in an interal buffer instead of streaming it directly. This is a git design issue though, and will be hard to address without some proper git-hacking. Conflicts: lib/git/cmd.py
2009-10-22added Object.data_stream property allowing to stream object data ↵Sebastian Thiel
directly.Considering the implementation of the git commnd which temporarily keeps it in a cache, it doesnt make a huge diffence as the data is kept in memory while streaming. Only good thing is that it is in a different process so python will never see it if done properly
2009-10-21tree.traverse: Added prune functionality - previously the predciate did ↵Sebastian Thiel
both, pruning and preventing to return items
2009-10-19Implemneted IterableLists for refs, commits and remote objects including ↵Sebastian Thiel
simple tests
2009-10-19commit.count: is an instance method nowSebastian Thiel
repo: added head , tag and iter_trees methods for completeness changes: headlines now sorted chronologically
2009-10-18Improved tagobject message handling by not assuming an empty fourth line anymoreSebastian Thiel
2009-10-18resolved cyclic inclusion issue by moving the Diffable interface into the ↵Sebastian Thiel
diff module, which probably is the right thing to do anyway
2009-10-18implemented diff tests, but will have to move the diff module as it needs to ↵Sebastian Thiel
create objects, whose import would create a dependency cycle
2009-10-17Removed a few diff-related test cases that fail now as the respective method ↵Sebastian Thiel
is missing - these tests have to be redone in test-diff module accordingly
2009-10-16added Diffable interface to objects.base, its used by Commit and Tree objects.Sebastian Thiel
Diff class has been prepared to process raw input, but its not yet more than a frame
2009-10-16Fixed object bug that would cause object ids not to be resolved to sha's as ↵Sebastian Thiel
this was assumed - now there is a test for it as well repo: removed diff and commit_diff methods, added 'head' property returning the current head as Reference object
2009-10-15repo.commit_delta_base: removedSebastian Thiel
2009-10-15Object can now create objects of the proper type in case one attempts to ↵Sebastian Thiel
create an object directly - this feature is used in several places now, allowing for additional type-checking
2009-10-15Added Commit.iter_parents to iterate all parentsSebastian Thiel
Renamed Commit.commits to iter_commits repo: assured proper use of the terms revision ( rev ) and reference ( ref )
2009-10-15repo: removed a few methods because of redundancy or because it will be ↵Sebastian Thiel
obsolete once the interface overhaul is finished. This commit is just intermediate
2009-10-15All times are not stored as time_struct, but as simple int to consume less ↵Sebastian Thiel
memory time imports cleaned up and mostly removed as they were not required (anymore)
2009-10-14tree: now reads tress directly by parsing the binary data, allowing it to ↵Sebastian Thiel
safe possibly hundreds of command calls
2009-10-14persistent command signature changed to also return the hexsha from a ↵Sebastian Thiel
possible input ref - the objects pointed to by refs are now baked on demand - perhaps it should change to always be re-retrieved using a property as it is relatively fast - this way refs can always be cached
2009-10-14test_blob: removed many redundant tests that would fail now as the mock ↵Sebastian Thiel
cannot handle the complexity of the command backend All objects but Tree now use the persistent command to read their object information - Trees get binary data and would need their own pretty-printing or they need to parse the data themselves which is my favorite
2009-10-14test: Added time-consuming test which could also be a benchmark in fact - ↵Sebastian Thiel
currently it cause hundreds of command invocations which is slow Fixed issue with trees not properly initialized with their default mode _set_cache_: some objects checked whether the attribute was within their __slots__ although it should have been accessed through its class
2009-10-14cmd: added option to return the process directly, allowing to read the ↵Sebastian Thiel
output directly from the output stream commit: now reads commit information directly from the output stream of the process by implementing its iterator method repo: removed log method as it was redundant ( equal to the commits method )
2009-10-13added Iterable interface to Ref typeSebastian Thiel
2009-10-13renamed find_all to list_all, changed commit to use iterable interface in ↵Sebastian Thiel
preparation for command changes
2009-10-13unified name of utils module, recently it was named util and utils in ↵Sebastian Thiel
different packages
2009-10-13tree: renamed content_from_string to _from_string to make it private. ↵Sebastian Thiel
Removed tests that were testing that method
2009-10-12tree: now behaves like a list with string indexing functionality - using a ↵Sebastian Thiel
dict as cache is a problem as the tree is ordered, added blobs, trees and traverse method repo: remove blob function as blobs are created directly or iterated - primitve types should not clutter the repo interface
2009-10-12IndexObjects are now checking their slots to raise a proper error message in ↵Sebastian Thiel
case someone tries to access an unset path or mode - this information cannot be retrieved afterwards as IndexObject information is kept in the object that pointed at them. To find this information, one would have to search all objects which is not feasible
2009-10-12refs now take repo as first argument and derive from LazyMixin to allow them ↵Sebastian Thiel
to dynamically retrieve their objects Improved way commits are returned by refs as they now use the path to be sure they always point to the ref even if it changes - previously it would use the sha intead so it would not update after being cached on the ref object
2009-10-12renamed from_string and list_from_string to _from_string and ↵Sebastian Thiel
_list_from_string to indicate their new status as private method, adjusted all callers respectively
2009-10-12Reorganized package structure and cleaned up importsSebastian Thiel