Log

Author Commit Date CI Message
Russell Belfer a37aa82e 2014-05-13T15:54:23 Some coverity inspired cleanups
Vicent Marti 03fcef18 2014-05-13T12:40:13 Merge pull request #2328 from libgit2/rb/how-broken-can-ignores-be Improve checks for ignore containment
Vicent Marti bcf9792f 2014-05-13T12:36:51 Merge pull request #2330 from libgit2/cmn/pack-unpack-loop Make pack object lookup use loops
Vicent Marti e1619626 2014-05-13T12:35:56 Merge pull request #2346 from kitbellew/fix2300 Minor fix for previously merged netops code.
Albert Meltzer 7c57cd97 2014-05-12T20:25:44 Win32 fix for #2300. The code doesn't use SSL and a test requires it.
Carlos Martín Nieto c968ce2c 2014-05-12T02:01:05 pack: don't forget to cache the base object The base object is a good cache candidate, so we shouldn't forget to add it to the cache.
Carlos Martín Nieto 15bcced2 2014-05-11T05:31:22 pack: use stack allocation for smaller delta chains This avoid allocating the array on the heap for relatively small chains. The expected performance increase is sadly not really noticeable.
Carlos Martín Nieto a3ffbf23 2014-05-11T03:50:34 pack: expose a cached delta base directly Instead of going through a special entry in the chain, let's pass it as an output parameter.
Russell Belfer df341926 2014-05-12T10:51:56 Merge pull request #2336 from libgit2/rb/unicode-branch-names Pass unconverted Unicode path data when iconv doesn't like it
Russell Belfer af567e88 2014-05-12T10:44:13 Merge pull request #2334 from libgit2/rb/fix-2333 Be more careful with user-supplied buffers
Russell Belfer ce3b71d9 2014-05-12T10:28:45 Don't scale diff stat when not needed
Russell Belfer b1914c36 2014-05-12T10:24:46 Minor fixes for warnings and error propagation
Russell Belfer 7bcced44 2014-05-12T10:15:30 Merge pull request #2300 from libgit2/cmn/match-host-tests Some improvements to the cert checking
Russell Belfer d2c4d1c6 2014-05-12T10:04:52 Merge pull request #2188 from libgit2/cmn/config-snapshot Configuration snapshotting
Carlos Martín Nieto 9dbd150f 2014-05-09T09:36:09 pack: simplify delta chain code The switch makes the loop somewhat unwieldy. Let's assume it's fine and perform the check when we're accessing the data. This makes our code look a lot more like git's.
Carlos Martín Nieto b2559f47 2014-05-08T17:14:59 pack: preallocate a 64-element chain Dependency chains are often large and require a few reallocations. Allocate a 64-element chain before doing anything else to avoid allocations during the loop. This value comes from the stack-allocated one git uses. We still allocate this on the heap, but it does help performance a little bit.
Carlos Martín Nieto e6d10c58 2014-05-08T16:24:54 pack: make sure not to leak the dep chain
Carlos Martín Nieto a332e91c 2014-05-06T23:37:28 pack: use a cache for delta bases when unpacking Bring back the use of the delta base cache for unpacking objects. When generating the delta chain, we stop when we find a delta base in the pack's cache and use that as the starting point.
Carlos Martín Nieto 2acdf4b8 2014-05-06T19:20:33 pack: unpack using a loop We currently make use of recursive function calls to unpack an object, resolving the deltas as we come back down the chain. This means that we have unbounded stack growth as we look up objects in a pack. This is now done in two steps: first we figure out what the dependency chain is by looking up the delta bases until we reach a non-delta object, pushing the information we need onto a stack and then we pop from that stack and apply the deltas until there are no more left. This version of the code does not make use of the delta base cache so it is slower than what's in the mainline. A later commit will reintroduce it.
Carlos Martín Nieto ae081739 2014-05-06T21:21:04 pack: do not repeat the same error message four times Repeating this error message makes it harder to find out where we actually are finding the error, and they don't really describe what we're trying to do.
Carlos Martín Nieto 86d5810b 2014-05-06T16:20:14 pack: remove misleading comment
Vicent Marti e18d5e52 2014-05-09T08:59:59 Merge pull request #2331 from libgit2/rb/dont-stop-diff-on-safecrlf Add filter options and ALLOW_UNSAFE
Russell Belfer bb45e390 2014-05-08T15:01:07 Disable threads::refdb::edit_while_iterate test It seems that with the various recent changes to reference updating and reflog writing, that the thread safety of refdb updates has been reduced (either that or it was never thread safe and the window for error has increased). Either way, this test is now sometimes segfaulting which is no good, so let's disable the test for now. We don't really make any public promises about thread safety for this type of operation, so I think this is acceptable, at least in the short term.
Russell Belfer 8a2ef218 2014-05-08T14:48:27 Don't always test composed-insensitive lookups Only on a filesystem that is composed/decomposed insensitive, should be testing that a branch can be looked up by the opposite form and still work correctly.
Russell Belfer be20ac5a 2014-05-08T14:33:37 Allow cl_repo_get_bool to work with missing key One of the test helpers provides a quick way for looking up a boolean key. But if the key way missing completely, the check would actually raise an error. Given the way we use this helper, if the key is missing, this should just return false, I think.
Vicent Marti 4df53a64 2014-05-08T23:16:21 Merge pull request #2335 from libgit2/cmn/indexer-vector-handling indexer: avoid memory moves
Russell Belfer 43a04135 2014-05-08T13:52:46 Pass unconverted data when iconv doesn't like it When using Iconv to convert unicode data and iconv doesn't like the source data (because it thinks that it's not actual UTF-8), instead of stopping the operation, just use the unconverted data. This will generally do the right thing on the filesystem, since that is the source of the non-UTF-8 path data anyhow. This adds some tests for creating and looking up branches with messy Unicode names. Also, this takes the helper function that was previously internal to `git_repository_init` and makes it into `git_path_does_fs_decompose_unicode` which is a useful in tests to understand what the expected results should be.
Carlos Martín Nieto 2dde1e0c 2014-05-08T22:31:59 indexer: avoid memory moves Our vector does a move of the rest of the array when we remove an item. Doing this repeatedly can be expensive, and we do this a lot in the indexer. Instead, set the value to NULL and skip those entries. perf reported around 30% of `index-pack` time was going into memmove. With this change, that goes away and we spent most of the time hashing and inflating data.
Russell Belfer 5ebe18b7 2014-05-08T13:29:09 Merge pull request #2332 from libgit2/peff/iconv iconv debugging aids
Jeff King 56ec2256 2014-05-08T01:06:38 examples: add a basic for-each-ref example This is quite close to running "git for-each-ref" except: 1. It does not take any formatting or selection options at all. 2. The output is not sorted. I wrote it to look at debugging some issues with ref iteration, but there's no reason it can't live on as an example command.
Jeff King 6bcb0987 2014-05-08T00:35:56 cmake: s/ICONV/Iconv/ in FIND_PACKAGE The cmake module we provide is in the file FindIconv.cmake, so we must match the case correctly. It happens to work in practice because we only turn on ICONV on Darwin, and people generally have case-insensitive filesystems there. Note that we only need to update the package name here. The package itself still sets the all-uppercase ICONV_FOUND flag, so we continue to use uppercase in the rest of cmake.
Russell Belfer 45c53eb6 2014-05-08T10:46:04 Use unsigned type for APIs with opt flag mask
Russell Belfer 1e4976cb 2014-05-08T10:17:14 Be more careful with user-supplied buffers This adds in missing calls to `git_buf_sanitize` and fixes a number of places where `git_buf` APIs could inadvertently write NUL terminator bytes into invalid buffers. This also changes the behavior of `git_buf_sanitize` to NUL terminate a buffer if it can and of `git_buf_shorten` to do nothing if it can. Adds tests of filtering code with zeroed (i.e. unsanitized) buffer which was previously triggering a segfault.
Carlos Martín Nieto ac99d86b 2014-05-07T11:34:32 repository: introduce a convenience config snapshot method Accessing the repository's config and immediately taking a snapshot of it is a common operation, so let's provide a convenience function for it.
Russell Belfer ed476c23 2014-05-06T16:11:03 Merge pull request #2329 from anuraggup/fix_git_shutdown Fix the issues in git_shutdown
Russell Belfer 5269008c 2014-05-06T16:01:49 Add filter options and ALLOW_UNSAFE Diff and status do not want core.safecrlf to actually raise an error regardless of the setting, so this extends the filter API with an additional options flags parameter and adds a flag so that filters can be applied with GIT_FILTER_OPT_ALLOW_UNSAFE, indicating that unsafe filter application should be downgraded from a failure to a warning.
Russell Belfer 10511000 2014-05-06T14:03:58 Merge pull request #2324 from libgit2/cmn/file-in-objects-dir odb: ignore files in the objects dir
Anurag Gupta 0bf5430d 2014-05-06T13:33:47 Fix the issues in git_shutdown 1) Call to git_shutdown results in setting git__n_shutdown_callbacks to -1. Next call to git__on_shutdown results in ABW (Array Bound Write) for array git__shutdown_callbacks. In the current Implementation, git_atomic_dec is called git__n_shutdown_callbacks + 1 times. I have modified it to a for loop so that it is more readable. It would not set git__n_shutdown_callbacks to a negative number and reset the elements of git__shutdown_callbacks to NULL. 2) In function git_sysdir_get, shutdown function is registered only if git_sysdir__dirs_shutdown_set is set to 0. However, after this variable is set to 1, it is never reset to 0. If git_sysdir_global_init is called again from synchronized_threads_init it does not register shutdown function for this subsystem.
Russell Belfer f554611a 2014-05-06T12:41:26 Improve checks for ignore containment The diff code was using an "ignored_prefix" directory to track if a parent directory was ignored that contained untracked files alongside tracked files. Unfortunately, when negative ignore rules were used for directories inside ignored parents, the wrong rules were applied to untracked files inside the negatively ignored child directories. This commit moves the logic for ignore containment into the workdir iterator (which is a better place for it), so the ignored-ness of a directory is contained in the frame stack during traversal. This allows a child directory to override with a negative ignore and yet still restore the ignored state of the parent when we traverse out of the child. Along with this, there are some problems with "directory only" ignore rules on container directories. Given "a/*" and "!a/b/c/" (where the second rule is a directory rule but the first rule is just a generic prefix rule), then the directory only constraint was having "a/b/c/d/file" match the first rule and not the second. This was fixed by having ignore directory-only rules test a rule against the prefix of a file with LEADINGDIR enabled. Lastly, spot checks for ignores using `git_ignore_path_is_ignored` were tested from the top directory down to the bottom to deal with the containment problem, but this is wrong. We have to test bottom to top so that negative subdirectory rules will be checked before parent ignore rules. This does change the behavior of some existing tests, but it seems only to bring us more in line with core Git, so I think those changes are acceptable.
Carlos Martín Nieto 6e9afb97 2014-05-06T21:14:58 object: fix a brace The brace in the check for peel's return was surrounding the wrong thing, which made 'error' be set to 1 when there was an error instead of the error code.
Anurag Gupta 001befcd 2014-05-06T12:16:24 Fix the issues in git__on_shutdown
Carlos Martín Nieto ee311907 2014-05-05T16:04:14 odb: ignore files in the objects dir We assume that everything under GIT_DIR/objects/ is a directory. This is not necessarily the case if some process left a stray file in there. Check beforehand if we do have a directory and ignore the entry otherwise.
Russell Belfer d2c16e9a 2014-05-02T15:15:43 Doc fixes
Vicent Marti 272b462d 2014-05-02T09:50:15 Merge pull request #2308 from libgit2/rb/diff-update-index-stat-cache Reduce excessive OID calculation for diff and stat
Russell Belfer 9862ef8e 2014-05-02T09:42:07 Merge pull request #2310 from libgit2/cmn/commit-create-safe commit: safer commit creation with reference update
Russell Belfer 99dfa470 2014-05-01T15:12:12 Some further sandboxing cleanups to tests Trying to find other issues where tests may not clean up quite properly when they are through...
Russell Belfer 0f603132 2014-05-01T14:47:33 Improve handling of fake home directory There are a few tests that set up a fake home directory and a fake GLOBAL search path so that we can test things in global ignore or attribute or config files. This cleans up that code to work more robustly even if there is a test failure. This also fixes some valgrind warnings where scanning search paths for separators could end up doing a little bit of sketchy data access when coming to the end of search list.
Russell Belfer bc91347b 2014-04-30T11:16:31 Fix remaining init_options inconsistencies There were a couple of "init_opts()" functions a few more cases of structure initialization that I somehow missed.
Russell Belfer 702efc89 2014-04-30T10:57:42 Make init_options fns use unsigned ints and macro Use an unsigned int for the version and add a helper macro so the code is simplified (and so the error message is a common string).
Russell Belfer 9c8ed499 2014-04-29T15:05:58 Remove trace / add git_diff_perfdata struct + api
Russell Belfer 7a2e56a3 2014-04-29T14:30:15 Get rid of redundant git_diff_options_init fn Since git_diff_init_options was introduced, remove this old fn.
Russell Belfer b23b112d 2014-04-29T11:29:49 Add payloads, bitmaps to trace API This is a proposed adjustment to the trace APIs. This makes the trace levels into a bitmask so that they can be selectively enabled and adds a callback-level payload, plus a message-level payload. This makes it easier for me to a GIT_TRACE_PERF callbacks that are simply bypassed if the PERF level is not set.
Russell Belfer 225aab5d 2014-04-28T16:47:39 Don't use trace if GIT_TRACE not defined
Russell Belfer cd424ad5 2014-04-28T16:39:53 Add GIT_STATUS_OPT_UPDATE_INDEX and use trace API This adds an option to refresh the stat cache while generating status. It also rips out the GIT_PERF stuff I had an makes use of the trace API to keep statistics about what happens during diff.
Russell Belfer 94fb4aad 2014-04-28T14:48:41 Add diff option to update index stat cache When diff is scanning the working directory, if it finds a file where it is not sure if the index entry matches the working dir, it will recalculate the OID (which is pretty expensive). This adds a new flag to diff so that if the OID calculation finds that the file actually has not changed (i.e. just the modified time was altered or such), then it will refresh the stat cache in the index so that future calls to diff will not have to check the oid again.
Russell Belfer 0fc8e1f6 2014-04-28T14:34:55 Lay groundwork for updating stat cache in diff This reorganized the diff OID calculation to make it easier to correctly update the stat cache during a diff once the flags to do so are enabled. This includes marking the path of a git_index_entry as const so we can make a "fake" git_index_entry with a "const char *" path and not get warnings. I was a little surprised at how unobtrusive this change was, but I think it's probably a good thing.
Russell Belfer 8ef4e11a 2014-04-28T14:16:26 Skip diff oid calc when size definitely changed When we think the stat cache in the index seems valid and the size or mode of a file has definitely changed, then don't bother trying to recalculate the OID of the workdir bits to confirm that it is modified - just accept that it is modified. This can result in files that show as modified with no actual diff, but the behavior actually appears to match Git on the command line. This also includes a minor optimization to not perform a submodule lookup on the ".git" directory itself.
Russell Belfer 240f4af3 2014-04-28T14:04:29 Add build option for diff internal statistics
Vicent Marti 6a1ca96e 2014-05-02T17:14:04 Temporary fix for Travis CI builds See https://github.com/libgit2/libgit2/pull/2321#issuecomment-42039673 We may rollback once we found something more reliable
Vicent Marti 89e9c167 2014-05-02T03:37:40 Merge pull request #2318 from linquize/sleep Make examples/status.c compile on Windows
Vicent Marti 644592bc 2014-05-02T03:36:22 Merge pull request #2320 from libgit2/rb/fix-starstar-again Make ** pattern eat trailing slash
Russell Belfer d19b2f9f 2014-05-01T12:46:46 Make ** pattern eat trailing slash This allows "foo/**/*.html" to match "foo/file.html"
Linquize d0420fc6 2014-05-01T22:39:35 Make examples/status.c compile on Windows
Vicent Marti 9d878fc4 2014-05-01T01:23:10 Merge pull request #2304 from jacquesg/solaris Solaris!
Jacques Germishuys 183aa4f8 2014-04-30T17:46:53 Check for NULL before passing it to vsnprintf
Jacques Germishuys 6b05240c 2014-04-27T19:44:20 strcasecmp is in <strings.h>
Jacques Germishuys 98b8fcff 2014-04-29T20:45:02 Build regex.c for Solaris. Added required defines for Solaris
Vicent Marti c522bed0 2014-04-30T05:45:31 Merge pull request #2314 from libgit2/cmn/known-libs Assorted CMake fixups
Vicent Marti 739040e6 2014-04-30T05:34:33 Merge pull request #2315 from jacquesg/qsort-cygwin cygwin also doesn't have qsort_r
Jacques Germishuys 90a4340a 2014-04-30T11:47:58 cygwin also doesn't have qsort_r
Carlos Martín Nieto 039e354b 2014-04-30T11:57:54 ciscript: don't use an empty string as a number An empty string is not a valid number, and some shells complain. Check instead if $COVERITY is non-empty, which is a common convention and what we're doing anyway.
Carlos Martín Nieto 891b0277 2014-04-30T11:20:51 refs: document _next_name() If it's not documented, it doesn't show up in the docs (and we really should document, anyway).
Carlos Martín Nieto f5fc63bc 2014-04-30T10:55:58 Don't exclude libssh2 from MinGW It reportedly works. It does not however work when cross-compiling on Travis, so let's disable it there. This fixes #2311.
Ting-Wei Lan 096ac799 2014-02-13T22:38:23 Workaround missing .pc files on FreeBSD This fixes #2118
Carlos Martín Nieto 04739e9f 2014-04-30T10:15:44 Unquiet CMake output The point of this phase is to know what we have and not. Show the user a clear indication of what we have.
Carlos Martín Nieto 217c029b 2014-04-09T14:08:22 commit: safer commit creation with reference update The current version of the commit creation and amend function are unsafe to use when passing the update_ref parameter, as they do not check that the reference at the moment of update points to what the user expects. Make sure that we're moving history forward when we ask the library to update the reference for us by checking that the first parent of the new commit is the current value of the reference. We also make sure that the ref we're updating hasn't moved between the read and the write. Similarly, when amending a commit, make sure that the current tip of the branch is the commit we're amending.
Vicent Marti 892778ee 2014-04-29T05:02:38 Merge pull request #2309 from jacquesg/midnightbsd MidnightBSD may also not have strnlen
Jacques Germishuys 36a61518 2014-04-29T13:28:16 MidnightBSD may also not have strnlen
Vicent Marti 041336e6 2014-04-28T07:36:27 Merge pull request #2306 from odcinek/development_cmake Make the build CMake 2.6 compatible
Marcin Sawicki 7f0de93a 2014-04-28T15:24:36 Make the build CMake 2.6 compatible
Vicent Marti ec771058 2014-04-27T03:57:53 Merge pull request #2301 from libgit2/cmn/pack-objects-memory Keep the deflate buffer from ballooning up
Carlos Martín Nieto 38d338b2 2014-04-26T18:15:39 pack-objects: always write out the status in write_one() Make sure we set the output parameter to a value.
Carlos Martín Nieto c7f86efb 2014-04-26T18:04:43 zstream: grow based on used memory rather than allocated When deflating data, we might need to grow the buffer. Currently we add a guess on top of the currently-allocated buffer size. When we re-use the buffer, it already has some memory allocated; adding to that means that we always grow the buffer regardless of how much we need to use. Instead, increase on top of the currently-used size. This still leaves us with the allocated size of the largest object we compress, but it's a minor pain compared to unbounded growth. This fixes #2285.
Carlos Martín Nieto 783555d8 2014-04-26T14:36:32 netops: catch the server not sending a certificate It's possible for an encrypted connection not have a certificate. In this case, SSL_get_verify_result() will return OK because no error happened (as it never even tried to validate anything). SSL_get_peer_certificate() will return NULL in this case so we need to catch that. On the upside, the current code would segfault in this situation instead of letting it through as a valid cert.
Carlos Martín Nieto 51d3f6f5 2014-04-26T14:16:42 netops: provide more specific error for cert failure Specify what we do not like about the certificate. In this case, we do not like the name.
Carlos Martín Nieto 1f0d4f3d 2014-04-26T13:51:14 netops: unit-test the cert host-name pattern matching This kind of stuff should have unit tests, even if it's just to show what we expect to match successfully.
Carlos Martín Nieto 4f9d5414 2014-04-26T14:29:18 refdb: fix typo and wording
Vicent Marti e79a2998 2014-04-25T07:08:41 Merge pull request #2299 from mekishizufu/fix_leaks Plug some leaks
Jiri Pospisil 7b8d564d 2014-04-25T15:49:58 Reset tests: Use sandboxed index
Jiri Pospisil 424222f4 2014-04-25T15:49:26 Filter: Make sure to release local on error
Vicent Marti 8443ed6c 2014-04-25T02:10:19 Merge pull request #2284 from jacquesg/push-progress-callback Fire progress and update tips callbacks also for pushes.
Vicent Marti 332e4f20 2014-04-25T02:07:42 Merge pull request #2297 from libgit2/rb/status-with-precomposed-changes Improve test coverage of status with different core.precomposeunicode settings
Vicent Marti 2ad51b81 2014-04-25T02:04:12 Merge pull request #2241 from libgit2/rb/stash-skip-submodules Improve stash and checkout for ignored + untracked items
Russell Belfer af9eeac9 2014-04-24T16:20:08 Merge pull request #2294 from ethomson/merge_checkout_strategy Merge checkout strategy
Russell Belfer 6b833e3a 2014-04-24T15:40:50 Improve docs for status rename detection limits and make tests empty on platforms without iconv support.
Russell Belfer f608f3bb 2014-04-24T15:25:01 Test toggling core.precomposeunicode yields rename There is an interesting difference with core Git here, though. Because libgit2 will do rename detection with the working directory, in the last case where the HEAD and the working directory both have the decomposed data and the index has the composed data, we generate a single status record with two renames whereas Git will generate one rename (head to index) and one untracked file.
Russell Belfer 2334e3d8 2014-04-24T14:46:59 Test decomposed unicode renames work as expected
Russell Belfer a409acef 2014-04-24T11:59:50 Handle explicitly ignored dir slightly differently When considering status of untracked directories, if we find an explicitly ignored item, even if it is a directory, treat the parent as an IGNORED item. It was accidentally being treated as an EMPTY item because we were not looking into the ignored subdir.
Vicent Marti 87c9b741 2014-04-24T05:24:46 Merge pull request #2295 from libgit2/cmn/fetchhead-quote fetchhead: deal with quotes in branch names
Carlos Martín Nieto bdc82e1c 2014-04-24T14:08:29 fetchhead: deal with quotes in branch names The current FETCH_HEAD parsing code assumes that a quote must end the branch name. Git however allows for quotes as part of a branch name, which causes us to consider the FETCH_HEAD file as invalid. Instead of searching for a single quote char, search for a quote char followed by SP, which is not a valid part of a ref name.