aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorUnknown <joe2010xtmf@163.com>2014-02-14 18:16:54 -0500
committerUnknown <joe2010xtmf@163.com>2014-02-14 18:16:54 -0500
commit8ef198dface6a4e7b851ea495e236450f40ad1dc (patch)
tree6171c33b935c63aa49defb49fc4bb7a5156fd208
parent237193ef2a58d890d50e96fcc99481849c42dca9 (diff)
downloadgitea-8ef198dface6a4e7b851ea495e236450f40ad1dc.tar.gz
gitea-8ef198dface6a4e7b851ea495e236450f40ad1dc.zip
Formatting
-rw-r--r--README.md13
-rw-r--r--models/models.go6
-rw-r--r--models/models_test.go4
-rw-r--r--models/repo.go25
-rw-r--r--models/user.go79
5 files changed, 88 insertions, 39 deletions
diff --git a/README.md b/README.md
index c8fba75415..367d07af11 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-Gogs - Go Git Service
+Gogs - Go Git Service [![Go Walker](http://gowalker.org/api/v1/badge)](https://gowalker.org/github.com/gogits/gogs)
=====================
Gogs(Go Git Service) is a GitHub-like clone in the Go Programming Language.
@@ -7,6 +7,17 @@ Gogs(Go Git Service) is a GitHub-like clone in the Go Programming Language.
There are some very good products in this category such as [gitlab](http://gitlab.com), but the environment setup steps often make us crazy. So our goal of Gogs is to build a GitHub-like clone with very easy setup steps, which take advantages of the Go Programming Language.
+## Overview
+
+Please see [Wiki](https://github.com/gogits/gogs/wiki) for project design.
+
+## Installation
+
+### Dependencies
+
+- [Go Programming Language](http://golang.org): Main develop language.
+- [libgit2](http://libgit2.github.com/): Git data manipulation.
+
## Acknowledgments
- Logo inspired by [martini](https://github.com/martini-contrib).
diff --git a/models/models.go b/models/models.go
index bddece474d..1c8ce73011 100644
--- a/models/models.go
+++ b/models/models.go
@@ -11,10 +11,8 @@ import (
)
var (
- // orm
- orm *xorm.Engine
- // repository root path
- root string
+ orm *xorm.Engine
+ repoRootPath string
)
type PublicKey struct {
diff --git a/models/models_test.go b/models/models_test.go
index f4a40ff32c..c44ef476c6 100644
--- a/models/models_test.go
+++ b/models/models_test.go
@@ -1,3 +1,7 @@
+// Copyright 2014 The Gogs Authors. All rights reserved.
+// Use of this source code is governed by a MIT-style
+// license that can be found in the LICENSE file.
+
package models
import (
diff --git a/models/repo.go b/models/repo.go
index 8e3aae9ab4..485eee89f6 100644
--- a/models/repo.go
+++ b/models/repo.go
@@ -1,3 +1,7 @@
+// Copyright 2014 The Gogs Authors. All rights reserved.
+// Use of this source code is governed by a MIT-style
+// license that can be found in the LICENSE file.
+
package models
import (
@@ -33,7 +37,7 @@ func IsRepositoryExist(user *User, reposName string) (bool, error) {
// create a repository for a user or orgnaziation
//
func CreateRepository(user *User, reposName string) (*Repo, error) {
- p := filepath.Join(root, user.Name)
+ p := filepath.Join(repoRootPath, user.Name)
os.MkdirAll(p, os.ModePerm)
f := filepath.Join(p, reposName)
_, err := git.InitRepository(f, false)
@@ -89,29 +93,22 @@ func UnWatchRepository() {
}
-//
-// delete a repository for a user or orgnaztion
-//
-func DeleteRepository(user *User, reposName string) error {
+// DeleteRepository deletes a repository for a user or orgnaztion.
+func DeleteRepository(user *User, reposName string) (err error) {
session := orm.NewSession()
- _, err := session.Delete(&Repo{OwnerId: user.Id, Name: reposName})
- if err != nil {
+ if _, err = session.Delete(&Repo{OwnerId: user.Id, Name: reposName}); err != nil {
session.Rollback()
return err
}
- _, err = session.Exec("update user set num_repos = num_repos - 1 where id = ?", user.Id)
- if err != nil {
+ if _, err = session.Exec("update user set num_repos = num_repos - 1 where id = ?", user.Id); err != nil {
session.Rollback()
return err
}
- err = session.Commit()
- if err != nil {
+ if err = session.Commit(); err != nil {
session.Rollback()
return err
}
-
- err = os.RemoveAll(filepath.Join(root, user.Name, reposName))
- if err != nil {
+ if err = os.RemoveAll(filepath.Join(repoRootPath, user.Name, reposName)); err != nil {
// TODO: log and delete manully
return err
}
diff --git a/models/user.go b/models/user.go
index 4093c5ccc0..6ea329c526 100644
--- a/models/user.go
+++ b/models/user.go
@@ -1,3 +1,7 @@
+// Copyright 2014 The Gogs Authors. All rights reserved.
+// Use of this source code is governed by a MIT-style
+// license that can be found in the LICENSE file.
+
package models
import (
@@ -7,18 +11,21 @@ import (
"time"
"github.com/dchest/scrypt"
-) // user type
+)
+
+// User types.
const (
- Individual = iota + 1
- Organization
+ UT_INDIVIDUAL = iota + 1
+ UT_ORGANIZATION
)
-// login type
+// Login types.
const (
- Plain = iota + 1
- LDAP
+ LT_PLAIN = iota + 1
+ LT_LDAP
)
+// A User represents the object of individual and member of organization.
type User struct {
Id int64
LowerName string `xorm:"unique not null"`
@@ -36,6 +43,7 @@ type User struct {
Updated time.Time `xorm:"updated"`
}
+// A Follow represents
type Follow struct {
Id int64
UserId int64 `xorm:"unique(s)"`
@@ -43,15 +51,17 @@ type Follow struct {
Created time.Time `xorm:"created"`
}
+// Operation types of repository.
const (
- OpCreateRepo = iota + 1
- OpDeleteRepo
- OpStarRepo
- OpFollowRepo
- OpCommitRepo
- OpPullRequest
+ OP_CREATE_REPO = iota + 1
+ OP_DELETE_REPO
+ OP_STAR_REPO
+ OP_FOLLOW_REPO
+ OP_COMMIT_REPO
+ OP_PULL_REQUEST
)
+// A Action represents
type Action struct {
Id int64
UserId int64
@@ -62,34 +72,61 @@ type Action struct {
}
var (
- ErrUserNotExist = errors.New("User not exist")
+ ErrUserAlreadyExist = errors.New("User already exist")
+ ErrUserNotExist = errors.New("User does not exist")
)
-// user's name should be noncased unique
+// IsUserExist checks if given user name exist,
+// the user name should be noncased unique.
func IsUserExist(name string) (bool, error) {
return orm.Get(&User{LowerName: strings.ToLower(name)})
}
-func RegisterUser(user *User) error {
- _, err := orm.Insert(user)
+// validateUser checks if user exist.
+func validateUser(name string) error {
+ isExist, err := IsUserExist(name)
+ if err != nil {
+ return err
+ } else if isExist {
+ return ErrUserAlreadyExist
+ }
+ return nil
+}
+
+// RegisterUser creates record of a new user.
+func RegisterUser(user *User) (err error) {
+ if err = validateUser(user.Name); err != nil {
+ return err
+ }
+ _, err = orm.Insert(user)
return err
}
-func UpdateUser(user *User) error {
- _, err := orm.Id(user.Id).Update(user)
+// UpdateUser updates user's information.
+func UpdateUser(user *User) (err error) {
+ _, err = orm.Id(user.Id).Update(user)
return err
}
+// DeleteUser completely deletes everything of the user.
+func DeleteUser(user *User) error {
+ // TODO: check if has ownership of any repository.
+ _, err := orm.Delete(user)
+ // TODO: delete and update follower information.
+ return err
+}
+
+// EncodePasswd encodes password to safe format.
func (user *User) EncodePasswd(pass string) error {
newPasswd, err := scrypt.Key([]byte(user.Passwd), []byte("!#@FDEWREWR&*("), 16384, 8, 1, 64)
user.Passwd = fmt.Sprintf("%x", newPasswd)
return err
}
+// LoginUserPlain validates user by raw user name and password.
func LoginUserPlain(name, passwd string) (*User, error) {
user := User{Name: name}
- err := user.EncodePasswd(passwd)
- if err != nil {
+ if err := user.EncodePasswd(passwd); err != nil {
return nil, err
}
@@ -103,6 +140,7 @@ func LoginUserPlain(name, passwd string) (*User, error) {
return &user, nil
}
+// FollowUser marks someone be another's follower.
func FollowUser(userId int64, followId int64) error {
session := orm.NewSession()
defer session.Close()
@@ -125,6 +163,7 @@ func FollowUser(userId int64, followId int64) error {
return session.Commit()
}
+// UnFollowUser unmarks someone be another's follower.
func UnFollowUser(userId int64, unFollowId int64) error {
session := orm.NewSession()
defer session.Close()