From a38a8e8ede58ea72e74355394950e05bb888caa2 Mon Sep 17 00:00:00 2001 From: Carlos Martín Nieto Date: Wed, 17 Jan 2018 11:47:06 +0000 Subject: diff: add two missing options --- diff.go | 2 ++ 1 file changed, 2 insertions(+) (limited to 'diff.go') diff --git a/diff.go b/diff.go index 3cc1dc2..3088320 100644 --- a/diff.go +++ b/diff.go @@ -437,6 +437,8 @@ const ( DiffShowUnmodified DiffOptionsFlag = C.GIT_DIFF_SHOW_UNMODIFIED DiffPatience DiffOptionsFlag = C.GIT_DIFF_PATIENCE DiffMinimal DiffOptionsFlag = C.GIT_DIFF_MINIMAL + DiffShowBinary DiffOptionsFlag = C.GIT_DIFF_SHOW_BINARY + DiffIndentHeuristic DiffOptionsFlag = C.GIT_DIFF_INDENT_HEURISTIC ) type DiffNotifyCallback func(diffSoFar *Diff, deltaToAdd DiffDelta, matchedPathspec string) error -- cgit v1.2.3 From 538a05d55c6051371dd1749af75a7b2e2d623d53 Mon Sep 17 00:00:00 2001 From: Carlos Martín Nieto Date: Wed, 8 Aug 2018 11:51:51 +0200 Subject: Remove uses of deprecated git_buf_free --- branch.go | 4 ++-- commit.go | 4 ++-- config.go | 10 +++++----- describe.go | 2 +- diff.go | 2 +- git.go | 2 +- note.go | 2 +- object.go | 2 +- patch.go | 2 +- settings.go | 2 +- 10 files changed, 16 insertions(+), 16 deletions(-) (limited to 'diff.go') diff --git a/branch.go b/branch.go index d6e7a53..6f79825 100644 --- a/branch.go +++ b/branch.go @@ -208,7 +208,7 @@ func (repo *Repository) RemoteName(canonicalBranchName string) (string, error) { if ret < 0 { return "", MakeGitError(ret) } - defer C.git_buf_free(&nameBuf) + defer C.git_buf_dispose(&nameBuf) return C.GoString(nameBuf.ptr), nil } @@ -256,7 +256,7 @@ func (repo *Repository) UpstreamName(canonicalBranchName string) (string, error) if ret < 0 { return "", MakeGitError(ret) } - defer C.git_buf_free(&nameBuf) + defer C.git_buf_dispose(&nameBuf) return C.GoString(nameBuf.ptr), nil } diff --git a/commit.go b/commit.go index 223b093..0ab720d 100644 --- a/commit.go +++ b/commit.go @@ -37,10 +37,10 @@ func (c *Commit) RawMessage() string { func (c *Commit) ExtractSignature() (string, string, error) { var c_signed C.git_buf - defer C.git_buf_free(&c_signed) + defer C.git_buf_dispose(&c_signed) var c_signature C.git_buf - defer C.git_buf_free(&c_signature) + defer C.git_buf_dispose(&c_signature) oid := c.Id() repo := C.git_commit_owner(c.cast_ptr) diff --git a/config.go b/config.go index ab9af38..8dfe0af 100644 --- a/config.go +++ b/config.go @@ -134,7 +134,7 @@ func (c *Config) LookupString(name string) (string, error) { if ret < 0 { return "", MakeGitError(ret) } - defer C.git_buf_free(&valBuf) + defer C.git_buf_dispose(&valBuf) return C.GoString(valBuf.ptr), nil } @@ -390,7 +390,7 @@ func (iter *ConfigIterator) Free() { func ConfigFindGlobal() (string, error) { var buf C.git_buf - defer C.git_buf_free(&buf) + defer C.git_buf_dispose(&buf) runtime.LockOSThread() defer runtime.UnlockOSThread() @@ -405,7 +405,7 @@ func ConfigFindGlobal() (string, error) { func ConfigFindSystem() (string, error) { var buf C.git_buf - defer C.git_buf_free(&buf) + defer C.git_buf_dispose(&buf) runtime.LockOSThread() defer runtime.UnlockOSThread() @@ -420,7 +420,7 @@ func ConfigFindSystem() (string, error) { func ConfigFindXDG() (string, error) { var buf C.git_buf - defer C.git_buf_free(&buf) + defer C.git_buf_dispose(&buf) runtime.LockOSThread() defer runtime.UnlockOSThread() @@ -438,7 +438,7 @@ func ConfigFindXDG() (string, error) { // Look for the file in %PROGRAMDATA%\Git\config used by portable git. func ConfigFindProgramdata() (string, error) { var buf C.git_buf - defer C.git_buf_free(&buf) + defer C.git_buf_dispose(&buf) runtime.LockOSThread() defer runtime.UnlockOSThread() diff --git a/describe.go b/describe.go index 0b75076..f7036df 100644 --- a/describe.go +++ b/describe.go @@ -212,7 +212,7 @@ func (result *DescribeResult) Format(opts *DescribeFormatOptions) (string, error if ecode < 0 { return "", MakeGitError(ecode) } - defer C.git_buf_free(&resultBuf) + defer C.git_buf_dispose(&resultBuf) return C.GoString(resultBuf.ptr), nil } diff --git a/diff.go b/diff.go index 3088320..20eb9e8 100644 --- a/diff.go +++ b/diff.go @@ -246,7 +246,7 @@ const ( func (stats *DiffStats) String(format DiffStatsFormat, width uint) (string, error) { buf := C.git_buf{} - defer C.git_buf_free(&buf) + defer C.git_buf_dispose(&buf) runtime.LockOSThread() defer runtime.UnlockOSThread() diff --git a/git.go b/git.go index 0925e45..a1c07f6 100644 --- a/git.go +++ b/git.go @@ -309,7 +309,7 @@ func Discover(start string, across_fs bool, ceiling_dirs []string) (string, erro defer C.free(unsafe.Pointer(cstart)) var buf C.git_buf - defer C.git_buf_free(&buf) + defer C.git_buf_dispose(&buf) runtime.LockOSThread() defer runtime.UnlockOSThread() diff --git a/note.go b/note.go index 21bed57..9df1b9d 100644 --- a/note.go +++ b/note.go @@ -132,7 +132,7 @@ func (c *NoteCollection) DefaultRef() (string, error) { } ret := C.GoString(buf.ptr) - C.git_buf_free(&buf) + C.git_buf_dispose(&buf) return ret, nil } diff --git a/object.go b/object.go index 5505e35..66a4618 100644 --- a/object.go +++ b/object.go @@ -67,7 +67,7 @@ func (o *Object) ShortId() (string, error) { if ecode < 0 { return "", MakeGitError(ecode) } - defer C.git_buf_free(&resultBuf) + defer C.git_buf_dispose(&resultBuf) return C.GoString(resultBuf.ptr), nil } diff --git a/patch.go b/patch.go index 7e6f71d..6a16b5f 100644 --- a/patch.go +++ b/patch.go @@ -51,7 +51,7 @@ func (patch *Patch) String() (string, error) { if ecode < 0 { return "", MakeGitError(ecode) } - defer C.git_buf_free(&buf) + defer C.git_buf_dispose(&buf) return C.GoString(buf.ptr), nil } diff --git a/settings.go b/settings.go index c7f1850..b9bc216 100644 --- a/settings.go +++ b/settings.go @@ -31,7 +31,7 @@ import ( func SearchPath(level ConfigLevel) (string, error) { var buf C.git_buf - defer C.git_buf_free(&buf) + defer C.git_buf_dispose(&buf) runtime.LockOSThread() defer runtime.UnlockOSThread() -- cgit v1.2.3 From ad02c37e6d57dddf25d9c72a788a447dd7d5de12 Mon Sep 17 00:00:00 2001 From: Segev Finer Date: Wed, 29 May 2019 17:55:37 +0300 Subject: Add Diff.ToBuf wrapping git_diff_to_buf --- diff.go | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) (limited to 'diff.go') diff --git a/diff.go b/diff.go index 20eb9e8..b025edd 100644 --- a/diff.go +++ b/diff.go @@ -405,6 +405,36 @@ func (diff *Diff) Patch(deltaIndex int) (*Patch, error) { return newPatchFromC(patchPtr), nil } +type DiffFormat int + +const ( + DiffFormatPatch DiffFormat = C.GIT_DIFF_FORMAT_PATCH + DiffFormatPatchHeader DiffFormat = C.GIT_DIFF_FORMAT_PATCH_HEADER + DiffFormatRaw DiffFormat = C.GIT_DIFF_FORMAT_RAW + DiffFormatNameOnly DiffFormat = C.GIT_DIFF_FORMAT_NAME_ONLY + DiffFormatNameStatus DiffFormat = C.GIT_DIFF_FORMAT_NAME_STATUS +) + +func (diff *Diff) ToBuf(format DiffFormat) ([]byte, error) { + if diff.ptr == nil { + return nil, ErrInvalid + } + + diffBuf := C.git_buf{} + + runtime.LockOSThread() + defer runtime.UnlockOSThread() + + ecode := C.git_diff_to_buf(&diffBuf, diff.ptr, C.git_diff_format_t(format)) + runtime.KeepAlive(diff) + if ecode < 0 { + return nil, MakeGitError(ecode) + } + defer C.git_buf_free(&diffBuf) + + return C.GoBytes(unsafe.Pointer(diffBuf.ptr), C.int(diffBuf.size)), nil +} + type DiffOptionsFlag int const ( -- cgit v1.2.3 From 3849c7f52a4d923013685d6b7303daae9132fafe Mon Sep 17 00:00:00 2001 From: Josh Bleecher Snyder Date: Tue, 27 Aug 2019 10:02:12 -0700 Subject: make Delta and DiffLineType stringers --- delta_string.go | 33 +++++++++++++++++++++++++++++ diff.go | 4 ++++ difflinetype_string.go | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 93 insertions(+) create mode 100644 delta_string.go create mode 100644 difflinetype_string.go (limited to 'diff.go') 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..1756217 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 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) + ")" + } +} -- cgit v1.2.3 From 79b2cb6ca1aae4a9f442291fd88e37ef9b52ff2a Mon Sep 17 00:00:00 2001 From: Josh Bleecher Snyder Date: Tue, 27 Aug 2019 10:23:37 -0700 Subject: provide param names in DiffForEachFileCallback Without a parameter name, the float64 param is pretty inscrutable. --- diff.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'diff.go') diff --git a/diff.go b/diff.go index b025edd..a5d1a61 100644 --- a/diff.go +++ b/diff.go @@ -284,7 +284,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 -- cgit v1.2.3