diff options
| author | 2026-03-30 10:18:37 +0000 | |
|---|---|---|
| committer | 2026-03-30 10:18:37 +0000 | |
| commit | fb955caaa0d62fc7379469a02ac8f51b17c698c9 (patch) | |
| tree | 7c4821b2796a5bf2cb5d0ec8a5c15b4c43acd966 /object | |
| parent | furgit: Add a disclaimer here too (diff) | |
| signature | No signature | |
object/tree: Regular files and types v0.1.157
Diffstat (limited to 'object')
| -rw-r--r-- | object/tree/mode_details.go | 3 | ||||
| -rw-r--r-- | object/tree/mode_has_same_type.go | 12 | ||||
| -rw-r--r-- | object/tree/mode_is_regular_file.go | 6 | ||||
| -rw-r--r-- | object/tree/mode_table.go | 15 |
4 files changed, 30 insertions, 6 deletions
diff --git a/object/tree/mode_details.go b/object/tree/mode_details.go index 02d22620..9c34fd7c 100644 --- a/object/tree/mode_details.go +++ b/object/tree/mode_details.go @@ -1,7 +1,8 @@ package tree type fileModeDetails struct { - isBlobLike bool + isBlobLike bool + isRegularFile bool } func (mode FileMode) details() fileModeDetails { diff --git a/object/tree/mode_has_same_type.go b/object/tree/mode_has_same_type.go new file mode 100644 index 00000000..a058cb9c --- /dev/null +++ b/object/tree/mode_has_same_type.go @@ -0,0 +1,12 @@ +package tree + +// HasSameType reports whether mode and other describe the same tree entry kind. +// +// Regular files and executable files have the same type for diff-status purposes. +func (mode FileMode) HasSameType(other FileMode) bool { + if mode == other { + return true + } + + return mode.details().isRegularFile && other.details().isRegularFile +} diff --git a/object/tree/mode_is_regular_file.go b/object/tree/mode_is_regular_file.go new file mode 100644 index 00000000..115395c0 --- /dev/null +++ b/object/tree/mode_is_regular_file.go @@ -0,0 +1,6 @@ +package tree + +// IsRegularFile reports whether mode names one regular-file variant. +func (mode FileMode) IsRegularFile() bool { + return mode.details().isRegularFile +} diff --git a/object/tree/mode_table.go b/object/tree/mode_table.go index e180c38f..1695f270 100644 --- a/object/tree/mode_table.go +++ b/object/tree/mode_table.go @@ -2,18 +2,23 @@ package tree var fileModeTable = map[FileMode]fileModeDetails{ //nolint:gochecknoglobals FileModeDir: { - isBlobLike: false, + isBlobLike: false, + isRegularFile: false, }, FileModeRegular: { - isBlobLike: true, + isBlobLike: true, + isRegularFile: true, }, FileModeExecutable: { - isBlobLike: true, + isBlobLike: true, + isRegularFile: true, }, FileModeSymlink: { - isBlobLike: true, + isBlobLike: true, + isRegularFile: false, }, FileModeGitlink: { - isBlobLike: false, + isBlobLike: false, + isRegularFile: false, }, } |
