From 9e6ebaad39840e262719cf15946640a88c4b4bf6 Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Sat, 29 Dec 2018 17:44:01 +0800 Subject: [PATCH 1/9] add commit file statuses --- models/action.go | 28 ++++++++++++++++++++++++---- models/action_test.go | 2 +- models/pull.go | 8 +++++++- 3 files changed, 32 insertions(+), 6 deletions(-) diff --git a/models/action.go b/models/action.go index b4f4b1cb6d0ef..a180640f409e7 100644 --- a/models/action.go +++ b/models/action.go @@ -385,7 +385,7 @@ func NewPushCommits() *PushCommits { // ToAPIPayloadCommits converts a PushCommits object to // api.PayloadCommit format. -func (pc *PushCommits) ToAPIPayloadCommits(repoLink string) []*api.PayloadCommit { +func (pc *PushCommits) ToAPIPayloadCommits(repoPath, repoLink string) ([]*api.PayloadCommit, error) { commits := make([]*api.PayloadCommit, len(pc.Commits)) if pc.emailUsers == nil { @@ -400,6 +400,8 @@ func (pc *PushCommits) ToAPIPayloadCommits(repoLink string) []*api.PayloadCommit if err == nil { authorUsername = author.Name pc.emailUsers[commit.AuthorEmail] = author + } else if !IsErrUserNotExist(err) { + return nil, fmt.Errorf("GetUserByEmail: %v", err) } } else { authorUsername = author.Name @@ -413,10 +415,18 @@ func (pc *PushCommits) ToAPIPayloadCommits(repoLink string) []*api.PayloadCommit // TODO: check errors other than email not found. committerUsername = committer.Name pc.emailUsers[commit.CommitterEmail] = committer + } else if !IsErrUserNotExist(err) { + return nil, fmt.Errorf("GetUserByEmail: %v", err) } } else { committerUsername = committer.Name } + + fileStatus, err := git.GetCommitFileStatus(repoPath, commit.Sha1) + if err != nil { + return nil, fmt.Errorf("FileStatus [commit_sha1: %s]: %v", commit.Sha1, err) + } + commits[i] = &api.PayloadCommit{ ID: commit.Sha1, Message: commit.Message, @@ -431,10 +441,13 @@ func (pc *PushCommits) ToAPIPayloadCommits(repoLink string) []*api.PayloadCommit Email: commit.CommitterEmail, UserName: committerUsername, }, + Added: fileStatus.Added, + Removed: fileStatus.Removed, + Modified: fileStatus.Modified, Timestamp: commit.Timestamp, } } - return commits + return commits, nil } // AvatarLink tries to match user in database with e-mail @@ -820,12 +833,16 @@ func CommitRepoAction(opts CommitRepoActionOptions) error { } if isHookEventPush { + commits, err := opts.Commits.ToAPIPayloadCommits(repo.RepoPath(), repo.HTMLURL()) + if err != nil { + return fmt.Errorf("ToAPIPayloadCommits: %v", err) + } if err = PrepareWebhooks(repo, HookEventPush, &api.PushPayload{ Ref: opts.RefFullName, Before: opts.OldCommitID, After: opts.NewCommitID, CompareURL: setting.AppURL + opts.Commits.CompareURL, - Commits: opts.Commits.ToAPIPayloadCommits(repo.HTMLURL()), + Commits: commits, Repo: apiRepo, Pusher: apiPusher, Sender: apiPusher, @@ -913,7 +930,10 @@ func MirrorSyncPushAction(repo *Repository, opts MirrorSyncPushActionOptions) er opts.Commits.Commits = opts.Commits.Commits[:setting.UI.FeedMaxCommitNum] } - apiCommits := opts.Commits.ToAPIPayloadCommits(repo.HTMLURL()) + apiCommits, err := opts.Commits.ToAPIPayloadCommits(repo.RepoPath(), repo.HTMLURL()) + if err != nil { + return fmt.Errorf("ToAPIPayloadCommits: %v", err) + } opts.Commits.CompareURL = repo.ComposeCompareURL(opts.OldCommitID, opts.NewCommitID) apiPusher := repo.MustOwner().APIFormat() diff --git a/models/action_test.go b/models/action_test.go index 9ba205731835b..b97fda4fcce4d 100644 --- a/models/action_test.go +++ b/models/action_test.go @@ -104,7 +104,7 @@ func TestPushCommits_ToAPIPayloadCommits(t *testing.T) { } pushCommits.Len = len(pushCommits.Commits) - payloadCommits := pushCommits.ToAPIPayloadCommits("/username/reponame") + payloadCommits, err := pushCommits.ToAPIPayloadCommits(RepoPath("username", "reponame"), "/username/reponame") if assert.Len(t, payloadCommits, 2) { assert.Equal(t, "abcdef1", payloadCommits[0].ID) assert.Equal(t, "message1", payloadCommits[0].Message) diff --git a/models/pull.go b/models/pull.go index fe18765fc0c78..4fe6661670048 100644 --- a/models/pull.go +++ b/models/pull.go @@ -619,12 +619,18 @@ func (pr *PullRequest) Merge(doer *User, baseGitRepo *git.Repository, mergeStyle l.PushFront(mergeCommit) } + commits, err := ListToPushCommits(l).ToAPIPayloadCommits(pr.BaseRepo.RepoPath(), pr.BaseRepo.HTMLURL()) + if err != nil { + log.Error(4, "ToAPIPayloadCommits: %v", err) + return nil + } + p := &api.PushPayload{ Ref: git.BranchPrefix + pr.BaseBranch, Before: pr.MergeBase, After: mergeCommit.ID.String(), CompareURL: setting.AppURL + pr.BaseRepo.ComposeCompareURL(pr.MergeBase, pr.MergedCommitID), - Commits: ListToPushCommits(l).ToAPIPayloadCommits(pr.BaseRepo.HTMLURL()), + Commits: commits, Repo: pr.BaseRepo.APIFormat(mode), Pusher: pr.HeadRepo.MustOwner().APIFormat(), Sender: doer.APIFormat(), From 154aa7f032ad8b0a5ec84a9064b7b3b0a833cc78 Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Fri, 4 Jan 2019 00:25:09 +0800 Subject: [PATCH 2/9] fix bug --- models/action_test.go | 1 + 1 file changed, 1 insertion(+) diff --git a/models/action_test.go b/models/action_test.go index b97fda4fcce4d..b68cef744d8d1 100644 --- a/models/action_test.go +++ b/models/action_test.go @@ -105,6 +105,7 @@ func TestPushCommits_ToAPIPayloadCommits(t *testing.T) { pushCommits.Len = len(pushCommits.Commits) payloadCommits, err := pushCommits.ToAPIPayloadCommits(RepoPath("username", "reponame"), "/username/reponame") + assert.NoError(t, err) if assert.Len(t, payloadCommits, 2) { assert.Equal(t, "abcdef1", payloadCommits[0].ID) assert.Equal(t, "message1", payloadCommits[0].Message) From 6bad6181b837569353cbead834f529ae34ba32c2 Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Mon, 14 Jan 2019 15:16:41 +0800 Subject: [PATCH 3/9] fix swagger doc --- templates/swagger/v1_json.tmpl | 3 +++ 1 file changed, 3 insertions(+) diff --git a/templates/swagger/v1_json.tmpl b/templates/swagger/v1_json.tmpl index c0790ac23edff..4839987ec7c40 100644 --- a/templates/swagger/v1_json.tmpl +++ b/templates/swagger/v1_json.tmpl @@ -7318,6 +7318,9 @@ "type": "string", "x-go-name": "Name" }, + "organization": { + "$ref": "#/definitions/Organization" + }, "permission": { "type": "string", "enum": [ From bd16c1108e0f4ab1c2440885bc5eecd2ed407ede Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Mon, 14 Jan 2019 15:24:54 +0800 Subject: [PATCH 4/9] add config on docs --- docs/content/doc/advanced/config-cheat-sheet.en-us.md | 2 ++ docs/content/doc/advanced/config-cheat-sheet.zh-cn.md | 2 ++ 2 files changed, 4 insertions(+) diff --git a/docs/content/doc/advanced/config-cheat-sheet.en-us.md b/docs/content/doc/advanced/config-cheat-sheet.en-us.md index 9b9578ca485dc..820cca05d9cd9 100644 --- a/docs/content/doc/advanced/config-cheat-sheet.en-us.md +++ b/docs/content/doc/advanced/config-cheat-sheet.en-us.md @@ -60,6 +60,8 @@ Values containing `#` or `;` must be quoted using `` ` `` or `"""`. the top of the list. Name must match file name in conf/license or custom/conf/license. - `DISABLE_HTTP_GIT`: **false**: Disable the ability to interact with repositories over the HTTP protocol. +- `ACCESS_CONTROL_ALLOW_ORIGIN`: ****: Value for Access-Control-Allow-Origin header, default is not to present. + WARNING: This maybe harmful to you website if you do not give it a right value. - `USE_COMPAT_SSH_URI`: **false**: Force ssh:// clone url instead of scp-style uri when default SSH port is used. - `ACCESS_CONTROL_ALLOW_ORIGIN`: **\**: Value for Access-Control-Allow-Origin header, diff --git a/docs/content/doc/advanced/config-cheat-sheet.zh-cn.md b/docs/content/doc/advanced/config-cheat-sheet.zh-cn.md index 4f34e0b905632..20afb6fc426e4 100644 --- a/docs/content/doc/advanced/config-cheat-sheet.zh-cn.md +++ b/docs/content/doc/advanced/config-cheat-sheet.zh-cn.md @@ -32,6 +32,8 @@ menu: - `DEFAULT_PRIVATE`: 默认创建的git工程为私有。 可以是`last`, `private` 或 `public`。默认值是 `last`表示用户最后创建的Repo的选择。 - `MAX_CREATION_LIMIT`: 全局最大每个用户创建的git工程数目, `-1` 表示没限制。 - `PULL_REQUEST_QUEUE_LENGTH`: 小心:合并请求测试队列的长度,尽量放大。 +- `ACCESS_CONTROL_ALLOW_ORIGIN`: ****: Access-Control-Allow-Origin 头的值,默认为空。 + 警告:如果您不熟悉这方面的设置请不要修改此值,可能影响网站安全。 ## UI (`ui`) From 5a24cb91e0001e31eefc105d3290bdca3b0075de Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Wed, 16 Jan 2019 11:32:30 +0800 Subject: [PATCH 5/9] remove unused newline of v1_json.tmpl --- templates/swagger/v1_json.tmpl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/swagger/v1_json.tmpl b/templates/swagger/v1_json.tmpl index 4839987ec7c40..2373f965324b0 100644 --- a/templates/swagger/v1_json.tmpl +++ b/templates/swagger/v1_json.tmpl @@ -10021,4 +10021,4 @@ "SudoHeader": [] } ] -} +} \ No newline at end of file From d94bb5043ab10f5b6bad7b885efbd7416e342fd7 Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Sun, 20 Jan 2019 00:46:02 +0800 Subject: [PATCH 6/9] fix swagger check --- templates/swagger/v1_json.tmpl | 3 --- 1 file changed, 3 deletions(-) diff --git a/templates/swagger/v1_json.tmpl b/templates/swagger/v1_json.tmpl index 2373f965324b0..9041436758b71 100644 --- a/templates/swagger/v1_json.tmpl +++ b/templates/swagger/v1_json.tmpl @@ -7318,9 +7318,6 @@ "type": "string", "x-go-name": "Name" }, - "organization": { - "$ref": "#/definitions/Organization" - }, "permission": { "type": "string", "enum": [ From 8064b3b854b416b440d1d744e2d0b8e0412209a5 Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Tue, 2 Apr 2019 10:36:38 +0800 Subject: [PATCH 7/9] fix swagger --- templates/swagger/v1_json.tmpl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/swagger/v1_json.tmpl b/templates/swagger/v1_json.tmpl index 9041436758b71..c0790ac23edff 100644 --- a/templates/swagger/v1_json.tmpl +++ b/templates/swagger/v1_json.tmpl @@ -10018,4 +10018,4 @@ "SudoHeader": [] } ] -} \ No newline at end of file +} From bf4bcfb26c13c0b00dd5d76bbd5e4d4826b437c5 Mon Sep 17 00:00:00 2001 From: techknowlogick Date: Thu, 23 May 2019 15:27:20 -0400 Subject: [PATCH 8/9] use new logging --- models/pull.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/models/pull.go b/models/pull.go index 4fe6661670048..41138c9cbe2c9 100644 --- a/models/pull.go +++ b/models/pull.go @@ -621,7 +621,7 @@ func (pr *PullRequest) Merge(doer *User, baseGitRepo *git.Repository, mergeStyle commits, err := ListToPushCommits(l).ToAPIPayloadCommits(pr.BaseRepo.RepoPath(), pr.BaseRepo.HTMLURL()) if err != nil { - log.Error(4, "ToAPIPayloadCommits: %v", err) + log.Error("ToAPIPayloadCommits: %v", err) return nil } From 2b97daeec557d64b8c8dd676e0967ee595d64013 Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Fri, 24 May 2019 13:06:19 +0800 Subject: [PATCH 9/9] remove another PR codes --- docs/content/doc/advanced/config-cheat-sheet.en-us.md | 2 -- docs/content/doc/advanced/config-cheat-sheet.zh-cn.md | 2 -- 2 files changed, 4 deletions(-) diff --git a/docs/content/doc/advanced/config-cheat-sheet.en-us.md b/docs/content/doc/advanced/config-cheat-sheet.en-us.md index 820cca05d9cd9..9b9578ca485dc 100644 --- a/docs/content/doc/advanced/config-cheat-sheet.en-us.md +++ b/docs/content/doc/advanced/config-cheat-sheet.en-us.md @@ -60,8 +60,6 @@ Values containing `#` or `;` must be quoted using `` ` `` or `"""`. the top of the list. Name must match file name in conf/license or custom/conf/license. - `DISABLE_HTTP_GIT`: **false**: Disable the ability to interact with repositories over the HTTP protocol. -- `ACCESS_CONTROL_ALLOW_ORIGIN`: ****: Value for Access-Control-Allow-Origin header, default is not to present. - WARNING: This maybe harmful to you website if you do not give it a right value. - `USE_COMPAT_SSH_URI`: **false**: Force ssh:// clone url instead of scp-style uri when default SSH port is used. - `ACCESS_CONTROL_ALLOW_ORIGIN`: **\**: Value for Access-Control-Allow-Origin header, diff --git a/docs/content/doc/advanced/config-cheat-sheet.zh-cn.md b/docs/content/doc/advanced/config-cheat-sheet.zh-cn.md index 20afb6fc426e4..4f34e0b905632 100644 --- a/docs/content/doc/advanced/config-cheat-sheet.zh-cn.md +++ b/docs/content/doc/advanced/config-cheat-sheet.zh-cn.md @@ -32,8 +32,6 @@ menu: - `DEFAULT_PRIVATE`: 默认创建的git工程为私有。 可以是`last`, `private` 或 `public`。默认值是 `last`表示用户最后创建的Repo的选择。 - `MAX_CREATION_LIMIT`: 全局最大每个用户创建的git工程数目, `-1` 表示没限制。 - `PULL_REQUEST_QUEUE_LENGTH`: 小心:合并请求测试队列的长度,尽量放大。 -- `ACCESS_CONTROL_ALLOW_ORIGIN`: ****: Access-Control-Allow-Origin 头的值,默认为空。 - 警告:如果您不熟悉这方面的设置请不要修改此值,可能影响网站安全。 ## UI (`ui`)