mirror of
https://github.com/jesseduffield/lazygit.git
synced 2026-09-10 07:36:27 -04:00
Merge f32c86a7f8 into 8924bca76f
This commit is contained in:
commit
1737989674
|
|
@ -8,8 +8,18 @@ import (
|
|||
"github.com/stefanhaller/git-todo-parser/todo"
|
||||
)
|
||||
|
||||
// Special commit hash for empty tree object
|
||||
// Empty tree object hashes for SHA-1 and SHA-256 repos.
|
||||
const EmptyTreeCommitHash = "4b825dc642cb6eb9a060e54bf8d69288fbee4904"
|
||||
const EmptyTreeCommitHashSHA256 = "6ef19b41225c5369f1c104d45d8d85efa9b057b53b14b4b9b939dd74decc5321"
|
||||
|
||||
// EmptyTreeHashForFormat returns the empty tree hash for the given object
|
||||
// format ("sha1" or "sha256"). Falls back to SHA-1 for unknown formats.
|
||||
func EmptyTreeHashForFormat(objectFormat string) string {
|
||||
if objectFormat == "sha256" {
|
||||
return EmptyTreeCommitHashSHA256
|
||||
}
|
||||
return EmptyTreeCommitHash
|
||||
}
|
||||
|
||||
type CommitStatus uint8
|
||||
|
||||
|
|
@ -122,11 +132,22 @@ func (c *Commit) ShortRefName() string {
|
|||
|
||||
func (c *Commit) ParentRefName() string {
|
||||
if c.IsFirstCommit() {
|
||||
return EmptyTreeCommitHash
|
||||
return c.emptyTreeHash()
|
||||
}
|
||||
return c.RefName() + "^"
|
||||
}
|
||||
|
||||
// emptyTreeHash returns the empty tree object hash matching this repo's
|
||||
// object format. This is only called when IsFirstCommit() is true, so the
|
||||
// commit comes from git log with a full-length hash (40 for SHA-1, 64 for
|
||||
// SHA-256).
|
||||
func (c *Commit) emptyTreeHash() string {
|
||||
if len(c.Hash()) == len(EmptyTreeCommitHashSHA256) {
|
||||
return EmptyTreeCommitHashSHA256
|
||||
}
|
||||
return EmptyTreeCommitHash
|
||||
}
|
||||
|
||||
func (c *Commit) Parents() []string {
|
||||
return lo.Map(c.parents, func(s *string, _ int) string { return *s })
|
||||
}
|
||||
|
|
|
|||
|
|
@ -32,9 +32,10 @@ type Pipe struct {
|
|||
}
|
||||
|
||||
var (
|
||||
highlightStyle = style.FgLightWhite.SetBold()
|
||||
EmptyTreeCommitHash = models.EmptyTreeCommitHash
|
||||
StartCommitHash = "START"
|
||||
highlightStyle = style.FgLightWhite.SetBold()
|
||||
EmptyTreeCommitHash = models.EmptyTreeCommitHash
|
||||
EmptyTreeCommitHashSHA256 = models.EmptyTreeCommitHashSHA256
|
||||
StartCommitHash = "START"
|
||||
)
|
||||
|
||||
func (self Pipe) left() int16 {
|
||||
|
|
@ -142,7 +143,11 @@ func getNextPipes(prevPipes []Pipe, commit *models.Commit, getStyle func(c *mode
|
|||
|
||||
var toHash *string
|
||||
if commit.IsFirstCommit() {
|
||||
toHash = &EmptyTreeCommitHash
|
||||
if len(commit.Hash()) == len(EmptyTreeCommitHashSHA256) {
|
||||
toHash = &EmptyTreeCommitHashSHA256
|
||||
} else {
|
||||
toHash = &EmptyTreeCommitHash
|
||||
}
|
||||
} else {
|
||||
toHash = commit.ParentPtrs()[0]
|
||||
}
|
||||
|
|
|
|||
|
|
@ -531,6 +531,19 @@ func TestGetNextPipes(t *testing.T) {
|
|||
{fromPos: 1, toPos: 1, fromHash: pool("root"), toHash: pool(models.EmptyTreeCommitHash), kind: STARTS, style: &style.FgDefault},
|
||||
},
|
||||
},
|
||||
// SHA-256 repo: first commit with a 64-char hash should use the SHA-256 empty tree hash
|
||||
{
|
||||
prevPipes: []Pipe{
|
||||
{fromPos: 0, toPos: 0, fromHash: pool("a"), toHash: pool("ba741fcd02b3cd42187ee46d4bdbfed10bf8fdbb15ccf739cb9ce583aefe5cae"), kind: TERMINATES, style: &style.FgDefault},
|
||||
},
|
||||
commit: models.NewCommit(hashPool, models.NewCommitOpts{
|
||||
Hash: "ba741fcd02b3cd42187ee46d4bdbfed10bf8fdbb15ccf739cb9ce583aefe5cae",
|
||||
Parents: []string{},
|
||||
}),
|
||||
expected: []Pipe{
|
||||
{fromPos: 1, toPos: 1, fromHash: pool("ba741fcd02b3cd42187ee46d4bdbfed10bf8fdbb15ccf739cb9ce583aefe5cae"), toHash: pool(models.EmptyTreeCommitHashSHA256), kind: STARTS, style: &style.FgDefault},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
oldColorLevel := color.ForceSetColorLevel(terminfo.ColorLevelMillions)
|
||||
|
|
|
|||
Loading…
Reference in a new issue