summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* blob: remove _fromchunks()cmn/createblob-streamCarlos Martín Nieto2016-03-223-216/+4
| | | | | | The callback mechanism makes it awkward to write data from an IO source; move to `_fromstream()` which lets the caller remain in control, in the same vein as we prefer iterators over foreach callbacks.
* CHANGELOG: add a note about _fromstream() and _fromstream_commit()Carlos Martín Nieto2016-03-221-0/+5
|
* blob: fix fromchunks iteration counterCarlos Martín Nieto2016-03-222-6/+6
| | | | | | | | By returning when the count goes to zero rather than below it, setting `howmany` to 7 in fact writes out the string 6 times. Correct the termination condition to write out the string the amount of times we specify.
* blob: introduce creating a blob by writing into a streamCarlos Martín Nieto2016-03-223-0/+238
| | | | | | | | | | | | | | | | | | | | | The pair of `git_blob_create_frombuffer()` and `git_blob_create_frombuffer_commit()` is meant to replace `git_blob_create_fromchunks()` by providing a way for a user to write a new blob when they want filtering or they do not know the size. This approach allows the caller to retain control over when to add data to this buffer and a more natural fit into higher-level language's own stream abstractions instead of having to handle IO wait in the callback. The in-memory buffer size of 2MB is chosen somewhat arbitrarily to be a round multiple of usual page sizes and a value where most blobs seem likely to be either going to be way below or way over that size. It's also a round number of pages. This implementation re-uses the helper we have from `_fromchunks()` so we end up writing everything to disk, but hopefully more efficiently than with a default filebuf. A later optimisation can be to avoid writing the in-memory contents to disk, with some extra complexity.
* filebuf: allow using a custom buffer sizeCarlos Martín Nieto2016-03-222-1/+7
| | | | | | Allow setting the buffer size on open in order to use this data structure more generally as a spill buffer, with larger buffer sizes for specific use-cases.
* Merge pull request #3559 from yongthecoder/masterCarlos Martín Nieto2016-03-221-2/+7
|\ | | | | Add a sanity check in git_indexer_commit to avoid subtraction overflow.
| * Avoid subtraction overflow in git_indexer_commitYong Li2016-01-041-2/+7
| |
* | Merge pull request #3701 from jfultz/fix-0.24.0-changelogCarlos Martín Nieto2016-03-221-1/+4
|\ \ | | | | | | Fix some errors I found in the changelog for 0.24.0
| * | Fix some errors I found in the changelog for 0.24.0John Fultz2016-03-181-1/+4
| | |
* | | Merge pull request #3702 from libgit2/cmn/tree-reuseEdward Thomson2016-03-218-83/+76
|\ \ \ | | | | | | | | Reuse a tree's buffer and allocate constant-sized entries in an array
| * | | tree: store the entries in a growable arraycmn/tree-reuseCarlos Martín Nieto2016-03-202-60/+38
| | | | | | | | | | | | | | | | | | | | | | | | Take advantage of the constant size of tree-owned arrays and store them in an array instead of a pool. This still lets us free them all at once but lets the system allocator do the work of fitting them in.
| * | | tree: re-use the id and filename in the odb objectCarlos Martín Nieto2016-03-208-52/+67
|/ / / | | | | | | | | | | | | Instead of copying over the data into the individual entries, point to the originals, which are already in a format we can use.
* | | Merge pull request #3699 from libgit2/cmn/win32-free-tlsEdward Thomson2016-03-181-0/+14
|\ \ \ | | | | | | | | win32: free thread-local data on thread exit
| * | | win32: free thread-local data on thread exitcmn/win32-free-tlsCarlos Martin Nieto2016-03-181-0/+14
| | | |
* | | | Merge pull request #3660 from mstrap/mingwEdward Thomson2016-03-181-0/+2
|\ \ \ \ | | | | | | | | | | MinGW builds should optionally create DLLs without "lib" prefix
| * | | | Option "LIBGIT2_PREFIX" to set the CMAKE's TARGET_PROPERTIES PREFIXMarc Strapetz2016-03-151-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | This is especially useful in combination with MinGW to yield the Windows-compliant DLL name "git2.dll" instead of "libgit2.dll"
* | | | | Merge pull request #3564 from ethomson/merge_driversCarlos Martín Nieto2016-03-1711-115/+1309
|\ \ \ \ \ | | | | | | | | | | | | Custom merge drivers and proper gitattributes `merge` handling
| * | | | | merge drivers: handle configured but not found driverEdward Thomson2016-03-172-4/+31
| | | | | |
| * | | | | merge driver: remove `check` callbackEdward Thomson2016-03-176-306/+81
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Since the `apply` callback can defer, the `check` callback is not necessary. Removing the `check` callback further makes the `payload` unnecessary along with the `cleanup` callback.
| * | | | | merge driver: improve inline documentationEdward Thomson2016-03-171-18/+21
| | | | | |
| * | | | | merge driver: correct global initializationEdward Thomson2016-03-175-94/+160
| | | | | |
| * | | | | merge driver: get a pointer to favorEdward Thomson2016-03-172-4/+9
| | | | | |
| * | | | | merge driver: correct indentationEdward Thomson2016-03-172-30/+30
| | | | | |
| * | | | | merge driver: tests for set and unset merge attributeEdward Thomson2016-03-171-1/+36
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Ensure that setting the merge attribute forces the built-in default `text` driver and does *not* honor the `merge.default` configuration option. Further ensure that unsetting the merge attribute forces a conflict (the `binary` driver).
| * | | | | merge driver: tests for custom default merge driversEdward Thomson2016-03-171-0/+59
| | | | | |
| * | | | | merge driver: allow custom default driverEdward Thomson2016-03-175-43/+88
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Allow merge users to configure a custom default merge driver via `git_merge_options`. Similarly, honor the `merge.default` configuration option.
| * | | | | merge driver: test GIT_EMERGECONFLICTEdward Thomson2016-03-171-0/+90
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When a `check` or `apply` callback function returns `GIT_EMERGECONFLICT` stop and product a conflict.
| * | | | | merge driver: test GIT_PASSTHROUGHEdward Thomson2016-03-171-0/+95
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When a `check` or `apply` callback function returns `GIT_PASSTHROUGH`, move on to the default merge driver.
| * | | | | merge driver: introduce custom merge driversEdward Thomson2016-03-176-129/+1061
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Consumers can now register custom merged drivers with `git_merge_driver_register`. This allows consumers to support the merge drivers, as configured in `.gitattributes`. Consumers will be asked to perform the file-level merge when a custom driver is configured.
| * | | | | Fix rebase bug and include test for merge=unionStan Hu2016-03-172-1/+37
| | | | | |
| * | | | | Support union merges via .gitattributes fileStan Hu2016-03-171-0/+26
| | | | | |
* | | | | | Merge pull request #3695 from ethomson/contributingCarlos Martín Nieto2016-03-171-1/+16
|\ \ \ \ \ \ | |/ / / / / |/| | | | | CONTRIBUTING: document the optional tests
| * | | | | CONTRIBUTING: document the optional testsEdward Thomson2016-03-171-1/+16
|/ / / / /
* | | | | Merge pull request #3673 from libgit2/cmn/commit-with-signatureEdward Thomson2016-03-173-0/+185
|\ \ \ \ \ | | | | | | | | | | | | commit: add function to attach a signature to a commit
| * | | | | commit: add function to attach a signature to a commitcmn/commit-with-signatureCarlos Martín Nieto2016-03-153-0/+185
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In combination with the function which creates a commit into a buffer, this allows us to more easily create signed commits.
* | | | | | Merge pull request #3685 from pks-t/pks/memleaksEdward Thomson2016-03-172-20/+19
|\ \ \ \ \ \ | | | | | | | | | | | | | | Test memleaks
| * | | | | | tests: transport: fix memory leaks with registering transportsPatrick Steinhardt2016-03-111-18/+17
| | | | | | |
| * | | | | | tests: nsec: correctly free nsec_pathPatrick Steinhardt2016-03-111-2/+2
| |/ / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | git_buf_clear does not free allocated memory associated with a git_buf. Use `git_buf_free` instead to correctly free its memory and plug the memory leak.
* | | | | | Merge pull request #3687 from mstrap/CMAKE_C_FLAGS_DEBUGEdward Thomson2016-03-171-2/+2
|\ \ \ \ \ \ | | | | | | | | | | | | | | CMake: do not overwrite but only append to CMAKE_C_FLAGS_DEBUG
| * | | | | | CMake: do not overwrite but only append to CMAKE_C_FLAGS_DEBUGMarc Strapetz2016-03-151-2/+2
| | |/ / / / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | This is useful to force "smart" IDEs (like CLIon) to use debug flag -g even it may have decided that "-D_DEBUG" (which is already present) is sufficient.
* | | | | | Merge pull request #3693 from libgit2/cmn/extract-oneline-sigEdward Thomson2016-03-172-1/+25
|\ \ \ \ \ \ | |_|_|/ / / |/| | | | | commit: fix extraction of single-line signatures
| * | | | | commit: fix extraction of single-line signaturescmn/extract-oneline-sigCarlos Martín Nieto2016-03-172-1/+25
|/ / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The function to extract signatures suffers from a similar bug to the header field finding one by having an unecessary line feed check as a break condition of its loop. Fix that and add a test for this single-line signature situation.
* | | | | Merge pull request #3690 from libgit2/cmn/pool-limitEdward Thomson2016-03-165-9/+41
|\ \ \ \ \ | | | | | | | | | | | | win32: choose the page size as our value for the page size
| * | | | | Split the page size from the mmap alignmentcmn/pool-limitCarlos Martín Nieto2016-03-165-9/+41
|/ / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | While often similar, these are not the same on Windows. We want to use the page size on Windows for the pools, but for mmap we need to use the allocation granularity as the alignment. On the other platforms these values remain the same.
* | | | | Merge pull request #3677 from pks-t/pks/coverity-fixes-round7Carlos Martín Nieto2016-03-146-14/+39
|\ \ \ \ \ | | | | | | | | | | | | Coverity fixes round 7
| * | | | | config_cache: check return value of `git_config__lookup_entry`Patrick Steinhardt2016-03-111-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Callers of `git_config__cvar` already handle the case where the function returns an error due to a failed configuration variable lookup, but we are actually swallowing errors when calling `git_config__lookup_entry` inside of the function. Fix this by returning early when `git_config__lookup_entry` returns an error. As we call `git_config__lookup_entry` with `no_errors == false` which leads us to call `get_entry` with `GET_NO_MISSING` we will not return early when the lookup fails due to a missing entry. Like this we are still able to set the default value of the cvar and exit successfully.
| * | | | | filebuf: handle write error in `lock_file`Patrick Steinhardt2016-03-111-1/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When writing to a file with locking not check if writing the locked file actually succeeds. Fix the issue by returning error code and message when writing fails.
| * | | | | config_file: handle error when trying to lock strmapPatrick Steinhardt2016-03-111-8/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Accessing the current values map is handled through the `refcounder_strmap_take` function, which first acquires a mutex before accessing its values. While this assures everybody is trying to access the values with the mutex only we do not check if the locking actually succeeds. Fix the issue by checking if acquiring the lock succeeds and returning `NULL` if we encounter an error. Adjust callers.
| * | | | | blame: handle error when resoling HEAD in normalize_optionsPatrick Steinhardt2016-03-111-3/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When normalizing options we try to look up HEAD's OID. While this action may fail in malformed repositories we never check the return value of the function. Fix the issue by converting `normalize_options` to actually return an error and handle the error in `git_blame_file`.
| * | | | | blame_git: handle error returned by `git_commit_parent`Patrick Steinhardt2016-03-111-1/+2
| | | | | |