- 11 Dec, 2013 2 commits
-
-
This changes the behavior of callbacks so that the callback error code is not converted into GIT_EUSER and instead we propagate the return value through to the caller. Instead of using the giterr_capture and giterr_restore functions, we now rely on all functions to pass back the return value from a callback. To avoid having a return value with no error message, the user can call the public giterr_set_str or some such function to set an error message. There is a new helper 'giterr_set_callback' that functions can invoke after making a callback which ensures that some error message was set in case the callback did not set one. In places where the sign of the callback return value is meaningful (e.g. positive to skip, negative to abort), only the negative values are returned back to the caller, obviously, since the other values allow for continuing the loop. The hardest parts of this were in the checkout code where positive return values were overloaded as meaningful values for checkout. I fixed this by adding an output parameter to many of the internal checkout functions and removing the overload. This added some code, but it is probably a better implementation. There is some funkiness in the network code where user provided callbacks could be returning a positive or a negative value and we want to rely on that to cancel the loop. There are still a couple places where an user error might get turned into GIT_EUSER there, I think, though none exercised by the tests.
Russell Belfer committed -
This continues auditing all the places where GIT_EUSER is being returned and making sure to clear any existing error using the new giterr_user_cancel helper. As a result, places that relied on intercepting GIT_EUSER but having the old error preserved also needed to be cleaned up to correctly stash and then retrieve the actual error. Additionally, as I encountered places where error codes were not being propagated correctly, I tried to fix them up. A number of those fixes are included in the this commit as well.
Russell Belfer committed
-
- 23 Sep, 2013 1 commit
-
-
In revwalk, we are doing a very simple check to see if a string contains wildcard characters, so a full regular expression match is not needed. In remote listing, now that we have git_config_foreach_match with full regular expression matching, we can take advantage of that and eliminate the regex here, replacing it with much simpler string manipulation.
Russell Belfer committed
-
- 09 Sep, 2013 1 commit
-
-
When enabled, only the first parent of each commit will be queued, enabling a simple way of using first-parent simplification.
Carlos Martín Nieto committed
-
- 06 Sep, 2013 1 commit
-
-
Using a recursive function can blow the stack when dealing with long histories. Use a loop instead to limit the call chain depth. This fixes #1223.
Carlos Martín Nieto committed
-
- 11 May, 2013 1 commit
-
-
Nobody should ever be using anything other than ALL at this level, so remove the option altogether. As part of this, git_reference_foreach_glob is now implemented in the frontend using an iterator. Backends will later regain the ability of doing the glob filtering in the backend.
Carlos Martín Nieto committed
-
- 15 Apr, 2013 3 commits
-
-
Vicent Marti committed
-
Vicent Marti committed
-
This will probably prevent many lookup/free operations in calling code.
Ben Straub committed
-
- 09 Apr, 2013 1 commit
-
-
Ben Straub committed
-
- 07 Apr, 2013 1 commit
-
-
All the hard work is already in revparse. Signed-off-by: Greg Price <price@mit.edu>
Greg Price committed
-
- 08 Jan, 2013 1 commit
-
-
Edward Thomson committed
-
- 30 Nov, 2012 1 commit
-
-
`revwalk.h:commit_lookup()` -> `git_revwalk__commit_lookup()` and make `git_commit_list_parse()` do real error checking that the item in the list is an actual commit object. Also fixed an apparent typo in a test name.
Russell Belfer committed
-
- 27 Nov, 2012 2 commits
-
-
In so doing, promote commit_list to git_commit_list, with its own internal API header.
Ben Straub committed -
Ben Straub committed
-
- 27 Sep, 2012 1 commit
-
-
Fixes #921.
Michael Schubert committed
-
- 09 Sep, 2012 1 commit
-
-
Sascha Cunz committed
-
- 05 Sep, 2012 1 commit
-
-
This refactors the diff output code so that an iterator object can be used to traverse and generate the diffs, instead of just the `foreach()` style with callbacks. The code has been rearranged so that the two styles can still share most functions. This also replaces `GIT_REVWALKOVER` with `GIT_ITEROVER` and uses that as a common error code for marking the end of iteration when using a iterator style of object.
Russell Belfer committed
-
- 27 Aug, 2012 1 commit
-
-
Check the type of the pushed object immediately instead of starting the walk and failing in between.
Michael Schubert committed
-
- 11 Jul, 2012 1 commit
-
-
nulltoken committed
-
- 22 Jun, 2012 1 commit
-
-
nulltoken committed
-
- 11 Jun, 2012 1 commit
-
-
Russell Belfer committed
-
- 07 Jun, 2012 1 commit
-
-
nulltoken committed
-
- 17 May, 2012 2 commits
-
-
Vicent Martí committed
-
Vicent Martí committed
-
- 15 May, 2012 1 commit
-
-
From the description of git_revwalk_reset in revwalk.h the function should clear all pushed and hidden commits, and leave the walker in a blank state (just like at creation). Apparently everything gets reseted appart of pushed commits (walk->one and walk->twos) This fix should reset the walker properly.
Nico von Geyso committed
-
- 03 May, 2012 1 commit
-
-
Vicent Martí committed
-
- 26 Apr, 2012 1 commit
-
-
Russell Belfer committed
-
- 25 Apr, 2012 4 commits
-
-
This renamed `git_khash_str` to `git_strmap`, `git_hash_oid` to `git_oidmap`, and deletes `git_hashtable` from the tree, plus adds unit tests for `git_strmap`.
Russell Belfer committed -
This updates khash.h with some extra features (like error checking on allocations, ability to use wrapped malloc, foreach calls, etc), creates two high-level wrappers around khash: `git_khash_str` and `git_khash_oid` for string-to-void-ptr and oid-to-void-ptr tables, then converts all of the old usage of `git_hashtable` over to use these new hashtables. For `git_khash_str`, I've tried to create a set of macros that yield an API not too unlike the old `git_hashtable` API. Since the oid hashtable is only used in one file, I haven't bother to set up all those macros and just use the khash APIs directly for now.
Russell Belfer committed -
This removes the custom paged allocator from revwalk and replaces it with a `git_pool`.
Russell Belfer committed -
In the case that walk->one is NULL, we know that we have no positive references, so we already know that the revwalk is over.
Carlos Martín Nieto committed
-
- 23 Apr, 2012 1 commit
-
-
Russell Belfer committed
-
- 17 Apr, 2012 2 commits
-
-
This fixes all the warnings on win64 except those in deps, which come from the regex code.
Russell Belfer committed -
Adds a new public reference function `git_reference_lookup_oid` that directly resolved a reference name to an OID without returning the intermediate `git_reference` object (hence, no free needed). Internally, this adds a `git_reference_lookup_resolved` function that combines looking up and resolving a reference. This allows us to be more efficient with memory reallocation. The existing `git_reference_lookup` and `git_reference_resolve` are reimplmented on top of the new utility and a few places in the code are changed to use one of the two new functions.
Russell Belfer committed
-
- 12 Apr, 2012 5 commits
-
-
Carlos Martín Nieto committed
-
Carlos Martín Nieto committed
-
As parents are older than their children, we're appending to the commit list most of the time, which makes an ordered linked list quite inefficient. While we're there, don't sort the results list in the main loop, as we're sorting them afterwards and it creates extra work.
Carlos Martín Nieto committed -
There is no need walk down the parents of a merge base to mark them as uninteresting because we'll never see them. Calculate the merge bases in prepare_walk() so mark_uninteresting() can stop at a merge base instead of walking all the way to the root.
Carlos Martín Nieto committed -
It's implemented in revwalk.c so it has access to the revision walker's commit cache and related functions. The algorithm is the one used by git, modified so it fits better with the library's functions.
Carlos Martín Nieto committed
-