aboutsummaryrefslogtreecommitdiff
path: root/lib/git/objects
AgeCommit message (Collapse)Author
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-21index: Entries are now using flags internally, instead of reducing the flag ↵Sebastian Thiel
information to just the stage ( just to be closer to the git-original )
2010-06-14Moved small types that had their own module into the utils moduleSebastian Thiel
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-14tree now uses less memory for its cache as it stores the bare deserialized ↵Sebastian Thiel
information - this also speeds up later serialization after changes. its clear though that retrieving actual objects is slower currently as these are not cached anymore. Its worth thinking about moving these encoding, decoding routines to gitdb
2010-06-14Implemented initial version of tree serialization which appears to work ↵Sebastian Thiel
according to a simple test ( presort still needs implementation ) submodule: added stub to allow the tree to return something, its not implemented though
2010-06-12Removed odb from project, it is now used as a submodule named gitdb, which ↵Sebastian Thiel
was added instead Adjusted all imports to deal with the changed package names
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: redesigned revlist and commit parsing, commits are always retrieved ↵Sebastian Thiel
from their object information directly. This is faster, and resolves issues with the rev-list format and empty commit messages Adjusted many tests to go with the changes, as they were still mocked. The mock was removed if necessary and replaced by code that actually executes
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-05-11IndexFile.add: Fixed incorrect path handling if path rewriting was desired ↵Sebastian Thiel
and absolute paths were given Commit.create_from_tree: fixed critical bug that would cause it to create a branch named master by default, instead of the reference actually set ( which is master in many, but not all cases ) - in fact it could be detached as well, we would fail ungracefully although we could assume master then ... although we cant really make the decision Repo.is_dirty: improved its abiility to deal with empty repositories and a missing head. Weird thing is that the test always worked fine with the previous code, but it didn't work for me in a similar situation without this change at least
2010-05-04TODO: Removed all entries but left a mesage about where to find the issuee ↵Sebastian Thiel
on lighthouse. README/intro.rst: added information about the new repository at github tree: added marker to indicate that submodules would have to be returned there
2010-04-27Add support for time zone information in tags and commits.Rick Copeland
This commit includes - an update to git.objects.utils:parse_actor_and_date to parse the timezone offset - updates to the git.objects.Commit and git.objects.Tag objects to support *_tz_offset attributes - updates to tests in test.git.test_commit and test.git.test_refs to check for appropriate *_tz_offset attributes
2010-03-04Converted all tabs to 4 space characters each to comply with pep8Sebastian Thiel
2010-02-28Commit.iter_items: Will not restrict comits to the ones containing changes ↵Sebastian Thiel
to paths anymore as it will only append '--' if paths are actually given. Added unittest to verify this
2010-02-24git.Tree: Fixed critical issue when reading trees from binary data. The ↵Sebastian Thiel
previous version was making assumptions that would only be true for old git repositories it sesms. The new version of the algorithm deals with this gracefully.
2010-02-13Commit.create: now handles empty repositories correctlySebastian Thiel
2009-12-30tree: implemented recursive paths in __div__ and __getitem__ method, ↵Sebastian Thiel
allowing the keys to contain slashes; adjusted test to check for this
2009-12-03repo: renamed directories to more descriptive identifiers and made them ↵Sebastian Thiel
safer to use in case of bare repositories
2009-12-01commit.create_from_tree: head will not be advanced anymore as it feels ↵Sebastian Thiel
non-natural when using it
2009-11-27Traversable.traverse: Added as_edge option allowing to receive the source of ↵Sebastian Thiel
the item as well to enable predicates to do more proper checking
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