summaryrefslogtreecommitdiff
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
...
| * | | introduce `git_index_entry_is_conflict`Edward Thomson2015-05-284-11/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
| * | | diff conflicts: don't include incorrect IDEdward Thomson2015-05-281-16/+21
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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: 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-283-13/+71
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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-281-0/+9
| | | |
| * | | 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-281-1/+16
| | | | | | | | | | | | | | | | | | | | | | | | 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-282-3/+12
|\ \ \ | | | | | | | | Fill the pointers for matching refspecs
| * | | branch: error out if we cannot find the remotecmn/upstream-matching-pushCarlos Martín Nieto2015-05-221-3/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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-221-0/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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-281-33/+49
|\ \ \ \ | |_|/ / |/| | | 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-281-0/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | 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-281-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | 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-171-22/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* | | | Fix ident replacement to match Git behaviorColomban Wendling2015-05-261-2/+2
| |_|/ |/| | | | | | | | | | | Git inserts a space after the SHA1 (as of 2.1.4 at least), so do the same.
* | | Merge pull request #3151 from ethomson/thinpackCarlos Martín Nieto2015-05-222-1/+21
|\ \ \ | | | | | | | | Thin packs: don't
| * | | indexer: avoid loading already existent basesEdward Thomson2015-05-221-1/+14
| | | | | | | | | | | | | | | | | | | | When thickening a pack, avoid loading already loaded bases and trying to insert them all over again.
| * | | indexer: don't look for the index we're creatingEdward Thomson2015-05-221-0/+7
| | |/ | |/| | | | | | | | | | | | | When creating an index, know that we do not have an index for our own packfile, preventing some unnecessary file opens and error reporting.
* | | Merge pull request #3108 from libgit2/cmn/ssl-no-wantEdward Thomson2015-05-221-16/+5
|\ \ \ | |/ / |/| | openssl: don't try to handle WANT_READ or WANT_WRITE
| * | openssl: don't try to handle WANT_READ or WANT_WRITEcmn/ssl-no-wantCarlos Martín Nieto2015-05-091-16/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | We use a blocking socket and set the mode to AUTO_RETRY which means that `SSL_write` and `SSL_read` will only return once the read or write has been completed. We therefore don't need to handle partial writes or re-try read due to a regenotiation. While here, consider that a zero also indicates an error condition.
* | | Merge branch 'sni'Carlos Martín Nieto2015-05-211-0/+3
|\ \ \
| * | | Call the openssl API to be able to work with SNI servers.Cristian Oneț2015-05-211-0/+3
| | | |
* | | | Merge pull request #3146 from ethomson/add_untracked_filesCarlos Martín Nieto2015-05-211-1/+3
|\ \ \ \ | | | | | | | | | | index_add_all: include untracked files in new subdirs
| * | | | git_index_add_all: don't recurse ignored dirsEdward Thomson2015-05-201-2/+1
| | | | | | | | | | | | | | | | | | | | | | | | | No need to get reports about individual ignored files, having a single ignored directory delta is enough.
| * | | | index_add_all: include untracked files in new subdirsEdward Thomson2015-05-201-1/+4
| | | | |
* | | | | ignore: clear the error when matching a pattern negationcmn/ignored-ignoreCarlos Martín Nieto2015-05-201-0/+1
|/ / / / | | | | | | | | | | | | | | | | | | | | When we discover that we want to keep a negative rule, make sure to clear the error variable, as it we otherwise return whatever was left by the previous loop iteration.
* | | | errors: add GIT_EEOF to indicate early EOFcmn/server-errorsCarlos Martín Nieto2015-05-203-4/+9
| | | | | | | | | | | | | | | | | | | | | | | | This can be used by tools to show mesages about failing to communicate with the server. The error message in this case will often contain the server's error message, as far as it managed to send anything.
* | | | ssh: read from stderr if stdout is emptyCarlos Martín Nieto2015-05-201-1/+8
|/ / / | | | | | | | | | | | | | | | | | | | | | When we fail to read from stdout, it's typically because the URL was wrong and the server process has sent some output over its stderr output. Read that output and set the error message to whatever we read from it.
* | | Merge pull request #3109 from libgit2/cmn/index-use-diffEdward Thomson2015-05-191-69/+102
|\ \ \ | | | | | | | | Use a diff for iteration in index_update_all and index_add_all
| * | | index: include TYPECHANGE in the diffCarlos Martín Nieto2015-05-141-1/+2
| | | | | | | | | | | | | | | | Without this option, we would not be able to catch exec bit changes.
| * | | index: make add_all to act on a diffCarlos Martín Nieto2015-05-141-80/+28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Instead of going through each entry we have and re-adding, which may not even be correct for certain crlf options and has bad performance, use the function which performs a diff against the worktree and try to add and remove files from that list.
| * | | index: refactor diff-based update_all to match other appliesCarlos Martín Nieto2015-05-141-80/+87
| | | | | | | | | | | | | | | | | | | | Refactor so we look like the code we're replacing, which should also allow us to more easily inplement add-all.
| * | | index: use a diff to perform update_allCarlos Martín Nieto2015-05-141-2/+79
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We currently iterate over all the entries and re-add them to the index. While this provides correctness, it is wasteful as we try to re-insert files which have not changed. Instead, take a diff between the index and the worktree and only re-add those which we already know have changed.
* | | | fileops: set an error on write error for file copycmn/path-direach-cberrorCarlos Martín Nieto2015-05-171-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | We set an error if we get an error when reading, but we don't bother setting an error message for write failing. This causes a cryptic error to be shown to the user when the target filesystem is full.
* | | | fileops: set an error message if we fail to link a fileCarlos Martín Nieto2015-05-151-1/+2
| | | | | | | | | | | | | | | | | | | | Now that `git_path_direach` lets us specify an error message to report, set an appropriate error message while linking.
* | | | path: don't let direach overwrite the callback's error messageCarlos Martín Nieto2015-05-151-1/+3
| |_|/ |/| | | | | | | | | | | | | | | | | | | | | | | | | | This function deals with functions doing IO which means the amount of errors that can happen is quit large. It does not help if it always ovewrites the underlying error message with a less understandable version of "something went wrong". Instead, only use this generic message if there was no error set by the callback.
* | | Make "Early EOF" message start with lowercaseMarius Ungureanu2015-05-141-2/+2
| | |
* | | local: plug a leak in the progress reportingCarlos Martín Nieto2015-05-141-1/+5
| | |
* | | push: fix the update constructorcmn/push-notify-deletedCarlos Martín Nieto2015-05-141-3/+4
|/ / | | | | | | | | There was a copypasta error and the source and destination IDs were reversed.
* | Merge pull request #3119 from ethomson/ignoreCarlos Martín Nieto2015-05-132-38/+20
|\ \ | | | | | | Attributes: don't match files for folders
| * | attr: declare variable at top of block for msvcEdward Thomson2015-05-121-1/+3
| | |
| * | attr: less path mangling during attribute matchingEdward Thomson2015-05-121-40/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When handling attr matching, simply compare the directory path where the attribute file resides to the path being matched. Skip over commonality to allow us to compare the contents of the attribute file to the remainder of the path. This allows us to more easily compare the pattern directly to the path, instead of trying to guess whether we want to compare the path's basename or the full path based on whether the match was inside a containing directory or not. This also allows us to do fewer translations on the pattern (trying to re-prefix it.)
| * | attr: don't mangle file path during attr matchingEdward Thomson2015-05-121-3/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When determining whether some file matches an attr pattern, do not try to truncate the path to pass to fnmatch. When there is no containing directory for an item (eg, from a .gitignore in the root) this will cause us to truncate our path, which means that we cannot do meaningful comparisons on it and we may have false positives when trying to determine whether a given file is actually a file or a folder (as we have lost the path's base information.) This mangling was to allow fnmatch to compare a directory on disk to the name of a directory, but it is unnecessary as our fnmatch accepts FNM_LEADING_DIR.
| * | attr: always return errorsEdward Thomson2015-05-121-1/+2
| | |
| * | attr: don't match files for foldersEdward Thomson2015-05-121-0/+8
| | | | | | | | | | | | | | | When ignoring a path "foo/", ensure that this is actually a directory, and not simply a file named "foo".
* | | Merge pull request #3103 from libgit2/cmn/local-push-messageEdward Thomson2015-05-131-56/+22
|\ \ \ | | | | | | | | Use the packbuilder in local push
| * | | local: use the packbuilder to pushCarlos Martín Nieto2015-05-131-55/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Instead of copying each object individually, as we'd been doing, use the packbuilder which should be faster and give us some feedback. While performing this change, we can hook up the packbuilder's writing to the push progress so the caller knows how far along we are.