summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLunny Xiao <xiaolunwen@gmail.com>2014-03-19 16:42:50 +0800
committerLunny Xiao <xiaolunwen@gmail.com>2014-03-19 16:42:50 +0800
commit7076f466c9491b07be272d4680cfea5ed839b855 (patch)
treed54f2dbc39966bd9205d4063853bd59e2cd1c6f9
parent01162bfc781b1f3d6bfa70196d37cae85cf2cc45 (diff)
downloadgitea-7076f466c9491b07be272d4680cfea5ed839b855.tar.gz
gitea-7076f466c9491b07be272d4680cfea5ed839b855.zip
bug fixed
-rw-r--r--models/repo.go50
1 files changed, 24 insertions, 26 deletions
diff --git a/models/repo.go b/models/repo.go
index cdbb4b5f4a..38ab3d4a9b 100644
--- a/models/repo.go
+++ b/models/repo.go
@@ -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.