summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlhchavez <[email protected]>2020-02-13 02:50:31 +0000
committerlhchavez <[email protected]>2020-02-13 02:50:31 +0000
commit150a8c60169ee69f4a869acbc10dbe097274605a (patch)
treeccadf6203e85d60bfa8d6221dd94ff470f9a66f3
parentb201c503ab5788b2ce5511fa75792127e27e254c (diff)
parent75c5e41422f224a6fde40903c4af4cf1afbd2d46 (diff)
Merge remote-tracking branch 'origin/master' into actions
-rw-r--r--.travis.yml7
-rw-r--r--Makefile4
-rw-r--r--credentials.go5
-rw-r--r--delta_string.go33
-rw-r--r--diff.go6
-rw-r--r--difflinetype_string.go56
-rw-r--r--git_dynamic.go4
-rw-r--r--go.mod2
-rw-r--r--merge.go4
-rw-r--r--odb.go2
-rwxr-xr-xscript/build-libgit2-static.sh2
-rw-r--r--stash.go2
-rw-r--r--tag.go12
-rw-r--r--tree.go15
m---------vendor/libgit20
-rw-r--r--wrapper.c5
16 files changed, 130 insertions, 29 deletions
diff --git a/.travis.yml b/.travis.yml
index f611cc3..7d53122 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,10 +1,9 @@
language: go
go:
- - 1.7
- - 1.8
- - 1.9
- - "1.10"
+ - "1.11"
+ - "1.12"
+ - "1.13"
- tip
script: make test-static
diff --git a/Makefile b/Makefile
index cf00cef..4dffce0 100644
--- a/Makefile
+++ b/Makefile
@@ -2,7 +2,7 @@ default: test
test: build-libgit2
go run script/check-MakeGitError-thread-lock.go
- go test ./...
+ go test --count=1 ./...
install: build-libgit2
go install ./...
@@ -15,4 +15,4 @@ install-static: build-libgit2
test-static: build-libgit2
go run script/check-MakeGitError-thread-lock.go
- go test --tags "static" ./...
+ go test --count=1 --tags "static" ./...
diff --git a/credentials.go b/credentials.go
index 4e42b6e..038313b 100644
--- a/credentials.go
+++ b/credentials.go
@@ -2,6 +2,9 @@ package git
/*
#include <git2.h>
+#include <git2/sys/cred.h>
+
+git_credtype_t _go_git_cred_credtype(git_cred *cred);
*/
import "C"
import "unsafe"
@@ -27,7 +30,7 @@ func (o *Cred) HasUsername() bool {
}
func (o *Cred) Type() CredType {
- return (CredType)(o.ptr.credtype)
+ return (CredType)(C._go_git_cred_credtype(o.ptr))
}
func credFromC(ptr *C.git_cred) *Cred {
diff --git a/delta_string.go b/delta_string.go
new file mode 100644
index 0000000..53e02bd
--- /dev/null
+++ b/delta_string.go
@@ -0,0 +1,33 @@
+// Code generated by "stringer -type Delta -trimprefix Delta -tags static"; DO NOT EDIT.
+
+package git
+
+import "strconv"
+
+func _() {
+ // An "invalid array index" compiler error signifies that the constant values have changed.
+ // Re-run the stringer command to generate them again.
+ var x [1]struct{}
+ _ = x[DeltaUnmodified-0]
+ _ = x[DeltaAdded-1]
+ _ = x[DeltaDeleted-2]
+ _ = x[DeltaModified-3]
+ _ = x[DeltaRenamed-4]
+ _ = x[DeltaCopied-5]
+ _ = x[DeltaIgnored-6]
+ _ = x[DeltaUntracked-7]
+ _ = x[DeltaTypeChange-8]
+ _ = x[DeltaUnreadable-9]
+ _ = x[DeltaConflicted-10]
+}
+
+const _Delta_name = "UnmodifiedAddedDeletedModifiedRenamedCopiedIgnoredUntrackedTypeChangeUnreadableConflicted"
+
+var _Delta_index = [...]uint8{0, 10, 15, 22, 30, 37, 43, 50, 59, 69, 79, 89}
+
+func (i Delta) String() string {
+ if i < 0 || i >= Delta(len(_Delta_index)-1) {
+ return "Delta(" + strconv.FormatInt(int64(i), 10) + ")"
+ }
+ return _Delta_name[_Delta_index[i]:_Delta_index[i+1]]
+}
diff --git a/diff.go b/diff.go
index b025edd..ed2949c 100644
--- a/diff.go
+++ b/diff.go
@@ -39,6 +39,8 @@ const (
DeltaConflicted Delta = C.GIT_DELTA_CONFLICTED
)
+//go:generate stringer -type Delta -trimprefix Delta -tags static
+
type DiffLineType int
const (
@@ -54,6 +56,8 @@ const (
DiffLineBinary DiffLineType = C.GIT_DIFF_LINE_BINARY
)
+//go:generate stringer -type DiffLineType -trimprefix DiffLine -tags static
+
type DiffFile struct {
Path string
Oid *Oid
@@ -284,7 +288,7 @@ type diffForEachData struct {
Error error
}
-type DiffForEachFileCallback func(DiffDelta, float64) (DiffForEachHunkCallback, error)
+type DiffForEachFileCallback func(delta DiffDelta, progress float64) (DiffForEachHunkCallback, error)
type DiffDetail int
diff --git a/difflinetype_string.go b/difflinetype_string.go
new file mode 100644
index 0000000..3c1ad58
--- /dev/null
+++ b/difflinetype_string.go
@@ -0,0 +1,56 @@
+// Code generated by "stringer -type DiffLineType -trimprefix DiffLine -tags static"; DO NOT EDIT.
+
+package git
+
+import "strconv"
+
+func _() {
+ // An "invalid array index" compiler error signifies that the constant values have changed.
+ // Re-run the stringer command to generate them again.
+ var x [1]struct{}
+ _ = x[DiffLineContext-32]
+ _ = x[DiffLineAddition-43]
+ _ = x[DiffLineDeletion-45]
+ _ = x[DiffLineContextEOFNL-61]
+ _ = x[DiffLineAddEOFNL-62]
+ _ = x[DiffLineDelEOFNL-60]
+ _ = x[DiffLineFileHdr-70]
+ _ = x[DiffLineHunkHdr-72]
+ _ = x[DiffLineBinary-66]
+}
+
+const (
+ _DiffLineType_name_0 = "Context"
+ _DiffLineType_name_1 = "Addition"
+ _DiffLineType_name_2 = "Deletion"
+ _DiffLineType_name_3 = "DelEOFNLContextEOFNLAddEOFNL"
+ _DiffLineType_name_4 = "Binary"
+ _DiffLineType_name_5 = "FileHdr"
+ _DiffLineType_name_6 = "HunkHdr"
+)
+
+var (
+ _DiffLineType_index_3 = [...]uint8{0, 8, 20, 28}
+)
+
+func (i DiffLineType) String() string {
+ switch {
+ case i == 32:
+ return _DiffLineType_name_0
+ case i == 43:
+ return _DiffLineType_name_1
+ case i == 45:
+ return _DiffLineType_name_2
+ case 60 <= i && i <= 62:
+ i -= 60
+ return _DiffLineType_name_3[_DiffLineType_index_3[i]:_DiffLineType_index_3[i+1]]
+ case i == 66:
+ return _DiffLineType_name_4
+ case i == 70:
+ return _DiffLineType_name_5
+ case i == 72:
+ return _DiffLineType_name_6
+ default:
+ return "DiffLineType(" + strconv.FormatInt(int64(i), 10) + ")"
+ }
+}
diff --git a/git_dynamic.go b/git_dynamic.go
index 0a977e8..06deeeb 100644
--- a/git_dynamic.go
+++ b/git_dynamic.go
@@ -6,8 +6,8 @@ package git
#include <git2.h>
#cgo pkg-config: libgit2
-#if LIBGIT2_VER_MAJOR != 0 || LIBGIT2_VER_MINOR != 27
-# error "Invalid libgit2 version; this git2go supports libgit2 v0.27"
+#if LIBGIT2_VER_MAJOR != 0 || LIBGIT2_VER_MINOR != 28
+# error "Invalid libgit2 version; this git2go supports libgit2 v0.28"
#endif
*/
diff --git a/go.mod b/go.mod
index 688b8e3..7a68658 100644
--- a/go.mod
+++ b/go.mod
@@ -1 +1,3 @@
module github.com/libgit2/git2go
+
+go 1.13
diff --git a/merge.go b/merge.go
index bc672ce..955289a 100644
--- a/merge.go
+++ b/merge.go
@@ -132,7 +132,7 @@ func (mo *MergeOptions) toC() *C.git_merge_options {
}
return &C.git_merge_options{
version: C.uint(mo.Version),
- flags: C.git_merge_flag_t(mo.TreeFlags),
+ flags: C.uint32_t(mo.TreeFlags),
rename_threshold: C.uint(mo.RenameThreshold),
target_limit: C.uint(mo.TargetLimit),
file_favor: C.git_merge_file_favor_t(mo.FileFavor),
@@ -394,7 +394,7 @@ func populateCMergeFileOptions(c *C.git_merge_file_options, options MergeFileOpt
c.our_label = C.CString(options.OurLabel)
c.their_label = C.CString(options.TheirLabel)
c.favor = C.git_merge_file_favor_t(options.Favor)
- c.flags = C.git_merge_file_flag_t(options.Flags)
+ c.flags = C.uint32_t(options.Flags)
c.marker_size = C.ushort(options.MarkerSize)
}
diff --git a/odb.go b/odb.go
index fec0eb9..6489653 100644
--- a/odb.go
+++ b/odb.go
@@ -221,7 +221,7 @@ func (v *Odb) NewWriteStream(size int64, otype ObjectType) (*OdbWriteStream, err
runtime.LockOSThread()
defer runtime.UnlockOSThread()
- ret := C.git_odb_open_wstream(&stream.ptr, v.ptr, C.git_off_t(size), C.git_object_t(otype))
+ ret := C.git_odb_open_wstream(&stream.ptr, v.ptr, C.git_object_size_t(size), C.git_object_t(otype))
runtime.KeepAlive(v)
if ret < 0 {
return nil, MakeGitError(ret)
diff --git a/script/build-libgit2-static.sh b/script/build-libgit2-static.sh
index 096c5c6..26efc8e 100755
--- a/script/build-libgit2-static.sh
+++ b/script/build-libgit2-static.sh
@@ -2,7 +2,7 @@
set -ex
-ROOT="$(cd "$0/../.." && echo "${PWD}")"
+ROOT="$(cd "$(dirname "$0")/.." && echo "${PWD}")"
BUILD_PATH="${ROOT}/static-build"
VENDORED_PATH="${ROOT}/vendor/libgit2"
diff --git a/stash.go b/stash.go
index 8743da8..6624bce 100644
--- a/stash.go
+++ b/stash.go
@@ -171,7 +171,7 @@ func (opts *StashApplyOptions) toC() (
optsC = &C.git_stash_apply_options{
version: C.GIT_STASH_APPLY_OPTIONS_VERSION,
- flags: C.git_stash_apply_flags(opts.Flags),
+ flags: C.uint32_t(opts.Flags),
}
populateCheckoutOpts(&optsC.checkout_options, &opts.CheckoutOptions)
if opts.ProgressCallback != nil {
diff --git a/tag.go b/tag.go
index 4debdb7..1bea2b7 100644
--- a/tag.go
+++ b/tag.go
@@ -21,26 +21,26 @@ func (t *Tag) AsObject() *Object {
return &t.Object
}
-func (t Tag) Message() string {
+func (t *Tag) Message() string {
ret := C.GoString(C.git_tag_message(t.cast_ptr))
runtime.KeepAlive(t)
return ret
}
-func (t Tag) Name() string {
+func (t *Tag) Name() string {
ret := C.GoString(C.git_tag_name(t.cast_ptr))
runtime.KeepAlive(t)
return ret
}
-func (t Tag) Tagger() *Signature {
+func (t *Tag) Tagger() *Signature {
cast_ptr := C.git_tag_tagger(t.cast_ptr)
ret := newSignatureFromC(cast_ptr)
runtime.KeepAlive(t)
return ret
}
-func (t Tag) Target() *Object {
+func (t *Tag) Target() *Object {
var ptr *C.git_object
ret := C.git_tag_target(&ptr, t.cast_ptr)
runtime.KeepAlive(t)
@@ -51,13 +51,13 @@ func (t Tag) Target() *Object {
return allocObject(ptr, t.repo)
}
-func (t Tag) TargetId() *Oid {
+func (t *Tag) TargetId() *Oid {
ret := newOidFromC(C.git_tag_target_id(t.cast_ptr))
runtime.KeepAlive(t)
return ret
}
-func (t Tag) TargetType() ObjectType {
+func (t *Tag) TargetType() ObjectType {
ret := ObjectType(C.git_tag_target_type(t.cast_ptr))
runtime.KeepAlive(t)
return ret
diff --git a/tree.go b/tree.go
index 02507d2..b309193 100644
--- a/tree.go
+++ b/tree.go
@@ -47,7 +47,7 @@ func newTreeEntry(entry *C.git_tree_entry) *TreeEntry {
}
}
-func (t Tree) EntryByName(filename string) *TreeEntry {
+func (t *Tree) EntryByName(filename string) *TreeEntry {
cname := C.CString(filename)
defer C.free(unsafe.Pointer(cname))
@@ -67,7 +67,7 @@ func (t Tree) EntryByName(filename string) *TreeEntry {
// free it, but you must not use it after the Tree is freed.
//
// Warning: this must examine every entry in the tree, so it is not fast.
-func (t Tree) EntryById(id *Oid) *TreeEntry {
+func (t *Tree) EntryById(id *Oid) *TreeEntry {
runtime.LockOSThread()
defer runtime.UnlockOSThread()
@@ -84,7 +84,7 @@ func (t Tree) EntryById(id *Oid) *TreeEntry {
// EntryByPath looks up an entry by its full path, recursing into
// deeper trees if necessary (i.e. if there are slashes in the path)
-func (t Tree) EntryByPath(path string) (*TreeEntry, error) {
+func (t *Tree) EntryByPath(path string) (*TreeEntry, error) {
cpath := C.CString(path)
defer C.free(unsafe.Pointer(cpath))
var entry *C.git_tree_entry
@@ -102,7 +102,7 @@ func (t Tree) EntryByPath(path string) (*TreeEntry, error) {
return newTreeEntry(entry), nil
}
-func (t Tree) EntryByIndex(index uint64) *TreeEntry {
+func (t *Tree) EntryByIndex(index uint64) *TreeEntry {
entry := C.git_tree_entry_byindex(t.cast_ptr, C.size_t(index))
if entry == nil {
return nil
@@ -113,7 +113,7 @@ func (t Tree) EntryByIndex(index uint64) *TreeEntry {
return goEntry
}
-func (t Tree) EntryCount() uint64 {
+func (t *Tree) EntryCount() uint64 {
num := C.git_tree_entrycount(t.cast_ptr)
runtime.KeepAlive(t)
return uint64(num)
@@ -122,9 +122,8 @@ func (t Tree) EntryCount() uint64 {
type TreeWalkCallback func(string, *TreeEntry) int
//export CallbackGitTreeWalk
-func CallbackGitTreeWalk(_root *C.char, _entry unsafe.Pointer, ptr unsafe.Pointer) C.int {
+func CallbackGitTreeWalk(_root *C.char, entry *C.git_tree_entry, ptr unsafe.Pointer) C.int {
root := C.GoString(_root)
- entry := (*C.git_tree_entry)(_entry)
if callback, ok := pointerHandles.Get(ptr).(TreeWalkCallback); ok {
return C.int(callback(root, newTreeEntry(entry)))
@@ -133,7 +132,7 @@ func CallbackGitTreeWalk(_root *C.char, _entry unsafe.Pointer, ptr unsafe.Pointe
}
}
-func (t Tree) Walk(callback TreeWalkCallback) error {
+func (t *Tree) Walk(callback TreeWalkCallback) error {
runtime.LockOSThread()
defer runtime.UnlockOSThread()
diff --git a/vendor/libgit2 b/vendor/libgit2
-Subproject 08cfa43d0e1a9214a2f1239593686078e75e563
+Subproject 6777db8e8343014d57c41b335e0c60af44d4e9f
diff --git a/wrapper.c b/wrapper.c
index 11c2f32..3656773 100644
--- a/wrapper.c
+++ b/wrapper.c
@@ -2,6 +2,7 @@
#include <git2.h>
#include <git2/sys/odb_backend.h>
#include <git2/sys/refdb_backend.h>
+#include <git2/sys/cred.h>
typedef int (*gogit_submodule_cbk)(git_submodule *sm, const char *name, void *payload);
@@ -180,4 +181,8 @@ void _go_git_writestream_free(git_writestream *stream)
stream->free(stream);
}
+git_credtype_t _go_git_cred_credtype(git_cred *cred) {
+ return cred->credtype;
+}
+
/* EOF */