12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- package diff
-
- import (
- "github.com/go-git/go-git/v5/plumbing"
- "github.com/go-git/go-git/v5/plumbing/filemode"
- )
-
- // Operation defines the operation of a diff item.
- type Operation int
-
- const (
- // Equal item represents a equals diff.
- Equal Operation = iota
- // Add item represents an insert diff.
- Add
- // Delete item represents a delete diff.
- Delete
- )
-
- // Patch represents a collection of steps to transform several files.
- type Patch interface {
- // FilePatches returns a slice of patches per file.
- FilePatches() []FilePatch
- // Message returns an optional message that can be at the top of the
- // Patch representation.
- Message() string
- }
-
- // FilePatch represents the necessary steps to transform one file to another.
- type FilePatch interface {
- // IsBinary returns true if this patch is representing a binary file.
- IsBinary() bool
- // Files returns the from and to Files, with all the necessary metadata to
- // about them. If the patch creates a new file, "from" will be nil.
- // If the patch deletes a file, "to" will be nil.
- Files() (from, to File)
- // Chunks returns a slice of ordered changes to transform "from" File to
- // "to" File. If the file is a binary one, Chunks will be empty.
- Chunks() []Chunk
- }
-
- // File contains all the file metadata necessary to print some patch formats.
- type File interface {
- // Hash returns the File Hash.
- Hash() plumbing.Hash
- // Mode returns the FileMode.
- Mode() filemode.FileMode
- // Path returns the complete Path to the file, including the filename.
- Path() string
- }
-
- // Chunk represents a portion of a file transformation to another.
- type Chunk interface {
- // Content contains the portion of the file.
- Content() string
- // Type contains the Operation to do with this Chunk.
- Type() Operation
- }
|