@@ -9,7 +9,6 @@ import ( | |||
"fmt" | |||
"io/ioutil" | |||
"os" | |||
"path" | |||
"path/filepath" | |||
"strings" | |||
"time" | |||
@@ -262,11 +261,7 @@ func GetRepositoryCount(user *User) (int64, error) { | |||
return orm.Count(&Repository{OwnerId: user.Id}) | |||
} | |||
const ( | |||
RFile = iota + 1 | |||
RDir | |||
) | |||
/* | |||
type RepoFile struct { | |||
Id *git.Oid | |||
Type int | |||
@@ -282,15 +277,19 @@ func (f *RepoFile) IsFile() bool { | |||
func (f *RepoFile) IsDir() bool { | |||
return f.Type == git.FilemodeTree | |||
} | |||
}*/ | |||
/* | |||
func GetReposFiles(userName, reposName, branchName, rpath string) ([]*RepoFile, error) { | |||
f := RepoPath(userName, reposName) | |||
repo, err := git.OpenRepository(f) | |||
if err != nil { | |||
return nil, err | |||
} | |||
repo.LookupReference("refs/heads/" + branchName) | |||
obj, err := repo.RevparseSingle("HEAD") | |||
if err != nil { | |||
return nil, err | |||
@@ -322,20 +321,8 @@ func GetReposFiles(userName, reposName, branchName, rpath string) ([]*RepoFile, | |||
return 0 | |||
}) | |||
/*for ; i < tree.EntryCount(); i++ { | |||
entry := tree.EntryByIndex(i) | |||
repofiles = append(repofiles, &RepoFile{ | |||
entry.Id, | |||
entry.Filemode, | |||
entry.Name, | |||
lastCommit.Message(), | |||
lastCommit.Committer().When, | |||
}) | |||
}*/ | |||
return repofiles, nil | |||
} | |||
}*/ | |||
func StarReposiory(user *User, repoName string) error { | |||
return nil | |||
@@ -0,0 +1,61 @@ | |||
package models | |||
import ( | |||
"path" | |||
"time" | |||
git "github.com/speedata/gogit" | |||
) | |||
type RepoFile struct { | |||
Id *git.Oid | |||
Type int | |||
Name string | |||
Path string | |||
Message string | |||
Created time.Time | |||
} | |||
func (f *RepoFile) IsFile() bool { | |||
return f.Type == git.FileModeBlob || f.Type == git.FileModeBlobExec | |||
} | |||
func (f *RepoFile) IsDir() bool { | |||
return f.Type == git.FileModeTree | |||
} | |||
func GetReposFiles(userName, reposName, branchName, rpath string) ([]*RepoFile, error) { | |||
f := RepoPath(userName, reposName) | |||
repo, err := git.OpenRepository(f) | |||
if err != nil { | |||
return nil, err | |||
} | |||
ref, err := repo.LookupReference("refs/heads/" + branchName) | |||
if err != nil { | |||
return nil, err | |||
} | |||
lastCommit, err := repo.LookupCommit(ref.Oid) | |||
if err != nil { | |||
return nil, err | |||
} | |||
var repofiles []*RepoFile | |||
lastCommit.Tree.Walk(func(dirname string, entry *git.TreeEntry) int { | |||
if dirname == rpath { | |||
repofiles = append(repofiles, &RepoFile{ | |||
entry.Id, | |||
entry.Filemode, | |||
entry.Name, | |||
path.Join(dirname, entry.Name), | |||
lastCommit.Message(), | |||
lastCommit.Committer.When, | |||
}) | |||
} | |||
return 0 | |||
}) | |||
return repofiles, nil | |||
} |