Log

Author Commit Date CI Message
nulltoken 02286c33 2010-12-04T13:58:06 Added reference to "src/vector.c" to the Visual Studio solution in order to cope with tanoku's latest refactorings.
nulltoken 0d2eb2d8 2010-12-04T13:25:29 Added some patterns to .gitignore file to filter out some Visual Studio specifics.
Vicent Marti 654cd5ff 2010-12-02T21:50:28 Fix segfault in t0603 (unitialized pointer) Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti 59995558 2010-12-02T21:48:03 Fix segfault handler in Mac OS X Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti 691aa968 2010-12-02T18:35:38 Add 'git_repository_open2' to customize repo folders Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti eec95235 2010-12-02T04:58:22 Commit parents now use the common 'vector' code No more linked lists, no more O(n) access. Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti 41109a7e 2010-12-02T04:42:33 Merge branch 'commitparents' of https://github.com/JustinLove/libgit2 into JustinLove-commitparents
Vicent Marti c4034e63 2010-12-02T04:31:54 Refactor all 'vector' functions into common code All the operations on the 'git_index_entry' array and the 'git_tree_entry' array have been refactored into common code in the src/vector.c file. The new vector methods support: - insertion: O(1) (avg) - deletion: O(n) - searching: O(logn) - sorting: O(logn) - r. access: O(1) Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti 1e35f929 2010-12-02T04:19:14 Add stack trace to the tests when building with GCC Signed-off-by: Vicent Marti <tanoku@gmail.com>
Justin Love eb095435 2010-11-30T21:28:39 add git_commit_parent to retrieve a parent by index
Justin Love 12114415 2010-11-30T21:01:47 add git_commit_parentcount
Vicent Marti 8c1f9e4d 2010-11-29T18:07:17 Make the bitmasks for Index Entry flags public Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti 91e88941 2010-11-29T18:06:22 Properly write Index Entry 'flags_extended' Always write the 'flags_extended' attribute to disk if it's available. Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti a84972d0 2010-11-28T21:53:02 Add premade solution for compiling in MSVC2010 Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti e5fd5b94 2010-11-24T17:51:01 Update README.md Fix my broken English. Fix formatting issues in some links. Add new build flag options. Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti 8507ab12 2010-11-24T17:49:55 Improve build system for MSVC Add options to select architecture and compiler version. Removed dependency on 'grep'. Fix debug mode flags being always empty. Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti 25e9b4dd 2010-11-24T17:48:31 Do proper symbol exports on MSVC Yes, if you are wondering why the shared library was failing to build under MSVC, it's because it was empty. Oh wow. Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti 322086f9 2010-11-24T17:46:46 Do not use STDINT types in public headers Old versions of MSVC don't have such types available. Signed-off-by: Vicent Marti <tanoku@gmail.com>
Scott Chacon c5b97d5a 2010-11-23T15:13:04 update readme to be markdown based
Vicent Marti b97b386d 2010-11-24T00:20:59 Update the README with info about the new buildsys Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti 0ef70b4a 2010-11-23T23:25:30 Make the test suite depend on the static library Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti 405ac511 2010-11-23T22:43:54 Add --debug flag to toggle debugging Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti 277e45f4 2010-11-23T22:36:31 Remove the Makefile from the tests/ folder too Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti 824f4acd 2010-11-23T22:33:28 Fix redeclaration warnings in MSVC Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti f8b422b6 2010-11-23T22:33:04 Use the proper Zlib version with MSVC Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti 8b0e448f 2010-11-23T16:51:18 Removed unreachable code (MSVC warning)
Vicent Marti 43e380a8 2010-11-23T15:18:53 Fix gitfo_isdir() in Win32 systems Because adhering to the POSIX standards is overrated. Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti 6b1eab39 2010-11-23T14:36:31 Fix MSVC warnings and errors Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti 5dc2bee1 2010-11-23T14:33:46 Fix compilation in Win32 Currently, libgit2 compiles and passes all tests under MinGW, and compiles but fails the test suite on MSVC 2010. Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti e06551e5 2010-11-22T16:42:21 Add library dependencies to the build The libgit2 shared library must be linked with all the dynamic libraries it depends (z, openssl). These libraries are now automatically detected during the configuration phase. Also, removed the linking dependency on libgit2 which Scott added: if you link libgit2 with itself, the universe could implode, and we don't want that to happen. Signed-off-by: Vicent Marti <tanoku@gmail.com>
Scott Chacon c34a044f 2010-11-21T16:42:47 add library includes, remove Makefile and readme update for waf
Vicent Marti d910be21 2010-11-21T18:07:28 Add separate commands for all possible actions The build script now supports all the required features Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti b2898c45 2010-11-21T02:59:53 Add more features to the build system - Windows 32 compilation - Test system - Shared and static libraries Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti 357547fa 2010-11-19T17:07:34 Change to waf as the buildsystem Signed-off-by: Vicent Marti <tanoku@gmail.com>
Scott Chacon 11777089 2010-11-21T16:46:05 add waf artifacts to .gitignore
Vicent Marti 30b171a1 2010-11-20T17:37:32 Change blob API to return temp refs to the content If the user wants permanent references, he can duplicate the temporary one manually. Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti 69a09b7c 2010-11-19T17:17:46 Fix wrong pointer check in git__strdup Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti c3dd69a9 2010-11-17T04:59:11 Fix resizing the index array No longer segfaults when resizing an empty array. Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti 50dd6ca5 2010-11-17T04:58:32 Fix repository initialization We cannot assume that non-bare repositories have an index file, because 'git index' doesn't create it by default. Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti d7c7cab8 2010-11-16T03:25:26 Fix memory leak in t0401 Commit object must be internally free'd after each parse attempt, even it fails. Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti 111e3622 2010-11-16T03:24:39 Fix freeing blob objects from the ODB The internal contents of the blob were being free'd but not the blob object itself. Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti c3a20d5c 2010-11-14T22:11:46 Add support for 'index add' Actually add files to the index by creating their corresponding blob and storing it on the repository, then getting the hash and updating the index file. Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti 7a3924fc 2010-11-14T22:07:48 Fix overcomplicated return statement Note to self: don't be stupid Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti 237da401 2010-11-14T22:06:10 Add support for blob files Blob files can now be loaded from the repository like all the other base Git types. Signed-off-by: Vicent Marti <tanoku@gmail.com>
Scott Chacon 0be42199 2010-11-10T13:43:55 accessor for index entry count
Colin Timmermans 69f0295c 2010-11-06T00:14:18 Fix compiler warning in commit.c
Colin Timmermans 1081d909 2010-11-05T18:04:46 Fix parsing of commits that have no newlines in the message.
Scott Chacon 4b7483a2 2010-11-04T21:24:00 add initial README file
Vicent Marti 3f43678e 2010-11-07T01:24:45 Make the Index API public Several private methods of the Index API are now public, including the methods to remove, get and add index entries. All the methods only take an integer value for the position of the entry to get/remove. To get or remove entries based on their path names, look them up first using the git_index_find method. Signed-off-by: Vicent Marti <tanoku@gmail.com>
Dave Borowitz 88d035bd 2010-11-04T15:08:01 Update commit_time along with committer.
Dave Borowitz f24fa088 2010-11-04T15:06:56 Test that commit attributes are set correctly.
Vicent Marti a8bfce69 2010-11-05T03:50:24 Add string descriptions for all error codes Old descriptions have been updated and new ones have been added for the 'git_strerror' function. Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti 1795f879 2010-11-05T03:20:17 Improve error handling All initialization functions now return error codes instead of pointers. Error codes are now properly propagated on most functions. Several new and more specific error codes have been added in common.h Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti 1714826f 2010-11-04T01:08:36 Force PIC on the Makefile Added -fPIC (position-independent code) to the EXTRA_CFLAGS var in the Makefile. Required in x64 when building the shared library. Signed-off-by: Vicent Marti <tanoku@gmail.com>
Dave Borowitz 1544bc31 2010-11-02T16:02:37 Only require an index for non-bare repos.
Vicent Marti 6fd195d7 2010-11-02T18:42:42 Change git_repository initialization to use a path The constructor to git_repository is now called 'git_repository_open(path)' and takes a path to a git repository instead of an existing ODB object. Unit tests have been updated accordingly and the two test repositories have been merged into one. Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti d80e9d55 2010-10-31T06:01:46 Fix in-memory commit getters trying to parse Issue 9 on the tracker. The commit object getters for in-memory objects were trying to parse an inexistant on-disk object when one of the commit attributes which were still not set was queried. We now return a NULL value when this happens. Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti 57450775 2010-10-29T02:44:32 Do a full parse on commits before modifying them Before changing the attributes of a commit, make sure that the internal status is consistent with the one in the repository. Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti a13bc8e7 2010-10-29T02:22:38 Add getter methods for object owners You can know access the owning repository of any existing object, or the repository on which a revision walker is working on. Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti aaf68dc4 2010-10-29T00:47:53 Add unit tests for git_odb_read_header Test the new method by loading all the objects in the sample ODB with a full-read and a header-only read, and comparing the types and sizes. Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti adc0327a 2010-10-29T00:44:15 Add git_odb_read_header method to the ODB As requested, git_odb_read_header looks up an object on the ODB, but loads only the header information (type & size) without loading any of the actual file contents in memory. It is significantly faster than doing a git_odb_read if you only need an object's information and not its contents. Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti 58519018 2010-10-28T02:07:18 Fix internal memory management on the library String mememory is now managed in a much more sane manner. Fixes include: - git_person email and name is no longer limited to 64 characters - git_tree_entry filename is no longer limited to 255 characters - raw objects are properly opened & closed the minimum amount of times required for parsing - unit tests no longer leak - removed 5 other misc memory leaks as reported by Valgrind - tree writeback no longer segfaults on rare ocassions The git_person struct is no longer public. It is now managed by the library, and getter methods are in place to access its internal attributes. Signed-off-by: Vicent Marti <tanoku@gmail.com>
Ramsay Jones 2d16373c 2010-10-12T19:12:50 msvc: Fix an "conversion, possible loss of data" warning In particular, msvc complains thus: t0603-sort.c(23) : warning C4244: 'function' : conversion from \ 'time_t' to 'unsigned int', possible loss of data Note that msvc, by default, defines time_t as a 64-bit type, whereas srand() is expecting an (32-bit) unsigned int. In order to suppress the warning, we simply cast the return value of the time() function call to 'unsigned int'. Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
Ramsay Jones e3005627 2010-10-12T19:11:51 bswap.h: Add ntohs() and htons() functions Since commit 70aab459, the msvc and MinGW builds have relied on the built-in implementation of ntohl() and htonl(), rather than linking the wsock32 library. The new index manipulation code now calls ntohs()/htons() in addition to ntohl()/htonl(), so we need to provide a built-in implementation of the 16-bit functions. Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk>
Benjamin C Meyer 0d95f32c 2010-10-25T22:26:14 Change /* to /** at the start of comment blocks in public api so doxygen will generate documenation and not hide them. Signed-off-by: Benjamin C Meyer <ben@meyerhome.net>
Benjamin C Meyer 0037e491 2010-10-25T16:32:16 Fix spelling mistakes in the documentation. Signed-off-by: Benjamin C Meyer <ben@meyerhome.net>
Benjamin C Meyer 544d1519 2010-10-25T16:32:31 Remove whitespace from the end of the line in documentation. Signed-off-by: Benjamin C Meyer <ben@meyerhome.net>
Vicent Marti e4def81a 2010-10-08T13:52:17 Fix issue 3 (memory corruption resize_tree_array) The tree array wasn't being initialized when instantiating a tree object in memory instead of loading it from disk. New unit tests added to check for the problem. Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti 0ba7a031 2010-10-07T00:42:55 Add unit tests for object write-back Basic write-back & in-memory editing for objects is now tested in t0403 (commits), t0802 (tags) and t0902 (trees). Add new helper functions in test_helpers.c to remove the loose objects created when doing write-back tests. Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti ec25391d 2010-10-07T00:20:08 Add write-back support for Tag files Tag files can now be created and modified in-memory (all the setter methods have been implemented), and written back to disk using the generic git_object_write() method. Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti c4b5bedc 2010-10-07T00:07:32 Fix possible segfaults in src/tree.c (issue 1) git_tree_entry_byname was dereferencing a NULL pointer when the searched file couldn't be found on the tree. New test cases have been added to check for entry access methods. Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti 2a884588 2010-09-21T17:17:10 Add write-back support for git_tree All the setter methods for git_tree have been added, including the setters for attributes on each git_tree_entry and methods to add/remove entries of the tree. Modified trees and trees created in-memory from scratch can be written back to the repository using git_object_write(). Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti d45b4a9a 2010-09-20T21:39:11 Add support for in-memory objects All repository objects can now be created from scratch in memory using either the git_object_new() method, or the corresponding git_XXX_new() for each object. So far, only git_commits can be written back to disk once created in memory. Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti 0c3596f1 2010-09-20T01:57:53 Add setter methods & write support for git_commit All the required git_commit_set_XXX methods have been implemented; all the attributes of a commit object can now be modified in-memory. The new method git_object_write() automatically writes back the in-memory changes of any object to the repository. So far it only supports git_commit objects. Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti e802d8cc 2010-09-19T03:53:57 Implement internal methods to write on sources The new 'git__source_printf' does an overflow-safe printf on a source bfufer. The new 'git__source_write' does an overflow-safe byte write on a source buffer. Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti f49a2e49 2010-09-19T03:21:06 Give object structures more descriptive names The 'git_obj' structure is now called 'git_rawobj', since it represents a raw object read from the ODB. The 'git_repository_object' structure is now called 'git_object', since it's the base object class for all objects. Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti a7a7ddbe 2010-09-18T19:16:04 Add generic methods for object writeback git_repository_object has now several internal methods to write back the object information in the repository. - git_repository__dbo_prepare_write() Prepares the DBO object to be modified - git_repository__dbo_write() Writes new bytes to the DBO object - git_repository__dbo_writeback() Writes back the changes to the repository Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti 46f8566a 2010-09-12T23:43:21 Add methods to access internal attributes in git_repo Added several methods to access: - The ODB behind a repo - The SHA1 id behind a generic repo object - The type of a generic repo object Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti 370ce569 2010-08-14T20:35:10 Fix: do not export custom types in the extern API Some compilers give linking problems when exporting 'uint32_t' as a return type in the external API. Use generic types instead. Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti 9c9f4fc1 2010-08-12T23:40:54 Add support for manually freeing repo objects A new method 'git_repository_object_free' allows to manually force the freeing of a repository object, even though they are still automatically managed by the repository and don't need to be freed by the user. Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti f2408cc2 2010-08-12T19:59:32 Fix object handling in git_repository All loaded objects through git_repository_lookup are properly parsed & free'd on failure. Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti 0e465f97 2010-08-12T18:47:32 Add auxiliary method git__hexdump New function in util.c to do a dump of a buffer's contents in hexadecimal to stdout. Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti 003c2690 2010-08-12T18:45:31 Finish the tree object API The interface for loading and parsing tree objects from a repository has been completed with all the required accesor methods for attributes, support for manipulating individual tree entries and a new unit test t0901-readtree which tries to load and parse a tree object from a repository. Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti ff17642d 2010-07-19T15:35:52 Add unit tests for index manipulation Three new unit tests, t06XX files have been added. t0601-read: tests for loading index files from disk, for creating in-memory indexes and for accessing index entries. t0602-write: tests for writing index files back to disk t0603-sort: tests for properly sorting the entries array of an index Two test indexes have been added in 'tests/resources/': test/resources/index: a sample index from a libgit2 repository test/resources/gitgit.index: a sample index from a git.git repository (includes TREE extension data) Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti 1baa25ee 2010-07-20T23:56:18 Move test resources to a common directory All the external resources used by the tests are now placed inside the common 'tests/resources' directory. Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti 68535125 2010-07-09T20:19:56 Add support for git index files The new 'git_index' structure is an in-memory representation of a git index on disk; the 'git_index_entry' structures represent each one of the file entries on the index. The following calls for index instantiation have been added: git_index_alloc(): instantiate a new index structure git_index_free(): free an existing index git_index_clear(): clear all the entires in an existing file The following calls for index reading and writing have been added: git_index_read(): update the contents of the index structure from its file on disk. Internally implemented through: git_index__parse() Index files are stored on disk in network byte order; all integer fields inside them are properly converted to the machine's byte order when loading them in memory. The parsing engine also distinguishes between normal index entries and extended entries with 2 extra bytes of flags. The 'TREE' extension for index entries is also loaded into memory: Tree caches stored in Index files are loaded into the 'git_index_tree' structure pointed by the 'tree' pointer inside 'git_index'. 'index->tree' points to the root node of the tree cache; the full tree can be traversed through each of the node's 'tree->children'. Index files can be written back to disk through: git_index_write(): atomic writing of existing index objects backed by internal method git_index__write() The following calls for entry manipulation have been added: git_index_add(): insert an empty entry to the index git_index_find(): search an entry by its path name git_index__append(): appends a new index entry to the end of the list, resizing the entries array if required New index entries are always inserted at the end of the array; since the index entries must be sorted for it to be internally consistent, the index object is only sorted once, and if required, before accessing the whole entriea array (e.g. before writing to disk, before traversing, etc). git_index__remove_pos(): remove an index entry in a specific position git_index__sort(): sort the entries in the array by path name The entries array is sorted stably and in place using an insertion sort, which ought to be the most efficient approach since the entries array is always mostly-sorted. Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti bd0a51c0 2010-07-09T20:17:00 Add support for atomic file locking The struct 'git_filelock' represents an atomically-locked file, git-style. Locked files can be modified atomically through the new file lock interface: int git_filelock_init(git_filelock *lock, const char *path); int git_filelock_lock(git_filelock *lock, int append); void git_filelock_unlock(git_filelock *lock); int git_filelock_commit(git_filelock *lock); int git_filelock_write(git_filelock *lock, const char *buffer, size_t length); Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti 3315782c 2010-08-08T14:12:17 Redesigned the walking/object lookup interface The old 'git_revpool' object has been removed and split into two distinct objects with separate functionality, in order to have separate methods for object management and object walking. * A new object 'git_repository' does the high-level management of a repository's objects (commits, trees, tags, etc) on top of a 'git_odb'. Eventually, it will also manage other repository attributes (e.g. tag resolution, references, etc). See: src/git/repository.h * A new external method 'git_repository_lookup(repo, oid, type)' has been added to the 'git_repository' API. All object lookups (git_XXX_lookup()) are now wrappers to this method, and duplicated code has been removed. The method does automatic type checking and returns a generic 'git_revpool_object' that can be cast to any specific object. See: src/git/repository.h * The external methods for object parsing of repository objects (git_XXX_parse()) have been removed. Loading objects from the repository is now managed through the 'lookup' functions. These objects are loaded with minimal information, and the relevant parsing is done automatically when the user requests any of the parsed attributes through accessor methods. An attribute has been added to 'git_repository' in order to force the parsing of all the repository objects immediately after lookup. See: src/git/commit.h See: src/git/tag.h See: src/git/tree.h * The previous walking functionality of the revpool is now found in 'git_revwalk', which does the actual revision walking on a repository; the attributes when walking through commits in a database have been decoupled from the actual commit objects. This increases performance when accessing commits during the walk and allows to have several 'git_revwalk' instances working at the same time on top of the same repository, without having to load commits in memory several times. See: src/git/revwalk.h * The old 'git_revpool_table' has been renamed to 'git_hashtable' and now works as a generic hashtable with support for any kind of object and custom hash functions. See: src/hashtable.h * All the relevant unit tests have been updated, renamed and grouped accordingly. Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti f8758044 2010-08-07T01:02:20 Add loading and parsing of tag objects Tag objects are now properly loaded from the revision pool. New test t0801 checks for loading a parsing a series of tags, including the tag of a tag. Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti 364788e1 2010-08-07T00:59:58 Refactor parsing methods The 'parse_oid' and 'parse_person' methods which were used by the commit parser are now global so they can be used when parsing other objects. The 'git_commit_person' struct has been changed to a generic 'git_person'. Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti 7e4f56a5 2010-08-06T18:37:59 Add packfile reading Packed objects inside packfiles are now properly unpacked when calling the git_odb__read_packed() method; delta'ed objects are also properly generated when needed. A new unit test 0204-readpack tries to read a couple hundred packed objects from a standard packed repository. Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti d8603ed9 2010-07-10T16:51:15 Add parsing of tree file contents. The basic information (pointed trees and blobs) of each tree object in a revision pool can now be parsed and queried. Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti 3e590fb2 2010-07-07T19:24:08 Changed test files to use tabs instead of spaces Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti 52f2390b 2010-07-07T14:56:05 Add external API to access detailed commit attributes The following new external methods have been added: GIT_EXTERN(const char *) git_commit_message_short(git_commit *commit); GIT_EXTERN(const char *) git_commit_message(git_commit *commit); GIT_EXTERN(time_t) git_commit_time(git_commit *commit); GIT_EXTERN(const git_commit_person *) git_commit_committer(git_commit *commit); GIT_EXTERN(const git_commit_person *) git_commit_author(git_commit *commit); GIT_EXTERN(const git_tree *) git_commit_tree(git_commit *commit); A new structure, git_commit_person has been added to represent a commit's author or committer. The parsing of a commit has been split in two phases. When adding a commit to the revision pool: - the commit's ODB object is opened - its raw contents are parsed for commit TIME, PARENTS and TREE (the minimal amount of data required to traverse the pool) - the commit's ODB object is closed When querying for extended information on a commit: - the commit's ODB object is reopened - its raw contents are parsed for the requested information - the commit's ODB object remains open to handle additional queries New unit tests have been added for the new functionality: In t0401-parse: parse_person_test In t0402-details: query_details_test Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti 225fe215 2010-06-18T13:06:34 Add support for tree objects in revision pools Commits now store pointers to their tree objects. Tree objects now work as separate git_revpool_object entities. Tree objects can be loaded and parsed inedependently from commits. Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti 40721f6b 2010-07-10T11:50:16 Changed revpool's object table to support arbitrary objects git_revpool_object now has a type identifier for each object type in a revpool (commits, trees, blobs, etc). Trees can now be stored in the revision pool. git_revpool_tableit now supports filtering objects by their type when iterating through the object table. Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti b231ef3a 2010-06-12T03:08:52 Add new tests: t0502-table, t0503-tableit "t0502-table" tests for basic functionality of the objects table: table_create (creating a new object table) table_populate (fill & lookup on the object table) table_resize (dynamically resize the table) "t0503-tableit" tests the iterator for object tables: table_iterator (make sure the iterator reaches all objects) Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti 088a731f 2010-06-09T14:54:22 Fixed memory leaks in test suite Created commit objects in t0401-parse weren't being freed properly. Updated the API documentation to note that commit objects are owned by the revision pool and should not be freed manually. The parents list of each commit was being freed twice after each test. Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti 58b0cbea 2010-07-10T12:14:30 Actually free all commits when freeing a commit pool Previously the objects table was being freed, but not the actuall commits. All git_commit objects are freed and hence invalidated when freeing the git_rp object they belong to. Signed-off-by: Vicent Marti <tanoku@gmail.com>
Vicent Marti 3cd8b687 2010-07-10T12:08:04 Fix warning in util.h (signed vs unsigned comparison) This fix had been delayed by Ramsay because on 32-bit systems it highlights the fact that off_t is set to an invalid value. Signed-off-by: Vicent Marti <tanoku@gmail.com>