src


Log

Author Commit Date CI Message
Russell Belfer a1bf70e4 2012-11-08T21:58:24 fix regression in diff with submodule oid
Russell Belfer 55cbd05b 2012-11-08T16:56:34 Some diff refactorings to help code reuse There are some diff functions that are useful in a rewritten checkout and this lays some groundwork for that. This contains three main things: 1. Share the function diff uses to calculate the OID for a file in the working directory (now named `git_diff__oid_for_file` 2. Add a `git_diff__paired_foreach` function to iterator over two diff lists concurrently. Convert status to use it. 3. Move all the string/prefix/index entry comparisons into function pointers inside the `git_diff_list` object so they can be switched between case sensitive and insensitive versions. This makes them easier to reuse in various functions without replicating logic. As part of this, move a couple of index functions out of diff.c and into index.c.
Russell Belfer 2e3d4b96 2012-11-08T16:47:28 Move pathspec code in separate files Diff uses a `git_strarray` of path specs to represent a subset of all files to be processed. It is useful to be able to reuse this filtering in other places outside diff, so I've moved it into a standalone set of utilities.
Russell Belfer ad9a921b 2012-11-08T17:05:07 Rework checkout with new strategy options This is a major reworking of checkout strategy options. The checkout code is now sensitive to the contents of the HEAD tree and the new options allow you to update the working tree so that it will match the index content only when it previously matched the contents of the HEAD. This allows you to, for example, to distinguish between removing files that are in the HEAD but not in the index, vs just removing all untracked files. Because of various corner cases that arise, etc., this required some additional capabilities in rmdir and other utility functions. This includes the beginnings of an implementation of code to read a partial tree into the index based on a pathspec, but that is not enabled because of the possibility of creating conflicting index entries.
Russell Belfer 220d5a6c 2012-11-08T16:45:25 Make iterator ignore eval lazy This makes it so that the check if a file is ignored will be deferred until requested on the workdir iterator, instead of aggressively evaluating the ignore rules for each entry. This should improve performance because there will be no need to check ignore rules for files that are already in the index.
Russell Belfer 32def5af 2012-10-24T17:37:07 Fix checkout behavior when its hands are tied So, @nulltoken created a failing test case for checkout that proved to be particularly daunting. If checkout is given only a very limited strategy mask (e.g. just GIT_CHECKOUT_CREATE_MISSING) then it is possible for typechange/rename modifications to leave it unable to complete the request. That's okay, but the existing code did not have enough information not to generate an error (at least for tree/blob conflicts). This led me to a significant reorganization of the code to handle the failing case, but it has three benefits: 1. The test case is handled correctly (I think) 2. The new code should actually be much faster than the old code since I decided to make checkout aware of diff list internals. 3. The progress value accuracy is hugely increased since I added a fourth pass which calculates exactly what work needs to be done before doing anything.
Russell Belfer 331e7de9 2012-10-24T17:32:50 Extensions to rmdir and mkdir utilities * Rework GIT_DIRREMOVAL values to GIT_RMDIR flags, allowing combinations of flags * Add GIT_RMDIR_EMPTY_PARENTS flag to remove parent dirs that are left empty after removal * Add GIT_MKDIR_VERIFY_DIR to give an error if item is a file, not a dir (previously an EEXISTS error was ignored, even for files) and enable this flag for git_futils_mkpath2file call * Improve accuracy of error messages from git_futils_mkdir
Vicent Martí 8a328cf4 2012-11-09T13:19:32 Merge pull request #1058 from pwkelley/development Fixes for two segfaults
Philip Kelley fcd03beb 2012-11-09T15:57:32 Fix a mutex/critical section leak
nulltoken 55f9837f 2012-11-09T21:49:50 config: make git_config_open_level() work with an empty config
Philip Kelley 2f683f00 2012-11-09T15:39:25 Fix uninitialized memory in winhttp subtransport on 64-bit
Philip Kelley 2364735c 2012-11-09T15:39:10 Fix implementation of strndup to not overrun
Vicent Martí 0f674411 2012-11-09T06:16:44 Merge pull request #1052 from delanne/invalid_read Valgrind reports Invalid Read when the configuration file contains some empty line
Philip Kelley 9d641283 2012-11-08T08:06:23 Merge pull request #1048 from pwkelley/basic_auth Basic authentication for http and winhttp
delanne bcad677b 2012-11-08T12:28:21 - Update 'tests-clar/resources/config/config11' in order to reproduce the invalidread with the unittest (just added some \n at the end of the file) - Fix config_file.c
Vicent Martí 8ff2b0c7 2012-11-07T16:30:55 Merge pull request #1039 from erikvanzijst/erik/tag_without_message Correctly parse tags lacking a description
Eduardo Bart 345eef23 2012-11-07T16:10:57 Move inet_pton to posix platform-compatibility layer
Eduardo Bart d1a69d0f 2012-11-06T20:16:53 Fix compilation for mingw32 and cygwin inet_pton is available only in windows vista or later, fixed the issue by reimplementing it using WSAStringToAddress
Philip Kelley 11fa8472 2012-11-06T11:27:23 Don't store no_check_cert; fetch it on demand
Philip Kelley 2f7538ec 2012-11-06T09:36:04 Fix connection leak in http subtransport
Philip Kelley 091361f5 2012-11-06T08:52:03 Basic authentication for http and winhttp
Edward Thomson 09cc0b92 2012-11-05T11:33:10 create callback to handle packs from fetch, move the indexer to odb_pack
Russell Belfer a5e85d86 2012-11-05T11:06:50 Merge pull request #1046 from libgit2/empty-remote-url-crash Bail out of remote loading if the URL would be NULL
Justin Spahr-Summers c1cd036e 2012-11-05T11:01:00 'geterr' -> 'giterr'
Russell Belfer 065be7a1 2012-11-05T10:44:21 Merge pull request #1044 from dahlbyk/repo/state Fix state when HEAD is not detached
Justin Spahr-Summers f8baece7 2012-11-05T10:42:10 Set GITERR_INVALID when encountering a NULL remote URL
Vicent Martí 942a7698 2012-11-05T06:54:34 Merge pull request #1034 from carlosmn/packbuilder-foreach Let the user grab the packfile as it's being written
Justin Spahr-Summers 83885891 2012-11-04T22:01:24 Bail out if remote->url would be NULL This fixes a crash from attempting to invoke git__strdup() against NULL.
Keith Dahlby 35d255fd 2012-11-04T12:13:42 repo: fix state when HEAD is not detached
Philip Kelley 1e99ce9a 2012-11-02T11:42:45 Merge pull request #1042 from pwkelley/progress_cb Fix bytes_received in fetch tests - we weren't calling the callback
Philip Kelley 438906e1 2012-11-02T14:34:06 Fix bytes_received in fetch tests - we weren't calling the callback
Russell Belfer 3ae0aad7 2012-11-02T10:42:20 Move error capture to top of giterr_set
Erik van Zijst 6bb9fea1 2012-11-02T10:28:17 tags: Fixed the tag parser to correctly treat the message field as optional. This fix makes libgit2 capable of parsing annotated tag objects that lack the optional message/description field. Previously, libgit2 treated this field as mandatory and raised a tag_error on such tags. However, the message field is optional. An example of such a tag is refs/tags/v2.6.16.31-rc1 in Linux: $ git cat-file tag refs/tags/v2.6.16.31-rc1 object afaa018cefb6af63befef1df7d8febaae904434f type commit tag v2.6.16.31-rc1 tagger Adrian Bunk <bunk@stusta.de> 1162716505 +0100 $
Vicent Martí 1362a983 2012-11-02T10:00:28 Merge pull request #1014 from arrbee/diff-rename-detection Initial implementation of diff rename detection
Philip Kelley 473a7a1e 2012-11-02T08:43:17 Merge pull request #1040 from ethomson/index_refactor Free conflict index entries on removal
Philip Kelley 2c087f81 2012-11-02T08:40:09 Merge pull request #1041 from pwkelley/transports Prefer GetLastError() for GITERR_OS on Win32
Philip Kelley 8f624a47 2012-11-02T11:30:55 Prefer GetLastError() for GITERR_OS on Win32
Edward Thomson 050cf8b8 2012-11-02T01:01:21 freeing index entries would be helpful
Vicent Martí d13da328 2012-11-01T14:18:40 Merge pull request #1038 from arrbee/doc-fixes Improve docs, examples, warnings
Russell Belfer b90500f0 2012-11-01T14:08:30 Improve docs, examples, warnings This improves docs in some of the public header files, cleans up and improves some of the example code, and fixes a couple of pedantic warnings in places.
Vicent Marti 1e808f9c 2012-11-01T20:28:28 index: Add `git_index_new`
Vicent Marti 43eeca04 2012-11-01T20:24:43 index: Fix tests
Vicent Marti 276ea401 2012-11-01T20:15:53 index: Add git_index_write_tree
Vicent Marti 8ff0f325 2012-10-31T22:26:57 index: Switch to git_futils_filestamp
Jameson Miller c902f5a0 2012-11-01T12:11:24 Update of text stats calculation Do not interpret 0x85 as Next Line (NEL) char when gathering statistics for a text file.
Vicent Martí 7ae73e94 2012-11-01T09:15:29 Merge pull request #1030 from pwkelley/transports Reorganize transport architecture
Philip Kelley ff830366 2012-11-01T12:07:42 Http: Set an error for invalid content-type
Philip Kelley 0ccfc63b 2012-11-01T10:29:30 Improve consistency of WinHTTP request headers
Philip Kelley 41fb1ca0 2012-10-29T13:41:14 Reorganize transport architecture (squashed 3)
Carlos Martín Nieto b4b935d8 2012-10-31T10:43:08 packbuilder: add accessors for the number of total and written objects
Carlos Martín Nieto 3dfed9cb 2012-10-31T10:26:04 packbuilder: add git_packbuilder_foreach Let the user get each object as a buffer+size pair so they can handle the packfile content as they need to.
Vicent Marti 003808b3 2012-10-31T20:52:16 Merge branch 'config-refresh' into development
Vicent Marti c1f61af6 2012-10-31T20:52:01 I LIKE THESE NAMES
Russell Belfer c8b511f3 2012-10-31T11:26:12 Better naming for file timestamp/size checker
Ben Straub a9db123b 2012-10-31T10:14:13 Checkout: remove duplicate 100% progress report
Ben Straub c48e8700 2012-10-31T10:13:57 Ensure that non-error is not propagated
Russell Belfer 744cc03e 2012-10-30T12:10:36 Add git_config_refresh() API to reload config This adds a new API that allows users to reload the config if the file has changed on disk. A new config callback function to refresh the config was added. The modified time and file size are used to test if the file needs to be reloaded (and are now stored in the disk backend object). In writing tests, just using mtime was a problem / race, so I wanted to check file size as well. To support that, I extended `git_futils_readbuffer_updated` to optionally check file size in addition to mtime, and I added a new function `git_filebuf_stats` to fetch the mtime and size for an open filebuf (so that the config could be easily refreshed after a write). Lastly, I moved some similar file checking code for attributes into filebuf. It is still only being used for attrs, but it seems potentially reusable, so I thought I'd move it over.
Vicent Martí efde4225 2012-10-30T12:04:28 Merge pull request #1017 from arrbee/diff-patch-to-str Add git_diff_patch_to_str API
Vicent Martí c4a9ded0 2012-10-30T12:03:22 Merge pull request #1026 from nulltoken/repo/state repo: enhance git_repository_state() detection
Vicent Martí 6c21358a 2012-10-30T11:51:58 Merge pull request #1029 from ethomson/index_refactor Index changes
Michael Schubert 6cfbbf7e 2012-10-30T18:50:59 Fix a couple of warnings
Russell Belfer db106d01 2012-10-30T09:40:50 Move rename detection into new file This improves the naming for the rename related functionality moving it to be called `git_diff_find_similar()` and renaming all the associated constants, etc. to make more sense. I also moved the new code (plus the existing `git_diff_merge`) into a new file `diff_tform.c` where I can put new functions related to manipulating git diff lists. This also updates the implementation significantly from the last revision fixing some ordering issues (where break-rewrite needs to be handled prior to copy and rename detection) and improving config option handling.
Edward Thomson f45ec1a0 2012-10-29T20:04:21 index refactoring
Ben Straub 81eecc34 2012-10-29T13:34:14 Fetch: don't clobber received count This memset was being reached after the entire packfile under WinHttp, so the byte count was being lost for small repos.
Vicent Martí 8a1479a5 2012-10-29T12:57:04 Merge pull request #796 from nulltoken/topic/git-stash Stash
nulltoken 31966d20 2012-10-27T09:30:03 repo: enhance git_repository_state() detection
Ben Straub a0ce87c5 2012-10-26T13:43:13 Add network transfer callbacks on Windows
nulltoken e4c64cf2 2012-10-08T20:07:55 stash: add git_stash_drop()
nulltoken 23388413 2012-10-04T15:13:43 stash: add git_stash_foreach()
nulltoken 590fb68b 2012-10-04T13:47:45 stash: add git_stash_save()
nulltoken 4ea0a0ca 2012-06-29T22:59:58 refs: add GIT_REFS_STASH_FILE define
nulltoken b1be9dd0 2012-10-03T12:09:17 index: introduce git_index_owner()
nulltoken 1f87fa35 2012-10-09T18:29:26 reflog: fix bogus removal of reflog entries
nulltoken 27e3c583 2012-10-03T15:12:42 reflog: create reflog and its directory structure
nulltoken d2aa6de7 2012-10-03T13:56:13 reflog: Make git_reflog_free() accept null param
Russell Belfer cb7180a6 2012-10-25T11:48:39 Add git_diff_patch_print This adds a `git_diff_patch_print()` API which is more like the existing API to "print" a patch from an entire `git_diff_list` but operates on a single `git_diff_patch` object. Also, it rewrites the `git_diff_patch_to_str()` API to use that function (making it very small).
Russell Belfer 3943dc78 2012-10-25T11:12:56 Check errors while generating diff patch string
Russell Belfer 1b934689 2012-10-25T10:55:03 Merge pull request #925 from nulltoken/topic/moving-branch-updates-config Updates config upon moving and deletion of branches
Vicent Marti 505f37b4 2012-10-25T19:22:35 config: Only dereference value on success
Ben Straub 67dad09b 2012-10-25T09:59:49 Remove inline hint
Ben Straub 1fc375e6 2012-10-25T09:02:55 Fix Windows build Pedantic ordering of GIT_UNUSED vs. variable declarations.
nulltoken fcccf304 2012-09-09T20:39:13 remote: introduce git_remote_rename()
nulltoken 3a14d3e2 2012-10-01T11:58:15 buf: introduce git_buf_splice()
nulltoken fb39b3a5 2012-10-02T14:36:59 refspec: introduce git_refspec__serialize()
nulltoken 4fe5520a 2012-09-17T17:46:58 remote: remove some code duplication
nulltoken e497b16c 2012-09-17T14:22:18 remote: prevent from saving a nameless remote
nulltoken aba70781 2012-09-11T18:11:26 config: introduce git_config_rename_section()
nulltoken 383f164a 2012-09-07T17:55:30 branch: rename config section upon moving
nulltoken 0b98a8a4 2012-09-07T15:13:11 branch: remove config section upon deletion
Vicent Martí 1eb8cd7f 2012-10-25T08:16:13 Merge pull request #990 from ben/clone-callbacks Progress callbacks
Russell Belfer 93cf7bb8 2012-10-24T20:56:32 Add git_diff_patch_to_str API This adds an API to generate a complete single-file patch text from a git_diff_patch object.
Edward Thomson 03bdb2ad 2012-10-23T16:32:01 GIT_EUNMERGED
Edward Thomson 632d8b23 2012-10-23T15:42:09 reset changes for merge
Ben Straub 1e3b8ed5 2012-10-24T14:07:07 Remove 'bytes' param from git_remote_download
Ben Straub 7d222e13 2012-10-24T13:29:14 Network progress: rename things git_indexer_stats and friends -> git_transfer_progress* Also made git_transfer_progress members more sanely named.
Russell Belfer b4f5bb07 2012-10-23T16:40:51 Initial implementation of diff rename detection This implements the basis for diff rename and copy detection, although it is based on simple SHA comparison right now instead of using a matching algortihm. Just as `git_diff_merge` can be used as a post-pass on diffs to emulate certain command line behaviors, there is a new API `git_diff_detect` which will update a diff list in-place, adjusting some deltas to RENAMED or COPIED state (and also, eventually, splitting MODIFIED deltas where the change is too large into DELETED/ADDED pairs). This also adds a new test repo that will hold rename/copy/split scenarios. Right now, it just has exact-match rename and copy, but the tests are written to use tree diffs, so we should be able to add new test scenarios easily without breaking tests.
Vicent Martí 81e7b10a 2012-10-23T13:43:28 Merge pull request #1012 from carlosmn/libcrypto-sha Use libcrypto's SHA-1 implementation when linking to it
Carlos Martín Nieto 7205a4d9 2012-10-23T19:30:04 Use libcrypto's SHA-1 implementation when linking to it libcryto's SHA-1 implementation is measurably better than the one that ships with the library. If we link to it for HTTPS support already, use that implementation instead. Testing on a ~600MB of the linux repository, this reduces indexing time by 40% and removes the hashing from the top spot in the perf output.
yorah a1abe66a 2012-09-10T12:11:02 Add config level support in the config API Added `struct git_config_entry`: a git_config_entry contains the key, the value, and the config file level from which a config element was found. Added `git_config_open_level`: build a single-level focused config object from a multi-level one. We are now storing `git_config_entry`s in the khash of the config_file
yorah f8ede948 2012-09-18T14:10:40 Fix adding variable to config file with no trailing newline This can occur after a manual modification of a config file.