summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2022-01-17Add ProxyOptions for push operations (#872)Aurélien
Analog to #623 but for push operations rather than fetch.
2022-01-17Add EnableFsyncGitDir to enable synchronized writes to the gitdir (#874)James Fargher
This adds support for the GIT_OPT_ENABLE_FSYNC_GITDIR option in libgit2. Co-authored-by: James Fargher <[email protected]>
2021-11-08Generate stringer files automatically (#841)Kirill
Added `stringer` annotations to `git.go` for `ErrorClass` and `ErrorCode`. Added `generate` rule for `Makefile` to generate string representations for these types (first building cgo files in `_obj` dir to get C constants). Finally, updated `ci` actions workflow to check that generated files are up to date. Fixes: #543
2021-11-08Fix replace statement example in README.md (#859)Ignacio Taranto
2021-11-07Make ssh commands used in the git smart transport compatible with libgit2 (#852)Sunny
* Fix ssh commands used in go SmartSubtransport Before the fix, the commands sent were of the form: ``` git-upload-pack "/bar/test-reponame" ``` This resulted in the git server returning error: `error parsing command: invalid git command` This change replaces the double quotes with single quotes: ``` git-upload-pack '/bar/test-reponame' ``` * Update ssh.go Co-authored-by: lhchavez <[email protected]>
2021-10-23bugfix: HTTPS Clone fails with remote pointer not found using Go transport ↵Yashodhan Ghadge
(#836) (#842) Fixes: #836 Changes: * adding a weak bool param for Remote * create a new remote in the smartTransportCallback incase one is not found
2021-10-14libgit2 v1.3.0 #major (#840)lhchavez
This commit introduces libgit2 v1.3.0 to git2go, which brings a large number of [bugfixes and features](https://github.com/libgit2/libgit2/releases/tag/v1.3.0). This also marks the start of the v33 release.
2021-09-30Allow skipping an entry expansion in `tree.Walk()` (#838)lhchavez
It is now possible to skip expanding an entry in `tree.Walk()` by returning `TreeWalkSkip`, in addition to stopping altogether by returning a non-nil error. Fixes: #837
2021-09-06Allow building libgit2 with Chromium zlib (#831)lhchavez
This change allows the caller to set the `USE_CHROMIUM_ZLIB=ON` environment variable to use the Chromium implementation of zlib when building libgit2.
2021-09-05Add support for Repository.ReachableFromAny() (#826)lhchavez
This change exposes the binding for `git_graph_reachable_from_any()`.
2021-09-05Add support for Odb.MultiPackIndex() (#819)lhchavez
This change exposes the binding for `git_odb_write_multi_pack_index()`.
2021-09-05Expose the ssh.PublicKey into the CertificateCheckCallback (#818)lhchavez
This change exposes the raw SSH hostkey and the ssh.PublicKey into the CertificateCheckCallback, so that callers can do better validations.
2021-09-05libgit2 v1.2.0 #majorlhchavez
This commit introduces libgit2 v1.2.0 to git2go, which brings a large number of [bugfixes and features](https://github.com/libgit2/libgit2/releases/tag/v1.2.0). This also marks the start of the v32 release.
2021-09-05Make all Options objects consistentlhchavez
This change makes all Options objects have child Option fields as values (instead of pointers) to mirror the libgit2 interface. It also names them Options instead of Opts to match the current libgit2 nomenclature and removes the Version fields.
2021-09-05The big Callback type adjustment of 2020lhchavez
This change makes all callbacks that can fail return an `error`. This makes things a lot more idiomatic.
2021-09-05Add support for managed SSH transport #minor (#814)lhchavez
This change drops the (hard) dependency on libssh2 and instead uses Go's implementation of SSH when libgit2 is not built with it.
2021-09-05Add support for managed HTTP/S transports (#810)lhchavez
This change uses the newly-exposed Transport interface to use Go's implementation of http.Client instead of httpclient via libgit2.
2021-09-05Add support for custom smart transports (#806)lhchavez
This change adds support for git smart transports. This will be then used to implement http, https, and ssh transports that don't rely on the libgit2 library.
2021-09-05Make all non-user-creatable structures non-comparable (#802)lhchavez
This change makes all non-user-creatable structures non-comparable. This makes it easier to add changes later that don't introduce breaking changes from the go compatibility guarantees perspective. This, of course, implies that this change _is_ a breaking change, but since these structures are not intended to be created by users (or de-referenced), it should be okay.
2021-09-04Declare forward-compatibility with libgit2 v1.2.0 #minor (#800)lhchavez
We can't yet ship a fully libgit2 v1.2.0-compatible library due to a missing public symbol, but we can allow the v1.1.0-era codebase to link against libgit2 v1.2.0 in the meantime.
2021-09-04Prepare for the v1.2.0 release (#796)lhchavez
This change adds a few more deprecation messages just before we remove them.
2021-09-04Add DiffIgnoreWitespaceEol and deprecate DiffIgnoreWitespaceEol (#774)Gustav Westling
DiffIgnoreWitespaceEol contains a typo and does not have the same name as it's libgit2 counterpart. Fixes #773
2021-09-04Add `CreateCommitWithSignature` (#782)lhchavez
This change adds the wrapper for `git_commit_create_with_signature`.
2021-09-04Rename the default branch to `main` (#786)lhchavez
We've renamed the default branch from `master` to `main`, so we need to change a bunch of references to that.
2021-09-04Add `Repository.CreateCommitBuffer` (#781)lhchavez
This commit adds the Go binding for `git_commit_create_buffer`. This will be used to support the 1.2.0 commit create callback.
2021-09-03Remove the legacy builders (#776)lhchavez
These builds are no longer working because some of the dependencies now require newer versions of Go. Seems like the ecosystem has moved to Go 1.11+, so we are now forced to follow suit.
2021-04-03add wrapper for git_config_open_default (#758)Vladimir Buzuev
2021-04-03fix buldled static build on Windows/MinGW (#761)Vladimir Buzuev
seems like need more libraries in LDFLAGS: * ws2_32 for socket, connect, htonl, etc * ole32 for CoInitializeEx * rpcrt4 for UuidCreate * crypt32 for CertFreeCertificateContext
2021-04-03Git repository item path (#757)Vladimir Buzuev
add wrapper for `git_repository_item_path`
2021-02-15Make index time fields public (#750)michael boulton
From gorelease: ``` Compatible changes: - IndexTime.Nanoseconds: added - IndexTime.Seconds: added ``` There are no extra tests because there isn't really anything to test closes #304
2021-02-15fix: Use `err` instead of error as a variable name for errors (#746)Suhaib Mujahid
fix #745
2021-02-03Implement git_repository_set_config (#735)Byoungchan Lee
Closes #732
2021-02-03Support git_remote_create_with_opts (#733)Byoungchan Lee
Closes #645
2021-02-02Support git_repository_message, git_repository_message_remove (#734)Byoungchan Lee
Closes #646
2020-12-13Rename the build files (#724)lhchavez
This change renames the build files so they come lexicographically before any source files. This makes the compile errors (due to mismatched libgit2 versions) easier to understand, since the `Build_*.go` files will be tried before the rest, and the `#error` in those files will kick in, leading to a much better experience. This unfortunately goes a bit against the defacto standard of using only lowercase characters in filenames, but the better developer experience (and better self-diagnosis when things go wrong instead of having to open a new issue) is worth the deviation. Fixes: #711 Fixes: #617
2020-12-13Support more MergeBase functions (#720)lhchavez
This change adds support for MergeBaseMany, MergeBasesMany, and MergeBaseOctopus.
2020-12-10More callback refactoring (#713)lhchavez
This change: * Gets rid of the `.toC()` functions for Options objects, since they were redundant with the `populateXxxOptions()`. * Adds support for `errorTarget` to the `RemoteOptions`, since they are used in the same stack for some functions (like `Fetch()`). Now for those cases, the error returned by the callback will be preserved as-is.
2020-12-10Ensure that no pointer handles leak during the test (#712)lhchavez
This change makes sure that pointer handles are correctly cleaned up during tests.
2020-12-06Add `NewCredentialSSHKeyFromSigner` (#706)lhchavez
This change adds `NewCredentialSSHKeyFromSigner`, which allows idiomatic use of SSH keys from Go. This also lets us spin off an SSH server in the tests.
2020-12-06Build improvements (#707)lhchavez
This change makes the test be verbose and use parallelization if possible (when using gmake to build).
2020-12-05Refactor all callbacks (#700)lhchavez
This change is a preparation for another change that makes all callback types return a Go error instead of an error code / an integer. That is going to make make things a lot more idiomatic. The reason this change is split is threefold: a) This change is mostly mechanical and should contain no semantic changes. b) This change is backwards-compatible (in the Go API compatibility sense of the word), and thus can be backported to all other releases. c) It makes the other change a bit smaller and more focused on just one thing. Concretely, this change makes all callbacks populate a Go error when they fail. If the callback is invoked from the same stack as the function to which it was passed (e.g. for `Tree.Walk`), it will preserve the error object directly into a struct that also holds the callback function. Otherwise if the callback is pased to one func and will be invoked when run from another one (e.g. for `Repository.InitRebase`), the error string is saved into the libgit2 thread-local storage and then re-created as a `GitError`.
2020-12-05Mark some symbols to be deprecated #minor (#698)lhchavez
This change introduces the file deprecated.go, which contains any constants, functions, and types that are slated to be deprecated in the next major release. These symbols are deprecated because they refer to old spellings in pre-1.0 libgit2. This also makes the build be done with the `-DDEPRECATE_HARD` flag to avoid regressions. This, together with [gorelease](https://godoc.org/golang.org/x/exp/cmd/gorelease)[1] should make releases safer going forward. 1: More information about how that works at https://go.googlesource.com/exp/+/refs/heads/master/apidiff/README.md
2020-11-28Relax libgit2 minor version check (#696)nmeum
The major version must still be an exact match since libgit2 uses semantic versioning and changes to the major number indicate backwards incompatible changes to the API. Fixes: #695
2020-11-26Expose GIT_CERT_SSH_SHA256 (#690)Hans Duedal
Newer versions of libssh2 use SHA256 fingerprints
2020-11-13Add ReferenceNormalizeName (#681)Segev Finer
2020-11-13Travis-ci: added support for ppc64le (#682)Devendra
Added power support for the travis.yml file with ppc64le. This is part of the Ubuntu distribution for ppc64le. This helps us simplify testing later when distributions are re-building and re-releasing.
2020-11-07Add GIT_BLAME_IGNORE_WHITESPACE flag (#677)Suhaib Mujahid
The `GIT_BLAME_IGNORE_WHITESPACE` blame option flag was introduced in libgit2 v1.1.0 Change type: #minor
2020-11-07Add GIT_BLAME_USE_MAILMAP flag (#676)Suhaib Mujahid
The `GIT_BLAME_USE_MAILMAP` blame option flag was introduced in libgit2 v0.28 Change type: #minor
2020-11-02Use the correct branch name for backporting into v1.0 (#674)lhchavez
This change uses the correct branch name (`release-1.0`) to backport changes into the v1.0 branch.
2020-11-02feat: Implement an option to control hash verification (#671)Suhaib Mujahid
Add a binding to enable/disable hash verification using the `GIT_OPT_ENABLE_STRICT_HASH_VERIFICATION` option. Change type: #minor