1
0
mirror of https://github.com/jesseduffield/lazygit.git synced 2025-03-05 15:15:49 +02:00

refactor MergeStatusFiles

This commit is contained in:
Anthony HAMON 2018-08-28 21:09:56 +02:00 committed by Anthony HAMON
parent d6b4d4b063
commit e3ed899b20

View File

@ -121,28 +121,28 @@ func (c *GitCommand) MergeStatusFiles(oldFiles, newFiles []File) []File {
return newFiles
}
appendedIndexes := []int{}
headResults := []File{}
tailResults := []File{}
// retain position of files we already could see
result := []File{}
for _, oldFile := range oldFiles {
for newIndex, newFile := range newFiles {
for _, newFile := range newFiles {
var isHeadResult bool
for _, oldFile := range oldFiles {
if oldFile.Name == newFile.Name {
result = append(result, newFile)
appendedIndexes = append(appendedIndexes, newIndex)
isHeadResult = true
break
}
}
}
// append any new files to the end
for index, newFile := range newFiles {
if !includesInt(appendedIndexes, index) {
result = append(result, newFile)
if isHeadResult {
headResults = append(headResults, newFile)
continue
}
tailResults = append(tailResults, newFile)
}
return result
return append(headResults, tailResults...)
}
func (c *GitCommand) verifyInGitRepo() {
@ -447,17 +447,6 @@ func includesString(list []string, a string) bool {
return false
}
// not sure how to genericise this because []interface{} doesn't accept e.g.
// []int arguments
func includesInt(list []int, a int) bool {
for _, b := range list {
if b == a {
return true
}
}
return false
}
// GetCommits obtains the commits of the current branch
func (c *GitCommand) GetCommits() []Commit {
pushables := c.GetCommitsToPush()