| @@ -446,7 +446,7 @@ func GetReposFiles(userName, reposName, branchName, commitId, rpath string) ([]* | |||
| return nil, err | |||
| } | |||
| commit, err := GetCommit(userName, reposName, branchName, commitId) | |||
| commit, err := repo.GetCommit(branchName, commitId) | |||
| if err != nil { | |||
| return nil, err | |||
| } | |||
| @@ -462,8 +462,10 @@ func GetReposFiles(userName, reposName, branchName, commitId, rpath string) ([]* | |||
| } | |||
| var cm = commit | |||
| var i int | |||
| for { | |||
| i = i + 1 | |||
| //fmt.Println(".....", i, cm.Id(), cm.ParentCount()) | |||
| if cm.ParentCount() == 0 { | |||
| break | |||
| } else if cm.ParentCount() == 1 { | |||
| @@ -480,7 +482,10 @@ func GetReposFiles(userName, reposName, branchName, commitId, rpath string) ([]* | |||
| } else { | |||
| var emptyCnt = 0 | |||
| var sameIdcnt = 0 | |||
| var lastSameCm *git.Commit | |||
| //fmt.Println(".....", cm.ParentCount()) | |||
| for i := 0; i < cm.ParentCount(); i++ { | |||
| //fmt.Println("parent", i, cm.Parent(i).Id()) | |||
| p := cm.Parent(i) | |||
| pt, _ := repo.SubTree(p.Tree, dirname) | |||
| var pEntry *git.TreeEntry | |||
| @@ -488,23 +493,31 @@ func GetReposFiles(userName, reposName, branchName, commitId, rpath string) ([]* | |||
| pEntry = pt.EntryByName(entry.Name) | |||
| } | |||
| //fmt.Println("pEntry", pEntry) | |||
| if pEntry == nil { | |||
| if emptyCnt == cm.ParentCount()-1 { | |||
| goto loop | |||
| } else { | |||
| emptyCnt = emptyCnt + 1 | |||
| continue | |||
| emptyCnt = emptyCnt + 1 | |||
| if emptyCnt+sameIdcnt == cm.ParentCount() { | |||
| if lastSameCm == nil { | |||
| goto loop | |||
| } else { | |||
| cm = lastSameCm | |||
| break | |||
| } | |||
| } | |||
| } else { | |||
| //fmt.Println(i, "pEntry", pEntry.Id, "entry", entry.Id) | |||
| if !pEntry.Id.Equal(entry.Id) { | |||
| goto loop | |||
| } 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? | |||
| cm = cm.Parent(0) | |||
| cm = lastSameCm | |||
| //fmt.Println("sameId...") | |||
| break | |||
| } | |||
| sameIdcnt = sameIdcnt + 1 | |||
| } | |||
| } | |||
| } | |||
| @@ -539,22 +552,7 @@ func GetCommit(userName, repoName, branchname, commitid string) (*git.Commit, er | |||
| return nil, err | |||
| } | |||
| if 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() | |||
| return repo.GetCommit(branchname, commitid) | |||
| } | |||
| // GetCommits returns all commits of given branch of repository. | |||