|
@@ -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.
|