mirror of https://github.com/go-gitea/gitea
Compare commits
12 Commits
ecb885b558
...
b25ab017e1
Author | SHA1 | Date |
---|---|---|
Darren Hoo | b25ab017e1 | |
silverwind | 9b2536b78f | |
silverwind | dcc3c17e5c | |
GiteaBot | 27861d711b | |
silverwind | c93eefb42b | |
techknowlogick | f6586943cb | |
hyg | 7eaf283b0c | |
hyg | 4d9f4ed5cd | |
hyg | 55afd39390 | |
hyg | 1d34d436c2 | |
hyg | 280861f31e | |
hyg | 814ca03be8 |
11
Makefile
11
Makefile
|
@ -30,7 +30,7 @@ EDITORCONFIG_CHECKER_PACKAGE ?= github.com/editorconfig-checker/editorconfig-che
|
||||||
GOFUMPT_PACKAGE ?= mvdan.cc/gofumpt@v0.6.0
|
GOFUMPT_PACKAGE ?= mvdan.cc/gofumpt@v0.6.0
|
||||||
GOLANGCI_LINT_PACKAGE ?= github.com/golangci/golangci-lint/cmd/golangci-lint@v1.57.2
|
GOLANGCI_LINT_PACKAGE ?= github.com/golangci/golangci-lint/cmd/golangci-lint@v1.57.2
|
||||||
GXZ_PACKAGE ?= github.com/ulikunitz/xz/cmd/gxz@v0.5.11
|
GXZ_PACKAGE ?= github.com/ulikunitz/xz/cmd/gxz@v0.5.11
|
||||||
MISSPELL_PACKAGE ?= github.com/golangci/misspell/cmd/misspell@v0.4.1
|
MISSPELL_PACKAGE ?= github.com/golangci/misspell/cmd/misspell@v0.5.1
|
||||||
SWAGGER_PACKAGE ?= github.com/go-swagger/go-swagger/cmd/swagger@db51e79a0e37c572d8b59ae0c58bf2bbbbe53285
|
SWAGGER_PACKAGE ?= github.com/go-swagger/go-swagger/cmd/swagger@db51e79a0e37c572d8b59ae0c58bf2bbbbe53285
|
||||||
XGO_PACKAGE ?= src.techknowlogick.com/xgo@latest
|
XGO_PACKAGE ?= src.techknowlogick.com/xgo@latest
|
||||||
GO_LICENSES_PACKAGE ?= github.com/google/go-licenses@v1
|
GO_LICENSES_PACKAGE ?= github.com/google/go-licenses@v1
|
||||||
|
@ -397,11 +397,11 @@ lint-md: node_modules
|
||||||
|
|
||||||
.PHONY: lint-spell
|
.PHONY: lint-spell
|
||||||
lint-spell:
|
lint-spell:
|
||||||
@go run $(MISSPELL_PACKAGE) -error $(SPELLCHECK_FILES)
|
@go run $(MISSPELL_PACKAGE) -dict tools/misspellings.csv -error $(SPELLCHECK_FILES)
|
||||||
|
|
||||||
.PHONY: lint-spell-fix
|
.PHONY: lint-spell-fix
|
||||||
lint-spell-fix:
|
lint-spell-fix:
|
||||||
@go run $(MISSPELL_PACKAGE) -w $(SPELLCHECK_FILES)
|
@go run $(MISSPELL_PACKAGE) -dict tools/misspellings.csv -w $(SPELLCHECK_FILES)
|
||||||
|
|
||||||
.PHONY: lint-go
|
.PHONY: lint-go
|
||||||
lint-go:
|
lint-go:
|
||||||
|
@ -908,8 +908,9 @@ webpack: $(WEBPACK_DEST)
|
||||||
|
|
||||||
$(WEBPACK_DEST): $(WEBPACK_SOURCES) $(WEBPACK_CONFIGS) package-lock.json
|
$(WEBPACK_DEST): $(WEBPACK_SOURCES) $(WEBPACK_CONFIGS) package-lock.json
|
||||||
@$(MAKE) -s node-check node_modules
|
@$(MAKE) -s node-check node_modules
|
||||||
rm -rf $(WEBPACK_DEST_ENTRIES)
|
@rm -rf $(WEBPACK_DEST_ENTRIES)
|
||||||
npx webpack
|
@echo "Running webpack..."
|
||||||
|
@BROWSERSLIST_IGNORE_OLD_DATA=true npx webpack
|
||||||
@touch $(WEBPACK_DEST)
|
@touch $(WEBPACK_DEST)
|
||||||
|
|
||||||
.PHONY: svg
|
.PHONY: svg
|
||||||
|
|
|
@ -1322,7 +1322,7 @@ Defaultly every storage has their default base path like below
|
||||||
| actions_log | actions_log/ |
|
| actions_log | actions_log/ |
|
||||||
| actions_artifacts | actions_artifacts/ |
|
| actions_artifacts | actions_artifacts/ |
|
||||||
|
|
||||||
And bucket, basepath or `SERVE_DIRECT` could be special or overrided, if you want to use a different you can:
|
And bucket, basepath or `SERVE_DIRECT` could be special or overridden, if you want to use a different you can:
|
||||||
|
|
||||||
```ini
|
```ini
|
||||||
[storage.actions_log]
|
[storage.actions_log]
|
||||||
|
|
|
@ -262,11 +262,11 @@ func CancelPreviousJobs(ctx context.Context, repoID int64, ref, workflowID strin
|
||||||
|
|
||||||
// InsertRun inserts a run
|
// InsertRun inserts a run
|
||||||
func InsertRun(ctx context.Context, run *ActionRun, jobs []*jobparser.SingleWorkflow) error {
|
func InsertRun(ctx context.Context, run *ActionRun, jobs []*jobparser.SingleWorkflow) error {
|
||||||
ctx, commiter, err := db.TxContext(ctx)
|
ctx, committer, err := db.TxContext(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
defer commiter.Close()
|
defer committer.Close()
|
||||||
|
|
||||||
index, err := db.GetNextResourceIndex(ctx, "action_run_index", run.RepoID)
|
index, err := db.GetNextResourceIndex(ctx, "action_run_index", run.RepoID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -331,7 +331,7 @@ func InsertRun(ctx context.Context, run *ActionRun, jobs []*jobparser.SingleWork
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return commiter.Commit()
|
return committer.Commit()
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetRunByID(ctx context.Context, id int64) (*ActionRun, error) {
|
func GetRunByID(ctx context.Context, id int64) (*ActionRun, error) {
|
||||||
|
|
|
@ -216,11 +216,11 @@ func GetRunningTaskByToken(ctx context.Context, token string) (*ActionTask, erro
|
||||||
}
|
}
|
||||||
|
|
||||||
func CreateTaskForRunner(ctx context.Context, runner *ActionRunner) (*ActionTask, bool, error) {
|
func CreateTaskForRunner(ctx context.Context, runner *ActionRunner) (*ActionTask, bool, error) {
|
||||||
ctx, commiter, err := db.TxContext(ctx)
|
ctx, committer, err := db.TxContext(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, false, err
|
return nil, false, err
|
||||||
}
|
}
|
||||||
defer commiter.Close()
|
defer committer.Close()
|
||||||
|
|
||||||
e := db.GetEngine(ctx)
|
e := db.GetEngine(ctx)
|
||||||
|
|
||||||
|
@ -322,7 +322,7 @@ func CreateTaskForRunner(ctx context.Context, runner *ActionRunner) (*ActionTask
|
||||||
|
|
||||||
task.Job = job
|
task.Job = job
|
||||||
|
|
||||||
if err := commiter.Commit(); err != nil {
|
if err := committer.Commit(); err != nil {
|
||||||
return nil, false, err
|
return nil, false, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -347,11 +347,11 @@ func UpdateTaskByState(ctx context.Context, state *runnerv1.TaskState) (*ActionT
|
||||||
stepStates[v.Id] = v
|
stepStates[v.Id] = v
|
||||||
}
|
}
|
||||||
|
|
||||||
ctx, commiter, err := db.TxContext(ctx)
|
ctx, committer, err := db.TxContext(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
defer commiter.Close()
|
defer committer.Close()
|
||||||
|
|
||||||
e := db.GetEngine(ctx)
|
e := db.GetEngine(ctx)
|
||||||
|
|
||||||
|
@ -412,7 +412,7 @@ func UpdateTaskByState(ctx context.Context, state *runnerv1.TaskState) (*ActionT
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := commiter.Commit(); err != nil {
|
if err := committer.Commit(); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -13,7 +13,7 @@ import (
|
||||||
|
|
||||||
// ActionTasksVersion
|
// ActionTasksVersion
|
||||||
// If both ownerID and repoID is zero, its scope is global.
|
// If both ownerID and repoID is zero, its scope is global.
|
||||||
// If ownerID is not zero and repoID is zero, its scope is org (there is no user-level runner currrently).
|
// If ownerID is not zero and repoID is zero, its scope is org (there is no user-level runner currently).
|
||||||
// If ownerID is zero and repoID is not zero, its scope is repo.
|
// If ownerID is zero and repoID is not zero, its scope is repo.
|
||||||
type ActionTasksVersion struct {
|
type ActionTasksVersion struct {
|
||||||
ID int64 `xorm:"pk autoincr"`
|
ID int64 `xorm:"pk autoincr"`
|
||||||
|
@ -73,11 +73,11 @@ func increaseTasksVersionByScope(ctx context.Context, ownerID, repoID int64) err
|
||||||
}
|
}
|
||||||
|
|
||||||
func IncreaseTaskVersion(ctx context.Context, ownerID, repoID int64) error {
|
func IncreaseTaskVersion(ctx context.Context, ownerID, repoID int64) error {
|
||||||
ctx, commiter, err := db.TxContext(ctx)
|
ctx, committer, err := db.TxContext(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
defer commiter.Close()
|
defer committer.Close()
|
||||||
|
|
||||||
// 1. increase global
|
// 1. increase global
|
||||||
if err := increaseTasksVersionByScope(ctx, 0, 0); err != nil {
|
if err := increaseTasksVersionByScope(ctx, 0, 0); err != nil {
|
||||||
|
@ -101,5 +101,5 @@ func IncreaseTaskVersion(ctx context.Context, ownerID, repoID int64) error {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return commiter.Commit()
|
return committer.Commit()
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
-
|
-
|
||||||
id: 1
|
id: 1
|
||||||
type: 0 # gitea pull request
|
type: 0 # gitea pull request
|
||||||
status: 2 # mergable
|
status: 2 # mergeable
|
||||||
issue_id: 2
|
issue_id: 2
|
||||||
index: 2
|
index: 2
|
||||||
head_repo_id: 1
|
head_repo_id: 1
|
||||||
|
@ -16,7 +16,7 @@
|
||||||
-
|
-
|
||||||
id: 2
|
id: 2
|
||||||
type: 0 # gitea pull request
|
type: 0 # gitea pull request
|
||||||
status: 2 # mergable
|
status: 2 # mergeable
|
||||||
issue_id: 3
|
issue_id: 3
|
||||||
index: 3
|
index: 3
|
||||||
head_repo_id: 1
|
head_repo_id: 1
|
||||||
|
@ -29,7 +29,7 @@
|
||||||
-
|
-
|
||||||
id: 3
|
id: 3
|
||||||
type: 0 # gitea pull request
|
type: 0 # gitea pull request
|
||||||
status: 2 # mergable
|
status: 2 # mergeable
|
||||||
issue_id: 8
|
issue_id: 8
|
||||||
index: 1
|
index: 1
|
||||||
head_repo_id: 11
|
head_repo_id: 11
|
||||||
|
@ -42,7 +42,7 @@
|
||||||
-
|
-
|
||||||
id: 4
|
id: 4
|
||||||
type: 0 # gitea pull request
|
type: 0 # gitea pull request
|
||||||
status: 2 # mergable
|
status: 2 # mergeable
|
||||||
issue_id: 9
|
issue_id: 9
|
||||||
index: 1
|
index: 1
|
||||||
head_repo_id: 48
|
head_repo_id: 48
|
||||||
|
@ -55,7 +55,7 @@
|
||||||
-
|
-
|
||||||
id: 5 # this PR is outdated (one commit behind branch1 )
|
id: 5 # this PR is outdated (one commit behind branch1 )
|
||||||
type: 0 # gitea pull request
|
type: 0 # gitea pull request
|
||||||
status: 2 # mergable
|
status: 2 # mergeable
|
||||||
issue_id: 11
|
issue_id: 11
|
||||||
index: 5
|
index: 5
|
||||||
head_repo_id: 1
|
head_repo_id: 1
|
||||||
|
@ -68,7 +68,7 @@
|
||||||
-
|
-
|
||||||
id: 6
|
id: 6
|
||||||
type: 0 # gitea pull request
|
type: 0 # gitea pull request
|
||||||
status: 2 # mergable
|
status: 2 # mergeable
|
||||||
issue_id: 12
|
issue_id: 12
|
||||||
index: 2
|
index: 2
|
||||||
head_repo_id: 3
|
head_repo_id: 3
|
||||||
|
@ -81,7 +81,7 @@
|
||||||
-
|
-
|
||||||
id: 7
|
id: 7
|
||||||
type: 0 # gitea pull request
|
type: 0 # gitea pull request
|
||||||
status: 2 # mergable
|
status: 2 # mergeable
|
||||||
issue_id: 19
|
issue_id: 19
|
||||||
index: 1
|
index: 1
|
||||||
head_repo_id: 58
|
head_repo_id: 58
|
||||||
|
@ -94,7 +94,7 @@
|
||||||
-
|
-
|
||||||
id: 8
|
id: 8
|
||||||
type: 0 # gitea pull request
|
type: 0 # gitea pull request
|
||||||
status: 2 # mergable
|
status: 2 # mergeable
|
||||||
issue_id: 20
|
issue_id: 20
|
||||||
index: 1
|
index: 1
|
||||||
head_repo_id: 23
|
head_repo_id: 23
|
||||||
|
@ -103,7 +103,7 @@
|
||||||
-
|
-
|
||||||
id: 9
|
id: 9
|
||||||
type: 0 # gitea pull request
|
type: 0 # gitea pull request
|
||||||
status: 2 # mergable
|
status: 2 # mergeable
|
||||||
issue_id: 21
|
issue_id: 21
|
||||||
index: 1
|
index: 1
|
||||||
head_repo_id: 60
|
head_repo_id: 60
|
||||||
|
@ -112,7 +112,7 @@
|
||||||
-
|
-
|
||||||
id: 10
|
id: 10
|
||||||
type: 0 # gitea pull request
|
type: 0 # gitea pull request
|
||||||
status: 2 # mergable
|
status: 2 # mergeable
|
||||||
issue_id: 22
|
issue_id: 22
|
||||||
index: 1
|
index: 1
|
||||||
head_repo_id: 61
|
head_repo_id: 61
|
||||||
|
|
|
@ -807,7 +807,7 @@ func UpdateAllowEdits(ctx context.Context, pr *PullRequest) error {
|
||||||
|
|
||||||
// Mergeable returns if the pullrequest is mergeable.
|
// Mergeable returns if the pullrequest is mergeable.
|
||||||
func (pr *PullRequest) Mergeable(ctx context.Context) bool {
|
func (pr *PullRequest) Mergeable(ctx context.Context) bool {
|
||||||
// If a pull request isn't mergable if it's:
|
// If a pull request isn't mergeable if it's:
|
||||||
// - Being conflict checked.
|
// - Being conflict checked.
|
||||||
// - Has a conflict.
|
// - Has a conflict.
|
||||||
// - Received a error while being conflict checked.
|
// - Received a error while being conflict checked.
|
||||||
|
|
|
@ -187,8 +187,8 @@ func AddTime(ctx context.Context, user *user_model.User, issue *Issue, amount in
|
||||||
Issue: issue,
|
Issue: issue,
|
||||||
Repo: issue.Repo,
|
Repo: issue.Repo,
|
||||||
Doer: user,
|
Doer: user,
|
||||||
// Content before v1.21 did store the formated string instead of seconds,
|
// Content before v1.21 did store the formatted string instead of seconds,
|
||||||
// so use "|" as delimeter to mark the new format
|
// so use "|" as delimiter to mark the new format
|
||||||
Content: fmt.Sprintf("|%d", amount),
|
Content: fmt.Sprintf("|%d", amount),
|
||||||
Type: CommentTypeAddTimeManual,
|
Type: CommentTypeAddTimeManual,
|
||||||
TimeID: t.ID,
|
TimeID: t.ID,
|
||||||
|
@ -267,8 +267,8 @@ func DeleteIssueUserTimes(ctx context.Context, issue *Issue, user *user_model.Us
|
||||||
Issue: issue,
|
Issue: issue,
|
||||||
Repo: issue.Repo,
|
Repo: issue.Repo,
|
||||||
Doer: user,
|
Doer: user,
|
||||||
// Content before v1.21 did store the formated string instead of seconds,
|
// Content before v1.21 did store the formatted string instead of seconds,
|
||||||
// so use "|" as delimeter to mark the new format
|
// so use "|" as delimiter to mark the new format
|
||||||
Content: fmt.Sprintf("|%d", removedTime),
|
Content: fmt.Sprintf("|%d", removedTime),
|
||||||
Type: CommentTypeDeleteTimeManual,
|
Type: CommentTypeDeleteTimeManual,
|
||||||
}); err != nil {
|
}); err != nil {
|
||||||
|
@ -298,8 +298,8 @@ func DeleteTime(ctx context.Context, t *TrackedTime) error {
|
||||||
Issue: t.Issue,
|
Issue: t.Issue,
|
||||||
Repo: t.Issue.Repo,
|
Repo: t.Issue.Repo,
|
||||||
Doer: t.User,
|
Doer: t.User,
|
||||||
// Content before v1.21 did store the formated string instead of seconds,
|
// Content before v1.21 did store the formatted string instead of seconds,
|
||||||
// so use "|" as delimeter to mark the new format
|
// so use "|" as delimiter to mark the new format
|
||||||
Content: fmt.Sprintf("|%d", t.Time),
|
Content: fmt.Sprintf("|%d", t.Time),
|
||||||
Type: CommentTypeDeleteTimeManual,
|
Type: CommentTypeDeleteTimeManual,
|
||||||
}); err != nil {
|
}); err != nil {
|
||||||
|
|
|
@ -4,4 +4,4 @@
|
||||||
package v1_17 //nolint
|
package v1_17 //nolint
|
||||||
|
|
||||||
// This migration added non-ideal indices to the action table which on larger datasets slowed things down
|
// This migration added non-ideal indices to the action table which on larger datasets slowed things down
|
||||||
// it has been superceded by v218.go
|
// it has been superseded by v218.go
|
||||||
|
|
|
@ -184,7 +184,7 @@ func (ref RefName) RefGroup() string {
|
||||||
}
|
}
|
||||||
|
|
||||||
// RefType returns the simple ref type of the reference, e.g. branch, tag
|
// RefType returns the simple ref type of the reference, e.g. branch, tag
|
||||||
// It's differrent from RefGroup, which is using the name of the directory under .git/refs
|
// It's different from RefGroup, which is using the name of the directory under .git/refs
|
||||||
// Here we using branch but not heads, using tag but not tags
|
// Here we using branch but not heads, using tag but not tags
|
||||||
func (ref RefName) RefType() string {
|
func (ref RefName) RefType() string {
|
||||||
var refType string
|
var refType string
|
||||||
|
|
|
@ -134,7 +134,7 @@ func (pm *Manager) AddTypedContext(parent context.Context, description, processT
|
||||||
//
|
//
|
||||||
// Most processes will not need to use the cancel function but there will be cases whereby you want to cancel the process but not immediately remove it from the
|
// Most processes will not need to use the cancel function but there will be cases whereby you want to cancel the process but not immediately remove it from the
|
||||||
// process table.
|
// process table.
|
||||||
func (pm *Manager) AddContextTimeout(parent context.Context, timeout time.Duration, description string) (ctx context.Context, cancel context.CancelFunc, finshed FinishedFunc) {
|
func (pm *Manager) AddContextTimeout(parent context.Context, timeout time.Duration, description string) (ctx context.Context, cancel context.CancelFunc, finished FinishedFunc) {
|
||||||
if timeout <= 0 {
|
if timeout <= 0 {
|
||||||
// it's meaningless to use timeout <= 0, and it must be a bug! so we must panic here to tell developers to make the timeout correct
|
// it's meaningless to use timeout <= 0, and it must be a bug! so we must panic here to tell developers to make the timeout correct
|
||||||
panic("the timeout must be greater than zero, otherwise the context will be cancelled immediately")
|
panic("the timeout must be greater than zero, otherwise the context will be cancelled immediately")
|
||||||
|
@ -142,9 +142,9 @@ func (pm *Manager) AddContextTimeout(parent context.Context, timeout time.Durati
|
||||||
|
|
||||||
ctx, cancel = context.WithTimeout(parent, timeout)
|
ctx, cancel = context.WithTimeout(parent, timeout)
|
||||||
|
|
||||||
ctx, _, finshed = pm.Add(ctx, description, cancel, NormalProcessType, true)
|
ctx, _, finished = pm.Add(ctx, description, cancel, NormalProcessType, true)
|
||||||
|
|
||||||
return ctx, cancel, finshed
|
return ctx, cancel, finished
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add create a new process
|
// Add create a new process
|
||||||
|
|
|
@ -49,9 +49,9 @@ func TestSubjectBodySeparator(t *testing.T) {
|
||||||
test("Multiple\n---\n-------\n---\nSeparators",
|
test("Multiple\n---\n-------\n---\nSeparators",
|
||||||
"Multiple\n",
|
"Multiple\n",
|
||||||
"\n-------\n---\nSeparators")
|
"\n-------\n---\nSeparators")
|
||||||
test("Insuficient\n--\nSeparators",
|
test("Insufficient\n--\nSeparators",
|
||||||
"",
|
"",
|
||||||
"Insuficient\n--\nSeparators")
|
"Insufficient\n--\nSeparators")
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestJSEscapeSafe(t *testing.T) {
|
func TestJSEscapeSafe(t *testing.T) {
|
||||||
|
|
|
@ -436,6 +436,7 @@ oauth_signin_submit=Vincular conta
|
||||||
oauth.signin.error=Ocorreu um erro durante o processamento do pedido de autorização. Se este erro persistir, contacte o administrador.
|
oauth.signin.error=Ocorreu um erro durante o processamento do pedido de autorização. Se este erro persistir, contacte o administrador.
|
||||||
oauth.signin.error.access_denied=O pedido de autorização foi negado.
|
oauth.signin.error.access_denied=O pedido de autorização foi negado.
|
||||||
oauth.signin.error.temporarily_unavailable=A autorização falhou porque o servidor de autenticação está temporariamente indisponĂvel. Tente mais tarde.
|
oauth.signin.error.temporarily_unavailable=A autorização falhou porque o servidor de autenticação está temporariamente indisponĂvel. Tente mais tarde.
|
||||||
|
oauth_callback_unable_auto_reg=O registo automático está habilitado, mas o fornecedor OAuth2 %[1]s sinalizou campos em falta: %[2]s, por isso nĂŁo foi possĂvel criar uma conta automaticamente. Crie ou vincule uma conta ou contacte o administrador do sĂtio.
|
||||||
openid_connect_submit=Estabelecer ligação
|
openid_connect_submit=Estabelecer ligação
|
||||||
openid_connect_title=Estabelecer ligação a uma conta existente
|
openid_connect_title=Estabelecer ligação a uma conta existente
|
||||||
openid_connect_desc=O URI do OpenID escolhido Ă© desconhecido. Associe-o a uma nova conta aqui.
|
openid_connect_desc=O URI do OpenID escolhido Ă© desconhecido. Associe-o a uma nova conta aqui.
|
||||||
|
|
|
@ -301,7 +301,7 @@ func (ar artifactRoutes) uploadArtifact(ctx *ArtifactContext) {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
// comfirmUploadArtifact comfirm upload artifact.
|
// comfirmUploadArtifact confirm upload artifact.
|
||||||
// if all chunks are uploaded, merge them to one file.
|
// if all chunks are uploaded, merge them to one file.
|
||||||
func (ar artifactRoutes) comfirmUploadArtifact(ctx *ArtifactContext) {
|
func (ar artifactRoutes) comfirmUploadArtifact(ctx *ArtifactContext) {
|
||||||
_, runID, ok := validateRunID(ctx)
|
_, runID, ok := validateRunID(ctx)
|
||||||
|
|
|
@ -36,7 +36,7 @@ var withRunner = connect.WithInterceptors(connect.UnaryInterceptorFunc(func(unar
|
||||||
uuid := request.Header().Get(uuidHeaderKey)
|
uuid := request.Header().Get(uuidHeaderKey)
|
||||||
token := request.Header().Get(tokenHeaderKey)
|
token := request.Header().Get(tokenHeaderKey)
|
||||||
// TODO: version will be removed from request header after Gitea 1.20 released.
|
// TODO: version will be removed from request header after Gitea 1.20 released.
|
||||||
// And Gitea will not try to read version from reuqest header
|
// And Gitea will not try to read version from request header
|
||||||
version := request.Header().Get(versionHeaderKey)
|
version := request.Header().Get(versionHeaderKey)
|
||||||
|
|
||||||
runner, err := actions_model.GetRunnerByUUID(ctx, uuid)
|
runner, err := actions_model.GetRunnerByUUID(ctx, uuid)
|
||||||
|
@ -53,7 +53,7 @@ var withRunner = connect.WithInterceptors(connect.UnaryInterceptorFunc(func(unar
|
||||||
cols := []string{"last_online"}
|
cols := []string{"last_online"}
|
||||||
|
|
||||||
// TODO: version will be removed from request header after Gitea 1.20 released.
|
// TODO: version will be removed from request header after Gitea 1.20 released.
|
||||||
// And Gitea will not try to read version from reuqest header
|
// And Gitea will not try to read version from request header
|
||||||
version, _ = util.SplitStringAtByteN(version, 64)
|
version, _ = util.SplitStringAtByteN(version, 64)
|
||||||
if !util.IsEmptyString(version) && runner.Version != version {
|
if !util.IsEmptyString(version) && runner.Version != version {
|
||||||
runner.Version = version
|
runner.Version = version
|
||||||
|
|
|
@ -19,7 +19,7 @@ The package registry code is divided into multiple modules to split the function
|
||||||
|
|
||||||
## Models
|
## Models
|
||||||
|
|
||||||
Every package registry implementation uses the same underlaying models:
|
Every package registry implementation uses the same underlying models:
|
||||||
|
|
||||||
| Model | Description |
|
| Model | Description |
|
||||||
| - | - |
|
| - | - |
|
||||||
|
|
|
@ -12,7 +12,7 @@ import (
|
||||||
"code.gitea.io/gitea/services/context"
|
"code.gitea.io/gitea/services/context"
|
||||||
)
|
)
|
||||||
|
|
||||||
// RegistrationToken is response related to registeration token
|
// RegistrationToken is response related to registration token
|
||||||
// swagger:response RegistrationToken
|
// swagger:response RegistrationToken
|
||||||
type RegistrationToken struct {
|
type RegistrationToken struct {
|
||||||
Token string `json:"token"`
|
Token string `json:"token"`
|
||||||
|
|
|
@ -359,7 +359,7 @@ func preReceiveBranch(ctx *preReceiveContext, oldCommitID, newCommitID string, r
|
||||||
})
|
})
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
log.Error("Unable to check if mergable: protected branch %s in %-v and pr #%d. Error: %v", ctx.opts.UserID, branchName, repo, pr.Index, err)
|
log.Error("Unable to check if mergeable: protected branch %s in %-v and pr #%d. Error: %v", ctx.opts.UserID, branchName, repo, pr.Index, err)
|
||||||
ctx.JSON(http.StatusInternalServerError, private.Response{
|
ctx.JSON(http.StatusInternalServerError, private.Response{
|
||||||
Err: fmt.Sprintf("Unable to get status of pull request %d. Error: %v", ctx.opts.PullRequestID, err),
|
Err: fmt.Sprintf("Unable to get status of pull request %d. Error: %v", ctx.opts.PullRequestID, err),
|
||||||
})
|
})
|
||||||
|
|
|
@ -30,7 +30,7 @@ func Organizations(ctx *context.Context) {
|
||||||
explore.RenderUserSearch(ctx, &user_model.SearchUserOptions{
|
explore.RenderUserSearch(ctx, &user_model.SearchUserOptions{
|
||||||
Actor: ctx.Doer,
|
Actor: ctx.Doer,
|
||||||
Type: user_model.UserTypeOrganization,
|
Type: user_model.UserTypeOrganization,
|
||||||
IncludeReserved: true, // administrator needs to list all acounts include reserved
|
IncludeReserved: true, // administrator needs to list all accounts include reserved
|
||||||
ListOptions: db.ListOptions{
|
ListOptions: db.ListOptions{
|
||||||
PageSize: setting.UI.Admin.OrgPagingNum,
|
PageSize: setting.UI.Admin.OrgPagingNum,
|
||||||
},
|
},
|
||||||
|
|
|
@ -81,7 +81,7 @@ func Users(ctx *context.Context) {
|
||||||
IsRestricted: util.OptionalBoolParse(statusFilterMap["is_restricted"]),
|
IsRestricted: util.OptionalBoolParse(statusFilterMap["is_restricted"]),
|
||||||
IsTwoFactorEnabled: util.OptionalBoolParse(statusFilterMap["is_2fa_enabled"]),
|
IsTwoFactorEnabled: util.OptionalBoolParse(statusFilterMap["is_2fa_enabled"]),
|
||||||
IsProhibitLogin: util.OptionalBoolParse(statusFilterMap["is_prohibit_login"]),
|
IsProhibitLogin: util.OptionalBoolParse(statusFilterMap["is_prohibit_login"]),
|
||||||
IncludeReserved: true, // administrator needs to list all acounts include reserved, bot, remote ones
|
IncludeReserved: true, // administrator needs to list all accounts include reserved, bot, remote ones
|
||||||
ExtraParamStrings: extraParamStrings,
|
ExtraParamStrings: extraParamStrings,
|
||||||
}, tplUsers)
|
}, tplUsers)
|
||||||
}
|
}
|
||||||
|
|
|
@ -812,7 +812,7 @@ func CompareDiff(ctx *context.Context) {
|
||||||
// applicable if you have one commit to compare and that commit has a message.
|
// applicable if you have one commit to compare and that commit has a message.
|
||||||
// In that case the commit message will be prepend to the template body.
|
// In that case the commit message will be prepend to the template body.
|
||||||
if templateContent, ok := ctx.Data[pullRequestTemplateKey].(string); ok && templateContent != "" {
|
if templateContent, ok := ctx.Data[pullRequestTemplateKey].(string); ok && templateContent != "" {
|
||||||
// Re-use the same key as that's priortized over the "content" key.
|
// Re-use the same key as that's prioritized over the "content" key.
|
||||||
// Add two new lines between the content to ensure there's always at least
|
// Add two new lines between the content to ensure there's always at least
|
||||||
// one empty line between them.
|
// one empty line between them.
|
||||||
ctx.Data[pullRequestTemplateKey] = content + "\n\n" + templateContent
|
ctx.Data[pullRequestTemplateKey] = content + "\n\n" + templateContent
|
||||||
|
|
|
@ -1760,8 +1760,8 @@ func ViewIssue(ctx *context.Context) {
|
||||||
// drop error since times could be pruned from DB..
|
// drop error since times could be pruned from DB..
|
||||||
_ = comment.LoadTime(ctx)
|
_ = comment.LoadTime(ctx)
|
||||||
if comment.Content != "" {
|
if comment.Content != "" {
|
||||||
// Content before v1.21 did store the formated string instead of seconds,
|
// Content before v1.21 did store the formatted string instead of seconds,
|
||||||
// so "|" is used as delimeter to mark the new format
|
// so "|" is used as delimiter to mark the new format
|
||||||
if comment.Content[0] != '|' {
|
if comment.Content[0] != '|' {
|
||||||
// handle old time comments that have formatted text stored
|
// handle old time comments that have formatted text stored
|
||||||
comment.RenderedContent = templates.SanitizeHTML(comment.Content)
|
comment.RenderedContent = templates.SanitizeHTML(comment.Content)
|
||||||
|
|
|
@ -42,16 +42,13 @@ func (source *Source) Authenticate(ctx context.Context, user *user_model.User, u
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := Authenticate(auth, source); err != nil {
|
if err := Authenticate(auth, source); err != nil {
|
||||||
// Check standard error format first,
|
// when authentication via smtp fails, wraps ErrInvalidArgument
|
||||||
// then fallback to worse case.
|
// with the original textproto.Error as the cause,
|
||||||
tperr, ok := err.(*textproto.Error)
|
// so it will show username_password_incorrect to the user
|
||||||
if (ok && tperr.Code == 535) ||
|
// while log the original error so that admin can check.
|
||||||
strings.Contains(err.Error(), "Username and Password not accepted") {
|
// see: routers/web/auth/auth.go SiginPost
|
||||||
return nil, user_model.ErrUserNotExist{Name: userName}
|
if tperr, ok := err.(*textproto.Error); ok {
|
||||||
}
|
return nil, errors.Join(util.ErrInvalidArgument, tperr)
|
||||||
if (ok && tperr.Code == 534) ||
|
|
||||||
strings.Contains(err.Error(), "Application-specific password required") {
|
|
||||||
return nil, user_model.ErrUserNotExist{Name: userName}
|
|
||||||
}
|
}
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
|
@ -72,8 +72,8 @@ func ToTimelineComment(ctx context.Context, repo *repo_model.Repository, c *issu
|
||||||
c.Type == issues_model.CommentTypeStopTracking ||
|
c.Type == issues_model.CommentTypeStopTracking ||
|
||||||
c.Type == issues_model.CommentTypeDeleteTimeManual) &&
|
c.Type == issues_model.CommentTypeDeleteTimeManual) &&
|
||||||
c.Content[0] == '|' {
|
c.Content[0] == '|' {
|
||||||
// TimeTracking Comments from v1.21 on store the seconds instead of an formated string
|
// TimeTracking Comments from v1.21 on store the seconds instead of an formatted string
|
||||||
// so we check for the "|" delimeter and convert new to legacy format on demand
|
// so we check for the "|" delimiter and convert new to legacy format on demand
|
||||||
c.Content = util.SecToTime(c.Content[1:])
|
c.Content = util.SecToTime(c.Content[1:])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -229,12 +229,12 @@ func TeamReviewRequest(ctx context.Context, issue *issues_model.Issue, doer *use
|
||||||
return comment, teamReviewRequestNotify(ctx, issue, doer, reviewer, isAdd, comment)
|
return comment, teamReviewRequestNotify(ctx, issue, doer, reviewer, isAdd, comment)
|
||||||
}
|
}
|
||||||
|
|
||||||
func ReviewRequestNotify(ctx context.Context, issue *issues_model.Issue, doer *user_model.User, reviewNotifers []*ReviewRequestNotifier) {
|
func ReviewRequestNotify(ctx context.Context, issue *issues_model.Issue, doer *user_model.User, reviewNotifiers []*ReviewRequestNotifier) {
|
||||||
for _, reviewNotifer := range reviewNotifers {
|
for _, reviewNotifier := range reviewNotifiers {
|
||||||
if reviewNotifer.Reviwer != nil {
|
if reviewNotifier.Reviewer != nil {
|
||||||
notify_service.PullRequestReviewRequest(ctx, issue.Poster, issue, reviewNotifer.Reviwer, reviewNotifer.IsAdd, reviewNotifer.Comment)
|
notify_service.PullRequestReviewRequest(ctx, issue.Poster, issue, reviewNotifier.Reviewer, reviewNotifier.IsAdd, reviewNotifier.Comment)
|
||||||
} else if reviewNotifer.ReviewTeam != nil {
|
} else if reviewNotifier.ReviewTeam != nil {
|
||||||
if err := teamReviewRequestNotify(ctx, issue, issue.Poster, reviewNotifer.ReviewTeam, reviewNotifer.IsAdd, reviewNotifer.Comment); err != nil {
|
if err := teamReviewRequestNotify(ctx, issue, issue.Poster, reviewNotifier.ReviewTeam, reviewNotifier.IsAdd, reviewNotifier.Comment); err != nil {
|
||||||
log.Error("teamReviewRequestNotify: %v", err)
|
log.Error("teamReviewRequestNotify: %v", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -90,17 +90,17 @@ func ChangeTitle(ctx context.Context, issue *issues_model.Issue, doer *user_mode
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
var reviewNotifers []*ReviewRequestNotifier
|
var reviewNotifiers []*ReviewRequestNotifier
|
||||||
if issue.IsPull && issues_model.HasWorkInProgressPrefix(oldTitle) && !issues_model.HasWorkInProgressPrefix(title) {
|
if issue.IsPull && issues_model.HasWorkInProgressPrefix(oldTitle) && !issues_model.HasWorkInProgressPrefix(title) {
|
||||||
var err error
|
var err error
|
||||||
reviewNotifers, err = PullRequestCodeOwnersReview(ctx, issue, issue.PullRequest)
|
reviewNotifiers, err = PullRequestCodeOwnersReview(ctx, issue, issue.PullRequest)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Error("PullRequestCodeOwnersReview: %v", err)
|
log.Error("PullRequestCodeOwnersReview: %v", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
notify_service.IssueChangeTitle(ctx, doer, issue, oldTitle)
|
notify_service.IssueChangeTitle(ctx, doer, issue, oldTitle)
|
||||||
ReviewRequestNotify(ctx, issue, issue.Poster, reviewNotifers)
|
ReviewRequestNotify(ctx, issue, issue.Poster, reviewNotifiers)
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
|
@ -36,7 +36,7 @@ func getMergeBase(repo *git.Repository, pr *issues_model.PullRequest, baseBranch
|
||||||
type ReviewRequestNotifier struct {
|
type ReviewRequestNotifier struct {
|
||||||
Comment *issues_model.Comment
|
Comment *issues_model.Comment
|
||||||
IsAdd bool
|
IsAdd bool
|
||||||
Reviwer *user_model.User
|
Reviewer *user_model.User
|
||||||
ReviewTeam *org_model.Team
|
ReviewTeam *org_model.Team
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -124,9 +124,9 @@ func PullRequestCodeOwnersReview(ctx context.Context, issue *issues_model.Issue,
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
notifiers = append(notifiers, &ReviewRequestNotifier{
|
notifiers = append(notifiers, &ReviewRequestNotifier{
|
||||||
Comment: comment,
|
Comment: comment,
|
||||||
IsAdd: true,
|
IsAdd: true,
|
||||||
Reviwer: u,
|
Reviewer: u,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,11 +20,11 @@ import (
|
||||||
|
|
||||||
// DeleteOrganization completely and permanently deletes everything of organization.
|
// DeleteOrganization completely and permanently deletes everything of organization.
|
||||||
func DeleteOrganization(ctx context.Context, org *org_model.Organization, purge bool) error {
|
func DeleteOrganization(ctx context.Context, org *org_model.Organization, purge bool) error {
|
||||||
ctx, commiter, err := db.TxContext(ctx)
|
ctx, committer, err := db.TxContext(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
defer commiter.Close()
|
defer committer.Close()
|
||||||
|
|
||||||
if purge {
|
if purge {
|
||||||
err := repo_service.DeleteOwnerRepositoriesDirectly(ctx, org.AsUser())
|
err := repo_service.DeleteOwnerRepositoriesDirectly(ctx, org.AsUser())
|
||||||
|
@ -52,7 +52,7 @@ func DeleteOrganization(ctx context.Context, org *org_model.Organization, purge
|
||||||
return fmt.Errorf("DeleteOrganization: %w", err)
|
return fmt.Errorf("DeleteOrganization: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := commiter.Commit(); err != nil {
|
if err := committer.Commit(); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -66,7 +66,7 @@ const (
|
||||||
MergeCheckTypeAuto // Auto Merge (Scheduled Merge) After Checks Succeed
|
MergeCheckTypeAuto // Auto Merge (Scheduled Merge) After Checks Succeed
|
||||||
)
|
)
|
||||||
|
|
||||||
// CheckPullMergable check if the pull mergable based on all conditions (branch protection, merge options, ...)
|
// CheckPullMergable check if the pull mergeable based on all conditions (branch protection, merge options, ...)
|
||||||
func CheckPullMergable(stdCtx context.Context, doer *user_model.User, perm *access_model.Permission, pr *issues_model.PullRequest, mergeCheckType MergeCheckType, adminSkipProtectionCheck bool) error {
|
func CheckPullMergable(stdCtx context.Context, doer *user_model.User, perm *access_model.Permission, pr *issues_model.PullRequest, mergeCheckType MergeCheckType, adminSkipProtectionCheck bool) error {
|
||||||
return db.WithTx(stdCtx, func(ctx context.Context) error {
|
return db.WithTx(stdCtx, func(ctx context.Context) error {
|
||||||
if pr.HasMerged {
|
if pr.HasMerged {
|
||||||
|
|
|
@ -46,7 +46,7 @@ func getCommitIDsFromRepo(ctx context.Context, repo *repo_model.Repository, oldC
|
||||||
return commitIDs, isForcePush, err
|
return commitIDs, isForcePush, err
|
||||||
}
|
}
|
||||||
|
|
||||||
// Find commits between new and old commit exclusing base branch commits
|
// Find commits between new and old commit excluding base branch commits
|
||||||
commits, err := gitRepo.CommitsBetweenNotBase(newCommit, oldCommit, baseBranch)
|
commits, err := gitRepo.CommitsBetweenNotBase(newCommit, oldCommit, baseBranch)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, false, err
|
return nil, false, err
|
||||||
|
|
|
@ -77,7 +77,7 @@ func NewPullRequest(ctx context.Context, repo *repo_model.Repository, issue *iss
|
||||||
}
|
}
|
||||||
defer baseGitRepo.Close()
|
defer baseGitRepo.Close()
|
||||||
|
|
||||||
var reviewNotifers []*issue_service.ReviewRequestNotifier
|
var reviewNotifiers []*issue_service.ReviewRequestNotifier
|
||||||
if err := db.WithTx(ctx, func(ctx context.Context) error {
|
if err := db.WithTx(ctx, func(ctx context.Context) error {
|
||||||
if err := issues_model.NewPullRequest(ctx, repo, issue, labelIDs, uuids, pr); err != nil {
|
if err := issues_model.NewPullRequest(ctx, repo, issue, labelIDs, uuids, pr); err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -137,7 +137,7 @@ func NewPullRequest(ctx context.Context, repo *repo_model.Repository, issue *iss
|
||||||
}
|
}
|
||||||
|
|
||||||
if !pr.IsWorkInProgress(ctx) {
|
if !pr.IsWorkInProgress(ctx) {
|
||||||
reviewNotifers, err = issue_service.PullRequestCodeOwnersReview(ctx, issue, pr)
|
reviewNotifiers, err = issue_service.PullRequestCodeOwnersReview(ctx, issue, pr)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -152,7 +152,7 @@ func NewPullRequest(ctx context.Context, repo *repo_model.Repository, issue *iss
|
||||||
}
|
}
|
||||||
baseGitRepo.Close() // close immediately to avoid notifications will open the repository again
|
baseGitRepo.Close() // close immediately to avoid notifications will open the repository again
|
||||||
|
|
||||||
issue_service.ReviewRequestNotify(ctx, issue, issue.Poster, reviewNotifers)
|
issue_service.ReviewRequestNotify(ctx, issue, issue.Poster, reviewNotifiers)
|
||||||
|
|
||||||
mentions, err := issues_model.FindAndUpdateIssueMentions(ctx, issue, issue.Poster, issue.Content)
|
mentions, err := issues_model.FindAndUpdateIssueMentions(ctx, issue, issue.Poster, issue.Content)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{{if $.IsSplitStyle}}
|
{{if $.IsSplitStyle}}
|
||||||
{{range $k, $line := $.section.Lines}}
|
{{range $k, $line := $.section.Lines}}
|
||||||
<tr class="{{.GetHTMLDiffLineType}}-code nl-{{$k}} ol-{{$k}}">
|
<tr class="{{.GetHTMLDiffLineType}}-code nl-{{$k}} ol-{{$k}} line-expanded">
|
||||||
{{if eq .GetType 4}}
|
{{if eq .GetType 4}}
|
||||||
<td class="lines-num lines-num-old" data-line-num="{{if $line.LeftIdx}}{{$line.LeftIdx}}{{end}}">
|
<td class="lines-num lines-num-old" data-line-num="{{if $line.LeftIdx}}{{$line.LeftIdx}}{{end}}">
|
||||||
<div class="tw-flex">
|
<div class="tw-flex">
|
||||||
|
@ -26,17 +26,17 @@
|
||||||
{{else}}
|
{{else}}
|
||||||
{{$inlineDiff := $.section.GetComputedInlineDiffFor $line ctx.Locale}}
|
{{$inlineDiff := $.section.GetComputedInlineDiffFor $line ctx.Locale}}
|
||||||
<td class="lines-num lines-num-old" data-line-num="{{if $line.LeftIdx}}{{$line.LeftIdx}}{{end}}"><span rel="{{if $line.LeftIdx}}diff-{{$.FileNameHash}}L{{$line.LeftIdx}}{{end}}"></span></td>
|
<td class="lines-num lines-num-old" data-line-num="{{if $line.LeftIdx}}{{$line.LeftIdx}}{{end}}"><span rel="{{if $line.LeftIdx}}diff-{{$.FileNameHash}}L{{$line.LeftIdx}}{{end}}"></span></td>
|
||||||
<td class="blob-excerpt lines-escape lines-escape-old">{{if and $line.LeftIdx $inlineDiff.EscapeStatus.Escaped}}<button class="toggle-escape-button btn interact-bg" title="{{template "repo/diff/escape_title" dict "diff" $inlineDiff}}"></button>{{end}}</td>
|
<td class="lines-escape lines-escape-old">{{if and $line.LeftIdx $inlineDiff.EscapeStatus.Escaped}}<button class="toggle-escape-button btn interact-bg" title="{{template "repo/diff/escape_title" dict "diff" $inlineDiff}}"></button>{{end}}</td>
|
||||||
<td class="blob-excerpt lines-type-marker lines-type-marker-old">{{if $line.LeftIdx}}<span class="tw-font-mono" data-type-marker=""></span>{{end}}</td>
|
<td class="lines-type-marker lines-type-marker-old">{{if $line.LeftIdx}}<span class="tw-font-mono" data-type-marker=""></span>{{end}}</td>
|
||||||
<td class="blob-excerpt lines-code lines-code-old">{{/*
|
<td class="lines-code lines-code-old">{{/*
|
||||||
*/}}{{if $line.LeftIdx}}{{template "repo/diff/section_code" dict "diff" $inlineDiff}}{{else}}{{/*
|
*/}}{{if $line.LeftIdx}}{{template "repo/diff/section_code" dict "diff" $inlineDiff}}{{else}}{{/*
|
||||||
*/}}<code class="code-inner"></code>{{/*
|
*/}}<code class="code-inner"></code>{{/*
|
||||||
*/}}{{end}}{{/*
|
*/}}{{end}}{{/*
|
||||||
*/}}</td>
|
*/}}</td>
|
||||||
<td class="lines-num lines-num-new" data-line-num="{{if $line.RightIdx}}{{$line.RightIdx}}{{end}}"><span rel="{{if $line.RightIdx}}diff-{{$.FileNameHash}}R{{$line.RightIdx}}{{end}}"></span></td>
|
<td class="lines-num lines-num-new" data-line-num="{{if $line.RightIdx}}{{$line.RightIdx}}{{end}}"><span rel="{{if $line.RightIdx}}diff-{{$.FileNameHash}}R{{$line.RightIdx}}{{end}}"></span></td>
|
||||||
<td class="blob-excerpt lines-escape lines-escape-new">{{if and $line.RightIdx $inlineDiff.EscapeStatus.Escaped}}<button class="toggle-escape-button btn interact-bg" title="{{template "repo/diff/escape_title" dict "diff" $inlineDiff}}"></button>{{end}}</td>
|
<td class="lines-escape lines-escape-new">{{if and $line.RightIdx $inlineDiff.EscapeStatus.Escaped}}<button class="toggle-escape-button btn interact-bg" title="{{template "repo/diff/escape_title" dict "diff" $inlineDiff}}"></button>{{end}}</td>
|
||||||
<td class="blob-excerpt lines-type-marker lines-type-marker-new">{{if $line.RightIdx}}<span class="tw-font-mono" data-type-marker=""></span>{{end}}</td>
|
<td class="lines-type-marker lines-type-marker-new">{{if $line.RightIdx}}<span class="tw-font-mono" data-type-marker=""></span>{{end}}</td>
|
||||||
<td class="blob-excerpt lines-code lines-code-new">{{/*
|
<td class="lines-code lines-code-new">{{/*
|
||||||
*/}}{{if $line.RightIdx}}{{template "repo/diff/section_code" dict "diff" $inlineDiff}}{{else}}{{/*
|
*/}}{{if $line.RightIdx}}{{template "repo/diff/section_code" dict "diff" $inlineDiff}}{{else}}{{/*
|
||||||
*/}}<code class="code-inner"></code>{{/*
|
*/}}<code class="code-inner"></code>{{/*
|
||||||
*/}}{{end}}{{/*
|
*/}}{{end}}{{/*
|
||||||
|
@ -46,7 +46,7 @@
|
||||||
{{end}}
|
{{end}}
|
||||||
{{else}}
|
{{else}}
|
||||||
{{range $k, $line := $.section.Lines}}
|
{{range $k, $line := $.section.Lines}}
|
||||||
<tr class="{{.GetHTMLDiffLineType}}-code nl-{{$k}} ol-{{$k}}">
|
<tr class="{{.GetHTMLDiffLineType}}-code nl-{{$k}} ol-{{$k}} line-expanded">
|
||||||
{{if eq .GetType 4}}
|
{{if eq .GetType 4}}
|
||||||
<td colspan="2" class="lines-num">
|
<td colspan="2" class="lines-num">
|
||||||
<div class="tw-flex">
|
<div class="tw-flex">
|
||||||
|
@ -72,9 +72,9 @@
|
||||||
<td class="lines-num lines-num-new" data-line-num="{{if $line.RightIdx}}{{$line.RightIdx}}{{end}}"><span rel="{{if $line.RightIdx}}diff-{{$.FileNameHash}}R{{$line.RightIdx}}{{end}}"></span></td>
|
<td class="lines-num lines-num-new" data-line-num="{{if $line.RightIdx}}{{$line.RightIdx}}{{end}}"><span rel="{{if $line.RightIdx}}diff-{{$.FileNameHash}}R{{$line.RightIdx}}{{end}}"></span></td>
|
||||||
{{end}}
|
{{end}}
|
||||||
{{$inlineDiff := $.section.GetComputedInlineDiffFor $line ctx.Locale}}
|
{{$inlineDiff := $.section.GetComputedInlineDiffFor $line ctx.Locale}}
|
||||||
<td class="blob-excerpt lines-escape">{{if $inlineDiff.EscapeStatus.Escaped}}<button class="toggle-escape-button btn interact-bg" title="{{template "repo/diff/escape_title" dict "diff" $inlineDiff}}"></button>{{end}}</td>
|
<td class="lines-escape">{{if $inlineDiff.EscapeStatus.Escaped}}<button class="toggle-escape-button btn interact-bg" title="{{template "repo/diff/escape_title" dict "diff" $inlineDiff}}"></button>{{end}}</td>
|
||||||
<td class="blob-excerpt lines-type-marker"><span class="tw-font-mono" data-type-marker="{{$line.GetLineTypeMarker}}"></span></td>
|
<td class="lines-type-marker"><span class="tw-font-mono" data-type-marker="{{$line.GetLineTypeMarker}}"></span></td>
|
||||||
<td class="blob-excerpt lines-code{{if (not $line.RightIdx)}} lines-code-old{{end}}"><code {{if $inlineDiff.EscapeStatus.Escaped}}class="code-inner has-escaped" title="{{template "repo/diff/escape_title" dict "diff" $inlineDiff}}"{{else}}class="code-inner"{{end}}>{{$inlineDiff.Content}}</code></td>
|
<td class="lines-code{{if (not $line.RightIdx)}} lines-code-old{{end}}"><code {{if $inlineDiff.EscapeStatus.Escaped}}class="code-inner has-escaped" title="{{template "repo/diff/escape_title" dict "diff" $inlineDiff}}"{{else}}class="code-inner"{{end}}>{{$inlineDiff.Content}}</code></td>
|
||||||
</tr>
|
</tr>
|
||||||
{{end}}
|
{{end}}
|
||||||
{{end}}
|
{{end}}
|
||||||
|
|
|
@ -25282,7 +25282,7 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"RegistrationToken": {
|
"RegistrationToken": {
|
||||||
"description": "RegistrationToken is response related to registeration token",
|
"description": "RegistrationToken is response related to registration token",
|
||||||
"headers": {
|
"headers": {
|
||||||
"token": {
|
"token": {
|
||||||
"type": "string"
|
"type": "string"
|
||||||
|
|
|
@ -119,9 +119,9 @@ func TestAPIRepoIssueConfigPaths(t *testing.T) {
|
||||||
".github/issue_template/config",
|
".github/issue_template/config",
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, canidate := range templateConfigCandidates {
|
for _, candidate := range templateConfigCandidates {
|
||||||
for _, extension := range []string{".yaml", ".yml"} {
|
for _, extension := range []string{".yaml", ".yml"} {
|
||||||
fullPath := canidate + extension
|
fullPath := candidate + extension
|
||||||
t.Run(fullPath, func(t *testing.T) {
|
t.Run(fullPath, func(t *testing.T) {
|
||||||
configMap := make(map[string]any)
|
configMap := make(map[string]any)
|
||||||
configMap["blank_issues_enabled"] = false
|
configMap["blank_issues_enabled"] = false
|
||||||
|
|
|
@ -67,7 +67,7 @@ func TestCompareBranches(t *testing.T) {
|
||||||
|
|
||||||
session := loginUser(t, "user2")
|
session := loginUser(t, "user2")
|
||||||
|
|
||||||
// Inderect compare remove-files-b (head) with add-csv (base) branch
|
// Indirect compare remove-files-b (head) with add-csv (base) branch
|
||||||
//
|
//
|
||||||
// 'link_hi' and 'test.csv' are deleted, 'test.txt' is added
|
// 'link_hi' and 'test.csv' are deleted, 'test.txt' is added
|
||||||
req := NewRequest(t, "GET", "/user2/repo20/compare/add-csv...remove-files-b")
|
req := NewRequest(t, "GET", "/user2/repo20/compare/add-csv...remove-files-b")
|
||||||
|
@ -79,7 +79,7 @@ func TestCompareBranches(t *testing.T) {
|
||||||
|
|
||||||
inspectCompare(t, htmlDoc, diffCount, diffChanges)
|
inspectCompare(t, htmlDoc, diffCount, diffChanges)
|
||||||
|
|
||||||
// Inderect compare remove-files-b (head) with remove-files-a (base) branch
|
// Indirect compare remove-files-b (head) with remove-files-a (base) branch
|
||||||
//
|
//
|
||||||
// 'link_hi' and 'test.csv' are deleted, 'test.txt' is added
|
// 'link_hi' and 'test.csv' are deleted, 'test.txt' is added
|
||||||
|
|
||||||
|
@ -92,7 +92,7 @@ func TestCompareBranches(t *testing.T) {
|
||||||
|
|
||||||
inspectCompare(t, htmlDoc, diffCount, diffChanges)
|
inspectCompare(t, htmlDoc, diffCount, diffChanges)
|
||||||
|
|
||||||
// Inderect compare remove-files-a (head) with remove-files-b (base) branch
|
// Indirect compare remove-files-a (head) with remove-files-b (base) branch
|
||||||
//
|
//
|
||||||
// 'link_hi' and 'test.csv' are deleted
|
// 'link_hi' and 'test.csv' are deleted
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,21 @@
|
||||||
|
acounts,accounts
|
||||||
|
canidate,candidate
|
||||||
|
comfirm,confirm
|
||||||
|
converage,coverage
|
||||||
|
currrently,currently
|
||||||
|
delimeter,delimiter
|
||||||
|
differrent,different
|
||||||
|
exclusing,excluding
|
||||||
|
finshed,finished
|
||||||
|
formated,formatted
|
||||||
|
inderect,indirect
|
||||||
|
insuficient,insufficient
|
||||||
|
likly,likely
|
||||||
|
mergable,mergeable
|
||||||
|
overrided,overridden
|
||||||
|
priortized,prioritized
|
||||||
|
registeration,registration
|
||||||
|
reuqest,request
|
||||||
|
reviwer,reviewer
|
||||||
|
superceded,superseded
|
||||||
|
underlaying,underlying
|
|
|
@ -2377,7 +2377,7 @@ tbody.commit-list {
|
||||||
|
|
||||||
.tag-code,
|
.tag-code,
|
||||||
.tag-code td,
|
.tag-code td,
|
||||||
.tag-code .blob-excerpt {
|
.tag-code.line-expanded {
|
||||||
background-color: var(--color-box-body-highlight);
|
background-color: var(--color-box-body-highlight);
|
||||||
vertical-align: middle;
|
vertical-align: middle;
|
||||||
}
|
}
|
||||||
|
@ -2393,8 +2393,8 @@ tbody.commit-list {
|
||||||
padding-top: 0 !important;
|
padding-top: 0 !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
.blob-excerpt {
|
.line-expanded {
|
||||||
background-color: var(--color-secondary-alpha-30);
|
background-color: var(--color-secondary-alpha-20);
|
||||||
}
|
}
|
||||||
|
|
||||||
.issue-keyword {
|
.issue-keyword {
|
||||||
|
@ -2553,11 +2553,9 @@ tbody.commit-list {
|
||||||
|
|
||||||
.code-diff-unified .add-code,
|
.code-diff-unified .add-code,
|
||||||
.code-diff-unified .add-code td,
|
.code-diff-unified .add-code td,
|
||||||
.code-diff-split .add-code .lines-num-new,
|
|
||||||
.code-diff-split .add-code .lines-type-marker-new,
|
.code-diff-split .add-code .lines-type-marker-new,
|
||||||
.code-diff-split .add-code .lines-escape-new,
|
.code-diff-split .add-code .lines-escape-new,
|
||||||
.code-diff-split .add-code .lines-code-new,
|
.code-diff-split .add-code .lines-code-new,
|
||||||
.code-diff-split .del-code .add-code.lines-num-new,
|
|
||||||
.code-diff-split .del-code .add-code.lines-type-marker-new,
|
.code-diff-split .del-code .add-code.lines-type-marker-new,
|
||||||
.code-diff-split .del-code .add-code.lines-escape-new,
|
.code-diff-split .del-code .add-code.lines-escape-new,
|
||||||
.code-diff-split .del-code .add-code.lines-code-new {
|
.code-diff-split .del-code .add-code.lines-code-new {
|
||||||
|
@ -2565,17 +2563,33 @@ tbody.commit-list {
|
||||||
border-color: var(--color-diff-added-row-border);
|
border-color: var(--color-diff-added-row-border);
|
||||||
}
|
}
|
||||||
|
|
||||||
.code-diff-split .del-code .lines-num-new,
|
|
||||||
.code-diff-split .del-code .lines-type-marker-new,
|
.code-diff-split .del-code .lines-type-marker-new,
|
||||||
.code-diff-split .del-code .lines-code-new,
|
.code-diff-split .del-code .lines-code-new,
|
||||||
.code-diff-split .del-code .lines-escape-new,
|
.code-diff-split .del-code .lines-escape-new,
|
||||||
.code-diff-split .add-code .lines-num-old,
|
|
||||||
.code-diff-split .add-code .lines-escape-old,
|
.code-diff-split .add-code .lines-escape-old,
|
||||||
.code-diff-split .add-code .lines-type-marker-old,
|
.code-diff-split .add-code .lines-type-marker-old,
|
||||||
.code-diff-split .add-code .lines-code-old {
|
.code-diff-split .add-code .lines-code-old {
|
||||||
background: var(--color-diff-inactive);
|
background: var(--color-diff-inactive);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.code-diff-split .add-code .lines-num.lines-num-old,
|
||||||
|
.code-diff-split .del-code .lines-num.lines-num-new {
|
||||||
|
background: var(--color-diff-inactive);
|
||||||
|
}
|
||||||
|
|
||||||
|
.code-diff-unified .del-code .lines-num,
|
||||||
|
.code-diff-split .del-code .lines-num {
|
||||||
|
background: var(--color-diff-removed-linenum-bg);
|
||||||
|
color: var(--color-text);
|
||||||
|
}
|
||||||
|
|
||||||
|
.code-diff-unified .add-code .lines-num,
|
||||||
|
.code-diff-split .add-code .lines-num,
|
||||||
|
.code-diff-split .del-code .add-code.lines-num {
|
||||||
|
background: var(--color-diff-added-linenum-bg);
|
||||||
|
color: var(--color-text);
|
||||||
|
}
|
||||||
|
|
||||||
.code-diff-split tbody tr td:nth-child(5),
|
.code-diff-split tbody tr td:nth-child(5),
|
||||||
.code-diff-split tbody tr td.add-comment-right {
|
.code-diff-split tbody tr td.add-comment-right {
|
||||||
border-left: 1px solid var(--color-secondary);
|
border-left: 1px solid var(--color-secondary);
|
||||||
|
|
|
@ -3,9 +3,10 @@
|
||||||
/* red/green colorblind-friendly colors */
|
/* red/green colorblind-friendly colors */
|
||||||
/* from GitHub: --diffBlob-addition-*, --diffBlob-deletion-*, etc */
|
/* from GitHub: --diffBlob-addition-*, --diffBlob-deletion-*, etc */
|
||||||
:root {
|
:root {
|
||||||
--color-diff-added-word-bg: #388bfd66;
|
--color-diff-added-linenum-bg: #1979fd46;
|
||||||
--color-diff-added-row-bg: #388bfd26;
|
--color-diff-added-row-bg: #1979fd20;
|
||||||
|
--color-diff-added-word-bg: #1979fd66;
|
||||||
--color-diff-removed-word-bg: #db6d2866;
|
--color-diff-removed-linenum-bg: #c8622146;
|
||||||
--color-diff-removed-row-bg: #db6d2826;
|
--color-diff-removed-row-bg: #c8622120;
|
||||||
|
--color-diff-removed-word-bg: #c8622166;
|
||||||
}
|
}
|
||||||
|
|
|
@ -143,14 +143,16 @@
|
||||||
--color-grey-light: #818f9e;
|
--color-grey-light: #818f9e;
|
||||||
--color-gold: #b1983b;
|
--color-gold: #b1983b;
|
||||||
--color-white: #ffffff;
|
--color-white: #ffffff;
|
||||||
--color-diff-removed-word-bg: #6f3333;
|
--color-diff-added-linenum-bg: #274227;
|
||||||
--color-diff-added-word-bg: #3c653c;
|
--color-diff-added-row-bg: #203224;
|
||||||
--color-diff-removed-row-bg: #3c2626;
|
|
||||||
--color-diff-moved-row-bg: #818044;
|
|
||||||
--color-diff-added-row-bg: #283e2d;
|
|
||||||
--color-diff-removed-row-border: #634343;
|
|
||||||
--color-diff-moved-row-border: #bcca6f;
|
|
||||||
--color-diff-added-row-border: #314a37;
|
--color-diff-added-row-border: #314a37;
|
||||||
|
--color-diff-added-word-bg: #3c653c;
|
||||||
|
--color-diff-moved-row-bg: #818044;
|
||||||
|
--color-diff-moved-row-border: #bcca6f;
|
||||||
|
--color-diff-removed-linenum-bg: #482121;
|
||||||
|
--color-diff-removed-row-bg: #301e1e;
|
||||||
|
--color-diff-removed-row-border: #634343;
|
||||||
|
--color-diff-removed-word-bg: #6f3333;
|
||||||
--color-diff-inactive: #22282d;
|
--color-diff-inactive: #22282d;
|
||||||
--color-error-border: #a04141;
|
--color-error-border: #a04141;
|
||||||
--color-error-bg: #522;
|
--color-error-bg: #522;
|
||||||
|
|
|
@ -3,9 +3,10 @@
|
||||||
/* red/green colorblind-friendly colors */
|
/* red/green colorblind-friendly colors */
|
||||||
/* from GitHub: --diffBlob-addition-*, --diffBlob-deletion-*, etc */
|
/* from GitHub: --diffBlob-addition-*, --diffBlob-deletion-*, etc */
|
||||||
:root {
|
:root {
|
||||||
--color-diff-added-word-bg: #54aeff66;
|
--color-diff-added-linenum-bg: #54aeff4d;
|
||||||
--color-diff-added-row-bg: #ddf4ff80;
|
--color-diff-added-row-bg: #ddf4ff80;
|
||||||
|
--color-diff-added-word-bg: #54aeff66;
|
||||||
--color-diff-removed-word-bg: #ffb77c80;
|
--color-diff-removed-linenum-bg: #ffb77c4d;
|
||||||
--color-diff-removed-row-bg: #fff1e580;
|
--color-diff-removed-row-bg: #fff1e580;
|
||||||
|
--color-diff-removed-word-bg: #ffb77c80;
|
||||||
}
|
}
|
||||||
|
|
|
@ -143,14 +143,16 @@
|
||||||
--color-grey-light: #7c838a;
|
--color-grey-light: #7c838a;
|
||||||
--color-gold: #a1882b;
|
--color-gold: #a1882b;
|
||||||
--color-white: #ffffff;
|
--color-white: #ffffff;
|
||||||
--color-diff-removed-word-bg: #fdb8c0;
|
--color-diff-added-linenum-bg: #d1f8d9;
|
||||||
--color-diff-added-word-bg: #acf2bd;
|
|
||||||
--color-diff-removed-row-bg: #ffeef0;
|
|
||||||
--color-diff-moved-row-bg: #f1f8d1;
|
|
||||||
--color-diff-added-row-bg: #e6ffed;
|
--color-diff-added-row-bg: #e6ffed;
|
||||||
--color-diff-removed-row-border: #f1c0c0;
|
|
||||||
--color-diff-moved-row-border: #d0e27f;
|
|
||||||
--color-diff-added-row-border: #e6ffed;
|
--color-diff-added-row-border: #e6ffed;
|
||||||
|
--color-diff-added-word-bg: #acf2bd;
|
||||||
|
--color-diff-moved-row-bg: #f1f8d1;
|
||||||
|
--color-diff-moved-row-border: #d0e27f;
|
||||||
|
--color-diff-removed-linenum-bg: #ffcecb;
|
||||||
|
--color-diff-removed-row-bg: #ffeef0;
|
||||||
|
--color-diff-removed-row-border: #f1c0c0;
|
||||||
|
--color-diff-removed-word-bg: #fdb8c0;
|
||||||
--color-diff-inactive: #f0f2f4;
|
--color-diff-inactive: #f0f2f4;
|
||||||
--color-error-border: #e0b4b4;
|
--color-error-border: #e0b4b4;
|
||||||
--color-error-bg: #fff6f6;
|
--color-error-bg: #fff6f6;
|
||||||
|
|
|
@ -50,7 +50,7 @@ function processWindowErrorEvent({error, reason, message, type, filename, lineno
|
||||||
const assetBaseUrl = String(new URL(__webpack_public_path__, window.location.origin));
|
const assetBaseUrl = String(new URL(__webpack_public_path__, window.location.origin));
|
||||||
const {runModeIsProd} = window.config ?? {};
|
const {runModeIsProd} = window.config ?? {};
|
||||||
|
|
||||||
// `error` and `reason` are not guaranteed to be errors. If the value is falsy, it is likly a
|
// `error` and `reason` are not guaranteed to be errors. If the value is falsy, it is likely a
|
||||||
// non-critical event from the browser. We log them but don't show them to users. Examples:
|
// non-critical event from the browser. We log them but don't show them to users. Examples:
|
||||||
// - https://developer.mozilla.org/en-US/docs/Web/API/ResizeObserver#observation_errors
|
// - https://developer.mozilla.org/en-US/docs/Web/API/ResizeObserver#observation_errors
|
||||||
// - https://github.com/mozilla-mobile/firefox-ios/issues/10817
|
// - https://github.com/mozilla-mobile/firefox-ios/issues/10817
|
||||||
|
|
Loading…
Reference in New Issue