diff options
Diffstat (limited to 'models/repo.go')
-rw-r--r-- | models/repo.go | 34 |
1 files changed, 30 insertions, 4 deletions
diff --git a/models/repo.go b/models/repo.go index a44bf69a..c5fa899f 100644 --- a/models/repo.go +++ b/models/repo.go @@ -9,6 +9,7 @@ import ( "fmt" "io/ioutil" "os" + "path" "path/filepath" "strings" "time" @@ -270,6 +271,7 @@ type RepoFile struct { Id *git.Oid Type int Name string + Path string Message string Created time.Time } @@ -282,7 +284,7 @@ func (f *RepoFile) IsDir() bool { return f.Type == git.FilemodeTree } -func GetReposFiles(userName, reposName, treeName, rpath string) ([]*RepoFile, error) { +func GetReposFiles(userName, reposName, branchName, rpath string) ([]*RepoFile, error) { f := RepoPath(userName, reposName) repo, err := git.OpenRepository(f) if err != nil { @@ -299,8 +301,28 @@ func GetReposFiles(userName, reposName, treeName, rpath string) ([]*RepoFile, er if err != nil { return nil, err } - var i uint64 = 0 - for ; i < tree.EntryCount(); i++ { + //var i uint64 = 0 + if rpath != "" { + rpath = rpath + "/" + } + fmt.Println("...", rpath, "...") + + tree.Walk(func(dirname string, entry *git.TreeEntry) int { + if dirname == rpath { + fmt.Println("====", dirname, "==", entry.Name) + repofiles = append(repofiles, &RepoFile{ + entry.Id, + entry.Filemode, + entry.Name, + path.Join(dirname, entry.Name), + lastCommit.Message(), + lastCommit.Committer().When, + }) + } + return 0 + }) + + /*for ; i < tree.EntryCount(); i++ { entry := tree.EntryByIndex(i) repofiles = append(repofiles, &RepoFile{ @@ -310,7 +332,7 @@ func GetReposFiles(userName, reposName, treeName, rpath string) ([]*RepoFile, er lastCommit.Message(), lastCommit.Committer().When, }) - } + }*/ return repofiles, nil } @@ -354,6 +376,10 @@ func DeleteRepository(userId, repoId int64, userName string) (err error) { session.Rollback() return err } + if _, err := session.Delete(&Access{UserName: userName, RepoName: repo.Name}); err != nil { + session.Rollback() + return err + } if _, err = session.Exec("update user set num_repos = num_repos - 1 where id = ?", userId); err != nil { session.Rollback() return err |