Commit 450e1681 authored by Carlos Martín Nieto's avatar Carlos Martín Nieto

Merge remote-tracking branch 'origin/master' into v26

parents d29ae45d 2cff3f2e
......@@ -10,12 +10,9 @@ install: build-libgit2
build-libgit2:
./script/build-libgit2-static.sh
static: build-libgit2
go run script/check-MakeGitError-thread-lock.go
go test --tags "static" ./...
install-static: build-libgit2
go install --tags "static" ./...
test-static: build-libgit2
go run script/check-MakeGitError-thread-lock.go
go test --tags "static" ./...
......@@ -5,6 +5,7 @@ package git
*/
import "C"
import (
"errors"
"runtime"
"unsafe"
)
......@@ -25,6 +26,12 @@ const (
RebaseOperationExec RebaseOperationType = C.GIT_REBASE_OPERATION_EXEC
)
// Special value indicating that there is no currently active operation
var RebaseNoOperation uint = ^uint(0)
// Error returned if there is no current rebase operation
var ErrRebaseNoOperation = errors.New("o current rebase operation")
// RebaseOperation describes a single instruction/operation to be performed during the rebase.
type RebaseOperation struct {
Type RebaseOperationType
......@@ -154,18 +161,21 @@ func (rebase *Rebase) OperationAt(index uint) *RebaseOperation {
return newRebaseOperationFromC(operation)
}
// CurrentOperationIndex gets the index of the rebase operation that is currently being applied.
// Returns an error if no rebase operation is currently applied.
// CurrentOperationIndex gets the index of the rebase operation that is
// currently being applied. There is also an error returned for API
// compatibility.
func (rebase *Rebase) CurrentOperationIndex() (uint, error) {
runtime.LockOSThread()
defer runtime.UnlockOSThread()
operationIndex := int(C.git_rebase_operation_current(rebase.ptr))
if operationIndex == C.GIT_REBASE_NO_OPERATION {
return 0, MakeGitError(C.GIT_REBASE_NO_OPERATION)
var err error
operationIndex := uint(C.git_rebase_operation_current(rebase.ptr))
runtime.KeepAlive(rebase)
if operationIndex == RebaseNoOperation {
err = ErrRebaseNoOperation
}
return uint(operationIndex), nil
return uint(operationIndex), err
}
// OperationCount gets the count of rebase operations that are to be applied.
......
......@@ -182,7 +182,7 @@ func performRebaseOnto(repo *Repository, branch string) (*Rebase, error) {
// Check no operation has been started yet
rebaseOperationIndex, err := rebase.CurrentOperationIndex()
if err == nil {
if rebaseOperationIndex != RebaseNoOperation && err != ErrRebaseNoOperation {
return nil, errors.New("No operation should have been started yet")
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment