mirror of
https://github.com/MichaelMure/git-bug.git
synced 2024-12-14 17:51:44 +03:00
repository: workaround a go-git bug and ensure sorted tree object
This commit is contained in:
parent
064a96f808
commit
ca4020f4fa
@ -8,6 +8,7 @@ import (
|
||||
"os/exec"
|
||||
stdpath "path"
|
||||
"path/filepath"
|
||||
"sort"
|
||||
"strings"
|
||||
"sync"
|
||||
"time"
|
||||
@ -359,7 +360,22 @@ func (repo *GoGitRepo) ReadData(hash Hash) ([]byte, error) {
|
||||
func (repo *GoGitRepo) StoreTree(mapping []TreeEntry) (Hash, error) {
|
||||
var tree object.Tree
|
||||
|
||||
for _, entry := range mapping {
|
||||
// TODO: can be removed once https://github.com/go-git/go-git/issues/193 is resolved
|
||||
sorted := make([]TreeEntry, len(mapping))
|
||||
copy(sorted, mapping)
|
||||
sort.Slice(sorted, func(i, j int) bool {
|
||||
nameI := sorted[i].Name
|
||||
if sorted[i].ObjectType == Tree {
|
||||
nameI += "/"
|
||||
}
|
||||
nameJ := sorted[j].Name
|
||||
if sorted[j].ObjectType == Tree {
|
||||
nameJ += "/"
|
||||
}
|
||||
return nameI < nameJ
|
||||
})
|
||||
|
||||
for _, entry := range sorted {
|
||||
mode := filemode.Regular
|
||||
if entry.ObjectType == Tree {
|
||||
mode = filemode.Dir
|
||||
|
Loading…
Reference in New Issue
Block a user