diff options
| author | lhchavez <[email protected]> | 2020-12-10 07:19:41 -0800 |
|---|---|---|
| committer | GitHub <[email protected]> | 2020-12-10 07:19:41 -0800 |
| commit | 10c67474a89c298172a6703b91980ea37c60d5e5 (patch) | |
| tree | 8b32fd2ce9540e01e90ddd09b59969d85832dc25 /cherrypick.go | |
| parent | e28cce87c7551bffa1f4602ff492348f9a8cba60 (diff) | |
More callback refactoring (#713)
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.
Diffstat (limited to 'cherrypick.go')
| -rw-r--r-- | cherrypick.go | 25 |
1 files changed, 12 insertions, 13 deletions
diff --git a/cherrypick.go b/cherrypick.go index b5d6c70..5ba57a5 100644 --- a/cherrypick.go +++ b/cherrypick.go @@ -25,24 +25,23 @@ func cherrypickOptionsFromC(c *C.git_cherrypick_options) CherrypickOptions { return opts } -func (opts *CherrypickOptions) toC(errorTarget *error) *C.git_cherrypick_options { +func populateCherrypickOptions(copts *C.git_cherrypick_options, opts *CherrypickOptions, errorTarget *error) *C.git_cherrypick_options { + C.git_cherrypick_options_init(copts, C.GIT_CHERRYPICK_OPTIONS_VERSION) if opts == nil { return nil } - c := C.git_cherrypick_options{} - c.version = C.uint(opts.Version) - c.mainline = C.uint(opts.Mainline) - c.merge_opts = *opts.MergeOpts.toC() - c.checkout_opts = *opts.CheckoutOpts.toC(errorTarget) - return &c + copts.mainline = C.uint(opts.Mainline) + populateMergeOptions(&copts.merge_opts, &opts.MergeOpts) + populateCheckoutOptions(&copts.checkout_opts, &opts.CheckoutOpts, errorTarget) + return copts } -func freeCherrypickOpts(ptr *C.git_cherrypick_options) { - if ptr == nil { +func freeCherrypickOpts(copts *C.git_cherrypick_options) { + if copts == nil { return } - freeMergeOptions(&ptr.merge_opts) - freeCheckoutOptions(&ptr.checkout_opts) + freeMergeOptions(&copts.merge_opts) + freeCheckoutOptions(&copts.checkout_opts) } func DefaultCherrypickOptions() (CherrypickOptions, error) { @@ -64,7 +63,7 @@ func (v *Repository) Cherrypick(commit *Commit, opts CherrypickOptions) error { defer runtime.UnlockOSThread() var err error - cOpts := opts.toC(&err) + cOpts := populateCherrypickOptions(&C.git_cherrypick_options{}, &opts, &err) defer freeCherrypickOpts(cOpts) ret := C.git_cherrypick(v.ptr, commit.cast_ptr, cOpts) @@ -83,7 +82,7 @@ func (r *Repository) CherrypickCommit(pick, our *Commit, opts CherrypickOptions) runtime.LockOSThread() defer runtime.UnlockOSThread() - cOpts := opts.MergeOpts.toC() + cOpts := populateMergeOptions(&C.git_merge_options{}, &opts.MergeOpts) defer freeMergeOptions(cOpts) var ptr *C.git_index |
