summaryrefslogtreecommitdiff
path: root/revert.go
diff options
context:
space:
mode:
authorlhchavez <[email protected]>2020-12-10 07:19:41 -0800
committerGitHub <[email protected]>2020-12-10 07:19:41 -0800
commit10c67474a89c298172a6703b91980ea37c60d5e5 (patch)
tree8b32fd2ce9540e01e90ddd09b59969d85832dc25 /revert.go
parente28cce87c7551bffa1f4602ff492348f9a8cba60 (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 'revert.go')
-rw-r--r--revert.go41
1 files changed, 20 insertions, 21 deletions
diff --git a/revert.go b/revert.go
index f318ade..085df16 100644
--- a/revert.go
+++ b/revert.go
@@ -15,48 +15,47 @@ type RevertOptions struct {
CheckoutOpts CheckoutOptions
}
-func (opts *RevertOptions) toC(errorTarget *error) *C.git_revert_options {
+func populateRevertOptions(copts *C.git_revert_options, opts *RevertOptions, errorTarget *error) *C.git_revert_options {
+ C.git_revert_options_init(copts, C.GIT_REVERT_OPTIONS_VERSION)
if opts == nil {
return nil
}
- return &C.git_revert_options{
- version: C.GIT_REVERT_OPTIONS_VERSION,
- mainline: C.uint(opts.Mainline),
- merge_opts: *opts.MergeOpts.toC(),
- checkout_opts: *opts.CheckoutOpts.toC(errorTarget),
- }
+ copts.mainline = C.uint(opts.Mainline)
+ populateMergeOptions(&copts.merge_opts, &opts.MergeOpts)
+ populateCheckoutOptions(&copts.checkout_opts, &opts.CheckoutOpts, errorTarget)
+ return copts
}
-func revertOptionsFromC(opts *C.git_revert_options) RevertOptions {
+func revertOptionsFromC(copts *C.git_revert_options) RevertOptions {
return RevertOptions{
- Mainline: uint(opts.mainline),
- MergeOpts: mergeOptionsFromC(&opts.merge_opts),
- CheckoutOpts: checkoutOptionsFromC(&opts.checkout_opts),
+ Mainline: uint(copts.mainline),
+ MergeOpts: mergeOptionsFromC(&copts.merge_opts),
+ CheckoutOpts: checkoutOptionsFromC(&copts.checkout_opts),
}
}
-func freeRevertOptions(opts *C.git_revert_options) {
- if opts != nil {
+func freeRevertOptions(copts *C.git_revert_options) {
+ if copts != nil {
return
}
- freeMergeOptions(&opts.merge_opts)
- freeCheckoutOptions(&opts.checkout_opts)
+ freeMergeOptions(&copts.merge_opts)
+ freeCheckoutOptions(&copts.checkout_opts)
}
// DefaultRevertOptions initialises a RevertOptions struct with default values
func DefaultRevertOptions() (RevertOptions, error) {
- opts := C.git_revert_options{}
+ copts := C.git_revert_options{}
runtime.LockOSThread()
defer runtime.UnlockOSThread()
- ecode := C.git_revert_options_init(&opts, C.GIT_REVERT_OPTIONS_VERSION)
+ ecode := C.git_revert_options_init(&copts, C.GIT_REVERT_OPTIONS_VERSION)
if ecode < 0 {
return RevertOptions{}, MakeGitError(ecode)
}
- defer freeRevertOptions(&opts)
- return revertOptionsFromC(&opts), nil
+ defer freeRevertOptions(&copts)
+ return revertOptionsFromC(&copts), nil
}
// Revert the provided commit leaving the index updated with the results of the revert
@@ -65,7 +64,7 @@ func (r *Repository) Revert(commit *Commit, revertOptions *RevertOptions) error
defer runtime.UnlockOSThread()
var err error
- cOpts := revertOptions.toC(&err)
+ cOpts := populateRevertOptions(&C.git_revert_options{}, revertOptions, &err)
defer freeRevertOptions(cOpts)
ret := C.git_revert(r.ptr, commit.cast_ptr, cOpts)
@@ -88,7 +87,7 @@ func (r *Repository) RevertCommit(revertCommit *Commit, ourCommit *Commit, mainl
runtime.LockOSThread()
defer runtime.UnlockOSThread()
- cOpts := mergeOptions.toC()
+ cOpts := populateMergeOptions(&C.git_merge_options{}, mergeOptions)
defer freeMergeOptions(cOpts)
var index *C.git_index