- 05 Feb, 2014 4 commits
-
-
We need this from util.h and posix.h, but the latter includes common.h which includes util.h, which means p_strlen is not defined by the time we get to git__strndup(). Split the definition on p_strlen() off into its own header so we can use it in util.h.
Carlos Martín Nieto committed -
The standard library provides a very nice strnlen function, which knows to use SSE, let's not reimplement it ourselves.
Carlos Martín Nieto committed -
The current code issues a lot of strncmp() calls in order to check for the end of the header, simply in order to copy it and start going through it again. These are a lot of calls for something we can check as we go along. Knowing the amount of parents beforehand to reduce allocations in extreme cases does not make up for them. Instead start parsing immediately and check for the double-newline after each header field, leaving the raw_header allocation for the end, which lets us go through the header once and reduces the amount of strncmp() calls significantly. In unscientific testing, this has reduced a shortlog-like usage (walking though the whole history of a branch and extracting data from the commits) of git.git from ~830ms to ~700ms and makes the time we spend in strncmp() negligible.
Carlos Martín Nieto committed -
Carlos Martín Nieto committed
-
- 04 Feb, 2014 6 commits
-
-
Corrections for merge working directory validation
Vicent Marti committed -
Edward Thomson committed
-
Validating the workdir should not compare HEAD to working directory - this is both inefficient (as it ignores the cache) and incorrect. If we had legitimately allowed changes in the index (identical to the merge result) then comparing HEAD to workdir would reject these changes as different. Further, this will identify files that were filtered strangely as modified, while testing with the cache would prevent this. Also, it's stupid slow.
Edward Thomson committed -
Edward Thomson committed
-
Edward Thomson committed
-
Edward Thomson committed
-
- 03 Feb, 2014 1 commit
-
-
Correct "new" id for reattached-HEAD reflog entry
Vicent Marti committed
-
- 02 Feb, 2014 3 commits
-
-
Add `git_reference_is_note`.
Vicent Marti committed -
Arthur Schreiber committed
-
Ben Straub committed
-
- 01 Feb, 2014 2 commits
-
-
Ben Straub committed
-
Ben Straub committed
-
- 31 Jan, 2014 4 commits
-
-
Update to latest clar
Vicent Marti committed -
Russell Belfer committed
-
Reflog completionism
Vicent Marti committed -
Ben Straub committed
-
- 30 Jan, 2014 20 commits
-
-
Ben Straub committed
-
Ben Straub committed
-
Ben Straub committed
-
Ben Straub committed
-
Ben Straub committed
-
Ben Straub committed
-
Ben Straub committed
-
Ben Straub committed
-
Ben Straub committed
-
Ben Straub committed
-
Ben Straub committed
-
Ben Straub committed
-
Ben Straub committed
-
Ben Straub committed
-
Index tree-bob collision
Vicent Marti committed -
If you are checking out NONE, then don't remove.
Russell Belfer committed -
Russell Belfer committed
-
The checkout code used to defer removal of "blocking" files in checkouts until the blocked item was actually being written (since we have already checked that the removing the block is acceptable according to the update rules). Unfortunately, this resulted in an intermediate index state where both the blocking and new items were in the index which is no longer allowed. Now we just remove the blocking item in the first pass so it never needs to coexist. In cases where there are typechanges, this could result in a bit more churn of removing and recreating intermediate directories, but I'm going to assume that is an unusual case and the churn will not be too costly.
Russell Belfer committed -
Fix errors with zstream (and a variety of other cleanups)
Vicent Marti committed -
And don't terminate if there isn't space for it (since it's binary data, it's not worth a reallocation).
Russell Belfer committed
-