diff options
author | Lunny Xiao <xiaolunwen@gmail.com> | 2014-02-25 15:11:54 +0800 |
---|---|---|
committer | Lunny Xiao <xiaolunwen@gmail.com> | 2014-02-25 15:11:54 +0800 |
commit | f7826d4ed780c29058a0825a9d821523980777de (patch) | |
tree | 161b43aca41ebbb12039f47967fb275eb6102491 /models/repo.go | |
parent | 3b8657d9177ad2f3dca5ecf0e1f8f62c20e776f7 (diff) |
create repository from web
Diffstat (limited to 'models/repo.go')
-rw-r--r-- | models/repo.go | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/models/repo.go b/models/repo.go index 6a0071ef..70e2673d 100644 --- a/models/repo.go +++ b/models/repo.go @@ -46,12 +46,12 @@ func IsRepositoryExist(user *User, reposName string) (bool, error) { // func CreateRepository(user *User, reposName string) (*Repo, error) { f := RepoPath(user.Name, reposName) - _, err := git.InitRepository(f, false) + _, err := git.InitRepository(f, true) if err != nil { return nil, err } - repo := Repo{OwnerId: user.Id, Name: reposName} + repo := Repo{OwnerId: user.Id, Name: reposName, LowerName: strings.ToLower(reposName)} session := orm.NewSession() defer session.Close() session.Begin() @@ -64,6 +64,19 @@ func CreateRepository(user *User, reposName string) (*Repo, error) { session.Rollback() return nil, err } + access := Access{UserName: user.Name, + RepoName: repo.Name, + Mode: AU_WRITABLE, + } + _, err = session.Insert(&access) + if err != nil { + err2 := os.RemoveAll(f) + if err2 != nil { + log.Error("delete repo directory %s/%s failed", user.Name, reposName) + } + session.Rollback() + return nil, err + } _, err = session.Exec("update user set num_repos = num_repos + 1 where id = ?", user.Id) if err != nil { err2 := os.RemoveAll(f) |