summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* indexer: use lseek to extend the packfilecmn/idx-fill-holeCarlos Martín Nieto2015-06-021-3/+4
| | | | | | | | | | | | | | | We've been using `p_ftruncate()` to extend the packfile in order to mmap it and write the new data into it. This works well in the general case, but as truncation does not allocate space in the filesystem, it must do so when we write data to it. The only way the OS has to indicate a failure to allocate space is via SIGBUS which means we tried to write outside the file. This will cause everyone to crash as they don't expect to handle this signal. Switch to using `p_lseek()` and `p_write()` to extend the file in a way which tells the filesystem to allocate the space for the missing data. We can then be sure that we have space to write into.
* Include git2/transaction.hCarlos Martín Nieto2015-05-311-0/+1
| | | | This was forgotten when the feature was implemented.
* Merge pull request #3152 from tkelman/patch-1Carlos Martín Nieto2015-05-311-0/+1
|\ | | | | build maint branches on appveyor
| * build maint branches on appveyorTony Kelman2015-05-221-0/+1
| | | | | | equivalent of ca183d27366ba75597a9806b746e42a074df7795
* | Merge pull request #3048 from pks-t/insteadofCarlos Martín Nieto2015-05-315-5/+164
|\ \ | | | | | | Implementation of url.*.insteadOf
| * | remote: test insteadOf for anonymous remotesPatrick Steinhardt2015-05-311-0/+12
| | |
| * | Add CHANGELOG entry for url.*.insteadOf feature.Patrick Steinhardt2015-05-311-0/+4
| | |
| * | remote: apply insteadOf configuration.Patrick Steinhardt2015-05-314-5/+148
|/ / | | | | | | | | | | | | | | A remote's URLs are now modified according to the url.*.insteadOf and url.*.pushInsteadOf configurations. This allows a user to replace URL prefixes by setting the corresponding keys. E.g. "url.foo.insteadOf = bar" would replace the prefix "bar" with the new prefix "foo".
* | CHANGELOG: fill in a few missing entriesCarlos Martín Nieto2015-05-291-5/+20
| |
* | Merge pull request #3157 from mgorny/ssh_memory_authCarlos Martín Nieto2015-05-295-1/+168
|\ \ | | | | | | Support getting SSH keys from memory, pt. 2
| * | test: Add a test for in-memory SSH private key cred_cbMichał Górny2015-05-271-0/+68
| | |
| * | cred: Check for null values when getting key from memoryMichał Górny2015-05-271-1/+4
| | | | | | | | | | | | | | | | | | The public key field is optional and as such can take NULL. Account for that and do not call strlen() on NULL values. Also assert() for non-NULL values of username & private key.
| * | cred: Declare GIT_CREDTYPE_SSH_MEMORY unconditionallyMichał Górny2015-05-272-4/+0
| | | | | | | | | | | | | | | | | | | | | Declare GIT_CREDTYPE_SSH_MEMORY to have consistent API independently of whether libgit2 was built with or without in-memory key passing support. Or rather, to have it at all since build-time definitions are not stored in headers.
| * | cmake: Add CMake check for libssh2 memory credential passing supportMichał Górny2015-05-271-0/+5
| | |
| * | Return an error when ssh memory credentials are not supported.David Calavera2015-05-272-4/+6
| | | | | | | | | | | | To not modify the external api.
| * | Add support to read ssh keys from memory.David Calavera2015-05-273-1/+94
| |/
* | Merge pull request #3163 from ethomson/emergeconflictCarlos Martín Nieto2015-05-297-18/+21
|\ \ | | | | | | Rename GIT_EMERGECONFLICT to GIT_ECONFLICT
| * | Rename GIT_EMERGECONFLICT to GIT_ECONFLICTEdward Thomson2015-05-297-18/+21
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We do not error on "merge conflicts"; on the contrary, merge conflicts are a normal part of merging. We only error on "checkout conflicts", where a change exists in the index or the working directory that would otherwise be overwritten by performing the checkout. This *may* happen during merge (after the production of the new index that we're going to checkout) but it could happen during any checkout.
* | | Merge pull request #3161 from fxfactorial/masterEdward Thomson2015-05-281-1/+1
|\ \ \ | |/ / |/| | Changed README to use new OCaml bindings to git
| * | Changed README to use new OCaml bindings to gitEdgar Aroutiounian2015-05-281-1/+1
|/ /
* | Merge pull request #3139 from ethomson/diff_conflictsCarlos Martín Nieto2015-05-2828-177/+675
|\ \ | | | | | | Include conflicts when diffing
| * | index_add_all: remove conflicts when no wd fileEdward Thomson2015-05-281-1/+2
| | | | | | | | | | | | | | | | | | | | | If there exists a conflict in the index, but no file in the working directory, this implies that the user wants to accept the resolution by removing the file. Thus, remove the conflict entry from the index, instead of trying to add a (nonexistent) file.
| * | Introduce `GIT_DIFF_FLAG_EXISTS`Edward Thomson2015-05-283-1/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Mark the `old_file` and `new_file` sides of a delta with a new bit, `GIT_DIFF_FLAG_EXISTS`, that introduces that a particular side of the delta exists in the diff. This is useful for indicating whether a working directory item exists or not, in the presence of a conflict. Diff users may have previously used DELETED to determine this information.
| * | git_index_add_all: test that conflicts are handledEdward Thomson2015-05-281-49/+104
| | | | | | | | | | | | | | | | | | When confronted with a conflict in the index, `git_index_add_all` should stage the working directory copy. If there is no file in the working directory, the conflict should simply be removed.
| * | Introduce cl_git_sandbox_init_new()Edward Thomson2015-05-282-0/+9
| | | | | | | | | | | | | | | cl_git_sandbox_init_new() will create a clar temp directory and initialize a new repository at that location.
| * | diff: prettify `maybe_modified` a littleEdward Thomson2015-05-281-12/+15
| | |
| * | introduce `git_index_entry_is_conflict`Edward Thomson2015-05-289-15/+34
| | | | | | | | | | | | | | | | | | | | | | | | | | | It's not always obvious the mapping between stage level and conflict-ness. More importantly, this can lead otherwise sane people to write constructs like `if (!git_index_entry_stage(entry))`, which (while technically correct) is unreadable. Provide a nice method to help avoid such messy thinking.
| * | conflict tests: use GIT_IDXENTRY_STAGE_SETEdward Thomson2015-05-287-26/+26
| | |
| * | diff conflicts: don't include incorrect IDEdward Thomson2015-05-282-16/+67
| | | | | | | | | | | | | | | | | | | | | | | | | | | Since a diff entry only concerns a single entry, zero the information for the index side of a conflict. (The index entry would otherwise erroneously include the lowest-stage index entry - generally the ancestor of a conflict.) Test that during status, the index side of the conflict is empty.
| * | diff conflicts: test index to workdir w/ conflictsEdward Thomson2015-05-281-0/+45
| | |
| * | diff conflicts: add tests for tree to indexEdward Thomson2015-05-283-2/+78
| | |
| * | diff: for conflicts w/o workdir, blank nitem sideEdward Thomson2015-05-281-13/+26
| | | | | | | | | | | | | | | Make sure that we provide a blanked nitem side when the item does not exist in the working directory.
| * | diff/status: introduce conflictsEdward Thomson2015-05-287-25/+93
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When diffing against an index, return a new `GIT_DELTA_CONFLICTED` delta type for items that are conflicted. For a single file path, only one delta will be produced (despite the fact that there are multiple entries in the index). Index iterators now have the (optional) ability to return conflicts in the index. Prior to this change, they would be omitted, and callers (like diff) would omit conflicted index entries entirely.
| * | index: validate mode of new conflictsEdward Thomson2015-05-283-1/+23
| | |
| * | index: remove error message in non-error removeEdward Thomson2015-05-281-0/+3
| | | | | | | | | | | | | | | If `git_index_remove_bypath` does no work, and returns an OK error code, it should not set an error message.
| * | conflicts: when adding conflicts, remove stagedEdward Thomson2015-05-285-3/+71
| | | | | | | | | | | | | | | | | | When adding a conflict for some path, remove the staged entry. Otherwise, an illegal index (with both stage 0 and high-stage entries) would result.
| * | diff: wrap the iterator functionsEdward Thomson2015-05-281-25/+73
| | | | | | | | | | | | | | | | | | Wrap the iterator current / advance functions so that we can extend them, but also handle GIT_ITEROVER cases in the iterator funcs instead of the callers.
| * | index iterator: optionally include conflictsEdward Thomson2015-05-282-7/+13
| | |
* | | Merge pull request #3149 from libgit2/cmn/upstream-matching-pushEdward Thomson2015-05-284-3/+54
|\ \ \ | | | | | | | | Fill the pointers for matching refspecs
| * | | branch: error out if we cannot find the remotecmn/upstream-matching-pushCarlos Martín Nieto2015-05-222-3/+38
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When we look for which remote corresponds to a remote-tracking branch, we look in the refspecs to see which ones matches. If none do, we should abort. We currently ignore the error message from this operation, so let's not do that anymore. As part of the test we're writing, let's test for the expected behaviour if we cannot find a refspec which tells us what the remote-tracking branch for a remote would look like.
| * | | refspec: make sure matching refspecs have src, dst and input stringsCarlos Martín Nieto2015-05-222-0/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When we find out that we're dealing with a matching refspec, we set the flag and return immediately. This leaves the strings as NULL, which breaks the contract. Assign these pointers to a string with the correct values.
* | | | Merge pull request #3127 from libgit2/cmn/remote-fixupsCarlos Martín Nieto2015-05-288-96/+88
|\ \ \ \ | |_|/ / |/| | | Tackle remote API issues from bindings
| * | | remote: call the update_tips callback for opportunisitc updatesCarlos Martín Nieto2015-05-281-9/+31
| | | | | | | | | | | | | | | | | | | | These are updates, same as the rest, we should call this callback. As we are using the callback, let's make sure to skip unnecessary updates.
| * | | remote: validate refspecs before adding to configCarlos Martín Nieto2015-05-283-2/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | When we moved from acting on the instance to acting on the configuration, we dropped the validation of the passed refspec, which can lead to writing an invalid refspec to the configuration. Bring that validation back.
| * | | remote: remove fetch parameter from create_anonymousCarlos Martín Nieto2015-05-287-30/+17
| | | | | | | | | | | | | | | | | | | | | | | | An anonymous remote is not configured and cannot therefore have configured refspecs. Remove the parameter which adds this from the constructor.
| * | | remote: get rid of the run-time refspec settersCarlos Martín Nieto2015-05-173-42/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | These were left over from the culling as it's not clear which use-cases might benefit from this. It is not clear that we want to support any use-case which depends on changing the remote's idea of the base refspecs rather than passing in different per-operation refspec list, so remove these functions.
| * | | clone: don't rely on auto-saving for single-branchCarlos Martín Nieto2015-05-171-10/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The code used to rely on the clone code calling the remote's save, which does not happen anymore, meaning that the configuration settings the remote expected were not being written to disk. The run-time configuration was still being affected, so the right branch was being cloned. The tests continued to pass as we did not check for the configuration entires. Fix this by creating the remote with the single-branch refspec we want and checking for its existence in the configuration.
| * | | Fix typos in the CHANGELOGCarlos Martín Nieto2015-05-171-3/+3
| | | |
* | | | Merge pull request #3160 from b4n/ident-same-as-gitCarlos Martín Nieto2015-05-285-17/+17
|\ \ \ \ | |_|_|/ |/| | | Fix ident replacement to match Git behavior
| * | | Fix ident replacement to match Git behaviorColomban Wendling2015-05-265-17/+17
|/ / / | | | | | | | | | | | | Git inserts a space after the SHA1 (as of 2.1.4 at least), so do the same.