src


Log

Author Commit Date CI Message
Sven Strickroth 8b3de0b6 2012-10-02T17:16:22 Optimized win32_nextpath Based on a suggestion by Russell Belfer. Signed-off-by: Sven Strickroth <email@cs-ware.de> Signed-off-by: Russell Belfer <rb@github.com>
Sven Strickroth 19aa8416 2012-09-29T21:26:32 Silence MinGW warnings Signed-off-by: Sven Strickroth <email@cs-ware.de>
Sven Strickroth dee18b82 2012-09-29T21:26:04 Added win32_ prefix for Win32-only methods Signed-off-by: Sven Strickroth <email@cs-ware.de>
Sven Strickroth 77ddd4cc 2012-09-29T21:24:07 Make it compile with MinGW on Windows Signed-off-by: Sven Strickroth <email@cs-ware.de>
Sven Strickroth 32a4e3b7 2012-09-29T20:26:33 Move code to find msysgit path using registry to own method Signed-off-by: Sven Strickroth <email@cs-ware.de>
Sven Strickroth 549ee21a 2012-09-29T20:20:41 Find git installations based on %PATH% Signed-off-by: Sven Strickroth <email@cs-ware.de>
Sven Strickroth f2b126c7 2012-09-25T00:33:53 Implemented the full msysgit fallback chain Signed-off-by: Sven Strickroth <email@cs-ware.de>
Sven Strickroth c378a118 2012-09-25T00:11:53 git_config_open_default: Honour xdr config Signed-off-by: Sven Strickroth <email@cs-ware.de>
Sven Strickroth d7940ac3 2012-09-25T00:09:44 Fixed missing method Signed-off-by: Sven Strickroth <email@cs-ware.de>
Sven Strickroth 407cf4e4 2012-09-24T23:22:07 Fixed typo: xdr config needs to have a lower priority than the global one Signed-off-by: Sven Strickroth <email@cs-ware.de>
Sven Strickroth 8b4f9b17 2012-09-24T18:59:00 Correctly read xdr compatible %HOME%/.config/git/config config file This file is not just read if the global config file (%HOME%/.gitconfig) is not found, however, it is used everytime but with lower priority. Signed-off-by: Sven Strickroth <email@cs-ware.de>
Sven Strickroth 6605f51d 2012-09-24T18:50:37 Automatically detect msysgit installation path Do not hardcode the installation path of msysgit, but read installation path from registry. Also "%PROGRAMFILES%\Git\etc" won't work on x64 systems with 64-bit libgit2, because msysgit is x86 only and located in "%ProgramFiles(x86)%\Git\etc". Signed-off-by: Sven Strickroth <email@cs-ware.de>
Sven Strickroth 68e75c3a 2012-09-24T18:06:34 Calculate the Windows user profile directory the same way as msysgit On most systems %USERPROFILE% is the same as %HOMEDRIVE%\%HOMEPATH%, however, for windows machines in an AD or domain environment this might be different and %HOMEDRIVE%\%HOMEPATH% seems to be better. Signed-off-by: Sven Strickroth <email@cs-ware.de>
Sven Strickroth aed8f8a1 2012-09-24T18:02:47 Honor %HOME% on windows Use %HOME% before trying to figure out the windows user directory. Users might set this as they are used on *nix systems. Signed-off-by: Sven Strickroth <email@cs-ware.de>
Russell Belfer 0cb24616 2012-09-21T10:51:42 Merge pull request #942 from nulltoken/topic/checkout-notify-skipped checkout: add notification callback for skipped files
nulltoken 9e592583 2012-09-19T12:23:47 checkout: add notification callback for skipped files
Sven Strickroth b1127a30 2012-09-20T22:32:19 git_repository_hashfile: Only close file handle if we have a valid one Otherwise this throws an exception on MFC based systems. Signed-off-by: Sven Strickroth <email@cs-ware.de>
nulltoken 9ac8b113 2012-09-20T14:06:49 Fix MSVC amd64 compilation warnings
nulltoken 28abf3db 2012-09-20T11:41:49 checkout: prefer mode_t type usage over int
nulltoken 39783719 2012-09-17T20:27:28 checkout: Mimic git_diff_options storage of paths
nulltoken 5e4cb4f4 2012-09-17T10:38:57 checkout : reduce memory usage when not filtering
nulltoken 44af67a8 2012-09-15T22:07:45 repository: introduce git_repository_set_head()
nulltoken 4ebe38bd 2012-09-15T22:07:09 repository: introduce git_repository_set_head_detached()
nulltoken 3f4c3072 2012-09-15T22:03:31 repository: introduce git_repository_detach_head()
nulltoken 5af61863 2012-09-14T11:15:49 checkout: drop git_checkout_reference()
nulltoken c214fa1c 2012-09-06T15:15:46 checkout: segregate checkout strategies
nulltoken ee8bb8ba 2012-08-19T21:24:51 reset: add support for GIT_RESET_HARD mode
nulltoken e93af304 2012-08-24T10:40:17 checkout: introduce git_checkout_index()
nulltoken 3aa443a9 2012-08-20T16:56:45 checkout: introduce git_checkout_tree()
Carlos Martín Nieto e8776d30 2012-09-16T00:10:07 odb: don't overflow the link path buffer Allocate a buffer large enough to store the path plus the terminator instead of letting readlink write beyond the end.
Vicent Martí 1e90ae77 2012-09-14T13:45:29 Merge pull request #860 from schu/thread-safety odb_pack: make sure to search all backends
Michael Schubert 3d7617e4 2012-09-14T21:33:50 odb_pack: fix race condition last_found is the last packfile a wanted object was found in. Since last_found is shared among all searching threads, it might changes while we're searching. As suggested by @arrbee, put a copy on the stack to fix the race condition.
Vicent Martí 70341b09 2012-09-14T13:33:49 Merge pull request #937 from nulltoken/fix/issue_936 refs: prevent locked refs from being enumerated
nulltoken c2948c77 2012-09-14T21:36:49 refs: prevent locked refs from being enumerated Fix #936
Carlos Martín Nieto b200a813 2012-09-14T20:43:47 config: fix Unicode BOM detection Defining the BOM as a string makes the array include the NUL-terminator, which means that the memcpy is going to check for that as well and thus never match for a nonempty file. Define the array as three chars, which makes the size correct.
Russell Belfer f4ea176f 2012-09-14T10:31:40 Remove unnecessary include I don't think clone.c needs in #include dirent.h and it is not portable, so let's just get rid of it.
nulltoken 75050223 2012-09-14T11:47:43 Fix MSVC compilation warnings
David Michael Barr 60ecdf59 2012-09-10T11:48:21 pack: iterate objects in offset order Compute the ordering on demand and persist until the index is freed.
Carlos Martín Nieto 3ce22c74 2012-08-26T19:22:34 http: use WinHTTP on Windows Wondows has its own HTTP library. Use that one when possible instead of our own. As we don't depend on them anymore, remove the http-parser library from the Windows build, as well as the search for OpenSSL.
Carlos Martín Nieto 687ec68b 2012-09-14T00:51:29 http: use the new unicode functions The winhttp branch was based on a version before these existed, so the build broke on Windows.
Sascha Cunz 13b554e3 2012-09-13T23:30:31 Fix error text s/buffer too long/buffer too short/
Vicent Martí d973a5af 2012-09-13T14:20:43 Merge pull request #929 from arrbee/diff-iter-fixes Fix problems in diff iterator record chaining
Russell Belfer 12b6af17 2012-09-13T14:15:07 Forgot to reset hunk & line between files The last change tweaked the way we use the hunk_curr pointer during iteration, but failed to reset the value back to NULL when switching files.
nulltoken e16fc07f 2012-09-13T22:22:40 refspec: No remote tracking ref from a fetchspec-less remote
Russell Belfer 49d34c1c 2012-09-13T13:17:38 Fix problems in diff iterator record chaining There is a bug in building the linked list of line records in the diff iterator and also an off by one element error in the hunk counts. This fixes both of these, adds some test data with more complex sets of hunk and line diffs to exercise this code better.
Vicent Martí 9be2261e 2012-09-13T09:24:12 Merge pull request #927 from arrbee/hashfile-with-filters Add git_repository_hashfile to hash with filters
Vicent Martí 45c4697c 2012-09-13T09:07:06 Merge pull request #928 from barrbrain/odb-pack-stat-less odb_pack: try lookup before refreshing packs
Michael Schubert 13faa77c 2012-09-13T17:57:45 Fix -Wuninitialized warning
David Michael Barr ab8a0402 2012-09-12T14:26:31 odb_pack: try lookup before refreshing packs This reduces the rate of syscalls for the common case of sequences of object reads from the same pack. Best of 5 timings for libgit2_clar before this patch: real 0m5.375s user 0m0.392s sys 0m3.564s After applying this patch: real 0m5.285s user 0m0.356s sys 0m3.544s 0.6% improvement in system time. 9.2% improvement in user time. 1.7% improvement in elapsed time. Confirmed a 0.6% reduction in number of system calls with strace. Expect greater improvement for graph-traversal with large packs.
Russell Belfer a13fb55a 2012-09-11T17:26:21 Add tests and improve param checks Fixed some minor `git_repository_hashfile` issues: - Fixed incorrect doc (saying that repo could be NULL) - Added checking of object type value to acceptable ones - Added more tests for various parameter permutations
Russell Belfer 47bfa0be 2012-09-07T13:27:49 Add git_repository_hashfile to hash with filters The existing `git_odb_hashfile` does not apply text filtering rules because it doesn't have a repository context to evaluate the correct rules to apply. This adds a new hashfile function that will apply repository-specific filters (based on config, attributes, and filename) before calculating the hash.
Vicent Martí 21d847d3 2012-09-11T14:56:13 Merge pull request #920 from scunz/mergebase_const git_mergebase: Constness-Fix for consistency
Vicent Marti 412293dc 2012-09-11T23:38:16 Merge branch 'diff-crlf-filters' into development
Vicent Marti c859184b 2012-09-11T23:05:24 Properly handle p_reads
Russell Belfer 1f35e89d 2012-09-11T12:03:33 Fix diff binary file detection In the process of adding tests for the max file size threshold (which treats files over a certain size as binary) there seem to be a number of problems in the new code with detecting binaries. This should fix those up, as well as add a test for the file size threshold stuff. Also, this un-deprecates `GIT_DIFF_LINE_ADD_EOFNL`, since I finally found a legitimate situation where it would be returned.
Michael Schubert 6ee68611 2012-09-10T21:29:07 cache: fix race condition Example: a cached node is owned only by the cache (refcount == 1). Thread A holds the lock and determines that the entry which should get cached equals the node (git_oid_cmp(&node->oid, &entry->oid) == 0). It frees the given entry to instead return the cached node to the user (entry = node). Now, before Thread A happens to increment the refcount of the node *outside* the cache lock, Thread B tries to store another entry and hits the slot of the node before, decrements its refcount and frees it *before* Thread A gets a chance to increment for the user. git_cached_obj_incref(entry); git_mutex_lock(&cache->lock); { git_cached_obj *node = cache->nodes[hash & cache->size_mask]; if (node == NULL) { cache->nodes[hash & cache->size_mask] = entry; } else if (git_oid_cmp(&node->oid, &entry->oid) == 0) { git_cached_obj_decref(entry, cache->free_obj); entry = node; } else { git_cached_obj_decref(node, cache->free_obj); // Thread B is here cache->nodes[hash & cache->size_mask] = entry; } } git_mutex_unlock(&cache->lock); // Thread A is here /* increase the refcount again, because we are * returning it to the user */ git_cached_obj_incref(entry);
Russell Belfer 2130dee4 2012-09-10T23:19:00 Merge pull request #914 from authmillenon/index-fixes Fix logical error in git_index_set_caps
Russell Belfer eff14d38 2012-09-10T23:15:54 Merge pull request #906 from nulltoken/topic/git_reference_peel git reference peel
Russell Belfer c6ac28fd 2012-09-10T12:24:05 Reorg internal odb read header and object lookup Often `git_odb_read_header` will "fail" and have to read the entire object into memory instead of just the header. When this happens, the object is loaded and then disposed of immediately, which makes it difficult to efficiently use the header information to decide if the object should be loaded (since attempting to do so will often result in loading the object twice). This commit takes the existing code and reorganizes it to have two new functions: - `git_odb__read_header_or_object` which acts just like the old read header function except that it returns the object, too, if it was forced to load the whole thing. It then becomes the callers responsibility to free the `git_odb_object`. - `git_object__from_odb_object` which was extracted from the old `git_object_lookup` and creates a subclass of `git_object` from an existing `git_odb_object` (separating the ODB lookup from the `git_object` creation). This allows you to use the first header reading function efficiently without instantiating the `git_odb_object` twice. There is no net change to the behavior of any of the existing functions, but this allows internal code to tap into the ODB lookup and object creation to be more efficient.
Russell Belfer e597b189 2012-09-10T11:49:12 Move diff max_size to public API This commit adds a max_size value in the public `git_diff_options` structure so that the user can automatically flag blobs over a certain size as binary regardless of other properties. Also, and perhaps more importantly, this moves binary detection to be as early as possible in the diff traversal inner loop and makes sure that we stop loading objects as soon as we decide that they are binary.
Russell Belfer b36effa2 2012-09-10T09:59:14 Replace git_diff_iterator_num_files with progress The `git_diff_iterator_num_files` API was problematic, since we don't actually know the exact number of files to be iterated over until we load those files into memory. This replaces it with a new `git_diff_iterator_progress` API that goes from 0 to 1, and moves and renamed the old API for the internal places that can tolerate a max value instead of an exact value.
Sascha Cunz 857323d4 2012-09-09T15:53:57 git_mergebase: Constness-Fix for consistency
Russell Belfer 17b06f4d 2012-09-07T15:49:08 Add missing accessor for fetchRecurseSubmodules When `git_submodule` became an opaque structure, I forgot to add accessor functions for the fetchRecurseSubmodules config setting. This fixes that.
Russell Belfer 3a3deea8 2012-09-06T15:45:50 Clean up blob diff path Previously when diffing blobs, the diff code just ran with a NULL repository object. Of course, that's not necessary and the test for a NULL repo was confusing. This makes the blob diff run with the repo that contains the blobs and clarifies the test that it is possible to be diffing data where the path is unknown.
Russell Belfer 60b9d3fc 2012-09-05T15:00:40 Implement filters for status/diff blobs This adds support to diff and status for running filters (a la crlf) on blobs in the workdir before computing SHAs and before generating text diffs. This ended up being a bit more code change than I had thought since I had to reorganize some of the diff logic to minimize peak memory use when filtering blobs in a diff. This also adds a cap on the maximum size of data that will be loaded to diff. I set it at 512Mb which should match core git. Right now it is a #define in src/diff.h but it could be moved into the public API if desired.
Russell Belfer f8e2cc9a 2012-08-31T15:53:47 Alternate test for autocrlf with status I couldn't get the last failing test to actually fail. This is a different test suggested by @nulltoken which should fail.
nulltoken 35d2e449 2012-08-20T11:26:02 checkout: cleanup misplaced declaration
nulltoken ced8d142 2012-08-22T11:30:55 errors: deploy GIT_EBAREREPO usage
nulltoken 31665948 2012-08-24T21:30:45 refs: introduce git_reference_peel() Fix #530
Michael Schubert 0e9f2fce 2012-09-06T11:35:09 odb: mark unused variable
Vicent Martí 7a3fc9fb 2012-09-06T01:17:23 Merge pull request #900 from pwkelley/development Expose a malloc function to 3rd party ODB backends
Vicent Martí 4e2b8b4c 2012-09-06T01:15:14 Merge pull request #912 from schu/netops-ssl-error netops: be more careful with SSL errors
Vicent Marti 01ae1909 2012-09-06T10:13:38 diff: Cleanup documentation and printf compat
Russell Belfer 510f1bac 2012-08-30T16:39:05 Fix comments and a minor bug This adds better header comments and also fixes a bug in one of simple APIs that tells the number of lines in the current hunk.
Russell Belfer f335ecd6 2012-08-30T14:24:16 Diff iterators 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.
Vicent Martí 4d383403 2012-09-04T14:19:24 Merge pull request #856 from libgit2/utf8-win Windows: Perform UTF-8 path conversion on the Stack
Carlos Martín Nieto f9988d4e 2012-09-04T21:42:00 odb: pass the user's data pointer correctly in foreach
authmillenon 0e2dd29b 2012-09-04T12:07:51 Fix logical error in git_index_set_caps
nulltoken b97c169e 2012-09-04T10:01:18 Fix MSVC compilation warnings
Michael Schubert 65ac67fb 2012-08-28T21:58:10 netops: be more careful with SSL errors SSL_get_error() allows to receive a result code for various SSL operations. Depending on the return value (see man (3) SSL_get_error) there might be additional information in the OpenSSL error queue. Return the queued message if available, otherwise set an error message corresponding to the return code.
Michael Schubert 4deda91b 2012-09-04T00:13:59 netops: continue writing on SSL_ERROR_WANT_WRITE
nulltoken 89cd5708 2012-08-29T14:20:53 repository: make initialization cope with missing core.worktree
Vicent Marti 0f4c6175 2012-08-28T22:19:08 Add bounds checking to UTF-8 conversion
Vicent Marti 6813169a 2012-08-06T12:45:59 windows: Keep UTF-8 on the stack yo
Vicent Martí 3b73a034 2012-04-25T16:26:12 UTF-8 changes yo
Vicent Martí 319ad0ba 2012-08-28T13:55:55 Merge pull request #905 from carlosmn/signature-now signature: make the OS give us the offset for git_signature_now
Michael Schubert 0844ed06 2012-08-28T20:15:21 Fix parentheses warning
Carlos Martín Nieto d03d309b 2012-08-28T18:02:12 signature: make the OS give us the offset for git_signature_now There is a better and less fragile way to calculate time offsets. Let the OS take care of dealing with DST and simply take the the offset between the local time and UTC that it gives us.
Carlos Martín Nieto 0d5dce26 2012-08-28T14:15:32 ssl: make cert check ignore work for invalid certs, not just CNs Passing SSL_VERIFY_PEER makes OpenSSL shut down the connection if the certificate is invalid, without giving us a chance to ignore that error. Pass SSL_VERIFY_NONE and call SSL_get_verify_result if the user wanted us to check. When no CNs match, we used to jump to on_error which gave a bogus error as that's for OpenSSL errors. Jump to cert_fail so we tell the user that the error came from checking the certificate.
Vicent Marti 62eafd06 2012-08-27T14:54:52 Merge branch 'branch-delete-ref' into development Conflicts: include/git2/refs.h
Vicent Martí bd2887a5 2012-08-27T14:52:26 Merge pull request #904 from arrbee/better-object-peel Make git_object_peel a bit smarter
Vicent Martí b9d283d1 2012-08-27T13:39:17 Merge pull request #897 from nulltoken/topic/git_reference_check_format refs: expose git_reference_normalize_name()
Vicent Martí 05752700 2012-08-27T13:35:58 Merge pull request #899 from schu/revwalk-push revwalk: refuse push of non-commit objects
Russell Belfer d8057a5b 2012-08-27T11:53:59 Make git_object_peel a bit smarter This expands the types of peeling that `git_object_peel` knows how to do to include TAG -> BLOB peeling, and makes the errors slightly more consistent depending on the situation. It also adds a new special behavior where peeling to ANY will peel until the object type changes (e.g. chases TAGs to a non-TAG). Using this expanded peeling, this replaces peeling code that was embedded in `git_tag_peel` and `git_reset`.
Russell Belfer 0b9174c6 2012-08-27T11:45:48 Merge pull request #903 from nulltoken/topic/peeling-duplication branch: reduce code duplication
Philip Kelley c49d328c 2012-08-27T09:59:13 Expose a malloc function to 3rd party ODB backends
nulltoken d1445b75 2012-08-27T15:24:27 branch: reduce code duplication
Michael Schubert 4e323ef0 2012-08-27T10:51:01 revwalk: refuse push of non-commit objects Check the type of the pushed object immediately instead of starting the walk and failing in between.
nulltoken 2e0c8816 2012-08-26T22:08:22 refs: expose git_reference_normalize_name()
Vicent Marti 1c947daa 2012-08-23T15:47:29 branch: Change `git_branch_delete` to take a ref