mirror of
https://github.com/go-gitea/gitea.git
synced 2026-01-13 17:38:54 +01:00
- reduce file name font size from 15px to 14px - fix labels and buttons being cut off when their size is constrained - change labels from monospace to sans-serif font - move diff stats to right and change them from sum of changes to +/- - change filemode to label and change text to match other labels --------- Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
92 lines
2.2 KiB
Go
92 lines
2.2 KiB
Go
// Copyright 2020 The Gitea Authors. All rights reserved.
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
package git
|
|
|
|
import (
|
|
"strconv"
|
|
)
|
|
|
|
// EntryMode the type of the object in the git tree
|
|
type EntryMode int
|
|
|
|
// There are only a few file modes in Git. They look like unix file modes, but they can only be
|
|
// one of these.
|
|
const (
|
|
// EntryModeNoEntry is possible if the file was added or removed in a commit. In the case of
|
|
// when adding the base commit doesn't have the file in its tree, a mode of 0o000000 is used.
|
|
EntryModeNoEntry EntryMode = 0o000000
|
|
|
|
EntryModeBlob EntryMode = 0o100644
|
|
EntryModeExec EntryMode = 0o100755
|
|
EntryModeSymlink EntryMode = 0o120000
|
|
EntryModeCommit EntryMode = 0o160000
|
|
EntryModeTree EntryMode = 0o040000
|
|
)
|
|
|
|
// String converts an EntryMode to a string
|
|
func (e EntryMode) String() string {
|
|
return strconv.FormatInt(int64(e), 8)
|
|
}
|
|
|
|
// IsSubModule if the entry is a submodule
|
|
func (e EntryMode) IsSubModule() bool {
|
|
return e == EntryModeCommit
|
|
}
|
|
|
|
// IsDir if the entry is a sub dir
|
|
func (e EntryMode) IsDir() bool {
|
|
return e == EntryModeTree
|
|
}
|
|
|
|
// IsLink if the entry is a symlink
|
|
func (e EntryMode) IsLink() bool {
|
|
return e == EntryModeSymlink
|
|
}
|
|
|
|
// IsRegular if the entry is a regular file
|
|
func (e EntryMode) IsRegular() bool {
|
|
return e == EntryModeBlob
|
|
}
|
|
|
|
// IsExecutable if the entry is an executable file (not necessarily binary)
|
|
func (e EntryMode) IsExecutable() bool {
|
|
return e == EntryModeExec
|
|
}
|
|
|
|
func ParseEntryMode(mode string) EntryMode {
|
|
switch mode {
|
|
case "000000":
|
|
return EntryModeNoEntry
|
|
case "100644":
|
|
return EntryModeBlob
|
|
case "100755":
|
|
return EntryModeExec
|
|
case "120000":
|
|
return EntryModeSymlink
|
|
case "160000":
|
|
return EntryModeCommit
|
|
case "040000":
|
|
return EntryModeTree
|
|
default:
|
|
// git uses 040000 for tree object, but some users may get 040755 from non-standard git implementations
|
|
m, _ := strconv.ParseInt(mode, 8, 32)
|
|
modeInt := EntryMode(m)
|
|
switch modeInt & 0o770000 {
|
|
case 0o040000:
|
|
return EntryModeTree
|
|
case 0o160000:
|
|
return EntryModeCommit
|
|
case 0o120000:
|
|
return EntryModeSymlink
|
|
case 0o100000:
|
|
if modeInt&0o777 == 0o755 {
|
|
return EntryModeExec
|
|
}
|
|
return EntryModeBlob
|
|
default:
|
|
return EntryModeNoEntry
|
|
}
|
|
}
|
|
}
|