bug fixed

This commit is contained in:
Lunny Xiao 2014-03-19 16:42:50 +08:00
parent 01162bfc78
commit 7076f466c9
1 changed files with 24 additions and 26 deletions

View File

@ -446,7 +446,7 @@ func GetReposFiles(userName, reposName, branchName, commitId, rpath string) ([]*
return nil, err return nil, err
} }
commit, err := GetCommit(userName, reposName, branchName, commitId) commit, err := repo.GetCommit(branchName, commitId)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -462,8 +462,10 @@ func GetReposFiles(userName, reposName, branchName, commitId, rpath string) ([]*
} }
var cm = commit var cm = commit
var i int
for { for {
i = i + 1
//fmt.Println(".....", i, cm.Id(), cm.ParentCount())
if cm.ParentCount() == 0 { if cm.ParentCount() == 0 {
break break
} else if cm.ParentCount() == 1 { } else if cm.ParentCount() == 1 {
@ -480,7 +482,10 @@ func GetReposFiles(userName, reposName, branchName, commitId, rpath string) ([]*
} else { } else {
var emptyCnt = 0 var emptyCnt = 0
var sameIdcnt = 0 var sameIdcnt = 0
var lastSameCm *git.Commit
//fmt.Println(".....", cm.ParentCount())
for i := 0; i < cm.ParentCount(); i++ { for i := 0; i < cm.ParentCount(); i++ {
//fmt.Println("parent", i, cm.Parent(i).Id())
p := cm.Parent(i) p := cm.Parent(i)
pt, _ := repo.SubTree(p.Tree, dirname) pt, _ := repo.SubTree(p.Tree, dirname)
var pEntry *git.TreeEntry var pEntry *git.TreeEntry
@ -488,23 +493,31 @@ func GetReposFiles(userName, reposName, branchName, commitId, rpath string) ([]*
pEntry = pt.EntryByName(entry.Name) pEntry = pt.EntryByName(entry.Name)
} }
//fmt.Println("pEntry", pEntry)
if pEntry == nil { if pEntry == nil {
if emptyCnt == cm.ParentCount()-1 { emptyCnt = emptyCnt + 1
if emptyCnt+sameIdcnt == cm.ParentCount() {
if lastSameCm == nil {
goto loop goto loop
} else { } else {
emptyCnt = emptyCnt + 1 cm = lastSameCm
continue break
}
} }
} else { } else {
//fmt.Println(i, "pEntry", pEntry.Id, "entry", entry.Id)
if !pEntry.Id.Equal(entry.Id) { if !pEntry.Id.Equal(entry.Id) {
goto loop goto loop
} else { } else {
if sameIdcnt == cm.ParentCount()-1 { lastSameCm = cm.Parent(i)
sameIdcnt = sameIdcnt + 1
if emptyCnt+sameIdcnt == cm.ParentCount() {
// TODO: now follow the first parent commit? // TODO: now follow the first parent commit?
cm = cm.Parent(0) cm = lastSameCm
//fmt.Println("sameId...")
break break
} }
sameIdcnt = sameIdcnt + 1
} }
} }
} }
@ -539,22 +552,7 @@ func GetCommit(userName, repoName, branchname, commitid string) (*git.Commit, er
return nil, err return nil, err
} }
if commitid != "" { return repo.GetCommit(branchname, commitid)
oid, err := git.NewOidFromString(commitid)
if err != nil {
return nil, err
}
return repo.LookupCommit(oid)
}
if branchname == "" {
return nil, errors.New("no branch name and no commit id")
}
r, err := repo.LookupReference(fmt.Sprintf("refs/heads/%s", branchname))
if err != nil {
return nil, err
}
return r.LastCommit()
} }
// GetCommits returns all commits of given branch of repository. // GetCommits returns all commits of given branch of repository.