Log

Author Commit Date CI Message
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
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.
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 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 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 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 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.
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
Edward Thomson 44972873 2015-05-11T14:02:53 stash: propagate the error when writing a tree
Edward Thomson 4ea3eebf 2015-05-01T18:34:38 stash_apply: provide progress callbacks
Edward Thomson 19c80a6f 2015-05-01T18:07:10 stash_apply: provide its own options structure
Edward Thomson 24961668 2015-04-20T20:06:02 stash: test checkout notify callbacks
Edward Thomson 12149a20 2015-04-20T20:05:23 stash apply: default to at least GIT_CHECKOUT_SAFE
Edward Thomson f78bb2af 2015-03-18T01:54:04 stash: return GIT_EMERGECONFLICT on merge conflict
Edward Thomson 958950b6 2015-05-01T13:53:46 stash: document merge conflicts
Edward Thomson f0957589 2015-03-04T23:55:42 stash: refactor to use merge_iterators
Edward Thomson 90f8408d 2015-02-18T16:33:50 stash: ensure a reflog has entries
Edward Thomson d0dd3fce 2015-02-18T15:16:05 stash apply: check out a tree, not piecewise
Edward Thomson 7f26b1b9 2015-02-18T13:24:07 stash: use git_commit_summary for a summary
Edward Thomson 35d39761 2015-03-18T00:25:18 index: introduce git_index_read_index
Edward Thomson 73dce1f6 2015-03-16T18:57:57 checkout: allow baseline to be specified as index Allow the baseline to be specified as an index, so that users need not write their index to a tree just to checkout with that as the baseline.
Edward Thomson 9ebb5a3f 2015-02-18T22:53:40 merge: merge iterators
Pierre-Olivier Latour bf8dd3f5 2014-11-14T12:32:47 Added git_stash_apply() and git_stash_pop() APIs
J Wyman 7dd22538 2015-05-11T10:19:25 centralizing all IO buffer size values
Carlos Martín Nieto 9cdd6578 2015-05-09T13:11:46 Merge pull request #3104 from whoisj/optimal-buffer-size Adjusting stream buffer size to 64KB
J Wyman 7eb7e03d 2015-05-07T08:50:12 Adjusting stream buffer size to 64KB 64K is optimal buffer size per https://technet.microsoft.com/en-us/library/cc938632.aspx
Carlos Martín Nieto 25f355cb 2015-05-06T18:39:39 Merge pull request #3086 from yongthecoder/master Android build doesn't need deps/regex
Carlos Martín Nieto 5b6292a7 2015-05-06T07:37:49 Merge pull request #3100 from arthurschreiber/patch-5 Ensure frameworks are mentioned in libgit2.pc
Arthur Schreiber 7a5c7559 2015-05-05T22:36:24 Ensure frameworks are mentioned in libgit2.pc When building on Mac OS X, the `CoreFoundation` and `Security` frameworks where missing from `Libs.private` in the generated `libgit2.pc` file.
Carlos Martín Nieto b162d97a 2015-05-05T09:47:16 config: plug a couple of leaks
Yong Li 57aa839c 2015-05-04T09:41:34 Android build doesn't need deps/regex deps/regex was included in Android build because Android NDK 4 has a packaging bug and doesn't have the regular expression functions defined in its libc.so. The bug has been fixed in subsequent Android NDK releases. If it is still necessary to work around the bug in Android NDK 4, we should consider to use an option like ANDROID_NDK_RELEASE or ANDROID_NDK_RELEASE_NUM.
Carlos Martín Nieto 074d323f 2015-05-04T15:23:40 Merge pull request #3079 from ethomson/config Configuration changes for handling multiple of the same sections
Carlos Martín Nieto c3414d53 2015-05-04T14:59:08 Merge pull request #3070 from ethomson/checkout_icase Case insensitive checkout improvements
Edward Thomson d6b7e404 2015-05-04T07:36:21 config: test all multivars are updated If a multivar exists within two sections (of the same name) then they should both be updated in a `set_multivar`. Ensure that this is the case.
Edward Thomson 0daf998d 2015-04-27T16:31:18 config: use wildcard in test instead of empty expr
Edward Thomson 63c0cc65 2015-04-27T16:29:00 config: cleanup some now-unused variables
Edward Thomson 9c26de0f 2015-04-27T15:38:44 config: lock the file for write before reading When writing a configuration file, we want to take a lock on the new file (eg, `config.lock`) before opening the configuration file (`config`) for reading so that we can prevent somebody from changing the contents underneath us.
Ryan Roden-Corrent 5a70df94 2015-04-21T15:57:20 Test setting config var under duplicate header. Add a test that exposes a bug in config_write. It is valid to have multiple separate headers for the same config section, but config_write will exit after finding the first matching section in certain situations. This test proves that config_write will duplicate a variable that already exists instead of overwriting it if the variable is defined under a duplicate section header.
Edward Thomson 2a950c94 2015-04-27T10:43:50 config: write existing lines as-is when rewriting When updating a configuration file, we want to copy the old data from the file to preserve comments and funny whitespace, instead of writing it in some "canonical" format. Thus, we keep a pointer to the start of the line and the line length to preserve these things we don't care to rewrite.
Edward Thomson bf99390e 2015-04-23T16:54:36 config: examine whole file when writing Previously we would try to be clever when writing the configuration file and try to stop parsing (and simply copy the rest of the old file) when we either found the value we were trying to write, or when we left the section that value was in, the assumption being that there was no more work to do. Regrettably, you can have another section with the same name later in the file, and we must cope with that gracefully, thus we read the whole file in order to write a new file. Now, writing a file looks even more than reading. Pull the config parsing out into its own function that can be used by both reading and writing the configuration.
Edward Thomson f79c7322 2015-04-23T12:00:05 config: test overwriting cvar in multiple regions
Edward Thomson 7ee61b8e 2015-04-21T17:18:21 config: ensure we can write to an empty file
Edward Thomson cd79d99a 2015-04-23T15:58:53 checkout test: better case-insensitive test on Mac On Mac OS, `realpath` is deficient in determining the actual filename on-disk as it will simply provide the string you gave it if that file exists, instead of returning the filename as it exists. Instead we must read the directory entries for the parent directory to get the canonical filename.
Edward Thomson f286e271 2015-03-31T16:06:33 status test: always test the new file path
Edward Thomson 64842d87 2015-04-23T09:21:33 checkout test: only run icase on icase platform
Edward Thomson 4beab1f8 2015-03-31T16:29:35 checkout: break case-changes into delete/add When checking out with a case-insensitive working directory, we want to change the case of items in the working directory to reflect changes that occured in the checkout target. Diff now has an option to break case-changing renames into delete/add.
Edward Thomson 05f69012 2015-03-31T16:28:13 checkout: remove blocking dir when FORCEd
Edward Thomson 3520c970 2015-03-27T15:39:28 Revert "Always checkout with case sensitive iterator" This reverts commit 40d791545abfb3cb71553a27dc64129e1a9bec28.
Edward Thomson 6dfd8506 2015-04-01T15:23:37 checkout test: ensure we write to casechanged dir Ensure that on a case insensitive filesystem that we can checkout into some folder 'FOLDER' that exists on disk, even if the target of the checkout is a different case (eg 'folder').
Edward Thomson 431f9807 2015-03-27T15:33:44 checkout test: ignore unstaged case-changing renames On Windows, you might sloppily rewrite a file (or have a sloppy text editor that does it for you) and accidentally change its case. (eg, "README" -> "readme"). Git ignores this accidental case changing rename during checkout and will happily write the new content to the file despite the name change. We should, too.
Carlos Martín Nieto cfc2e56d 2015-05-04T11:16:52 Merge pull request #3087 from ethomson/pr/3054 Performance Improvements to Status on Windows
Edward Thomson 72f8da91 2015-05-02T10:51:24 Merge pull request #3089 from volftomas/patch-2 Added call to git_libgit2_shutdown()
Tomas Paladin Volf 785990be 2015-05-02T12:16:22 Restructured to be nicer example Code restructured to better represent best practice when using libgit2.
Edward Thomson ef23a82f 2015-05-01T17:30:51 Merge pull request #3092 from techee/iconv_macports_fix2 Don't search iconv in /opt/local
Jiří Techet b7df2e8b 2015-05-01T22:48:33 Don't search iconv in /opt/local Since OpenSSL isn't used any more on OS X, there is no dependency on any MacPorts library under /opt/local and there is no danger of conflicts between MacPorts and system iconv. For this reason the system iconv can always be used now.
Edward Thomson be3f1049 2015-05-01T11:27:44 diriter: actually use iconv on mac
Edward Thomson cd39e4e2 2015-04-29T18:12:51 git_buf_put_w: introduce utf16->utf8 conversion
Edward Thomson f63a1b72 2015-04-29T17:23:02 git_path_diriter: use FindFirstFile in win32 Using FindFirstFile and FindNextFile in win32 allows us to use the directory information that is returned, instead of us having to get the file attributes all over again, which is a distinct cost savings on win32.
Edward Thomson 5c387b6c 2015-04-29T14:31:59 git_path_diriter: next shouldn't take path ptr The _next method shouldn't take a path pointer (and a path_len pointer) as 100% of current users use the full path and ignore the filename. Plus let's add some docs and a unit test.
Edward Thomson 7ef005f1 2015-04-29T14:04:01 git_path_dirload_with_stat: moved to fs_iterator
Edward Thomson ba8ef18a 2015-04-29T13:28:29 git_path_dirload_with_stat: use git_path_diriter
Edward Thomson 35c1d207 2015-04-29T14:03:20 git_win32_path_dirload_with_stat: removed
Edward Thomson 07bbc045 2015-04-29T11:58:10 git_path_dirload: use git_path_diriter
Edward Thomson edbfc52c 2015-04-29T11:05:27 git_path: introduce 'git_path_diriter' Introduce a new `git_path_diriter` that can iterate directories efficiently for each platform.
Edward Thomson cbe8a61d 2015-05-01T11:28:54 Merge pull request #3059 from libgit2/cmn/negotiation-notify [WIP/RFC] push: report the update plan to the caller
Edward Thomson 9f73e1f3 2015-05-01T09:01:34 Merge pull request #3081 from leoyanggit/build_warnings Fix some build warnings
Carlos Martín Nieto 5e00e5c9 2015-04-30T21:55:10 Merge pull request #3090 from libgit2/jamill/doc_update Update documentation for API changes
Carlos Martín Nieto 1275de53 2015-04-30T21:25:54 Merge pull request #3088 from volftomas/patch-1 Fixed unused warning in tests/rebase/merge.c
Jameson Miller bf2ba529 2015-04-30T10:57:13 Update documentation for API changes
Tomas Paladin Volf 9bff15f4 2015-04-30T15:10:28 Added call to git_libgit2_shutdown() Added forgotten call to git_libgit2_shutdown() to the /examples/network/git2.c.
Tomas Paladin Volf cf2380a6 2015-04-30T14:17:05 Fixed unused warning in tests/rebase/merge.c
Carlos Martín Nieto 891cc504 2015-04-29T22:08:46 Merge pull request #3085 from yongthecoder/regfree Do not call regfree() on an empty regex that is not successfully created...
Yong Li e30438cc 2015-04-29T13:40:42 Do not call regfree() on an empty regex that is not successfully created by regcomp (also removed an unused member "has_regex" from all_iter)
Edward Thomson 544139f5 2015-04-28T16:39:47 win32: keep full path for realpath usage
Edward Thomson c074d7a4 2015-04-28T12:24:08 win32: mimic git_path_dirload_with_stat closely
Edward Thomson b3f6cef0 2015-04-28T11:16:42 dirload: loop conditional; less path mangling
Edward Thomson e05531dd 2015-04-27T18:02:06 win32 dirload: don't heap allocate DIR structure
Edward Thomson f3c444b8 2015-04-27T17:47:51 win32: abstract file attributes -> struct stat fn
J Wyman 1920ee4e 2015-03-26T18:10:24 Improvements to status performance on Windows. Changed win32/path_w32.c to utilize NTFS' FindFirst..FindNext data instead of doing an lstat per file. Avoiding unnecessary directory opens and file scans reduces IO, improving overall performance. Effect is magnified due to NTFS being a kernel mode file system (as opposed to user mode).