Log

Author Commit Date CI Message
Edward Thomson 1c4b5cee 2015-05-19T17:51:13 Introduce cl_git_sandbox_init_new() cl_git_sandbox_init_new() will create a clar temp directory and initialize a new repository at that location.
Edward Thomson 253a05f7 2015-05-19T11:31:15 diff: prettify `maybe_modified` a little
Edward Thomson 9f545b9d 2015-05-19T11:23:59 introduce `git_index_entry_is_conflict` 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.
Edward Thomson 2f1080ea 2015-05-19T11:17:07 conflict tests: use GIT_IDXENTRY_STAGE_SET
Edward Thomson 191e97a0 2015-05-18T18:15:17 diff conflicts: don't include incorrect ID 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.
Edward Thomson b22369ef 2015-05-18T17:01:37 diff conflicts: test index to workdir w/ conflicts
Edward Thomson bb815157 2015-05-18T16:23:13 diff conflicts: add tests for tree to index
Edward Thomson 7877146f 2015-05-18T15:13:43 diff: for conflicts w/o workdir, blank nitem side Make sure that we provide a blanked nitem side when the item does not exist in the working directory.
Edward Thomson 7c948014 2015-05-14T14:00:29 diff/status: introduce conflicts 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.
Edward Thomson d67f270e 2015-05-14T13:30:29 index: validate mode of new conflicts
Edward Thomson 3ab5a659 2015-05-14T12:54:39 index: remove error message in non-error remove If `git_index_remove_bypath` does no work, and returns an OK error code, it should not set an error message.
Edward Thomson ecd60a56 2015-05-14T11:52:48 conflicts: when adding conflicts, remove staged 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.
Edward Thomson 1b6c26db 2015-05-13T17:47:26 diff: wrap the iterator functions 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.
Edward Thomson aa3af01d 2015-05-13T15:52:21 index iterator: optionally include conflicts
Carlos Martín Nieto c7f94123 2015-05-28T02:40:22 Merge pull request #3160 from b4n/ident-same-as-git Fix ident replacement to match Git behavior
Colomban Wendling 1ecbcd8e 2015-05-26T19:16:27 Fix ident replacement to match Git behavior Git inserts a space after the SHA1 (as of 2.1.4 at least), so do the same.
Carlos Martín Nieto c11daac9 2015-05-22T22:12:40 Merge pull request #3151 from ethomson/thinpack Thin packs: don't
Edward Thomson e2dd3735 2015-05-22T11:20:47 indexer: avoid loading already existent bases When thickening a pack, avoid loading already loaded bases and trying to insert them all over again.
Edward Thomson 38c10ecd 2015-05-16T19:00:50 indexer: don't look for the index we're creating When creating an index, know that we do not have an index for our own packfile, preventing some unnecessary file opens and error reporting.
Edward Thomson 2540487f 2015-05-22T12:53:52 Merge pull request #3108 from libgit2/cmn/ssl-no-want openssl: don't try to handle WANT_READ or WANT_WRITE
Carlos Martín Nieto ca183d27 2015-05-22T17:44:28 travis: build maint branches
Carlos Martín Nieto a6ea108b 2015-05-21T14:04:46 Merge branch 'sni'
Cristian Oneț 987045c7 2015-05-20T18:03:54 Call the openssl API to be able to work with SNI servers.
Carlos Martín Nieto 5d74fb78 2015-05-21T06:32:29 Merge pull request #3145 from stinb/fix_cxx_build Fix error when building as C++.
Carlos Martín Nieto 6675aaba 2015-05-21T04:58:16 Merge pull request #3146 from ethomson/add_untracked_files index_add_all: include untracked files in new subdirs
Edward Thomson cbfeecf3 2015-05-20T20:13:45 git_index_add_all: don't recurse ignored dirs No need to get reports about individual ignored files, having a single ignored directory delta is enough.
Edward Thomson 3e85be2b 2015-05-20T20:07:39 Merge pull request #3144 from libgit2/cmn/ignored-ignore ignore: clear the error when matching a pattern negation
Edward Thomson fa9a969d 2015-05-20T18:22:17 index_add_all: include untracked files in new subdirs
Jason Haslam d30155f2 2015-05-20T14:26:05 Fix error when building as C++.
Carlos Martín Nieto 2c57114f 2015-05-20T21:18:25 ignore: clear the error when matching a pattern negation 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.
Carlos Martín Nieto cd3f3c28 2015-05-20T21:06:01 Add a missing include for reset Our doc parser really wants the types to be declared in the header it's reading.
Carlos Martín Nieto c06e180a 2015-05-20T17:13:49 Merge pull request #3137 from libgit2/cmn/server-errors Improve server error reporting
Carlos Martín Nieto 1396c381 2015-05-18T16:04:55 errors: add GIT_EEOF to indicate early EOF 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.
Carlos Martín Nieto e3435673 2015-05-18T15:51:55 ssh: read from stderr if stdout is empty 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.
Edward Thomson acc573cb 2015-05-19T14:12:40 Merge pull request #3109 from libgit2/cmn/index-use-diff Use a diff for iteration in index_update_all and index_add_all
Edward Thomson 0aa60336 2015-05-19T14:07:03 Merge pull request #3132 from libgit2/cmn/path-direach-cberror Provide error messages for git_path_direach operations
Carlos Martín Nieto edef91ee 2015-05-15T12:23:27 fileops: set an error on write error for file copy 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.
Carlos Martín Nieto 54738368 2015-05-15T12:18:05 fileops: set an error message if we fail to link a file Now that `git_path_direach` lets us specify an error message to report, set an appropriate error message while linking.
Carlos Martín Nieto 8a4d77f9 2015-05-15T12:15:45 path: don't let direach overwrite the callback's error message 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.
Carlos Martín Nieto 9042693e 2015-05-15T10:10:24 Merge pull request #3130 from mortonfox/patch-1 Updated dlibgit link.
Carlos Martín Nieto 481ac3d1 2015-05-14T21:51:45 Merge pull request #3129 from Therzok/patch-2 Bring Early EOF message in line with the other two
Morton Fox e702dc2e 2015-05-14T15:49:51 Updated dlibgit link.
Marius Ungureanu 7e9a240e 2015-05-14T21:33:55 Make "Early EOF" message start with lowercase
Carlos Martín Nieto 542a7de0 2015-05-14T17:26:09 local: plug a leak in the progress reporting
Carlos Martín Nieto 874cc35a 2015-05-14T15:24:15 index: add a CHANGELOG entry for the diff usage
Carlos Martín Nieto 2b2dfe80 2015-05-12T12:07:33 index: include TYPECHANGE in the diff Without this option, we would not be able to catch exec bit changes.
Carlos Martín Nieto 0a78a52e 2015-05-11T16:09:09 index: make add_all to act on a diff 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.
Carlos Martín Nieto 197307f6 2015-05-11T15:19:15 index: refactor diff-based update_all to match other applies Refactor so we look like the code we're replacing, which should also allow us to more easily inplement add-all.
Carlos Martín Nieto 713e11e0 2015-05-11T13:24:53 index: use a diff to perform update_all 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.
Edward Thomson 4a6a6746 2015-05-14T09:10:20 Merge pull request #3128 from libgit2/cmn/push-notify-deleted Add tests for and fix push negotiation notification
Carlos Martín Nieto 254ff3e9 2015-05-14T10:34:42 push: fix the update constructor There was a copypasta error and the source and destination IDs were reversed.
Carlos Martín Nieto 041ad7db 2015-05-14T10:34:05 push: add tests for the push negotiation callback The functionality was meged without including tests, so let's add them now.
Carlos Martín Nieto 98270f56 2015-05-14T08:26:02 Add CHANGELOG entry for index entry changes
Carlos Martín Nieto 16d742eb 2015-05-13T21:43:58 Merge pull request #3119 from ethomson/ignore Attributes: don't match files for folders
Edward Thomson cd430bc7 2015-05-13T14:26:20 Merge pull request #3103 from libgit2/cmn/local-push-message Use the packbuilder in local push
Edward Thomson 2ec73fa9 2015-05-13T14:26:06 Merge pull request #3102 from libgit2/cmn/pack-objects-report Show progress during packing for the local transport
Edward Thomson a6f2ceaf 2015-05-13T12:11:55 Merge pull request #3118 from libgit2/cmn/stream-size odb: make the writestream's size a git_off_t
Edward Thomson 882cc37f 2015-05-13T10:56:55 attr tests: make explicit our dir/file match tests
Carlos Martín Nieto 3e529e9d 2015-05-13T16:12:45 Fix a few leaks The interesting one is the notification macro, which was returning directly on a soft-abort instead of going through the cleanup.
Carlos Martín Nieto 3c337a5d 2015-05-06T13:09:00 packbuilder: report progress during deltification This is useful to send to the client while we're performing the work. The reporting function has a force parameter which makes sure that we do send out the message of 100% completed, even if this comes before the next udpate window.
Carlos Martín Nieto 8cec2b8a 2015-05-06T12:28:01 local: send the packbuilder progress via the sideband Set a callback for the packbuilder so we can send the sideband messages to the caller, formatting them as git would.
Carlos Martín Nieto cf66c474 2015-05-06T12:26:05 examples: show the sideband progress on clone This lets us see what the server (or libgit2 locally) is doing, rather than having to stare at a non-moving screen.
Edward Thomson d01737b4 2015-05-13T09:11:38 Merge pull request #3117 from libgit2/cmn/index-more-accurate index: make the entries have more accurate sizes
Edward Thomson b0c4b642 2015-05-13T09:11:18 Merge pull request #3116 from libgit2/cmn/remove-ssh-embed Get rid of libssh2 embedding
Edward Thomson 6cd92193 2015-05-13T09:07:15 Merge pull request #3115 from libgit2/cmn/clone-submodule submodule: add test initialising and cloning a repo
Edward Thomson a3ff28e9 2015-05-13T09:02:00 Merge pull request #3120 from libgit2/cmn/backends-prio odb: reverse the default backend priorities
Carlos Martín Nieto 0bc3d56d 2015-05-07T16:12:36 tests: don't push to our resources A couple of tests use the wrong remote to push to. We did not notice up to now because the local push would copy individual objects, and those already existed, so it became a no-op. Once we made local push create the packfile, it became noticeable that there was a new packfile where it didn't belong.
Carlos Martín Nieto 4a5b781a 2015-05-07T13:44:28 local: use the packbuilder to push 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.
Carlos Martín Nieto 81c0fb08 2015-05-07T13:28:51 local: add clarification for non-bare push restriction
Carlos Martín Nieto c5c5cdb1 2015-05-13T10:47:13 Merge pull request #3066 from libgit2/cmn/remote-less-state Remove the configuration state we keep in the remote
Carlos Martín Nieto b0d7f329 2015-05-13T10:23:19 odb: reverse the default backend priorities We currently first look in the loose object dir and then in the packs for objects. When performing operations on recent history this has a higher likelihood of hitting, but when we deal with operations which look further back into the past, we start spending a large amount of time getting ENOTENT from `access`. Reversing the priorities means that long-running operations can get to their objects faster, as we can look at the index data we have in memory (or rather mapped) to figure out whether we have an object, which is faster than going out to the filesystem. The packed backend already implements an optimistic read algorithm by first looking at the packs we know about and only going out to disk to referesh if the object is not found which means that in the case where we do have the object (which will be in the majority for anything that traverses the graph) we can avoid going to to disk entirely to determine whether an object exists. Operations which look at recent history may take a slight impact, but these would be operations which look a lot less at object and thus take less time regardless.
Carlos Martín Nieto 3251972e 2015-05-04T09:39:55 push: free the update list
Carlos Martín Nieto b1ae3e53 2015-04-26T02:20:22 Update CHANGELOG with the changes to the remotes
Carlos Martín Nieto 3e20154a 2015-04-25T00:38:22 remote: simplify anonymous creation We're down to simply having it be a call to create_internal() so let's simply do that. The rest of the code is just a distraction.
Carlos Martín Nieto a4b6452a 2015-04-23T06:55:29 remote: remove git_remote_save() It has now become a no-op, so remove the function and all references to it.
Carlos Martín Nieto 77254990 2015-04-23T06:51:34 remote: remove live changing of refspecs The base refspecs changing can be a cause of confusion as to what is the current base refspec set and complicate saving the remote's configuration. Change `git_remote_add_{fetch,push}()` to update the configuration instead of an instance. This finally makes `git_remote_save()` a no-op, it will be removed in a later commit.
Carlos Martín Nieto 3fec548a 2015-04-23T06:01:13 examples: adjust to the new remote API
Carlos Martín Nieto 35a8a8c5 2015-04-22T17:29:20 remote: move the tagopt setting to the fetch options This is another option which we should not be keeping in the remote, but is specific to each particular operation.
Carlos Martín Nieto 3eff2a57 2015-04-22T16:11:10 remote: move the update_fetchhead setting to the options While this will rarely be different from the default, having it in the remote adds yet another setting it has to keep around and can affect its behaviour. Move it to the options.
Carlos Martín Nieto 058b753c 2015-04-22T15:45:21 remote: move the transport ctor to the callbacks Instead of having it set in a different place from every other callback, put it the main structure. This removes some state from the remote and makes it behave more like clone, where the constructors are passed via the options.
Carlos Martín Nieto 6fb373a0 2015-04-22T04:54:00 remote: add prune option to fetch Add a prune setting in the fetch options to allow to fall back to the configuration (the default) or to set it on or off.
Carlos Martín Nieto 22261344 2015-04-22T04:38:08 remote: remove url and pushurl from the save logic As a first step in removing the repository-saving logic, don't allow chaning the url or push url from a remote object, but change the configuration on the configuration immediately.
Carlos Martín Nieto 8f0104ec 2015-04-21T22:10:36 Remove the callbacks struct from the remote Having the setting be different from calling its actions was not a great idea and made for the sake of the wrong convenience. Instead of that, accept either fetch options, push options or the callbacks when dealing with the remote. The fetch options are currently only the callbacks, but more options will be moved from setters and getters on the remote to the options. This does mean passing the same struct along the different functions but the typical use-case will only call git_remote_fetch() or git_remote_push() and so won't notice much difference.
Carlos Martín Nieto 05259114 2015-04-21T20:16:48 push: remove own copy of callbacks The push object knows which remote it's associated with, and therefore does not need to keep its own copy of the callbacks stored in the remote. Remove the copy and simply access the callbacks struct within the remote.
Carlos Martín Nieto 77b339f7 2015-05-12T13:06:33 odb: make the writestream's size a git_off_t Restricting files to size_t is a silly limitation. The loose backend writes to a file directly, so there is no issue in using 63 bits for the size. We still assume that the header is going to fit in 64 bytes, which does mean quite a bit smaller files due to the run-length encoding, but it's still a much larger size than you would want Git to handle.
Edward Thomson 34593aae 2015-05-12T17:00:25 attr: declare variable at top of block for msvc
Edward Thomson 90997e40 2015-05-12T12:14:55 attr: less path mangling during attribute matching 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.)
Edward Thomson 9465bedb 2015-05-12T16:02:18 attr: don't mangle file path during attr matching 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.
Edward Thomson 30e629a0 2015-05-11T17:34:14 attr: always return errors
Edward Thomson ef6d0722 2015-05-12T13:06:05 attr: don't match files for folders When ignoring a path "foo/", ensure that this is actually a directory, and not simply a file named "foo".
Edward Thomson 9486d203 2015-05-12T13:07:59 attr test: test a file beneath ignored folder
Edward Thomson 97fb9ac7 2015-05-12T13:54:28 attr: test that a file is not ignored for a folder When a .gitignore specifies some folder "foo/", ensure that a file with the same name "foo" is not ignored.
Edward Thomson adad5181 2015-05-12T13:52:47 attr: regression tests for ignore matching Ensure that when examining a .gitignore in a subdirectory, we do not erroneously apply the paths contained therein to the root of the repository. (Fixed in c02a0e4).
Carlos Martín Nieto ca294279 2015-05-12T11:43:27 index: make the entries have more accurate sizes While we are confident about the size of an int in architectures we're likely to care about, the index format is defined by the exact size of the fields. Use the definitions which show the exact width of the entry fields. As part of that, bring back 32-bit time and size fields, which currently are 64 bits wide and can bring a false sense of security in how much data they really store. Document that these fields are not to be taken as authoritative.
Carlos Martín Nieto 20dcb731 2015-05-12T11:33:45 Get rid of libssh2 embedding It was added as a workaround while the project had code to use WinCNG but had not made a release with it. There is now a release of libssh2 with WinCNG support, so this option is redundant. Let's get rid of it before people start liking it too much.
Carlos Martín Nieto f85a9c27 2015-05-12T11:27:37 Merge pull request #3111 from whoisj/centralizing-buffer-sizes Centralizing all IO buffer size values
Carlos Martín Nieto 1e44ea97 2015-05-12T11:13:41 submodule: add test initialising and cloning a repo We have a few tests checking each step, but we do not yet have a test which tests the documented workflow for creating a submodule, namely `setup_add` followed by cloning into it, followed by `add_finalize`. Add such a test to protect against regressions in this workflow.
Carlos Martín Nieto 77a15fe8 2015-05-12T10:29:58 Merge pull request #3018 from ethomson/stash_apply Stash apply
Edward Thomson 1f1f5c63 2015-05-11T14:10:24 checkout: better document the `baseline_index` opt
Edward Thomson 15fdf054 2015-05-11T14:06:47 stash application: document new API in CHANGELOG