- 11 Dec, 2013 5 commits
-
-
Russell Belfer committed
-
Okay, I've decided I like the readability of this style much better so I used it everywhere.
Russell Belfer committed -
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 -
This adds giterr_user_cancel to return GIT_EUSER and clear any error message that is sitting around. As a result of using that in places, we need to be more thorough with capturing errors that happen inside a callback when used internally. To help with that, this also adds giterr_capture and giterr_restore so that when we internally use a foreach-type function that clears errors and converts them to GIT_EUSER, it is easier to restore not just the return value, but the actual error message text.
Russell Belfer committed
-
- 09 Dec, 2013 2 commits
-
-
The frontend used to look at the file directly, but that's obviously not the right thing to do. Expose it on the backend and use that function instead.
Carlos Martín Nieto committed -
Sometimes (e.g. stash) we want to make sure that a log will be written, even if it's not in one of the standard locations. Let's make that easier.
Carlos Martín Nieto committed
-
- 23 Nov, 2013 8 commits
-
-
Whenever a reference is created or updated, we need to write to the reflog regardless of whether the user gave us a message, so we shouldn't leave that to the ref frontend, but integrate it into the backend. This also eliminates the race between ref update and writing to the reflog, as we protect the reflog with the ref lock. As an additional benefit, this reflog append on the backend happens by appending to the file instead of parsing and rewriting it.
Carlos Martín Nieto committed -
This is as yet unused.
Carlos Martín Nieto committed -
Carlos Martín Nieto committed
-
nulltoken committed
-
nulltoken committed
-
nulltoken committed
-
nulltoken committed
-
nulltoken committed
-
- 01 Nov, 2013 1 commit
-
-
Vicent Marti committed
-
- 09 Oct, 2013 1 commit
-
-
The iconv init was accidentally clearing the default error state during reference normalization. This resets so that normalization errors will be detected correctly.
Russell Belfer committed
-
- 08 Oct, 2013 1 commit
-
-
Before these changes, looking up a reference would return the same precomposed or decomposed form of the reference name that was used to look it up, so on MacOS which ignores the difference between the two, a single reference could be looked up either way and git_reference_name would return the form of the name that was used to look it up! This change makes lookup always return the precomposed name if core.precomposeunicode is set regardless of which version was used to look it up. The reference iterator was already returning the precomposed form from earlier work. This also updates the CMakeLists.txt rules for enabling iconv usage because the clar tests for this code were actually not being activated properly with the old version. Finally, this moves git_repository_reset_filesystem from include/ git2/repository.h to include/git2/sys/repository.h since it is not really a function that normal library users should have to think about very often.
Russell Belfer committed
-
- 02 Oct, 2013 1 commit
-
-
References and their logs are logically coupled, let's make it so in the code by moving the fs-based reflog implementation to live next to the fs-based refs one. As part of the change, make the function take names rather than references, as only the names are relevant when looking up and handling reflogs.
Carlos Martín Nieto committed
-
- 26 Aug, 2013 1 commit
-
-
Nikolai Vladimirov committed
-
- 21 Aug, 2013 1 commit
-
-
The refdb_fs implementation calls realloc directly on a reference object when it wants to rename it. It is not a public object, so this doesn't mess with the immutability of references, but it does assume certain constraints on the reference representation. This commit wraps that assumption in an isolated API to isolate it.
Russell Belfer committed
-
- 10 Jun, 2013 1 commit
-
-
This is a significant reorganization of the diff code to break it into a set of more clearly distinct files and to document the new organization. Hopefully this will make the diff code easier to understand and to extend. This adds a new `git_diff_driver` object that looks of diff driver information from the attributes and the config so that things like function content in diff headers can be provided. The full driver spec is not implemented in the commit - this is focused on the reorganization of the code and putting the driver hooks in place. This also removes a few #includes from src/repository.h that were overbroad, but as a result required extra #includes in a variety of places since including src/repository.h no longer results in pulling in the whole world.
Russell Belfer committed
-
- 30 May, 2013 2 commits
-
-
Vicent Marti committed
-
Vicent Marti committed
-
- 29 May, 2013 1 commit
-
-
Vicent Marti committed
-
- 28 May, 2013 1 commit
-
-
Vicent Marti committed
-
- 11 May, 2013 4 commits
-
-
If the backend doesn't provide support for it, the matching is done in refdb on top of a normal iterator.
Carlos Martín Nieto committed -
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 -
Carlos Martín Nieto committed
-
This allows us to get a list of reference names in a loop instead of callbacks.
Carlos Martín Nieto committed
-
- 08 May, 2013 1 commit
-
-
Generate a shorthand name out of the full refname.
Carlos Martín Nieto committed
-
- 07 May, 2013 1 commit
-
-
Extract this function out of the rev-parse code to be able to DWIM a reference instead of its target.
Carlos Martín Nieto committed
-
- 01 May, 2013 1 commit
-
-
Russell Belfer committed
-
- 29 Apr, 2013 1 commit
-
-
Russell Belfer committed
-
- 28 Apr, 2013 1 commit
-
-
Relax the ONELEVEL ref naming rules so the refspec parsing code can ask for 'master' to be considered valid.
Carlos Martín Nieto committed
-
- 21 Apr, 2013 2 commits
-
-
Create a new include/git2/sys/refs.h and move the reference alloc functions there. Also fix some documentation issues and some minor code cleanups.
Russell Belfer committed -
This moves most of the refdb stuff over to the include/git2/sys directory, with some minor shifts in function organization. While I was making the necessary updates, I also removed the trailing whitespace in a few files that I modified just because I was there and it was bugging me.
Russell Belfer committed
-
- 19 Apr, 2013 1 commit
-
-
Edward Thomson committed
-
- 17 Apr, 2013 2 commits
-
-
Vicent Marti committed
-
Vicent Marti committed
-