summaryrefslogtreecommitdiff
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
* ignore: match git's rule negation rulescmn/neg-ignore-dirCarlos Martín Nieto2014-12-051-3/+86
| | | | | | | | | | | A rule can only negate something which was explicitly mentioned in the rules before it. Change our parsing to ignore a negative rule which does not negate something mentioned in the rules above it. While here, fix a wrong allocator usage. The memory for the match string comes from pool allocator. We must not free it with the general allocator. We can instead simply forget the string and it will be cleaned up.
* Merge pull request #2744 from epmatsw/spellingnulltoken2014-12-0510-10/+10
|\ | | | | Spelling fixes
| * Spelling fixesWill Stamper2014-12-0410-10/+10
| |
* | Merge pull request #2743 from ethomson/init_valCarlos Martín Nieto2014-12-051-14/+30
|\ \ | |/ |/| init: return the number of initializations
| * init: return the number of initializationsEdward Thomson2014-12-041-14/+30
| |
* | Merge pull request #2742 from stewid/add_missing_else_directiveCarlos Martín Nieto2014-12-031-0/+1
|\ \ | |/ |/| Add missing else directive
| * Add missing else directiveStefan Widgren2014-12-031-0/+1
| | | | | | | | | | Add missing else directive to fix compiler warning: control reaches end of non-void function
* | win32: clear connection data on closeEdward Thomson2014-12-031-0/+1
|/
* describe: check error codesEdward Thomson2014-11-291-2/+2
|
* Merge pull request #2718 from libgit2/cmn/peeling-errorsEdward Thomson2014-11-232-7/+34
|\ | | | | peel: reject bad queries with EPEEL
| * peel: reject bad queries with EINVALIDSPECcmn/peeling-errorsCarlos Martín Nieto2014-11-222-7/+34
| | | | | | | | | | | | | | | | | | | | There are some combination of objects and target types which we know cannot be fulfilled. Return EINVALIDSPEC for those to signify that there is a mismatch in the user-provided data and what the object model is capable of satisfying. If we start at a tag and in the course of peeling find out that we cannot reach a particular type, we return EPEEL.
* | Plug leaksCarlos Martín Nieto2014-11-234-8/+17
| | | | | | | | Valgrind is now clean except for libssl and libgcrypt.
* | Merge pull request #2723 from ravindp/ravindp/fix_4_missing_delta_basesCarlos Martín Nieto2014-11-222-3/+7
|\ \ | | | | | | Fix for misleading "missing delta bases" error.
| * | Fix for misleading "missing delta bases" error - Fix #2721.Ravindra Patel2014-11-212-3/+7
| | |
* | | text: Null-terminate a string if we've been gouging itvmg/attr-nullVicent Marti2014-11-211-0/+1
| | |
* | | notes: Use `git__strndup`Vicent Marti2014-11-211-3/+2
| | |
* | | notes: Do not assume blob contents are NULL-terminatedVicent Marti2014-11-211-3/+3
| | |
* | | attr_file: Do not assume ODB data is NULL-terminatedVicent Marti2014-11-211-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | That's a bad assumption to make, even though right now it holds (because of the way we've implemented decompression of packfiles), this may change in the future, given that ODB objects can be binary data. Furthermore, the ODB object can return a NULL pointer if the object is empty. Copying the NULL pointer to the strbuf lets us handle it like an empty string. Again, the NULL pointer is valid behavior because you're supposed to check the *size* of the object before working on it.
* | | buffer: Do not `put` anything if len is 0Vicent Marti2014-11-211-4/+7
| | |
* | | Merge pull request #2720 from ravindp/masterCarlos Martín Nieto2014-11-211-6/+6
|\ \ \ | |/ / | | | Fix for memory leak issue in indexer.c, that surfaces on windows
| * | Fix for memory leak issue in indexer.c, that surfaces on windowsRavindra Patel2014-11-191-6/+6
| |/
* | odb: `git_odb_object` contents are never NULLvmg/emptyVicent Marti2014-11-211-2/+2
| | | | | | | | | | | | | | This is a contract that we made in the library and that we need to uphold. The contents of a blob can never be NULL because several parts of the library (including the filter and attributes code) expect `git_blob_rawcontent` to always return a valid pointer.
* | Merge pull request #2713 from libgit2/jamill/push_fetch_firstVicent Marti2014-11-201-1/+2
|\ \ | | | | | | Update message for error during push
| * | Update message for error during pushjamill/push_fetch_firstJameson Miller2014-11-171-1/+2
| | | | | | | | | | | | | | | | | | When attempting to update a reference on a remote during push, and the reference on the remote refers to a commit that does not exist locally, then we should report a more clear error message.
* | | Merge pull request #2717 from libgit2/cmn/remote-lsVicent Marti2014-11-201-1/+1
|\ \ \ | | | | | | | | Clarify the git_remote_ls() documentation
| * | | remote: clarify which list of references _ls() returnsCarlos Martín Nieto2014-11-191-1/+1
| | |/ | |/| | | | | | | | | | Make it clear that this is not the ls-remote command but a way to access the data we have and how long it's kept around.
* | | fetch: clear the connection data on closecmn/fetch-twiceCarlos Martín Nieto2014-11-191-0/+1
|/ / | | | | | | | | | | | | | | | | | | | | When we fetch twice with the same remote object, we did not properly clear the connection flags, so we would leak state from the last connection. This can cause the second fetch with the same remote object to fail if using a HTTP URL where the server redirects to HTTPS, as the second fetch would see `use_ssl` set and think the initial connection wanted to downgrade the connection.
* | Merge pull request #2608 from libgit2/cmn/remote-pushEdward Thomson2014-11-181-0/+60
|\ \ | | | | | | Provide a convenience function `git_remote_push()`
| * | remote: use configured push refspecs if none are givencmn/remote-pushCarlos Martín Nieto2014-11-091-3/+13
| | | | | | | | | | | | | | | If the user does not pass any refspecs to push, try to use those configured via the configuration or via add_push().
| * | remote: introduce git_remote_push()Carlos Martín Nieto2014-11-091-0/+50
| | | | | | | | | | | | | | | | | | | | | | | | | | | This function, similar in style to git_remote_fetch(), performs all the steps required for a push, with a similar interface. The remote callbacks struct has learnt about the push callbacks, letting us set the callbacks a single time instead of setting some in the remote and some in the push operation.
* | | Merge pull request #2671 from swisspol/remote_create_fixEdward Thomson2014-11-171-0/+4
|\ \ \ | | | | | | | | Fixed active_refspecs field not initialized on new git_remote objects
| * | | Fixed active_refspecs field not initialized on new git_remote objectsPierre-Olivier Latour2014-11-171-0/+4
| | |/ | |/| | | | | | | | | | | | | | | | | | | | | | When creating a new remote, contrary to loading one from disk, active_refspecs was not populated. This means that if using the new remote to push, git_push_update_tips() will be a no-op since it checks the refspecs passed during the push against the base ones i.e. active_refspecs. And therefore the local refs won't be created or updated after the push operation.
* | | Merge pull request #2693 from libgit2/cmn/push-refspec-refactorEdward Thomson2014-11-175-60/+35
|\ \ \ | | | | | | | | push: use the common refspec parser
| * | | push: use the common refspec parsercmn/push-refspec-refactorCarlos Martín Nieto2014-11-095-60/+35
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | There is one well-known and well-tested parser which we should use, instead of implementing parsing a second time. The common parser is also augmented to copy the LHS into the RHS if the latter is empty. The expressions test had to change a bit, as we now catch a bad RHS of a refspec locally.
* | | | Merge pull request #2699 from swisspol/fix_warningsEdward Thomson2014-11-171-0/+4
|\ \ \ \ | |_|/ / |/| | | Fixed a couple Clang warnings
| * | | Fixed a couple Clang warningsPierre-Olivier Latour2014-11-101-0/+4
| | |/ | |/|
* | | branch: consider an empty upstream remote config as not foundCarlos Martín Nieto2014-11-171-0/+6
| | |
* | | Plug possible leak in the openssl locksUngureanu Marius2014-11-171-0/+6
| | |
* | | Rename git_threads_ to git_libgit2_Carlos Martín Nieto2014-11-082-11/+12
|/ / | | | | | | | | | | This describes their purpose better, as we now initialize ssl and some other global stuff in there. Calling the init function is not something which has been optional for a while now.
* | Changed GIT_REMOTE_DOWNLOAD_TAGS_ALL to behave like git 1.9.0Pierre-Olivier Latour2014-11-092-18/+20
| |
* | Merge pull request #2698 from libgit2/cmn/fetchhead-refactorEdward Thomson2014-11-082-25/+60
|\ \ | | | | | | Refactor fetchhead
| * | remote: refactor the reference-update decisioncmn/fetchhead-refactorCarlos Martín Nieto2014-11-081-26/+36
| | | | | | | | | | | | This is an ugly chunk of code, so let's put it into its own function.
| * | remote: don't check for upstream on an anonymous remoteCarlos Martín Nieto2014-11-081-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | If the remote is anonymous, then we cannot check for any configuration, as there is no name. Check for this before we try to use the name, which may be a NULL pointer. This fixes #2697.
| * | remote: use git_branch_upstream_remote()Carlos Martín Nieto2014-11-081-7/+8
| | | | | | | | | | | | | | | This reduces the clutter somewhat and lets us see what we're asking about the reference.
| * | branch: add getter for the upstream remote nameCarlos Martín Nieto2014-11-081-0/+23
| | | | | | | | | | | | This gets the value from branch.<foo>.remote.
* | | Merge pull request #2695 from libgit2/cmn/remote-lookupEdward Thomson2014-11-083-9/+9
|\ \ \ | | | | | | | | remote: rename _load() to _lookup()
| * | | remote: rename _load() to _lookup()cmn/remote-lookupCarlos Martín Nieto2014-11-083-9/+9
| |/ / | | | | | | | | | This brings it in line with the rest of the lookup functions.
* | | Merge pull request #2696 from libgit2/cmn/empty-objectsEdward Thomson2014-11-081-1/+23
|\ \ \ | | | | | | | | odb: hardcode the empty blob and tree
| * | | odb: hardcode the empty blob and treecmn/empty-objectsCarlos Martín Nieto2014-11-081-1/+23
| |/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | git hardocodes these as objects which exist regardless of whether they are in the odb and uses them in the shell interface as a way of expressing the lack of a blob or tree for one side of e.g. a diff. In the library we use each language's natural way of declaring a lack of value which makes a workaround like this unnecessary. Since git uses it, it does however mean each shell application would need to perform this check themselves. This makes it common work across a range of applications and an issue with compatibility with git, which fits right into what the library aims to provide. Thus we introduce the hard-coded empty blob and tree in the odb frontend. These hard-coded objects are checked for before going to the backends, but after the cache check, which means the second time they're used, they will be treated as normal cached objects instead of creating new ones.
* | | git_status_file now takes an exact pathUngureanu Marius2014-11-071-1/+2
|/ / | | | | | | | | | | This function has one output but can match multiple files, which can be unexpected for the user, which would usually path the exact path of the file he wants the status of.