summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* azure: docker: fix ARM builds by replacing gosu(1)pks/azure-fix-arm32Patrick Steinhardt2020-02-183-4/+4
| | | | | | | | | | | Our nightly builds are currently failing due to our ARM-based jobs. These jobs crash immediately when entering the Docker container with a exception thrown by Go's language runtime. As we're able to successfully builds the Docker images in previous steps, it's unlikely to be a bug in Docker itself. Instead, this exception is thrown by gosu(1), which is a Go-based utility to drop privileges and run by our entrypoint. Fix the issue by dropping gosu(1) in favor of sudo(1).
* azure: docker: synchronize Xenial/Bionic build instructionsPatrick Steinhardt2020-02-182-4/+8
| | | | | | Our two Docker build instructions for Xenial and Bionic have diverged a bit. Let's re-synchronize them with each other to make them as similar as possible.
* azure: docker: detect errors when building imagesPatrick Steinhardt2020-02-181-3/+3
| | | | | | The build step for our Docker images currently succeeds even if building the Docker image fails due to missing && chains in the build script. Fix this by adding them in.
* azure: remove unused Linux setup scriptPatrick Steinhardt2020-02-181-27/+0
| | | | | | Since migrating to Docker containings for our build and test infrastructure, we do not use the "setup-linux.sh" script anymore. Remove it to avoid any confusion.
* Merge pull request #5392 from pks-t/pks/ci-warningsEdward Thomson2020-02-084-16/+13
|\ | | | | azure: fix misleading messages printed to stderr being
| * azure: test: silence termination message when killing git-daemon(1)Patrick Steinhardt2020-02-071-0/+1
| | | | | | | | | | | | | | | | | | | | In order to properly tear down the test environment, we will kill git-daemon(1) if we've exercised it. As git-daemon(1) is spawned as a background process, it is still owned by the shell and thus killing it later on will print a termination message to the shell's stderr, causing Azure to report it as an error. Fix this by disowning the background process.
| * azure: docker: avoid re-creating libgit2 home directoryPatrick Steinhardt2020-02-071-2/+2
| | | | | | | | | | | | | | | | | | | | The Docker entrypoint currently creates the libgit2 user with "useradd --create-home". As we start the Docker container with two volumes pointing into "/home/libgit2/", the home directory will already exist. While useradd(1) copes with this just fine, it will print error messages to stderr which end up as failures in our Azure pipelines. Fix this by simply removing the "--create-home" parameter.
| * azure: test: silence curl to not cause Azure to tropPatrick Steinhardt2020-02-071-2/+2
| | | | | | | | | | | | | | Without the "--silent" parameter, curl will print a progress meter to stderr. Azure has the nice feature of interpreting any output to stderr as errors with a big red warning towards the end of the build. Let's thus silence curl to not generate any misleading messages.
| * azure: docker: pipe downloaded archives into tar(1) directlyPatrick Steinhardt2020-02-072-12/+8
| | | | | | | | | | | | | | | | | | When building dependencies for our Docker images, we first download the sources to disk first, unpack them and finally remove the archive again. This can be sped up by piping the downloading archive into tar(1) directly to parallelize both tasks. Furthermore, let's silence curl(1) to not print to status information to stderr, which tends to be interpreted as errors by Azure Pipelines.
* | Merge pull request #5393 from pks-t/pks/tests-iterator-missing-refEdward Thomson2020-02-081-9/+9
|\ \ | |/ |/| tests: iterator: fix iterator expecting too few items
| * tests: iterator: fix iterator expecting too few itemsPatrick Steinhardt2020-02-071-9/+9
|/ | | | | | | | | | | The testcase iterator::workdir::filesystem_gunk sets up quite a lot of directories, which is why it only runs in case GITTEST_INVASIVE_SPEED is set in the environment. Because we do not run our default CI with this variable, we didn't notice commit 852c83ee4 (refs: refuse to delete HEAD, 2020-01-15) breaking the test as it introduced a new reference to the "testrepo" repository. Fix the oversight by increasing the number of expected iterator items.
* Merge pull request #5387 from pks-t/pks/transport-http-custom-headersPatrick Steinhardt2020-02-072-0/+16
|\ | | | | transports: http: fix custom headers not being applied
| * transports: http: fix custom headers not being appliedPatrick Steinhardt2020-02-072-0/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | In commit b9c5b15a7 (http: use the new httpclient, 2019-12-22), the HTTP code got refactored to extract a generic HTTP client that operates independently of the Git protocol. Part of refactoring was the creation of a new `git_http_request` struct that encapsulates the generation of requests. Our Git-specific HTTP transport was converted to use that in `generate_request`, but during the process we forgot to set up custom headers for the `git_http_request` and as a result we do not send out these headers anymore. Fix the issue by correctly setting up the request's custom headers and add a test to verify we correctly send them.
* | Merge pull request #5382 from libgit2/pks/azure-coverityPatrick Steinhardt2020-02-074-93/+69
|\ \ | |/ |/| azure: fix Coverity pipeline
| * azure: coverity: fix Coverity builds due to various issuesPatrick Steinhardt2020-02-074-90/+64
| | | | | | | | | | There's several issues with our Coverity builds, like e.g. missing wget in our containers. Simplify our Coverity pipeline and fix these issues.
| * azure: coverity: convert to use self-built containersPatrick Steinhardt2020-02-071-1/+5
| | | | | | | | | | | | | | Back in commit 5a6740e7f (azure: build Docker images as part of the pipeline, 2019-08-02), we have converted our pipelines to use self-built Docker images to ease making changes to our Dockerfiles. The commit didn't adjust our Coverity pipeline, though, so let's do this now.
| * azure: coverity: fix invalid syntax for Docker imagePatrick Steinhardt2020-02-071-3/+1
|/ | | | | | | | In commit bbc0b20bd (azure: fix Coverity's build due to wrong container name, 2019-08-02), Coverity builds were fixed to use the correct container names. Unfortunately, the "fix" completely broke our Coverity builds due to using wrong syntax for the Docker task. Let's fix this by using "imageName" instead of the Docker dict.
* Merge pull request #5381 from pks-t/pks/tests-flaky-proxyPatrick Steinhardt2020-02-061-0/+3
|\ | | | | azure: tests: re-run flaky proxy tests
| * azure: tests: reset FAILED status if flaky re-run succeedsPatrick Steinhardt2020-02-041-0/+1
| | | | | | | | | | | | | | | | While we already do have logic to re-run flaky tests, the FAILED variable currently does not get reset to "0". As a result, successful reruns will still cause the test to be registered as failed. Fix this by resetting the variable accordingly.
| * azure: tests: re-run flaky proxy testsPatrick Steinhardt2020-02-041-0/+2
| | | | | | | | | | | | The proxy tests regularly fail in our CI environment. Unfortunately, this is expected due to the network layer. Thus, let's re-try the proxy tests up to five times in case they fail.
* | Merge pull request #5373 from pks-t/pks/fetchhead-strip-credsEdward Thomson2020-02-013-4/+71
|\ \ | |/ |/| fetchhead: strip credentials from remote URL
| * fetchhead: strip credentials from remote URLPatrick Steinhardt2020-01-313-4/+71
|/ | | | | | | | | | | | | | | | | | | | If fetching from an anonymous remote via its URL, then the URL gets written into the FETCH_HEAD reference. This is mainly done to give valuable context to some commands, like for example git-merge(1), which will put the URL into the generated MERGE_MSG. As a result, what gets written into FETCH_HEAD may become public in some cases. This is especially important considering that URLs may contain credentials, e.g. when cloning 'https://foo:bar@example.com/repo' we persist the complete URL into FETCH_HEAD and put it without any kind of sanitization into the MERGE_MSG. This is obviously bad, as your login data has now just leaked as soon as you do git-push(1). When writing the URL into FETCH_HEAD, upstream git does strip credentials first. Let's do the same by trying to parse the remote URL as a "real" URL, removing any credentials and then re-formatting the URL. In case this fails, e.g. when it's a file path or not a valid URL, we just fall back to using the URL as-is without any sanitization. Add tests to verify our behaviour.
* Merge pull request #5375 from pks-t/pks/test-ciEdward Thomson2020-01-311-5/+5
|\ | | | | azure-pipelines: properly expand negotiate passwords
| * azure-pipelines: properly expand negotiate passwordsPatrick Steinhardt2020-01-311-5/+5
|/ | | | | | | | | | | | | | | | | | | To allow testing against a Kerberos instance, we have added variables for the Kerberos password to allow authentication against LIBGIT2.ORG in commit e5fb5fe5a (ci: perform SPNEGO tests, 2019-10-20). To set up the password, we assign "GITTEST_NEGOTIATE_PASSWORD=$(GITTEST_NEGOTIATE_PASSWORD)" in the environmentVariables section which is then passed through to a template. As the template does build-time expansion of the environment variables, it will expand the above line verbosely, and due to the envVar section not doing any further expansion the password variable will end up with the value "$(GITTEST_NEGOTIATE_PASSWORD)" in the container's environment. Fix this fixed by doing expansion of GITTEST_NEGOTIATE_PASSWORD at build-time, as well.
* Merge pull request #5336 from libgit2/ethomson/credtypePatrick Steinhardt2020-01-3032-761/+966
|\ | | | | cred: change enum to git_credential_t and GIT_CREDENTIAL_*
| * credential: change git_cred to git_credentialethomson/credtypeEdward Thomson2020-01-2632-761/+966
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We avoid abbreviations where possible; rename git_cred to git_credential. In addition, we have standardized on a trailing `_t` for enum types, instead of using "type" in the name. So `git_credtype_t` has become `git_credential_t` and its members have become `GIT_CREDENTIAL` instead of `GIT_CREDTYPE`. Finally, the source and header files have been renamed to `credential` instead of `cred`. Keep previous name and values as deprecated, and include the new header files from the previous ones.
* | Merge pull request #5371 from ayush-1506/julia_linkPatrick Steinhardt2020-01-301-1/+1
|\ \ | | | | | | Update link to libgit2 Julia language binding
| * | Update link to Julia libgit2ayush-15062020-01-301-1/+1
|/ /
* | Merge pull request #5365 from libgit2/ethomson/no_voidEdward Thomson2020-01-2420-56/+132
|\ \ | |/ |/| Return int from non-free functions
| * git_libgit2_version: return an intethomson/no_voidEdward Thomson2020-01-242-2/+5
| | | | | | | | | | Stop returning a void for functions, future-proofing them to allow them to fail.
| * error functions: return an intEdward Thomson2020-01-242-6/+13
| | | | | | | | | | Stop returning a void for functions, future-proofing them to allow them to fail.
| * revwalk functions: return an intEdward Thomson2020-01-242-6/+15
| | | | | | | | | | Stop returning a void for functions, future-proofing them to allow them to fail.
| * mempack functions: return an intEdward Thomson2020-01-242-2/+5
| | | | | | | | | | Stop returning a void for functions, future-proofing them to allow them to fail.
| * repository functions: return an intEdward Thomson2020-01-242-10/+23
| | | | | | | | | | Stop returning a void for functions, future-proofing them to allow them to fail.
| * index functions: return an intEdward Thomson2020-01-242-8/+21
| | | | | | | | | | Stop returning a void for functions, future-proofing them to allow them to fail.
| * remote functions: return an intEdward Thomson2020-01-242-4/+10
| | | | | | | | | | Stop returning a void for functions, future-proofing them to allow them to fail.
| * tree functions: return an intEdward Thomson2020-01-242-4/+10
| | | | | | | | | | Stop returning a void for functions, future-proofing them to allow them to fail.
| * oid functions: return an intEdward Thomson2020-01-242-12/+23
| | | | | | | | | | Stop returning a void for functions, future-proofing them to allow them to fail.
| * git_attr_cache_flush: return an intEdward Thomson2020-01-242-2/+7
|/ | | | | Stop returning a void for functions, future-proofing them to allow them to fail.
* Merge pull request #5286 from libgit2/ethomson/gssapiEdward Thomson2020-01-2428-1576/+2846
|\ | | | | HTTP: Support Apache-based servers with Negotiate
| * http: introduce GIT_ERROR_HTTPethomson/gssapiEdward Thomson2020-01-244-57/+58
| | | | | | | | | | Disambiguate between general network problems and HTTP problems in error codes.
| * ci: add NTLM testsEdward Thomson2020-01-242-9/+51
| | | | | | | | | | | | Download poxygit, a debugging git server, and clone from it using NTLM, both IIS-style (with connection affinity) and Apache-style ("broken", requiring constant reauthentication).
| * httpclient: use defines for status codesEdward Thomson2020-01-243-14/+25
| |
| * trace: compare against an int valueEdward Thomson2020-01-241-1/+1
| | | | | | | | | | When tracing is disabled, don't let `git_trace__level` return a void, since that can't be compared against.
| * http: send probe packetsEdward Thomson2020-01-242-2/+70
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When we're authenticating with a connection-based authentication scheme (NTLM, Negotiate), we need to make sure that we're still connected between the initial GET where we did the authentication and the POST that we're about to send. Our keep-alive session may have not kept alive, but more likely, some servers do not authenticate the entire keep-alive connection and may have "forgotten" that we were authenticated, namely Apache and nginx. Send a "probe" packet, that is an HTTP POST request to the upload-pack or receive-pack endpoint, that consists of an empty git pkt ("0000"). If we're authenticated, we'll get a 200 back. If we're not, we'll get a 401 back, and then we'll resend that probe packet with the first step of our authentication (asking to start authentication with the given scheme). We expect _yet another_ 401 back, with the authentication challenge. Finally, we will send our authentication response with the actual POST data. This will allow us to authenticate without draining the POST data in the initial request that gets us a 401.
| * http: use the new httpclientEdward Thomson2020-01-242-1374/+407
| | | | | | | | | | Untangle the notion of the http transport from the actual http implementation. The http transport now uses the httpclient.
| * tests: allow users to use expect/continueEdward Thomson2020-01-243-0/+26
| |
| * httpclient: support expect/continueEdward Thomson2020-01-247-10/+68
| | | | | | | | | | | | | | | | | | | | | | | | | | Allow users to opt-in to expect/continue handling when sending a POST and we're authenticated with a "connection-based" authentication mechanism like NTLM or Negotiate. If the response is a 100, return to the caller (to allow them to post their body). If the response is *not* a 100, buffer the response for the caller. HTTP expect/continue is generally safe, but some legacy servers have not implemented it correctly. Require it to be opt-in.
| * httpclient: support CONNECT proxiesEdward Thomson2020-01-242-76/+251
| | | | | | | | | | Fully support HTTP proxies, in particular CONNECT proxies, that allow us to speak TLS through a proxy.
| * httpclient: handle chunked responsesEdward Thomson2020-01-242-7/+15
| | | | | | | | | | Detect responses that are sent with Transfer-Encoding: chunked, and record that information so that we can consume the entire message body.