]> source.dussan.org Git - gitea.git/commitdiff
bug fixed
authorLunny Xiao <xiaolunwen@gmail.com>
Wed, 19 Mar 2014 08:42:50 +0000 (16:42 +0800)
committerLunny Xiao <xiaolunwen@gmail.com>
Wed, 19 Mar 2014 08:42:50 +0000 (16:42 +0800)
models/repo.go

index cdbb4b5f4a7befda22e8564ec33118870f6a8ad1..38ab3d4a9b63c2f9f4d029b5cc76a20382a34463 100644 (file)
@@ -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.