summaryrefslogtreecommitdiff
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
* Merge pull request #664 from arrbee/attrs-from-indexdevelopment-mergeVicent Martí2012-05-0520-246/+462
|\ | | | | Support git attrs from index (and bare repo)
| * Fix valgrind issuesRussell Belfer2012-05-046-18/+37
| | | | | | | | | | | | | | There are three changes here: - correctly propogate error code from failed object lookups - make zlib inflate use our allocators - add OID to notfound error in ODB lookups
| * Fix memory leaks and use after freeRussell Belfer2012-05-045-16/+32
| |
| * Support reading attributes from indexRussell Belfer2012-05-0312-214/+395
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Depending on the operation, we need to consider gitattributes in both the work dir and the index. This adds a parameter to all of the gitattributes related functions that allows user control of attribute reading behavior (i.e. prefer workdir, prefer index, only use index). This fix also covers allowing us to check attributes (and hence do diff and status) on bare repositories. This was a somewhat larger change that I hoped because it had to change the cache key used for gitattributes files.
* | notes: Cleanup error handlingVicent Martí2012-05-051-19/+11
| |
* | Merge pull request #663 from schu/notes-honor-configVicent Martí2012-05-051-6/+41
|\ \ | | | | | | Honor core.notesRef config option
| * | notes: add git_note_default_ref()Michael Schubert2012-05-031-0/+6
| | | | | | | | | | | | | | | Add git_note_default_ref to allow easy retrieval of the currently set default notes reference.
| * | notes: honor core.notesRefMichael Schubert2012-05-031-6/+35
| | | | | | | | | | | | | | | Setting core.notesRef allows to change the default notes reference used by Git. Check if set before using GIT_NOTES_DEFAULT_REF. Fixes #649.
* | | compat: va_copy on Win32 systemsVicent Martí2012-05-041-0/+8
|/ /
* | errors: Use a git_buf for building error stringsVicent Martí2012-05-031-29/+42
| |
* | buffer: Add `git_buf_vprintf`Vicent Martí2012-05-032-6/+23
|/
* Remove old and unused error codesVicent Martí2012-05-0218-208/+62
|
* Update test suiteVicent Martí2012-05-021-2/+1
|
* Merge branch 'new-error-handling' into developmentVicent Martí2012-05-02104-6878/+8877
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: .travis.yml include/git2/diff.h src/config_file.c src/diff.c src/diff_output.c src/mwindow.c src/path.c tests-clar/clar_helpers.c tests-clar/object/tree/frompath.c tests/t00-core.c tests/t03-objwrite.c tests/t08-tag.c tests/t10-refs.c tests/t12-repo.c tests/t18-status.c tests/test_helpers.c tests/test_main.c
| * Convert from strnlen to git_text_is_binaryRussell Belfer2012-05-021-4/+16
| | | | | | | | | | | | Since strnlen is not supported on all platforms and since we now have the shiny new git_text_is_binary in the filtering code, let's convert diff binary detection to use the new stuff.
| * Copy values to avoid strict aliasing warningRussell Belfer2012-05-021-1/+6
| | | | | | | | | | | | To make this code more resilient to future changes, we'll explicitly translate the libgit2 structure to the libxdiff structure.
| * Fix usage of "new" for fieldname in public headerRussell Belfer2012-05-024-166/+166
| | | | | | | | | | | | | | | | This should restore the ability to include libgit2 headers in C++ projects. Cherry picked 2de60205dfea2c4a422b2108a5e8605f97c2e895 from development into new-error-handling.
| * Merge remote-tracking branch 'carlosmn/remaining-errors' into new-error-handlingVicent Martí2012-05-017-306/+286
| |\ | | | | | | | | | | | | Conflicts: src/refspec.c
| | * error handling: move the missing parts over to the new error handlingCarlos Martín Nieto2012-04-267-306/+286
| | |
| * | remote: don't free transport on disconnectMichael Schubert2012-05-021-8/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently, git_remote_disconnect not only closes the connection but also frees the underlying transport object, making it impossible to write code like // fetch stuff git_remote_download() // close connection git_remote_disconnect() // call user provided callback for each ref git_remote_update_tips(remote, callback) because remote->refs points to references owned by the transport object. This means, we have an idling connection while running the callback for each reference. Instead, allow immediate disconnect and free the transport later in git_remote_free().
| * | Merge pull request #654 from carlosmn/pkt-errVicent Martí2012-04-304-0/+50
| |\ \ | | | | | | | | Recognize and report server-side error messages
| | * | net: recognize and report server-side error messagesCarlos Martín Nieto2012-04-304-0/+50
| | | | | | | | | | | | | | | | | | | | When e.g. a repository isn't found, the server sends an error saying so. Put that error message in our error buffer.
| * | | buf: deploy git_buf_len()nulltoken2012-04-3014-43/+43
| | | |
| * | | diff: provide more context to the consumer of the callbacksnulltoken2012-04-301-18/+17
| | | | | | | | | | | | | | | | Update the callback to provide some information related to the file change being processed and the range of the hunk, when applicable.
| * | | buf: add git_buf_len() accessor to expose the current length of the buffer ↵nulltoken2012-04-291-1/+6
| |/ / | | | | | | | | | content
| * | pkt: bring back GIT_ESHORTBUFFERCarlos Martín Nieto2012-04-291-8/+4
| | | | | | | | | | | | | | | | | | The recent 64-bit Windows fixes changed the return code in git_pkt_parse_line() so it wouldn't signal a short buffer, breaking the network code. Bring it back.
| * | refs: fix unused-but-set warningMichael Schubert2012-04-271-0/+1
| | |
| * | Fix Win32 warningsRussell Belfer2012-04-266-18/+20
| | |
| * | Fix leading slash behavior in attrs/ignoresRussell Belfer2012-04-264-31/+69
| |/ | | | | | | | | | | We were not following the git behavior for leading slashes in path names when matching git ignores and git attribute file patterns. This should fix issue #638.
| * diff: fix generation of the header of a removal patchnulltoken2012-04-253-8/+18
| |
| * Merge pull request #642 from arrbee/mem-poolsRussell Belfer2012-04-2532-733/+1546
| |\ | | | | | | Memory pools and khash hashtables
| | * Rename git_khash_str to git_strmap, etc.Russell Belfer2012-04-2515-603/+171
| | | | | | | | | | | | | | | | | | This renamed `git_khash_str` to `git_strmap`, `git_hash_oid` to `git_oidmap`, and deletes `git_hashtable` from the tree, plus adds unit tests for `git_strmap`.
| | * Convert hashtable usage over to khashRussell Belfer2012-04-2513-202/+433
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This updates khash.h with some extra features (like error checking on allocations, ability to use wrapped malloc, foreach calls, etc), creates two high-level wrappers around khash: `git_khash_str` and `git_khash_oid` for string-to-void-ptr and oid-to-void-ptr tables, then converts all of the old usage of `git_hashtable` over to use these new hashtables. For `git_khash_str`, I've tried to create a set of macros that yield an API not too unlike the old `git_hashtable` API. Since the oid hashtable is only used in one file, I haven't bother to set up all those macros and just use the khash APIs directly for now.
| | * Import khash.h from attractivechaos/klibRussell Belfer2012-04-251-0/+548
| | |
| | * Adding stash to hashtable implementationRussell Belfer2012-04-252-44/+112
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Adding a small stash of nodes with key conflicts has been demonstrated to greatly increase the efficiency of a cuckoo hashtable. See: http://research.microsoft.com/pubs/73856/stash-full.9-30.pdf for more details.
| | * Moving power-of-two bit utilities into util.hRussell Belfer2012-04-252-9/+19
| | |
| | * Convert revwalk to use git_poolRussell Belfer2012-04-253-58/+27
| | | | | | | | | | | | | | | This removes the custom paged allocator from revwalk and replaces it with a `git_pool`.
| | * Convert attrs and diffs to use string poolsRussell Belfer2012-04-259-135/+197
| | | | | | | | | | | | | | | | | | | | | This converts the git attr related code (including ignores) and the git diff related code (and implicitly the status code) to use `git_pools` for storing strings. This reduces the number of small blocks allocated dramatically.
| | * Implement git_pool paged memory allocatorRussell Belfer2012-04-2512-17/+374
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This adds a `git_pool` object that can do simple paged memory allocation with free for the entire pool at once. Using this, you can replace many small allocations with large blocks that can then cheaply be doled out in small pieces. This is best used when you plan to free the small blocks all at once - for example, if they represent the parsed state from a file or data stream that are either all kept or all discarded. There are two real patterns of usage for `git_pools`: either for "string" allocation, where the item size is a single byte and you end up just packing the allocations in together, or for "fixed size" allocation where you are allocating a large object (e.g. a `git_oid`) and you generally just allocation single objects that can be tightly packed. Of course, you can use it for other things, but those two cases are the easiest.
| * | Merge pull request #641 from carlosmn/networkingVicent Martí2012-04-2510-255/+163
| |\ \ | | |/ | |/| More Networking updates
| | * remote: run a callback when updating the branch tipsCarlos Martín Nieto2012-04-251-3/+23
| | | | | | | | | | | | | | | | | | | | | | | | This allows the caller to update an internal structure or update the user output with the tips that were updated. While in the area, only try to update the ref if the value is different from its old one.
| | * revwalk: return GIT_EREVWALKER earlier if no references were pushedCarlos Martín Nieto2012-04-251-0/+7
| | | | | | | | | | | | | | | In the case that walk->one is NULL, we know that we have no positive references, so we already know that the revwalk is over.
| | * transports: buffer the git requests before sending themCarlos Martín Nieto2012-04-258-167/+69
| | | | | | | | | | | | | | | | | | Trying to send every single line immediately won't give us any speed improvement and duplicates the code we need for other transports. Make the git transport use the same buffer functions as HTTP.
| | * fetch: use the streaming indexer when downloading a packCarlos Martín Nieto2012-04-256-86/+65
| | | | | | | | | | | | | | | | | | | | | | | | This changes the git_remote_download() API, but the existing one is silly, so you don't get to complain. The new API allows to know how much data has been downloaded, how many objects we expect in total and how many we've processed.
| * | config: also allow escaping outside of a quoted stringCarlos Martín Nieto2012-04-251-6/+0
| |/ | | | | | | This limitation was a misparsing of the documentation.
| * Merge pull request #632 from arrbee/win64-cleanupVicent Martí2012-04-2334-707/+390
| |\ | | | | | | Code clean up, including fixing warnings on Windows 64-bit build
| | * Rename to git_reference_name_to_oidRussell Belfer2012-04-234-4/+4
| | |
| | * Fix warnings on 64-bit windows buildsRussell Belfer2012-04-1731-219/+258
| | | | | | | | | | | | | | | This fixes all the warnings on win64 except those in deps, which come from the regex code.
| | * Add git_reference_lookup_oid and lookup_resolvedRussell Belfer2012-04-176-121/+131
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Adds a new public reference function `git_reference_lookup_oid` that directly resolved a reference name to an OID without returning the intermediate `git_reference` object (hence, no free needed). Internally, this adds a `git_reference_lookup_resolved` function that combines looking up and resolving a reference. This allows us to be more efficient with memory reallocation. The existing `git_reference_lookup` and `git_reference_resolve` are reimplmented on top of the new utility and a few places in the code are changed to use one of the two new functions.
| | * Remove old status implementationRussell Belfer2012-04-171-367/+1
| | | | | | | | | | | | This removes the code for the old status implementation.