gitdiff

package
v1.14.0-rc1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 20, 2021 License: MIT Imports: 24 Imported by: 5

Documentation

Index

Constants

View Source
const BlobExcerptChunkSize = 20

BlobExcerptChunkSize represent max lines of excerpt

Variables

This section is empty.

Functions

func GetWhitespaceFlag added in v1.14.0

func GetWhitespaceFlag(whiteSpaceBehavior string) string

GetWhitespaceFlag returns git diff flag for treating whitespaces

Types

type Diff

type Diff struct {
	NumFiles, TotalAddition, TotalDeletion int
	Files                                  []*DiffFile
	IsIncomplete                           bool
}

Diff represents a difference between two git trees.

func CommentAsDiff

func CommentAsDiff(c *models.Comment) (*Diff, error)

CommentAsDiff returns c.Patch as *Diff

func CommentMustAsDiff

func CommentMustAsDiff(c *models.Comment) *Diff

CommentMustAsDiff executes AsDiff and logs the error instead of returning

func GetDiffCommit

func GetDiffCommit(repoPath, commitID string, maxLines, maxLineCharacters, maxFiles int) (*Diff, error)

GetDiffCommit builds a Diff representing the given commitID.

func GetDiffCommitWithWhitespaceBehavior added in v1.14.0

func GetDiffCommitWithWhitespaceBehavior(repoPath, commitID string, maxLines, maxLineCharacters, maxFiles int, whitespaceBehavior string) (*Diff, error)

GetDiffCommitWithWhitespaceBehavior builds a Diff representing the given commitID. The whitespaceBehavior is either an empty string or a git flag

func GetDiffRange

func GetDiffRange(repoPath, beforeCommitID, afterCommitID string, maxLines, maxLineCharacters, maxFiles int) (*Diff, error)

GetDiffRange builds a Diff between two commits of a repository. passing the empty string as beforeCommitID returns a diff from the parent commit.

func GetDiffRangeWithWhitespaceBehavior

func GetDiffRangeWithWhitespaceBehavior(repoPath, beforeCommitID, afterCommitID string, maxLines, maxLineCharacters, maxFiles int, whitespaceBehavior string) (*Diff, error)

GetDiffRangeWithWhitespaceBehavior builds a Diff between two commits of a repository. Passing the empty string as beforeCommitID returns a diff from the parent commit. The whitespaceBehavior is either an empty string or a git flag

func ParsePatch

func ParsePatch(maxLines, maxLineCharacters, maxFiles int, reader io.Reader) (*Diff, error)

ParsePatch builds a Diff object from a io.Reader and some parameters.

func (*Diff) LoadComments

func (diff *Diff) LoadComments(issue *models.Issue, currentUser *models.User) error

LoadComments loads comments into each line

type DiffFile

type DiffFile struct {
	Name               string
	OldName            string
	Index              int
	Addition, Deletion int
	Type               DiffFileType
	IsCreated          bool
	IsDeleted          bool
	IsBin              bool
	IsLFSFile          bool
	IsRenamed          bool
	IsAmbiguous        bool
	IsSubmodule        bool
	Sections           []*DiffSection
	IsIncomplete       bool
	IsProtected        bool
}

DiffFile represents a file diff.

func (*DiffFile) GetTailSection added in v1.11.0

func (diffFile *DiffFile) GetTailSection(gitRepo *git.Repository, leftCommitID, rightCommitID string) *DiffSection

GetTailSection creates a fake DiffLineSection if the last section is not the end of the file

func (*DiffFile) GetType

func (diffFile *DiffFile) GetType() int

GetType returns type of diff file.

type DiffFileType

type DiffFileType uint8

DiffFileType represents the type of a DiffFile.

const (
	DiffFileAdd DiffFileType = iota + 1
	DiffFileChange
	DiffFileDel
	DiffFileRename
	DiffFileCopy
)

DiffFileType possible values.

type DiffLine

type DiffLine struct {
	LeftIdx     int
	RightIdx    int
	Type        DiffLineType
	Content     string
	Comments    []*models.Comment
	SectionInfo *DiffLineSectionInfo
}

DiffLine represents a line difference in a DiffSection.

func (*DiffLine) CanComment

func (d *DiffLine) CanComment() bool

CanComment returns whether or not a line can get commented

func (*DiffLine) GetBlobExcerptQuery added in v1.11.0

func (d *DiffLine) GetBlobExcerptQuery() string

GetBlobExcerptQuery builds query string to get blob excerpt

func (*DiffLine) GetCommentSide

func (d *DiffLine) GetCommentSide() string

GetCommentSide returns the comment side of the first comment, if not set returns empty string

func (*DiffLine) GetExpandDirection added in v1.11.0

func (d *DiffLine) GetExpandDirection() DiffLineExpandDirection

GetExpandDirection gets DiffLineExpandDirection

func (*DiffLine) GetLineTypeMarker

func (d *DiffLine) GetLineTypeMarker() string

GetLineTypeMarker returns the line type marker

func (*DiffLine) GetType

func (d *DiffLine) GetType() int

GetType returns the type of a DiffLine.

type DiffLineExpandDirection added in v1.11.0

type DiffLineExpandDirection uint8

DiffLineExpandDirection represents the DiffLineSection expand direction

const (
	DiffLineExpandNone DiffLineExpandDirection = iota + 1
	DiffLineExpandSingle
	DiffLineExpandUpDown
	DiffLineExpandUp
	DiffLineExpandDown
)

DiffLineExpandDirection possible values.

type DiffLineSectionInfo added in v1.11.0

type DiffLineSectionInfo struct {
	Path          string
	LastLeftIdx   int
	LastRightIdx  int
	LeftIdx       int
	RightIdx      int
	LeftHunkSize  int
	RightHunkSize int
}

DiffLineSectionInfo represents diff line section meta data

type DiffLineType

type DiffLineType uint8

DiffLineType represents the type of a DiffLine.

const (
	DiffLinePlain DiffLineType = iota + 1
	DiffLineAdd
	DiffLineDel
	DiffLineSection
)

DiffLineType possible values.

type DiffSection

type DiffSection struct {
	FileName string
	Name     string
	Lines    []*DiffLine
}

DiffSection represents a section of a DiffFile.

func (*DiffSection) GetComputedInlineDiffFor

func (diffSection *DiffSection) GetComputedInlineDiffFor(diffLine *DiffLine) template.HTML

GetComputedInlineDiffFor computes inline diff for the given line.

func (*DiffSection) GetLine

func (diffSection *DiffSection) GetLine(lineType DiffLineType, idx int) *DiffLine

GetLine gets a specific line by type (add or del) and file line number

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL