aboutsummaryrefslogtreecommitdiff
path: root/lib/git/objects/base.py
AgeCommit message (Collapse)Author
2010-11-15Optimized test-decorators, by completely removing with_bare_rw_repo, which ↵Sebastian Thiel
was mainly copy-paste from with_rw_repo, what a shame
2010-11-15Objects: Constructor now manually checks and sets the input arguments to the ↵Sebastian Thiel
local cache - previously a procedural approach was used, which was less code, but slower too. Especially in case of CommitObjects unrolling the loop manually makes a difference. Submodule: Implemented query methods and did a bit of testing. More is to come, but the test works for now. As special addition, the submodule implementation uses the section name as submodule ID even though it seems to be just the path. This allows to make renames easier
2010-07-07Adjusted previous object creators to use the rev_parse method directly. ↵Sebastian Thiel
rev_parse could be adjusted not to return Objects anymore, providing better performance for those who just want a sha only. On the other hand, the method is high-level and should be convenient to use as well, its a starting point for more usually, hence its unlikely to call it in tight loops
2010-07-06Initial version of the rev-parse routine, which doesn't work too bad, but ↵Sebastian Thiel
its still rather slow and many tests are not yet implemented
2010-06-29Renamed modules utils to util, and errors to exc to be more conforming to ↵Sebastian Thiel
the submodules's naming conventions
2010-06-29Diff: fixed bug that caused a string to end up as a blob modeSebastian Thiel
2010-06-25Adjusted all files to (hopefully) deal with the fact that all objects now ↵Sebastian Thiel
use 20 byte sha's internally as it is closer to the GitDB implementation Switched all remaining files back to tabs Adjusted all remaining docstrings to suit the sphinx doc convention - its likely that there are many of docstring syntax errors though
2010-06-22index.write_tree: initial version implemented, although its not yet working ↵Sebastian Thiel
correctly, a test to explicitly compare the git version with the python implementation is still missing Tree and Index internally use 20 byte shas, converting them only as needed to reduce memory footprint and processing time objects: started own 'fun' module containing the most important tree functions, more are likely to be added soon
2010-06-14tree: added TreeModifier, allowing to adjust existing trees safely and or ↵Sebastian Thiel
fast, while staying compatible with serialization which requires it to be sorted
2010-06-04Fixed implementation after design change to deal with it - all tests run, ↵Sebastian Thiel
but next there will have to be more through testing
2010-06-04initial version of new odb design to facilitate a channel based ↵Sebastian Thiel
multi-threading implementation of all odb functions
2010-06-04db: implemented GitObjectDB using the git command to make sure we can lookup ↵Sebastian Thiel
everything. Next is to implement pack-file reading, then alternates which should allow to resolve everything
2010-06-03commit.create_from_tree now uses pure python implementation, fixed message ↵Sebastian Thiel
parsing which truncated newlines although it was ilegitimate. Its up to the reader to truncate therse, nowhere in the git code I could find anyone adding newlines to commits where it is written Added performance tests for serialization, it does about 5k commits per second if writing to tmpfs
2010-06-03odb: implemented loose object streaming, which is impossible to do ↵Sebastian Thiel
efficiently considering that it copies string buffers all the time
2010-06-02commit: refactored existing code to decode commits from streams - ↵Sebastian Thiel
performance is slightly better git.cmd: added method to provide access to the content stream directly. This is more efficient if large objects are handled, if it is actually used test.helpers: removed unnecessary code
2010-06-02commit: initial version of commit_from_tree which could create commit ↵Sebastian Thiel
objects if it could serialize itself
2010-03-04Converted all tabs to 4 space characters each to comply with pep8Sebastian Thiel
2009-12-03repo: renamed directories to more descriptive identifiers and made them ↵Sebastian Thiel
safer to use in case of bare repositories
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-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-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-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-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-23index.remove implemented including throrough testSebastian Thiel
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-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-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-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-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-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-12Reorganized package structure and cleaned up importsSebastian Thiel