| @@ -5,7 +5,7 @@ Gogs(Go Git Service) is a Self Hosted Git Service in the Go Programming Language | |||
|  | |||
| ##### Current version: 0.1.8 Alpha | |||
| ##### Current version: 0.1.9 Alpha | |||
| #### Other language version | |||
| @@ -5,7 +5,7 @@ Gogs(Go Git Service) 是一个由 Go 语言编写的自助 Git 托管服务。 | |||
|  | |||
| ##### 当前版本:0.1.8 Alpha | |||
| ##### 当前版本:0.1.9 Alpha | |||
| ## 开发目的 | |||
| @@ -32,6 +32,7 @@ PATH = data/gogs.db | |||
| [admin] | |||
| [security] | |||
| INSTALL_LOCK = false | |||
| ; Use HTTPS to clone repository, otherwise use HTTP. | |||
| ENABLE_HTTPS_CLONE = false | |||
| ; !!CHANGE THIS TO KEEP YOUR USER DATA SAFE!! | |||
| @@ -19,7 +19,7 @@ import ( | |||
| // Test that go1.2 tag above is included in builds. main.go refers to this definition. | |||
| const go12tag = true | |||
| const APP_VER = "0.1.8.0327 Alpha" | |||
| const APP_VER = "0.1.9.0327 Alpha" | |||
| func init() { | |||
| base.AppVer = APP_VER | |||
| @@ -37,12 +37,7 @@ type Issue struct { | |||
| } | |||
| // CreateIssue creates new issue for repository. | |||
| func CreateIssue(userId, repoId, milestoneId, assigneeId int64, issueCount int, name, labels, content string, isPull bool) (*Issue, error) { | |||
| count, err := GetIssueCount(repoId) | |||
| if err != nil { | |||
| return nil, err | |||
| } | |||
| func CreateIssue(userId, repoId, milestoneId, assigneeId int64, issueCount int, name, labels, content string, isPull bool) (issue *Issue, err error) { | |||
| // TODO: find out mentions | |||
| mentions := "" | |||
| @@ -50,8 +45,8 @@ func CreateIssue(userId, repoId, milestoneId, assigneeId int64, issueCount int, | |||
| defer sess.Close() | |||
| sess.Begin() | |||
| issue := &Issue{ | |||
| Index: count + 1, | |||
| issue = &Issue{ | |||
| Index: int64(issueCount) + 1, | |||
| Name: name, | |||
| RepoId: repoId, | |||
| PosterId: userId, | |||
| @@ -81,11 +76,6 @@ func CreateIssue(userId, repoId, milestoneId, assigneeId int64, issueCount int, | |||
| return issue, nil | |||
| } | |||
| // GetIssueCount returns count of issues in the repository. | |||
| func GetIssueCount(repoId int64) (int64, error) { | |||
| return orm.Count(&Issue{RepoId: repoId}) | |||
| } | |||
| // GetIssueById returns issue object by given id. | |||
| func GetIssueByIndex(repoId, index int64) (*Issue, error) { | |||
| issue := &Issue{RepoId: repoId, Index: index} | |||
| @@ -148,16 +138,10 @@ func GetIssues(userId, repoId, posterId, milestoneId int64, page int, isClosed, | |||
| // UpdateIssue updates information of issue. | |||
| func UpdateIssue(issue *Issue) error { | |||
| _, err := orm.Update(issue, &Issue{RepoId: issue.RepoId, Index: issue.Index}) | |||
| _, err := orm.Id(issue.Id).AllCols().Update(issue) | |||
| return err | |||
| } | |||
| func CloseIssue() { | |||
| } | |||
| func ReopenIssue() { | |||
| } | |||
| // Label represents a list of labels of repository for issues. | |||
| type Label struct { | |||
| Id int64 | |||
| @@ -197,8 +181,7 @@ func CreateComment(userId, issueId, commitId, line int64, content string) error | |||
| sess.Begin() | |||
| if _, err := orm.Insert(&Comment{PosterId: userId, IssueId: issueId, | |||
| CommitId: commitId, Line: line, Content: content, | |||
| }); err != nil { | |||
| CommitId: commitId, Line: line, Content: content}); err != nil { | |||
| sess.Rollback() | |||
| return err | |||
| } | |||
| @@ -96,12 +96,11 @@ func IsRepositoryExist(user *User, repoName string) (bool, error) { | |||
| has, err := orm.Where("lower_name = ?", strings.ToLower(repoName)).Get(&repo) | |||
| if err != nil { | |||
| return has, err | |||
| } else if !has { | |||
| return false, nil | |||
| } | |||
| s, err := os.Stat(RepoPath(user.Name, repoName)) | |||
| if err != nil { | |||
| return false, nil // Error simply means does not exist, but we don't want to show up. | |||
| } | |||
| return s.IsDir(), nil | |||
| return com.IsDir(RepoPath(user.Name, repoName)), nil | |||
| } | |||
| var ( | |||
| @@ -224,16 +223,24 @@ func initRepoCommit(tmpPath string, sig *git.Signature) (err error) { | |||
| if _, stderr, err = com.ExecCmdDir(tmpPath, "git", "add", "--all"); err != nil { | |||
| return err | |||
| } | |||
| log.Trace("stderr(1): %s", stderr) | |||
| if len(stderr) > 0 { | |||
| log.Trace("stderr(1): %s", stderr) | |||
| } | |||
| if _, stderr, err = com.ExecCmdDir(tmpPath, "git", "commit", fmt.Sprintf("--author='%s <%s>'", sig.Name, sig.Email), | |||
| "-m", "Init commit"); err != nil { | |||
| return err | |||
| } | |||
| log.Trace("stderr(2): %s", stderr) | |||
| if len(stderr) > 0 { | |||
| log.Trace("stderr(2): %s", stderr) | |||
| } | |||
| if _, stderr, err = com.ExecCmdDir(tmpPath, "git", "push", "origin", "master"); err != nil { | |||
| return err | |||
| } | |||
| log.Trace("stderr(3): %s", stderr) | |||
| if len(stderr) > 0 { | |||
| log.Trace("stderr(3): %s", stderr) | |||
| } | |||
| return nil | |||
| } | |||
| @@ -243,10 +250,9 @@ func createHookUpdate(hookPath, content string) error { | |||
| return err | |||
| } | |||
| defer pu.Close() | |||
| if _, err = pu.WriteString(content); err != nil { | |||
| return err | |||
| } | |||
| return nil | |||
| _, err = pu.WriteString(content) | |||
| return err | |||
| } | |||
| // InitRepository initializes README and .gitignore if needed. | |||
| @@ -322,10 +328,7 @@ func initRepository(f string, user *User, repo *Repository, initReadme bool, rep | |||
| } | |||
| // Apply changes and commit. | |||
| if err := initRepoCommit(tmpDir, user.NewGitSig()); err != nil { | |||
| return err | |||
| } | |||
| return nil | |||
| return initRepoCommit(tmpDir, user.NewGitSig()) | |||
| } | |||
| // UserRepo reporesents a repository with user name. | |||
| @@ -7,8 +7,9 @@ | |||
| <div class="col-md-3 filter-list"> | |||
| <ul class="list-unstyled"> | |||
| <li><a href="#" class="active">All Issues <strong class="pull-right">{{.IssueCount}}</strong></a></li> | |||
| <!-- <li><a href="#">My Issues</a></li> | |||
| <li><a href="#">Mentioned</a></li> --> | |||
| <!-- <li><a href="#">Assigned to you</a></li> --> | |||
| <li><a href="#">Created by you</a></li> | |||
| <!-- <li><a href="#">Mentioned</a></li> --> | |||
| </ul> | |||
| </div> | |||
| <div class="col-md-9"> | |||
| @@ -17,8 +17,9 @@ | |||
| <div class="col-md-3 filter-list"> | |||
| <ul class="list-unstyled"> | |||
| <li><a href="#" class="active">In your repositories <strong class="pull-right">10</strong></a></li> | |||
| <!-- <li><a href="#">Assigned to you</a></li> --> | |||
| <li><a href="#">Created by you</a></li> | |||
| <li><a href="#">Assigned to you</a></li> | |||
| <!-- <li><a href="#">Assigned to you</a></li> --> | |||
| <li><hr/></li> | |||
| <li><a href="" class="sm">gogits/gogs <strong class="pull-right">12</strong></a></li> | |||
| <li><a href="" class="sm">gogits/session <strong class="pull-right">8</strong></a></li> | |||
| @@ -33,36 +34,18 @@ | |||
| </div> | |||
| </div> | |||
| <div class="issues list-group"> | |||
| <div class="list-group-item unread issue-item" id="issue-id"> | |||
| <span class="number pull-right">#123</span> | |||
| <h5 class="title"><a href="#">Bug: When running tests after generating a beego app, templates do not load.</a></h5> | |||
| {{range .Issues}} | |||
| <div class="list-group-item issue-item" id="issue-{{.Id}}"> | |||
| <span class="number pull-right">#{{.Index}}</span> | |||
| <h5 class="title"><a href="/{{$.RepositoryLink}}/issues/{{.Index}}">{{.Name}}</a></h5> | |||
| <p class="info"> | |||
| <span class="author"><img class="avatar" src="http://tp2.sinaimg.cn/5068084885/50/40050297589/1" alt="" width="20"/> | |||
| <a href="#">Obama</a></span> | |||
| <span class="time">3 days ago</span> | |||
| <span class="comment"><i class="fa fa-comments"></i> 3</span> | |||
| </p> | |||
| </div> | |||
| <div class="list-group-item issue-item" id="issue-id2"> | |||
| <span class="number pull-right">#123</span> | |||
| <h5 class="title"><a href="#">Bug: When running tests after generating a beego app, templates do not load.</a></h5> | |||
| <p class="info"> | |||
| <span class="author"><img class="avatar" src="http://tp2.sinaimg.cn/5068084885/50/40050297589/1" alt="" width="20"/> | |||
| <a href="#">Obama</a></span> | |||
| <span class="time">3 days ago</span> | |||
| <span class="comment"><i class="fa fa-comments"></i> 3</span> | |||
| </p> | |||
| </div> | |||
| <div class="list-group-item issue-item" id="issue-id3"> | |||
| <span class="number pull-right">#123</span> | |||
| <h5 class="title"><a href="#">Bug: When running tests after generating a beego app, templates do not load.</a></h5> | |||
| <p class="info"> | |||
| <span class="author"><img class="avatar" src="http://tp2.sinaimg.cn/5068084885/50/40050297589/1" alt="" width="20"/> | |||
| <a href="#">Obama</a></span> | |||
| <span class="time">3 days ago</span> | |||
| <span class="comment"><i class="fa fa-comments"></i> 3</span> | |||
| <span class="author"><img class="avatar" src="{{.Poster.AvatarLink}}" alt="" width="20"/> | |||
| <a href="/user/{{.Poster.Name}}">{{.Poster.Name}}</a></span> | |||
| <span class="time">{{TimeSince .Created}}</span> | |||
| <span class="comment"><i class="fa fa-comments"></i> {{.NumComments}}</span> | |||
| </p> | |||
| </div> | |||
| {{end}} | |||
| </div> | |||
| </div> | |||
| </div> | |||