|
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.
|
|
0d2eb2d8
|
2010-12-04T13:25:29
|
|
Added some patterns to .gitignore file to filter out some Visual Studio specifics.
|
|
654cd5ff
|
2010-12-02T21:50:28
|
|
Fix segfault in t0603 (unitialized pointer)
Signed-off-by: Vicent Marti <tanoku@gmail.com>
|
|
59995558
|
2010-12-02T21:48:03
|
|
Fix segfault handler in Mac OS X
Signed-off-by: Vicent Marti <tanoku@gmail.com>
|
|
691aa968
|
2010-12-02T18:35:38
|
|
Add 'git_repository_open2' to customize repo folders
Signed-off-by: Vicent Marti <tanoku@gmail.com>
|
|
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>
|
|
41109a7e
|
2010-12-02T04:42:33
|
|
Merge branch 'commitparents' of https://github.com/JustinLove/libgit2 into JustinLove-commitparents
|
|
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>
|
|
1e35f929
|
2010-12-02T04:19:14
|
|
Add stack trace to the tests when building with GCC
Signed-off-by: Vicent Marti <tanoku@gmail.com>
|
|
eb095435
|
2010-11-30T21:28:39
|
|
add git_commit_parent to retrieve a parent by index
|
|
12114415
|
2010-11-30T21:01:47
|
|
add git_commit_parentcount
|
|
8c1f9e4d
|
2010-11-29T18:07:17
|
|
Make the bitmasks for Index Entry flags public
Signed-off-by: Vicent Marti <tanoku@gmail.com>
|
|
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>
|
|
a84972d0
|
2010-11-28T21:53:02
|
|
Add premade solution for compiling in MSVC2010
Signed-off-by: Vicent Marti <tanoku@gmail.com>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
c5b97d5a
|
2010-11-23T15:13:04
|
|
update readme to be markdown based
|
|
b97b386d
|
2010-11-24T00:20:59
|
|
Update the README with info about the new buildsys
Signed-off-by: Vicent Marti <tanoku@gmail.com>
|
|
0ef70b4a
|
2010-11-23T23:25:30
|
|
Make the test suite depend on the static library
Signed-off-by: Vicent Marti <tanoku@gmail.com>
|
|
405ac511
|
2010-11-23T22:43:54
|
|
Add --debug flag to toggle debugging
Signed-off-by: Vicent Marti <tanoku@gmail.com>
|
|
277e45f4
|
2010-11-23T22:36:31
|
|
Remove the Makefile from the tests/ folder too
Signed-off-by: Vicent Marti <tanoku@gmail.com>
|
|
824f4acd
|
2010-11-23T22:33:28
|
|
Fix redeclaration warnings in MSVC
Signed-off-by: Vicent Marti <tanoku@gmail.com>
|
|
f8b422b6
|
2010-11-23T22:33:04
|
|
Use the proper Zlib version with MSVC
Signed-off-by: Vicent Marti <tanoku@gmail.com>
|
|
8b0e448f
|
2010-11-23T16:51:18
|
|
Removed unreachable code (MSVC warning)
|
|
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>
|
|
6b1eab39
|
2010-11-23T14:36:31
|
|
Fix MSVC warnings and errors
Signed-off-by: Vicent Marti <tanoku@gmail.com>
|
|
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>
|
|
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>
|
|
c34a044f
|
2010-11-21T16:42:47
|
|
add library includes, remove Makefile and readme update for waf
|
|
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>
|
|
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>
|
|
357547fa
|
2010-11-19T17:07:34
|
|
Change to waf as the buildsystem
Signed-off-by: Vicent Marti <tanoku@gmail.com>
|
|
11777089
|
2010-11-21T16:46:05
|
|
add waf artifacts to .gitignore
|
|
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>
|
|
69a09b7c
|
2010-11-19T17:17:46
|
|
Fix wrong pointer check in git__strdup
Signed-off-by: Vicent Marti <tanoku@gmail.com>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
0be42199
|
2010-11-10T13:43:55
|
|
accessor for index entry count
|
|
69f0295c
|
2010-11-06T00:14:18
|
|
Fix compiler warning in commit.c
|
|
1081d909
|
2010-11-05T18:04:46
|
|
Fix parsing of commits that have no newlines in the message.
|
|
4b7483a2
|
2010-11-04T21:24:00
|
|
add initial README file
|
|
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>
|
|
88d035bd
|
2010-11-04T15:08:01
|
|
Update commit_time along with committer.
|
|
f24fa088
|
2010-11-04T15:06:56
|
|
Test that commit attributes are set correctly.
|
|
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>
|
|
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>
|
|
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>
|
|
1544bc31
|
2010-11-02T16:02:37
|
|
Only require an index for non-bare repos.
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
0037e491
|
2010-10-25T16:32:16
|
|
Fix spelling mistakes in the documentation.
Signed-off-by: Benjamin C Meyer <ben@meyerhome.net>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
3e590fb2
|
2010-07-07T19:24:08
|
|
Changed test files to use tabs instead of spaces
Signed-off-by: Vicent Marti <tanoku@gmail.com>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|
|
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>
|