mirror of
https://github.com/go-gitea/gitea.git
synced 2025-12-10 21:54:58 +01:00
Merge branch 'main' into lunny/fix_delete_code_comment
This commit is contained in:
commit
e54ed8d04c
2
go.mod
2
go.mod
@ -107,7 +107,7 @@ require (
|
||||
github.com/stretchr/testify v1.10.0
|
||||
github.com/syndtr/goleveldb v1.0.0
|
||||
github.com/tstranex/u2f v1.0.0
|
||||
github.com/ulikunitz/xz v0.5.12
|
||||
github.com/ulikunitz/xz v0.5.15
|
||||
github.com/urfave/cli-docs/v3 v3.0.0-alpha6
|
||||
github.com/urfave/cli/v3 v3.3.3
|
||||
github.com/wneessen/go-mail v0.6.2
|
||||
|
||||
4
go.sum
4
go.sum
@ -684,8 +684,8 @@ github.com/tstranex/u2f v1.0.0/go.mod h1:eahSLaqAS0zsIEv80+vXT7WanXs7MQQDg3j3wGB
|
||||
github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0=
|
||||
github.com/ulikunitz/xz v0.5.8/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14=
|
||||
github.com/ulikunitz/xz v0.5.9/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14=
|
||||
github.com/ulikunitz/xz v0.5.12 h1:37Nm15o69RwBkXM0J6A5OlE67RZTfzUxTj8fB3dfcsc=
|
||||
github.com/ulikunitz/xz v0.5.12/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14=
|
||||
github.com/ulikunitz/xz v0.5.15 h1:9DNdB5s+SgV3bQ2ApL10xRc35ck0DuIX/isZvIk+ubY=
|
||||
github.com/ulikunitz/xz v0.5.15/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14=
|
||||
github.com/unknwon/com v1.0.1 h1:3d1LTxD+Lnf3soQiD4Cp/0BRB+Rsa/+RTvz8GMMzIXs=
|
||||
github.com/unknwon/com v1.0.1/go.mod h1:tOOxU81rwgoCLoOVVPHb6T/wt8HZygqH5id+GNnlCXM=
|
||||
github.com/urfave/cli-docs/v3 v3.0.0-alpha6 h1:w/l/N0xw1rO/aHRIGXJ0lDwwYFOzilup1qGvIytP3BI=
|
||||
|
||||
@ -86,7 +86,7 @@ func RegenerateSession(ctx context.Context, oldKey, newKey string) (*Session, er
|
||||
}
|
||||
}
|
||||
|
||||
if _, err := db.Exec(ctx, "UPDATE "+db.TableName(&Session{})+" SET `key` = ? WHERE `key`=?", newKey, oldKey); err != nil {
|
||||
if _, err := db.Exec(ctx, "UPDATE `session` SET `key` = ? WHERE `key`=?", newKey, oldKey); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
|
||||
@ -8,7 +8,6 @@ import (
|
||||
"testing"
|
||||
|
||||
auth_model "code.gitea.io/gitea/models/auth"
|
||||
"code.gitea.io/gitea/models/db"
|
||||
"code.gitea.io/gitea/models/unittest"
|
||||
"code.gitea.io/gitea/modules/json"
|
||||
|
||||
@ -40,7 +39,7 @@ func (source *TestSource) ToDB() ([]byte, error) {
|
||||
func TestDumpAuthSource(t *testing.T) {
|
||||
assert.NoError(t, unittest.PrepareTestDatabase())
|
||||
|
||||
authSourceSchema, err := db.TableInfo(new(auth_model.Source))
|
||||
authSourceSchema, err := unittest.GetXORMEngine().TableInfo(new(auth_model.Source))
|
||||
assert.NoError(t, err)
|
||||
|
||||
auth_model.RegisterTypeConfig(auth_model.OAuth2, new(TestSource))
|
||||
|
||||
@ -21,28 +21,8 @@ type engineContextKeyType struct{}
|
||||
|
||||
var engineContextKey = engineContextKeyType{}
|
||||
|
||||
type xormContextType struct {
|
||||
context.Context
|
||||
engine Engine
|
||||
}
|
||||
|
||||
var xormContext *xormContextType
|
||||
|
||||
func newContext(ctx context.Context, e Engine) *xormContextType {
|
||||
return &xormContextType{Context: ctx, engine: e}
|
||||
}
|
||||
|
||||
// Value shadows Value for context.Context but allows us to get ourselves and an Engined object
|
||||
func (ctx *xormContextType) Value(key any) any {
|
||||
if key == engineContextKey {
|
||||
return ctx
|
||||
}
|
||||
return ctx.Context.Value(key)
|
||||
}
|
||||
|
||||
// WithContext returns this engine tied to this context
|
||||
func (ctx *xormContextType) WithContext(other context.Context) *xormContextType {
|
||||
return newContext(ctx, ctx.engine.Context(other))
|
||||
func withContextEngine(ctx context.Context, e Engine) context.Context {
|
||||
return context.WithValue(ctx, engineContextKey, e)
|
||||
}
|
||||
|
||||
var (
|
||||
@ -81,17 +61,19 @@ func contextSafetyCheck(e Engine) {
|
||||
callerNum := runtime.Callers(3, callers) // skip 3: runtime.Callers, contextSafetyCheck, GetEngine
|
||||
for i := range callerNum {
|
||||
if slices.Contains(contextSafetyDeniedFuncPCs, callers[i]) {
|
||||
panic(errors.New("using database context in an iterator would cause corrupted results"))
|
||||
panic(errors.New("using session context in an iterator would cause corrupted results"))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// GetEngine gets an existing db Engine/Statement or creates a new Session
|
||||
func GetEngine(ctx context.Context) (e Engine) {
|
||||
defer func() { contextSafetyCheck(e) }()
|
||||
if e := getExistingEngine(ctx); e != nil {
|
||||
return e
|
||||
func GetEngine(ctx context.Context) Engine {
|
||||
if engine, ok := ctx.Value(engineContextKey).(Engine); ok {
|
||||
// if reusing the existing session, need to do "contextSafetyCheck" because the Iterate creates a "autoResetStatement=false" session
|
||||
contextSafetyCheck(engine)
|
||||
return engine
|
||||
}
|
||||
// no need to do "contextSafetyCheck" because it's a new Session
|
||||
return xormEngine.Context(ctx)
|
||||
}
|
||||
|
||||
@ -99,17 +81,6 @@ func GetXORMEngineForTesting() *xorm.Engine {
|
||||
return xormEngine
|
||||
}
|
||||
|
||||
// getExistingEngine gets an existing db Engine/Statement from this context or returns nil
|
||||
func getExistingEngine(ctx context.Context) (e Engine) {
|
||||
if engined, ok := ctx.(*xormContextType); ok {
|
||||
return engined.engine
|
||||
}
|
||||
if engined, ok := ctx.Value(engineContextKey).(*xormContextType); ok {
|
||||
return engined.engine
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// Committer represents an interface to Commit or Close the Context
|
||||
type Committer interface {
|
||||
Commit() error
|
||||
@ -152,8 +123,8 @@ func (c *halfCommitter) Close() error {
|
||||
// And all operations submitted by the caller stack will be rollbacked as well, not only the operations in the current function.
|
||||
// d. It doesn't mean rollback is forbidden, but always do it only when there is an error, and you do want to rollback.
|
||||
func TxContext(parentCtx context.Context) (context.Context, Committer, error) {
|
||||
if sess, ok := inTransaction(parentCtx); ok {
|
||||
return newContext(parentCtx, sess), &halfCommitter{committer: sess}, nil
|
||||
if sess := getTransactionSession(parentCtx); sess != nil {
|
||||
return withContextEngine(parentCtx, sess), &halfCommitter{committer: sess}, nil
|
||||
}
|
||||
|
||||
sess := xormEngine.NewSession()
|
||||
@ -161,15 +132,14 @@ func TxContext(parentCtx context.Context) (context.Context, Committer, error) {
|
||||
_ = sess.Close()
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
return newContext(xormContext, sess), sess, nil
|
||||
return withContextEngine(parentCtx, sess), sess, nil
|
||||
}
|
||||
|
||||
// WithTx represents executing database operations on a transaction, if the transaction exist,
|
||||
// this function will reuse it otherwise will create a new one and close it when finished.
|
||||
func WithTx(parentCtx context.Context, f func(ctx context.Context) error) error {
|
||||
if sess, ok := inTransaction(parentCtx); ok {
|
||||
err := f(newContext(parentCtx, sess))
|
||||
if sess := getTransactionSession(parentCtx); sess != nil {
|
||||
err := f(withContextEngine(parentCtx, sess))
|
||||
if err != nil {
|
||||
// rollback immediately, in case the caller ignores returned error and tries to commit the transaction.
|
||||
_ = sess.Close()
|
||||
@ -195,7 +165,7 @@ func txWithNoCheck(parentCtx context.Context, f func(ctx context.Context) error)
|
||||
return err
|
||||
}
|
||||
|
||||
if err := f(newContext(parentCtx, sess)); err != nil {
|
||||
if err := f(withContextEngine(parentCtx, sess)); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@ -333,32 +303,15 @@ func CountByBean(ctx context.Context, bean any) (int64, error) {
|
||||
return GetEngine(ctx).Count(bean)
|
||||
}
|
||||
|
||||
// TableName returns the table name according a bean object
|
||||
func TableName(bean any) string {
|
||||
return xormEngine.TableName(bean)
|
||||
}
|
||||
|
||||
// InTransaction returns true if the engine is in a transaction otherwise return false
|
||||
func InTransaction(ctx context.Context) bool {
|
||||
_, ok := inTransaction(ctx)
|
||||
return ok
|
||||
return getTransactionSession(ctx) != nil
|
||||
}
|
||||
|
||||
func inTransaction(ctx context.Context) (*xorm.Session, bool) {
|
||||
e := getExistingEngine(ctx)
|
||||
if e == nil {
|
||||
return nil, false
|
||||
}
|
||||
|
||||
switch t := e.(type) {
|
||||
case *xorm.Engine:
|
||||
return nil, false
|
||||
case *xorm.Session:
|
||||
if t.IsInTx() {
|
||||
return t, true
|
||||
}
|
||||
return nil, false
|
||||
default:
|
||||
return nil, false
|
||||
func getTransactionSession(ctx context.Context) *xorm.Session {
|
||||
e, _ := ctx.Value(engineContextKey).(Engine)
|
||||
if sess, ok := e.(*xorm.Session); ok && sess.IsInTx() {
|
||||
return sess
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
@ -100,31 +100,36 @@ func TestContextSafety(t *testing.T) {
|
||||
assert.NoError(t, db.Insert(t.Context(), &TestModel2{ID: int64(-i)}))
|
||||
}
|
||||
|
||||
actualCount := 0
|
||||
// here: db.GetEngine(t.Context()) is a new *Session created from *Engine
|
||||
_ = db.WithTx(t.Context(), func(ctx context.Context) error {
|
||||
_ = db.GetEngine(ctx).Iterate(&TestModel1{}, func(i int, bean any) error {
|
||||
// here: db.GetEngine(ctx) is always the unclosed "Iterate" *Session with autoResetStatement=false,
|
||||
// and the internal states (including "cond" and others) are always there and not be reset in this callback.
|
||||
m1 := bean.(*TestModel1)
|
||||
assert.EqualValues(t, i+1, m1.ID)
|
||||
t.Run("Show-XORM-Bug", func(t *testing.T) {
|
||||
actualCount := 0
|
||||
// here: db.GetEngine(t.Context()) is a new *Session created from *Engine
|
||||
_ = db.WithTx(t.Context(), func(ctx context.Context) error {
|
||||
_ = db.GetEngine(ctx).Iterate(&TestModel1{}, func(i int, bean any) error {
|
||||
// here: db.GetEngine(ctx) is always the unclosed "Iterate" *Session with autoResetStatement=false,
|
||||
// and the internal states (including "cond" and others) are always there and not be reset in this callback.
|
||||
m1 := bean.(*TestModel1)
|
||||
assert.EqualValues(t, i+1, m1.ID)
|
||||
|
||||
// here: XORM bug, it fails because the SQL becomes "WHERE id=-1", "WHERE id=-1 AND id=-2", "WHERE id=-1 AND id=-2 AND id=-3" ...
|
||||
// and it conflicts with the "Iterate"'s internal states.
|
||||
// has, err := db.GetEngine(ctx).Get(&TestModel2{ID: -m1.ID})
|
||||
// here: XORM bug, it fails because the SQL becomes "WHERE id=-1", "WHERE id=-1 AND id=-2", "WHERE id=-1 AND id=-2 AND id=-3" ...
|
||||
// and it conflicts with the "Iterate"'s internal states.
|
||||
// has, err := db.GetEngine(ctx).Get(&TestModel2{ID: -m1.ID})
|
||||
|
||||
actualCount++
|
||||
actualCount++
|
||||
return nil
|
||||
})
|
||||
return nil
|
||||
})
|
||||
return nil
|
||||
assert.Equal(t, testCount, actualCount)
|
||||
})
|
||||
assert.Equal(t, testCount, actualCount)
|
||||
|
||||
// deny the bad usages
|
||||
assert.PanicsWithError(t, "using database context in an iterator would cause corrupted results", func() {
|
||||
_ = unittest.GetXORMEngine().Iterate(&TestModel1{}, func(i int, bean any) error {
|
||||
_ = db.GetEngine(t.Context())
|
||||
return nil
|
||||
t.Run("DenyBadUsage", func(t *testing.T) {
|
||||
assert.PanicsWithError(t, "using session context in an iterator would cause corrupted results", func() {
|
||||
_ = db.WithTx(t.Context(), func(ctx context.Context) error {
|
||||
return db.GetEngine(ctx).Iterate(&TestModel1{}, func(i int, bean any) error {
|
||||
_ = db.GetEngine(ctx)
|
||||
return nil
|
||||
})
|
||||
})
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
@ -12,7 +12,6 @@ import (
|
||||
"strings"
|
||||
|
||||
"xorm.io/xorm"
|
||||
"xorm.io/xorm/schemas"
|
||||
|
||||
_ "github.com/go-sql-driver/mysql" // Needed for the MySQL driver
|
||||
_ "github.com/lib/pq" // Needed for the Postgresql driver
|
||||
@ -67,11 +66,6 @@ var (
|
||||
_ Engine = (*xorm.Session)(nil)
|
||||
)
|
||||
|
||||
// TableInfo returns table's information via an object
|
||||
func TableInfo(v any) (*schemas.Table, error) {
|
||||
return xormEngine.TableInfo(v)
|
||||
}
|
||||
|
||||
// RegisterModel registers model, if initFuncs provided, it will be invoked after data model sync
|
||||
func RegisterModel(bean any, initFunc ...func() error) {
|
||||
registeredModels = append(registeredModels, bean)
|
||||
|
||||
@ -86,7 +86,6 @@ func InitEngine(ctx context.Context) error {
|
||||
func SetDefaultEngine(ctx context.Context, eng *xorm.Engine) {
|
||||
xormEngine = eng
|
||||
xormEngine.SetDefaultContext(ctx)
|
||||
xormContext = &xormContextType{Context: ctx, engine: xormEngine}
|
||||
}
|
||||
|
||||
// UnsetDefaultEngine closes and unsets the default engine
|
||||
@ -98,7 +97,6 @@ func UnsetDefaultEngine() {
|
||||
_ = xormEngine.Close()
|
||||
xormEngine = nil
|
||||
}
|
||||
xormContext = nil
|
||||
}
|
||||
|
||||
// InitEngineWithMigration initializes a new xorm.Engine and sets it as the XORM's default context
|
||||
|
||||
@ -70,7 +70,7 @@ func TestPrimaryKeys(t *testing.T) {
|
||||
}
|
||||
|
||||
for _, bean := range beans {
|
||||
table, err := db.TableInfo(bean)
|
||||
table, err := db.GetXORMEngineForTesting().TableInfo(bean)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
@ -19,12 +19,7 @@ type ResourceIndex struct {
|
||||
MaxIndex int64 `xorm:"index"`
|
||||
}
|
||||
|
||||
var (
|
||||
// ErrResouceOutdated represents an error when request resource outdated
|
||||
ErrResouceOutdated = errors.New("resource outdated")
|
||||
// ErrGetResourceIndexFailed represents an error when resource index retries 3 times
|
||||
ErrGetResourceIndexFailed = errors.New("get resource index failed")
|
||||
)
|
||||
var ErrGetResourceIndexFailed = errors.New("get resource index failed")
|
||||
|
||||
// SyncMaxResourceIndex sync the max index with the resource
|
||||
func SyncMaxResourceIndex(ctx context.Context, tableName string, groupID, maxIndex int64) (err error) {
|
||||
|
||||
@ -106,8 +106,8 @@ func applySorts(sess *xorm.Session, sortType string, priorityRepoID int64) {
|
||||
"WHEN milestone.deadline_unix = 0 OR milestone.deadline_unix IS NULL THEN issue.deadline_unix " +
|
||||
"WHEN milestone.deadline_unix < issue.deadline_unix OR issue.deadline_unix = 0 THEN milestone.deadline_unix " +
|
||||
"ELSE issue.deadline_unix END ASC").
|
||||
Desc("issue.created_unix").
|
||||
Desc("issue.id")
|
||||
Asc("issue.created_unix").
|
||||
Asc("issue.id")
|
||||
case "farduedate":
|
||||
sess.Join("LEFT", "milestone", "issue.milestone_id = milestone.id").
|
||||
OrderBy("CASE " +
|
||||
|
||||
@ -105,11 +105,6 @@ type MinimalOrg = Organization
|
||||
|
||||
// GetUserOrgsList returns all organizations the given user has access to
|
||||
func GetUserOrgsList(ctx context.Context, user *user_model.User) ([]*MinimalOrg, error) {
|
||||
schema, err := db.TableInfo(new(user_model.User))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
outputCols := []string{
|
||||
"id",
|
||||
"name",
|
||||
@ -122,7 +117,7 @@ func GetUserOrgsList(ctx context.Context, user *user_model.User) ([]*MinimalOrg,
|
||||
|
||||
selectColumns := &strings.Builder{}
|
||||
for i, col := range outputCols {
|
||||
fmt.Fprintf(selectColumns, "`%s`.%s", schema.Name, col)
|
||||
_, _ = fmt.Fprintf(selectColumns, "`user`.%s", col)
|
||||
if i < len(outputCols)-1 {
|
||||
selectColumns.WriteString(", ")
|
||||
}
|
||||
|
||||
@ -282,11 +282,8 @@ func (opts FindReleasesOptions) ToOrders() string {
|
||||
|
||||
// GetTagNamesByRepoID returns a list of release tag names of repository.
|
||||
func GetTagNamesByRepoID(ctx context.Context, repoID int64) ([]string, error) {
|
||||
listOptions := db.ListOptions{
|
||||
ListAll: true,
|
||||
}
|
||||
opts := FindReleasesOptions{
|
||||
ListOptions: listOptions,
|
||||
ListOptions: db.ListOptionsAll,
|
||||
IncludeDrafts: true,
|
||||
IncludeTags: true,
|
||||
HasSha1: optional.Some(true),
|
||||
|
||||
@ -45,7 +45,7 @@ func CheckConsistencyFor(t TestingT, beansToCheck ...any) {
|
||||
}
|
||||
|
||||
func checkForConsistency(t TestingT, bean any) {
|
||||
tb, err := db.TableInfo(bean)
|
||||
tb, err := GetXORMEngine().TableInfo(bean)
|
||||
assert.NoError(t, err)
|
||||
f := consistencyCheckMap[tb.Name]
|
||||
require.NotNil(t, f, "unknown bean type: %#v", bean)
|
||||
|
||||
@ -218,7 +218,7 @@ func NewFixturesLoader(x *xorm.Engine, opts FixturesOptions) (FixturesLoader, er
|
||||
xormBeans, _ := db.NamesToBean()
|
||||
f.xormTableNames = map[string]bool{}
|
||||
for _, bean := range xormBeans {
|
||||
f.xormTableNames[db.TableName(bean)] = true
|
||||
f.xormTableNames[x.TableName(bean)] = true
|
||||
}
|
||||
|
||||
return f, nil
|
||||
|
||||
@ -159,7 +159,7 @@ func DumpQueryResult(t require.TestingT, sqlOrBean any, sqlArgs ...any) {
|
||||
goDB := x.DB().DB
|
||||
sql, ok := sqlOrBean.(string)
|
||||
if !ok {
|
||||
sql = "SELECT * FROM " + db.TableName(sqlOrBean)
|
||||
sql = "SELECT * FROM " + x.TableName(sqlOrBean)
|
||||
} else if !strings.Contains(sql, " ") {
|
||||
sql = "SELECT * FROM " + sql
|
||||
}
|
||||
|
||||
@ -30,6 +30,10 @@ type Parser struct {
|
||||
func NewParser(r io.Reader, format Format) *Parser {
|
||||
scanner := bufio.NewScanner(r)
|
||||
|
||||
// default MaxScanTokenSize = 64 kiB may be too small for some references,
|
||||
// so allow the buffer to grow up to 4x if needed
|
||||
scanner.Buffer(nil, 4*bufio.MaxScanTokenSize)
|
||||
|
||||
// in addition to the reference delimiter we specified in the --format,
|
||||
// `git for-each-ref` will always add a newline after every reference.
|
||||
refDelim := make([]byte, 0, len(format.refDelim)+1)
|
||||
@ -70,6 +74,9 @@ func NewParser(r io.Reader, format Format) *Parser {
|
||||
// { "objecttype": "tag", "refname:short": "v1.16.4", "object": "f460b7543ed500e49c133c2cd85c8c55ee9dbe27" }
|
||||
func (p *Parser) Next() map[string]string {
|
||||
if !p.scanner.Scan() {
|
||||
if err := p.scanner.Err(); err != nil {
|
||||
p.err = err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
fields, err := p.parseRef(p.scanner.Text())
|
||||
|
||||
@ -7,8 +7,6 @@
|
||||
package git
|
||||
|
||||
import (
|
||||
"strings"
|
||||
|
||||
"code.gitea.io/gitea/modules/log"
|
||||
|
||||
"github.com/go-git/go-git/v5/plumbing"
|
||||
@ -20,40 +18,6 @@ func (repo *Repository) IsTagExist(name string) bool {
|
||||
return err == nil
|
||||
}
|
||||
|
||||
// GetTags returns all tags of the repository.
|
||||
// returning at most limit tags, or all if limit is 0.
|
||||
func (repo *Repository) GetTags(skip, limit int) ([]string, error) {
|
||||
var tagNames []string
|
||||
|
||||
tags, err := repo.gogitRepo.Tags()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
_ = tags.ForEach(func(tag *plumbing.Reference) error {
|
||||
tagNames = append(tagNames, strings.TrimPrefix(tag.Name().String(), TagPrefix))
|
||||
return nil
|
||||
})
|
||||
|
||||
// Reverse order
|
||||
for i := 0; i < len(tagNames)/2; i++ {
|
||||
j := len(tagNames) - i - 1
|
||||
tagNames[i], tagNames[j] = tagNames[j], tagNames[i]
|
||||
}
|
||||
|
||||
// since we have to reverse order we can paginate only afterwards
|
||||
if len(tagNames) < skip {
|
||||
tagNames = []string{}
|
||||
} else {
|
||||
tagNames = tagNames[skip:]
|
||||
}
|
||||
if limit != 0 && len(tagNames) > limit {
|
||||
tagNames = tagNames[:limit]
|
||||
}
|
||||
|
||||
return tagNames, nil
|
||||
}
|
||||
|
||||
// GetTagType gets the type of the tag, either commit (simple) or tag (annotated)
|
||||
func (repo *Repository) GetTagType(id ObjectID) (string, error) {
|
||||
// Get tag type
|
||||
|
||||
@ -22,13 +22,6 @@ func (repo *Repository) IsTagExist(name string) bool {
|
||||
return repo.IsReferenceExist(TagPrefix + name)
|
||||
}
|
||||
|
||||
// GetTags returns all tags of the repository.
|
||||
// returning at most limit tags, or all if limit is 0.
|
||||
func (repo *Repository) GetTags(skip, limit int) (tags []string, err error) {
|
||||
tags, _, err = callShowRef(repo.Ctx, repo.Path, TagPrefix, TrustedCmdArgs{TagPrefix, "--sort=-taggerdate"}, skip, limit)
|
||||
return tags, err
|
||||
}
|
||||
|
||||
// GetTagType gets the type of the tag, either commit (simple) or tag (annotated)
|
||||
func (repo *Repository) GetTagType(id ObjectID) (string, error) {
|
||||
wr, rd, cancel, err := repo.CatFileBatchCheck(repo.Ctx)
|
||||
|
||||
@ -11,7 +11,7 @@ import (
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
func TestRepository_GetTags(t *testing.T) {
|
||||
func TestRepository_GetTagInfos(t *testing.T) {
|
||||
bareRepo1Path := filepath.Join(testReposDir, "repo1_bare")
|
||||
bareRepo1, err := OpenRepository(t.Context(), bareRepo1Path)
|
||||
if err != nil {
|
||||
|
||||
@ -120,6 +120,7 @@ error404=Níl an leathanach atá tú ag iarraidh a bhaint amach <strong>ann</str
|
||||
error503=Níorbh fhéidir leis an bhfreastalaí d’iarratas a chomhlánú. Déan iarracht arís ar ball.
|
||||
go_back=Ar ais
|
||||
invalid_data=Sonraí neamhbhailí: %v
|
||||
nothing_has_been_changed=Níl aon rud athraithe.
|
||||
|
||||
never=Riamh
|
||||
unknown=Anaithnid
|
||||
@ -2843,6 +2844,11 @@ settings.location=Suíomh
|
||||
settings.permission=Ceadanna
|
||||
settings.repoadminchangeteam=Is féidir le riarthóir an stórais rochtain d'fhoirne a chur leis agus a bhaint
|
||||
settings.visibility=Infheictheacht
|
||||
settings.change_visibility=Athraigh Infheictheacht
|
||||
settings.change_visibility_notices_1=Má dhéantar an eagraíocht a thiontú go príobháideach, bainfear réaltaí an stórais agus ní féidir iad a athchóiriú.
|
||||
settings.change_visibility_notices_2=Caillfidh daoine nach baill iad rochtain ar stórtha na heagraíochta má athraítear an infheictheacht go príobháideach.
|
||||
settings.change_visibility_success=Tá infheictheacht na heagraíochta %s athraithe go rathúil.
|
||||
settings.visibility_desc=Athraigh cé a fhéadfaidh an eagraíocht agus a stórtha a fheiceáil.
|
||||
settings.visibility.public=Poiblí
|
||||
settings.visibility.limited=Teoranta (Infheicthe d'úsáideoirí fíordheimhnithe amháin)
|
||||
settings.visibility.limited_shortname=Teoranta
|
||||
@ -3419,6 +3425,7 @@ config.picture_service=Seirbhís Pictiúr
|
||||
config.disable_gravatar=Díchumasaigh Gravatar
|
||||
config.enable_federated_avatar=Cumasaigh Avatars Cónaidhme
|
||||
config.open_with_editor_app_help=Na heagarthóirí "Oscailte le" don roghchlár Clón. Má fhágtar folamh é, úsáidfear an réamhshocrú. Leathnaigh chun an réamhshocrú a fheiceáil.
|
||||
config.git_guide_remote_name=Ainm iargúlta stórais le haghaidh orduithe git sa treoir
|
||||
|
||||
config.git_config=Cumraíocht Git
|
||||
config.git_disable_diff_highlight=Díchumasaigh Aibhsiú Comhréire Diff
|
||||
|
||||
@ -120,6 +120,7 @@ error404=アクセスしようとしたページは<strong>存在しない</stro
|
||||
error503=サーバーはリクエストを完了できませんでした。 後でもう一度お試しください。
|
||||
go_back=戻る
|
||||
invalid_data=無効なデータ: %v
|
||||
nothing_has_been_changed=何も変更されていません。
|
||||
|
||||
never=無し
|
||||
unknown=不明
|
||||
@ -1322,6 +1323,7 @@ commit_graph.color=カラー
|
||||
commit.contained_in=このコミットが含まれているのは:
|
||||
commit.contained_in_default_branch=このコミットはデフォルトブランチに含まれています
|
||||
commit.load_referencing_branches_and_tags=このコミットを参照しているブランチやタグを取得
|
||||
commit.merged_in_pr=このコミットはプルリクエスト %s でマージされました。
|
||||
blame=Blame
|
||||
download_file=ファイルをダウンロード
|
||||
normal_view=通常表示
|
||||
@ -2842,6 +2844,11 @@ settings.location=場所
|
||||
settings.permission=許可
|
||||
settings.repoadminchangeteam=リポジトリ管理者はチームのアクセス権の追加・削除が可能
|
||||
settings.visibility=表示
|
||||
settings.change_visibility=公開範囲を変更
|
||||
settings.change_visibility_notices_1=組織をプライベートに変換すると、リポジトリのスターが削除され、復元することはできません。
|
||||
settings.change_visibility_notices_2=公開範囲をプライベートに変更すると、非メンバーは組織のリポジトリにアクセスできなくなります。
|
||||
settings.change_visibility_success=組織 %s の公開範囲を変更しました。
|
||||
settings.visibility_desc=組織とそのリポジトリを誰が閲覧できるかを変更します。
|
||||
settings.visibility.public=公開
|
||||
settings.visibility.limited=限定 (認証済みユーザーにのみ表示)
|
||||
settings.visibility.limited_shortname=限定
|
||||
@ -3418,6 +3425,7 @@ config.picture_service=画像サービス
|
||||
config.disable_gravatar=Gravatarが無効
|
||||
config.enable_federated_avatar=フェデレーテッド・アバター有効
|
||||
config.open_with_editor_app_help=クローンメニューの「~で開く」に表示するエディタ。 空白のままにするとデフォルトが使用されます。 展開するとデフォルトを確認できます。
|
||||
config.git_guide_remote_name=操作説明内のgitコマンドで使うリポジトリリモート名
|
||||
|
||||
config.git_config=Git設定
|
||||
config.git_disable_diff_highlight=Diffのシンタックスハイライトが無効
|
||||
|
||||
@ -159,7 +159,7 @@ filter.not_archived=Não Arquivados
|
||||
filter.is_fork=Fork
|
||||
filter.not_fork=Não Fork
|
||||
filter.is_mirror=Espelhado
|
||||
filter.not_mirror=Não espelhado
|
||||
filter.not_mirror=Não Espelhado
|
||||
filter.is_template=Template
|
||||
filter.not_template=Não Modelo
|
||||
filter.public=Pública
|
||||
@ -529,8 +529,8 @@ release.new.text=<b>@%[1]s</b> lançou a versão %[2]s em %[3]s
|
||||
release.title=Título: %s
|
||||
release.note=Nota:
|
||||
release.downloads=Downloads:
|
||||
release.download.zip=Código Fonte (ZIP)
|
||||
release.download.targz=Código Fonte (TAR.GZ)
|
||||
release.download.zip=Código-Fonte (ZIP)
|
||||
release.download.targz=Código-Fonte (TAR.GZ)
|
||||
|
||||
repo.transfer.subject_to=%s gostaria de transferir "%s" para %s
|
||||
repo.transfer.subject_to_you=%s gostaria de transferir "%s" para você
|
||||
@ -1010,6 +1010,7 @@ new_repo_helper=Um repositório contém todos os arquivos do projeto, inclusive
|
||||
owner=Proprietário
|
||||
owner_helper=Algumas organizações podem não aparecer no menu devido a um limite de contagem dos repositórios.
|
||||
repo_name=Nome do repositório
|
||||
repo_name_helper=Bons nomes de repositórios usam palavras-chave curtas, memorizáveis e únicas. Um repositório chamado ".profile" ou ".profile-private" pode ser usado para adicionar um README.md para seu perfil de usuário/organização.
|
||||
repo_size=Tamanho do repositório
|
||||
template=Modelo
|
||||
template_select=Selecione um modelo.
|
||||
@ -1021,7 +1022,7 @@ visibility_helper=Tornar o repositório privado
|
||||
visibility_helper_forced=O administrador do site força novos repositórios a serem privados.
|
||||
visibility_fork_helper=(Esta alteração irá afetar todos os forks.)
|
||||
clone_helper=Precisa de ajuda com o clone? Visite a <a target="_blank" rel="noopener noreferrer" href="%s">Ajuda</a>.
|
||||
fork_repo=Fork do repositório
|
||||
fork_repo=Fork do Repositório
|
||||
fork_from=Fork de
|
||||
already_forked=Você já fez o fork de %s
|
||||
fork_to_different_account=Faça um fork para uma conta diferente
|
||||
@ -1030,12 +1031,13 @@ fork_branch=Branch a ser clonado para o fork
|
||||
all_branches=Todos os branches
|
||||
view_all_branches=Ver todos branches
|
||||
view_all_tags=Ver todas as tags
|
||||
fork_no_valid_owners=Não é possível fazer um fork desse repositório porque não há proprietários validos.
|
||||
use_template=Usar este modelo
|
||||
open_with_editor=Abrir com %s
|
||||
download_zip=Baixar ZIP
|
||||
download_tar=Baixar TAR.GZ
|
||||
download_bundle=Baixar PACOTE
|
||||
generate_repo=Gerar repositório
|
||||
generate_repo=Gerar Repositório
|
||||
generate_from=Gerar de
|
||||
repo_desc=Descrição
|
||||
repo_desc_helper=Digite uma breve descrição (opcional)
|
||||
@ -1043,7 +1045,7 @@ repo_no_desc=Descrição não fornecida
|
||||
repo_lang=Linguagens
|
||||
repo_gitignore_helper=Selecione modelos do .gitignore.
|
||||
repo_gitignore_helper_desc=Escolha os arquivos que não serão rastreados da lista de modelos para linguagens comuns. Artefatos típicos gerados pelos compiladores de cada linguagem estão incluídos no .gitignore por padrão.
|
||||
issue_labels=Etiquetas de issue
|
||||
issue_labels=Etiquetas de Issue
|
||||
issue_labels_helper=Selecione um conjunto de etiquetas de issue.
|
||||
license=Licença
|
||||
license_helper=Selecione um arquivo de licença.
|
||||
@ -1058,7 +1060,7 @@ trust_model_helper_collaborator=Colaborador: Confiar em assinaturas de colaborad
|
||||
trust_model_helper_committer=Committer: Confiar em assinaturas que correspondem aos committers
|
||||
trust_model_helper_collaborator_committer=Colaborador+Committer: Confiar em assinaturas dos colaboradores que correspondem ao committer
|
||||
trust_model_helper_default=Padrão: Usar o modelo de confiança padrão para esta instalação
|
||||
create_repo=Criar repositório
|
||||
create_repo=Criar Repositório
|
||||
default_branch=Branch Padrão
|
||||
default_branch_label=padrão
|
||||
default_branch_helper=O branch padrão é o branch base para pull requests e commits de código.
|
||||
@ -1088,6 +1090,7 @@ stars=Favoritos
|
||||
reactions_more=e %d mais
|
||||
unit_disabled=O administrador do site desabilitou esta seção do repositório.
|
||||
language_other=Outra
|
||||
adopt_search=Digite o nome de usuário para pesquisar por repositórios órfãos… (deixe em branco para encontrar todos)
|
||||
adopt_preexisting_label=Adotar Arquivos
|
||||
adopt_preexisting=Adotar arquivos pré-existentes
|
||||
adopt_preexisting_content=Criar repositório a partir de %s
|
||||
@ -1125,6 +1128,8 @@ template.issue_labels=Etiquetas de issue
|
||||
template.one_item=Deve-se selecionar pelo menos um item de modelo
|
||||
template.invalid=Deve-se selecionar um repositório de modelo
|
||||
|
||||
archive.title=Este repositório está arquivado. Você pode visualizar arquivos e cloná-lo. Você não pode abrir issues ou pull requests ou fazer push de commits.
|
||||
archive.title_date=Este repositório foi arquivado em %s. Você pode visualizar arquivos e cloná-lo. Você não pode abrir issues ou pull requests ou fazer push de commits.
|
||||
archive.issue.nocomment=Este repositório está arquivado. Você não pode comentar nas issues.
|
||||
archive.pull.nocomment=Este repositório está arquivado. Você não pode comentar nos pull requests.
|
||||
|
||||
@ -1141,6 +1146,7 @@ migrate_options_lfs=Migrar arquivos LFS
|
||||
migrate_options_lfs_endpoint.label=Destino LFS
|
||||
migrate_options_lfs_endpoint.description=A migração tentará usar seu controle remoto Git para <a target="_blank" rel="noopener noreferrer" href="%s">determinar o servidor LFS</a>. Você também pode especificar um destino personalizado se os dados do repositório LFS forem armazenados em outro lugar.
|
||||
migrate_options_lfs_endpoint.description.local=Um caminho de servidor local também é suportado.
|
||||
migrate_options_lfs_endpoint.placeholder=Se for deixado em branco, o destino será derivado do URL de clone.
|
||||
migrate_items=Itens da migração
|
||||
migrate_items_wiki=Wiki
|
||||
migrate_items_milestones=Marcos
|
||||
@ -1149,11 +1155,13 @@ migrate_items_issues=Issues
|
||||
migrate_items_pullrequests=Pull Requests
|
||||
migrate_items_merge_requests=Requisições de merge
|
||||
migrate_items_releases=Versões
|
||||
migrate_repo=Migrar repositório
|
||||
migrate_repo=Migrar Repositório
|
||||
migrate.clone_address=Migrar / Clonar de URL
|
||||
migrate.clone_address_desc=URL HTTP (S) ou Git 'clone' de um repositório existente
|
||||
migrate.github_token_desc=Você pode colocar um ou mais tokens aqui, separados por vírgulas, para tornar a migração mais rápida, contornando os limites da API do GitHub. AVISO: abusar deste recurso pode violar a política do provedor de serviços e pode levar a que a sua(s) conta(s) seja bloqueada.
|
||||
migrate.clone_local_path=ou um caminho de servidor local
|
||||
migrate.permission_denied=Você não pode importar repositórios locais.
|
||||
migrate.permission_denied_blocked=Você não pode importar dos hosts não permitidos, por favor peça ao administrador para verificar as configurações ALLOWED_DOMAINS/ALLOW_LOCALNETWORKS/BLOCKED_DOMAINS.
|
||||
migrate.invalid_local_path=O caminho local é inválido. Ele não existe ou não é um diretório.
|
||||
migrate.invalid_lfs_endpoint=O destino LFS não é válido.
|
||||
migrate.failed=Migração falhou: %v
|
||||
@ -1161,6 +1169,7 @@ migrate.migrate_items_options=Um Token de Acesso é necessário para migrar iten
|
||||
migrated_from=Migrado de <a href="%[1]s">%[2]s</a>
|
||||
migrated_from_fake=Migrado de %[1]s
|
||||
migrate.migrate=Migrar de %s
|
||||
migrate.migrating=Migrando de <b>%s</b>…
|
||||
migrate.migrating_failed=Migração a partir de <b>%s</b> falhou.
|
||||
migrate.migrating_failed.error=Falha ao migrar: %s
|
||||
migrate.migrating_failed_no_addr=A migração falhou.
|
||||
@ -1172,14 +1181,19 @@ migrate.gogs.description=Migrar dados de notabug.org ou de outras instâncias do
|
||||
migrate.onedev.description=Migrar dados de code.onedev.io ou de outras instâncias do OneDev.
|
||||
migrate.codebase.description=Migrar dados de codebasehq.com.
|
||||
migrate.gitbucket.description=Migrar dados de instâncias do GitBucket.
|
||||
migrate.codecommit.description=Migrar dados do AWS CodeCommit.
|
||||
migrate.codecommit.aws_access_key_id=Chave ID AWS (Access Key ID)
|
||||
migrate.codecommit.aws_secret_access_key=Chave Secreta AWS (Secret Access Key)
|
||||
migrate.codecommit.https_git_credentials_username=Nome de Usuário para Git HTTPS
|
||||
migrate.codecommit.https_git_credentials_password=Senha para Git HTTPS
|
||||
migrate.migrating_git=Migrando dados Git
|
||||
migrate.migrating_topics=Migrando tópicos
|
||||
migrate.migrating_topics=Migrando Tópicos
|
||||
migrate.migrating_milestones=Migrando Marcos
|
||||
migrate.migrating_labels=Migrando Rótulos
|
||||
migrate.migrating_releases=Migrando Versões
|
||||
migrate.migrating_issues=Migrando Issues
|
||||
migrate.migrating_pulls=Migrando Pull Requests
|
||||
migrate.cancel_migrating_title=Cancelar migração
|
||||
migrate.cancel_migrating_title=Cancelar Migração
|
||||
migrate.cancel_migrating_confirm=Você quer cancelar essa migração?
|
||||
migration_status=Status da migração
|
||||
|
||||
@ -1195,7 +1209,8 @@ watch=Observar
|
||||
unstar=Retirar dos favoritos
|
||||
star=Juntar aos favoritos
|
||||
fork=Fork
|
||||
download_archive=Baixar repositório
|
||||
action.blocked_user=Não é possível executar a ação porque você está bloqueado pelo proprietário do repositório.
|
||||
download_archive=Baixar Repositório
|
||||
more_operations=Mais Operações
|
||||
|
||||
quick_guide=Guia Rápido
|
||||
@ -1203,6 +1218,7 @@ clone_this_repo=Clonar este repositório
|
||||
cite_this_repo=Citar este repositório
|
||||
create_new_repo_command=Criando um novo repositório por linha de comando
|
||||
push_exist_repo=Realizando push para um repositório existente por linha de comando
|
||||
empty_message=Este repositório está vazio.
|
||||
broken_message=Os dados Git subjacentes a este repositório não podem ser lidos. Entre em contato com o administrador desta instância ou exclua este repositório.
|
||||
|
||||
code=Código
|
||||
@ -1220,6 +1236,7 @@ projects=Projetos
|
||||
packages=Pacotes
|
||||
actions=Ações
|
||||
labels=Etiquetas
|
||||
org_labels_desc=Etiquetas a nível de organização que podem ser usadas com <strong>todos os repositórios</strong> sob esta organização
|
||||
org_labels_desc_manage=gerenciar
|
||||
|
||||
milestone=Marco
|
||||
@ -1234,9 +1251,9 @@ tagged_this=criou essa tag
|
||||
file.title=%s em %s
|
||||
file_raw=Original
|
||||
file_history=Histórico
|
||||
file_view_source=Exibir código-fonte
|
||||
file_view_source=Exibir Código-Fonte
|
||||
file_view_rendered=Ver Renderizado
|
||||
file_view_raw=Ver original
|
||||
file_view_raw=Ver Original
|
||||
file_permalink=Link permanente
|
||||
file_too_large=O arquivo é muito grande para ser mostrado.
|
||||
file_is_empty=O arquivo está vazio.
|
||||
@ -1254,9 +1271,9 @@ view_git_blame=Ver Git Blame
|
||||
video_not_supported_in_browser=Seu navegador não suporta a tag 'video' do HTML5.
|
||||
audio_not_supported_in_browser=Seu navegador não suporta a tag 'audio' do HTML5.
|
||||
symbolic_link=Link simbólico
|
||||
executable_file=Arquivo executável
|
||||
executable_file=Arquivo Executável
|
||||
generated=Gerado
|
||||
commit_graph=Gráfico de commits
|
||||
commit_graph=Gráfico de Commits
|
||||
commit_graph.select=Selecionar branches
|
||||
commit_graph.hide_pr_refs=Esconder Pull Requests
|
||||
commit_graph.monochrome=Monocromático
|
||||
@ -1272,34 +1289,35 @@ lines=linhas
|
||||
from_comment=(comentário)
|
||||
|
||||
editor.add_file=Adicionar Arquivo
|
||||
editor.new_file=Novo arquivo
|
||||
editor.upload_file=Enviar arquivo
|
||||
editor.edit_file=Editar arquivo
|
||||
editor.preview_changes=Visualizar alterações
|
||||
editor.new_file=Novo Arquivo
|
||||
editor.upload_file=Enviar Arquivo
|
||||
editor.edit_file=Editar Arquivo
|
||||
editor.preview_changes=Visualizar Alterações
|
||||
editor.cannot_edit_lfs_files=Arquivos LFS não podem ser editados na interface web.
|
||||
editor.cannot_edit_too_large_file=O arquivo é muito grande para ser editado.
|
||||
editor.cannot_edit_non_text_files=Arquivos binários não podem ser editados na interface web.
|
||||
editor.file_not_editable_hint=Mas você ainda pode renomear ou movê-lo.
|
||||
editor.edit_this_file=Editar arquivo
|
||||
editor.edit_this_file=Editar Arquivo
|
||||
editor.this_file_locked=Arquivo está bloqueado
|
||||
editor.must_be_on_a_branch=Você deve estar em um branch para propor alterações neste arquivo.
|
||||
editor.fork_before_edit=Você deve fazer um fork desse repositório para fazer ou propor alterações neste arquivo.
|
||||
editor.delete_this_file=Excluir arquivo
|
||||
editor.delete_this_file=Excluir Arquivo
|
||||
editor.must_have_write_access=Você deve ter permissão de escrita para fazer ou propor alterações neste arquivo.
|
||||
editor.file_delete_success=O arquivo "%s" foi excluído.
|
||||
editor.name_your_file=Nomeie o seu arquivo…
|
||||
editor.filename_help=Adicione um diretório digitando seu nome seguido por uma barra ('/'). Remova um diretório digitando o backspace no início do campo de entrada.
|
||||
editor.or=ou
|
||||
editor.cancel_lower=Cancelar
|
||||
editor.commit_signed_changes=Commit de alteradores assinadas
|
||||
editor.commit_changes=Aplicar commit das alterações
|
||||
editor.commit_signed_changes=Criar Commit das Alterações Assinadas
|
||||
editor.commit_changes=Criar Commit das Alterações
|
||||
editor.add_tmpl=Adicionar '{filename}'
|
||||
editor.add=Adicionar %s
|
||||
editor.update=Atualizar %s
|
||||
editor.delete=Excluir %s
|
||||
editor.patch=Aplicar Correção
|
||||
editor.patching=Corrigindo:
|
||||
editor.new_patch=Nova correção
|
||||
editor.fail_to_apply_patch=Não foi possível aplicar correção
|
||||
editor.new_patch=Nova Correção
|
||||
editor.commit_message_desc=Adicione uma descrição detalhada (opcional)...
|
||||
editor.signoff_desc=Adicione um assinado-por-committer no final do log do commit.
|
||||
editor.commit_directly_to_this_branch=Commit diretamente no branch <strong class="branch-name">%s</strong>.
|
||||
@ -1323,7 +1341,7 @@ editor.commit_empty_file_text=O arquivo que você está prestes fazer commit est
|
||||
editor.no_changes_to_show=Nenhuma alteração a mostrar.
|
||||
editor.push_rejected_no_message=A alteração foi rejeitada pelo servidor sem uma mensagem. Por favor, verifique os Hooks Git.
|
||||
editor.push_rejected=A alteração foi rejeitada pelo servidor. Por favor, verifique os Hooks Git.
|
||||
editor.push_rejected_summary=Mensagem completa de rejeição:
|
||||
editor.push_rejected_summary=Mensagem Completa de Rejeição:
|
||||
editor.add_subdir=Adicionar um subdiretório...
|
||||
editor.unable_to_upload_files=Ocorreu um erro ao enviar arquivos para "%s": %v
|
||||
editor.upload_file_is_locked=Arquivo "%s" está bloqueado por %s.
|
||||
@ -1338,11 +1356,12 @@ editor.failed_to_commit=Falha ao criar commit das alterações.
|
||||
editor.failed_to_commit_summary=Mensagem de Erro:
|
||||
|
||||
|
||||
commits.desc=Veja o histórico de alterações do código de fonte.
|
||||
commits.desc=Veja o histórico de alterações do código-fonte.
|
||||
commits.commits=Commits
|
||||
commits.no_commits=Nenhum commit em comum. "%s" e "%s" tem históricos completamente diferentes.
|
||||
commits.nothing_to_compare=Estes branches são iguais.
|
||||
commits.search.tooltip=Você pode prefixar as palavras-chave com "author:" (autor da mudança), "committer:" (autor do commit), "after:" (depois) ou "before:" (antes). Por exemplo: "revert author:Ana before:2019-01-13".\
|
||||
commits.search_branch=Este Branch
|
||||
commits.search_all=Todos os branches
|
||||
commits.author=Autor
|
||||
commits.message=Mensagem
|
||||
@ -1415,40 +1434,40 @@ issues.filter_labels=Filtrar Rótulo
|
||||
issues.filter_reviewers=Filtrar Revisor
|
||||
issues.filter_no_results=Nenhum resultado
|
||||
issues.filter_no_results_placeholder=Tente ajustar seus filtros de pesquisa.
|
||||
issues.new=Nova issue
|
||||
issues.new=Nova Issue
|
||||
issues.new.title_empty=Título não pode ser em branco
|
||||
issues.new.labels=Etiquetas
|
||||
issues.new.no_label=Sem etiqueta
|
||||
issues.new.no_label=Sem Etiqueta
|
||||
issues.new.clear_labels=Limpar etiquetas
|
||||
issues.new.projects=Projetos
|
||||
issues.new.clear_projects=Limpar projetos
|
||||
issues.new.no_projects=Sem projeto
|
||||
issues.new.open_projects=Abrir Projetos
|
||||
issues.new.closed_projects=Projetos fechados
|
||||
issues.new.closed_projects=Projetos Fechados
|
||||
issues.new.no_items=Nenhum item
|
||||
issues.new.milestone=Marco
|
||||
issues.new.no_milestone=Sem marco
|
||||
issues.new.no_milestone=Sem Marco
|
||||
issues.new.clear_milestone=Limpar marco
|
||||
issues.new.assignees=Responsáveis
|
||||
issues.new.clear_assignees=Limpar responsáveis
|
||||
issues.new.no_assignees=Sem responsável
|
||||
issues.choose.get_started=Primeiros passos
|
||||
issues.new.no_assignees=Sem Responsáveis
|
||||
issues.choose.get_started=Primeiros Passos
|
||||
issues.choose.open_external_link=Abrir
|
||||
issues.choose.blank=Padrão
|
||||
issues.choose.blank_about=Criar uma issue a partir do modelo padrão.
|
||||
issues.choose.ignore_invalid_templates=Modelos inválidos foram ignorados
|
||||
issues.choose.invalid_templates=%v modelo(s) inválido(s) encontrado(s)
|
||||
issues.choose.invalid_config=A configuração da issue contém erros:
|
||||
issues.no_ref=Nenhum branch/tag especificado
|
||||
issues.create=Criar issue
|
||||
issues.no_ref=Nenhum Branch/Tag Especificado
|
||||
issues.create=Criar Issue
|
||||
issues.new_label=Nova Etiqueta
|
||||
issues.new_label_placeholder=Nome da etiqueta
|
||||
issues.new_label_desc_placeholder=Descrição
|
||||
issues.create_label=Criar etiqueta
|
||||
issues.create_label=Criar Etiqueta
|
||||
issues.label_templates.title=Carregue um conjunto de etiquetas pré-definidas
|
||||
issues.label_templates.info=Ainda não existem etiquetas. Crie uma etiqueta em 'Nova etiqueta' ou use um conjunto de etiquetas predefinida:
|
||||
issues.label_templates.helper=Selecione um conjunto de etiquetas
|
||||
issues.label_templates.use=Use o conjunto de etiquetas
|
||||
issues.label_templates.use=Usar Conjunto de Etiquetas
|
||||
issues.label_templates.fail_to_load_file=Falha ao carregar o modelo de etiquetas "%s": %v
|
||||
issues.add_label=adicionou o rótulo %s %s
|
||||
issues.add_labels=adicionou os rótulos %s %s
|
||||
@ -1531,11 +1550,11 @@ issues.commented_at=`comentou <a href="#%s">%s</a>`
|
||||
issues.delete_comment_confirm=Tem certeza que deseja excluir este comentário?
|
||||
issues.context.copy_link=Copiar Link
|
||||
issues.context.quote_reply=Citar Resposta
|
||||
issues.context.reference_issue=Referência em uma nova issue
|
||||
issues.context.reference_issue=Referência em uma Nova Issue
|
||||
issues.context.edit=Editar
|
||||
issues.context.delete=Excluir
|
||||
issues.no_content=Nenhuma descrição fornecida.
|
||||
issues.close=Fechar issue
|
||||
issues.close=Fechar Issue
|
||||
issues.comment_pull_merged_at=aplicou o merge do commit %[1]s em %[2]s %[3]s
|
||||
issues.comment_manually_pull_merged_at=aplicou o merge manual do commit %[1]s em %[2]s %[3]s
|
||||
issues.close_comment_issue=Comentar e Fechar
|
||||
@ -1568,7 +1587,7 @@ issues.re_request_review=Re-solicitar revisão
|
||||
issues.is_stale=Houve alterações nessa PR desde essa revisão
|
||||
issues.remove_request_review=Remover solicitação de revisão
|
||||
issues.remove_request_review_block=Não é possível remover a solicitação de revisão
|
||||
issues.dismiss_review=Descartar revisão
|
||||
issues.dismiss_review=Descartar Revisão
|
||||
issues.dismiss_review_warning=Tem certeza de que deseja descartar esta revisão?
|
||||
issues.sign_in_require_desc=<a href="%s">Acesse</a> para participar desta conversação.
|
||||
issues.edit=Editar
|
||||
@ -1579,17 +1598,18 @@ issues.label_description=Descrição da etiqueta
|
||||
issues.label_color=Cor da etiqueta
|
||||
issues.label_color_invalid=Cor inválida
|
||||
issues.label_exclusive=Exclusivo
|
||||
issues.label_archive=Arquivar etiqueta
|
||||
issues.label_archive=Arquivar Etiqueta
|
||||
issues.label_archived_filter=Mostrar etiquetas arquivadas
|
||||
issues.label_archive_tooltip=Etiquetas arquivadas são excluídas, por padrão, das sugestões ao pesquisar por etiqueta.
|
||||
issues.label_exclusive_desc=Nomeie o rótulo <code>escopo/item</code> para torná-lo mutuamente exclusivo com outros rótulos do <code>escopo/</code>.
|
||||
issues.label_exclusive_warning=Quaisquer rótulos com escopo conflitantes serão removidos ao editar os rótulos de uma issue ou pull request.
|
||||
issues.label_exclusive_order=Ordem
|
||||
issues.label_count=%d etiquetas
|
||||
issues.label_open_issues=%d issues abertas
|
||||
issues.label_edit=Editar
|
||||
issues.label_delete=Excluir
|
||||
issues.label_modify=Editar etiqueta
|
||||
issues.label_deletion=Excluir etiqueta
|
||||
issues.label_modify=Editar Etiqueta
|
||||
issues.label_deletion=Excluir Etiqueta
|
||||
issues.label_deletion_desc=A exclusão desta etiqueta irá removê-la de todas as issues. Tem certeza que deseja continuar?
|
||||
issues.label_deletion_success=A etiqueta foi excluída.
|
||||
issues.label.filter_sort.alphabetically=Alfabeticamente
|
||||
@ -1643,7 +1663,7 @@ issues.del_time_history=`removeu tempo gasto %s`
|
||||
issues.add_time_hours=Horas
|
||||
issues.add_time_minutes=Minutos
|
||||
issues.add_time_sum_to_small=Nenhum tempo foi inserido.
|
||||
issues.time_spent_total=Tempo total gasto
|
||||
issues.time_spent_total=Tempo Total Gasto
|
||||
issues.time_spent_from_all_authors=`Tempo total gasto: %s`
|
||||
|
||||
issues.due_date=Data Limite
|
||||
@ -1683,7 +1703,7 @@ issues.dependency.pr_close_blocks=Este pull request bloqueia o fechamento das se
|
||||
issues.dependency.issue_batch_close_blocked=Não é possível fechar as issues que você escolheu, porque a issue #%d ainda tem dependências abertas
|
||||
issues.dependency.blocks_short=Bloqueia
|
||||
issues.dependency.blocked_by_short=Depende de
|
||||
issues.dependency.remove_header=Remover dependência
|
||||
issues.dependency.remove_header=Remover Dependência
|
||||
issues.dependency.issue_remove_text=Isto removerá a dependência desta issue. Continuar?
|
||||
issues.dependency.pr_remove_text=Isto removerá a dependência deste pull request. Continuar?
|
||||
issues.dependency.setting=Habilitar Dependências para Issues e Pull Requests
|
||||
@ -1871,7 +1891,8 @@ milestones.no_due_date=Sem data limite
|
||||
milestones.open=Reabrir
|
||||
milestones.close=Fechar
|
||||
milestones.new_subheader=Os marcos podem ajudá-lo a organizar os problemas e acompanhar seu progresso.
|
||||
milestones.create=Criar marco
|
||||
milestones.completeness=<strong>%d%%</strong> Concluído
|
||||
milestones.create=Criar Marco
|
||||
milestones.title=Título
|
||||
milestones.desc=Descrição
|
||||
milestones.due_date=Data limite (opcional)
|
||||
@ -1883,7 +1904,7 @@ milestones.edit_subheader=Marcos organizam as issues e acompanham o progresso.
|
||||
milestones.cancel=Cancelar
|
||||
milestones.modify=Atualizar Marco
|
||||
milestones.edit_success=O marco "%s" foi atualizado.
|
||||
milestones.deletion=Excluir marco
|
||||
milestones.deletion=Excluir Marco
|
||||
milestones.deletion_desc=A exclusão deste marco irá removê-lo de todas as issues. Tem certeza que deseja continuar?
|
||||
milestones.deletion_success=O marco foi excluído.
|
||||
milestones.filter_sort.name=Nome
|
||||
@ -1938,6 +1959,7 @@ wiki.original_git_entry_tooltip=Ver o arquivo Git original em vez de usar o link
|
||||
activity=Atividade
|
||||
activity.navbar.pulse=Pulso
|
||||
activity.navbar.contributors=Contribuidores
|
||||
activity.navbar.recent_commits=Commits Recentes
|
||||
activity.period.filter_label=Período:
|
||||
activity.period.daily=1 dia
|
||||
activity.period.halfweekly=3 dias
|
||||
@ -2044,6 +2066,7 @@ settings.branches.add_new_rule=Adicionar Nova Regra
|
||||
settings.advanced_settings=Configurações avançadas
|
||||
settings.wiki_desc=Habilitar a wiki do repositório
|
||||
settings.use_internal_wiki=Usar a wiki nativa
|
||||
settings.default_wiki_branch_name=Nome Padrão do Branch da Wiki
|
||||
settings.use_external_wiki=Usar wiki externa
|
||||
settings.external_wiki_url=URL externa da wiki
|
||||
settings.external_wiki_url_error=A URL da wiki externa não é válida.
|
||||
@ -2073,6 +2096,7 @@ settings.pulls.default_delete_branch_after_merge=Excluir o branch de pull reques
|
||||
settings.pulls.default_allow_edits_from_maintainers=Permitir edições de mantenedores por padrão
|
||||
settings.releases_desc=Habilitar versões do Repositório
|
||||
settings.packages_desc=Habilitar Registro de Pacotes de Repositório
|
||||
settings.projects_desc=Habilitar Projetos
|
||||
settings.projects_mode_all=Todos os projetos
|
||||
settings.actions_desc=Habilitar ações do repositório
|
||||
settings.admin_settings=Configurações do administrador
|
||||
@ -2083,6 +2107,7 @@ settings.admin_indexer_commit_sha=Último SHA indexado
|
||||
settings.admin_indexer_unindexed=Não indexado
|
||||
settings.reindex_button=Adicionar à fila de reindexação
|
||||
settings.reindex_requested=Reindexação Requisitada
|
||||
settings.admin_enable_close_issues_via_commit_in_any_branch=Fechar issue via commit em um branch não padrão
|
||||
settings.danger_zone=Zona de perigo
|
||||
settings.new_owner_has_same_repo=O novo proprietário já tem um repositório com o mesmo nome. Por favor, escolha outro nome.
|
||||
settings.convert=Converter para repositório tradicional
|
||||
@ -2100,6 +2125,7 @@ settings.transfer.rejected=A transferência do repositório foi rejeitada.
|
||||
settings.transfer.success=A transferência do repositório foi bem sucedida.
|
||||
settings.transfer_abort=Cancelar transferência
|
||||
settings.transfer_abort_invalid=Não é possível cancelar uma transferência de repositório não existente.
|
||||
settings.transfer_abort_success=A transferência do repositório para %s foi cancelada com sucesso.
|
||||
settings.transfer_desc=Transferir este repositório para outro usuário ou para uma organização onde você tem direitos de administrador.
|
||||
settings.transfer_form_title=Digite o nome do repositório para confirmar:
|
||||
settings.transfer_notices_1=- Você perderá o acesso ao repositório se transferir para um usuário individual.
|
||||
@ -2373,16 +2399,16 @@ settings.rename_branch_from=nome antigo do branch
|
||||
settings.rename_branch_to=novo nome do branch
|
||||
settings.rename_branch=Renomear branch
|
||||
|
||||
diff.browse_source=Ver código fonte
|
||||
diff.browse_source=Ver Código-Fonte
|
||||
diff.parent=pai
|
||||
diff.commit=commit
|
||||
diff.git-notes=Notas
|
||||
diff.data_not_available=Conteúdo de diff não disponível
|
||||
diff.options_button=Opções de diferenças
|
||||
diff.download_patch=Baixar arquivo de patch
|
||||
diff.download_diff=Baixar arquivo de diferenças
|
||||
diff.show_split_view=Visão dividida
|
||||
diff.show_unified_view=Visão unificada
|
||||
diff.data_not_available=Conteúdo de Diff Não Disponível
|
||||
diff.options_button=Opções de Diff
|
||||
diff.download_patch=Baixar Arquivo de Patch
|
||||
diff.download_diff=Baixar Arquivo de Diff
|
||||
diff.show_split_view=Visão Dividida
|
||||
diff.show_unified_view=Visão Unificada
|
||||
diff.whitespace_button=Espaço em branco
|
||||
diff.whitespace_show_everything=Mostrar todas as alterações
|
||||
diff.whitespace_ignore_all_whitespace=Ignorar todas as alterações de espaço em branco
|
||||
@ -2392,7 +2418,7 @@ diff.stats_desc=<strong> %d arquivos alterados</strong> com <strong>%d adições
|
||||
diff.stats_desc_file=%d alterações: %d adições e %d exclusões
|
||||
diff.bin=BIN
|
||||
diff.bin_not_shown=Arquivo binário não exibido.
|
||||
diff.view_file=Ver arquivo
|
||||
diff.view_file=Ver Arquivo
|
||||
diff.file_before=Antes
|
||||
diff.file_after=Depois
|
||||
diff.file_image_width=Largura
|
||||
@ -2401,7 +2427,7 @@ diff.file_byte_size=Tamanho
|
||||
diff.file_suppressed=Diferenças do arquivo suprimidas por serem muito extensas
|
||||
diff.file_suppressed_line_too_long=Diff do arquivo suprimido porque uma ou mais linhas são muito longas
|
||||
diff.too_many_files=Alguns arquivos não foram exibidos porque demasiados arquivos foram alterados neste diff
|
||||
diff.show_more=Mostrar mais
|
||||
diff.show_more=Mostrar Mais
|
||||
diff.load=Carregar Diff
|
||||
diff.generated=gerado
|
||||
diff.vendored=externo
|
||||
@ -2441,7 +2467,7 @@ release.edit=editar
|
||||
release.ahead.commits=<strong>%d</strong> commits
|
||||
release.ahead.target=para %s desde esta versão
|
||||
tag.ahead.target=para %s desde esta tag
|
||||
release.source_code=Código Fonte
|
||||
release.source_code=Código-Fonte
|
||||
release.new_subheader=Lançamentos organizam versões do projeto.
|
||||
release.edit_subheader=Lançamentos organizam versões do projeto.
|
||||
release.tag_name=Nome da tag
|
||||
@ -2667,7 +2693,7 @@ view_as_member_hint=Você está vendo o README como um membro desta organizaçã
|
||||
maintenance=Manutenção
|
||||
dashboard=Painel
|
||||
self_check=Auto-verificação
|
||||
identity_access=Identidade e acesso
|
||||
identity_access=Identidade e Acesso
|
||||
users=Contas de usuário
|
||||
organizations=Organizações
|
||||
repositories=Repositórios
|
||||
@ -2687,8 +2713,8 @@ settings=Configurações de Administrador
|
||||
|
||||
dashboard.statistic=Resumo
|
||||
dashboard.maintenance_operations=Operações de Manutenção
|
||||
dashboard.system_status=Status do sistema
|
||||
dashboard.operation_name=Nome da operação
|
||||
dashboard.system_status=Status do Sistema
|
||||
dashboard.operation_name=Nome da Operação
|
||||
dashboard.operation_switch=Trocar
|
||||
dashboard.operation_run=Executar
|
||||
dashboard.clean_unbind_oauth=Limpar conexões OAuth não vinculadas
|
||||
@ -2706,7 +2732,7 @@ dashboard.delete_inactive_accounts=Excluir todas as contas não ativadas
|
||||
dashboard.delete_repo_archives=Excluir todos os arquivos dos repositórios (ZIP, TAR.GZ, etc..)
|
||||
dashboard.delete_missing_repos=Excluir todos os repositórios que não possuem seus arquivos Git
|
||||
dashboard.delete_generated_repository_avatars=Excluir avatares gerados do repositório
|
||||
dashboard.update_mirrors=Atualizar espelhamentos
|
||||
dashboard.update_mirrors=Atualizar Espelhamentos
|
||||
dashboard.repo_health_check=Verificar estado de saúde de todos os repositórios
|
||||
dashboard.check_repo_stats=Verificar estatísticas de todos os repositórios
|
||||
dashboard.archive_cleanup=Apagar arquivos antigos de repositório
|
||||
@ -2720,27 +2746,27 @@ dashboard.cleanup_packages=Limpar pacotes expirados
|
||||
dashboard.cleanup_actions=Limpar recursos de actions expiradas
|
||||
dashboard.server_uptime=Tempo de atividade do Servidor
|
||||
dashboard.current_goroutine=Goroutines Atuais
|
||||
dashboard.current_memory_usage=Uso de memória atual
|
||||
dashboard.total_memory_allocated=Total de memória alocada
|
||||
dashboard.memory_obtained=Memória obtida
|
||||
dashboard.pointer_lookup_times=Nº de consultas a ponteiros
|
||||
dashboard.memory_allocate_times=Alocações de memória
|
||||
dashboard.memory_free_times=Liberações de memória
|
||||
dashboard.current_heap_usage=Uso atual da heap
|
||||
dashboard.heap_memory_obtained=Memória de heap obtida
|
||||
dashboard.heap_memory_idle=Memória da heap ociosa
|
||||
dashboard.heap_memory_in_use=Memória da heap em uso
|
||||
dashboard.heap_memory_released=Memória da heap liberada
|
||||
dashboard.heap_objects=Objetos na heap
|
||||
dashboard.bootstrap_stack_usage=Uso de pilha bootstrap
|
||||
dashboard.stack_memory_obtained=Memória de pilha obtida
|
||||
dashboard.current_memory_usage=Uso de Memória Atual
|
||||
dashboard.total_memory_allocated=Total de Memória Alocada
|
||||
dashboard.memory_obtained=Memória Obtida
|
||||
dashboard.pointer_lookup_times=Nº de Consultas a Ponteiros
|
||||
dashboard.memory_allocate_times=Alocações de Memória
|
||||
dashboard.memory_free_times=Liberações de Memória
|
||||
dashboard.current_heap_usage=Uso Atual da Heap
|
||||
dashboard.heap_memory_obtained=Memória de Heap Obtida
|
||||
dashboard.heap_memory_idle=Memória da Heap Ociosa
|
||||
dashboard.heap_memory_in_use=Memória da Heap em Uso
|
||||
dashboard.heap_memory_released=Memória da Heap Liberada
|
||||
dashboard.heap_objects=Objetos na Heap
|
||||
dashboard.bootstrap_stack_usage=Uso de Pilha Bootstrap
|
||||
dashboard.stack_memory_obtained=Memória de Pilha Obtida
|
||||
dashboard.mspan_structures_usage=Uso de estruturas de MSpan
|
||||
dashboard.mspan_structures_obtained=Estruturas de MSpan obtidas
|
||||
dashboard.mcache_structures_usage=Uso de estruturas de MCache
|
||||
dashboard.mcache_structures_obtained=Estruturas de MCache obtidas
|
||||
dashboard.profiling_bucket_hash_table_obtained=Perfil obtido da Bucket Hash Table
|
||||
dashboard.gc_metadata_obtained=Metadados do GC obtidos
|
||||
dashboard.other_system_allocation_obtained=Outra alocação de sistema obtida
|
||||
dashboard.other_system_allocation_obtained=Outra Alocação de Sistema Obtida
|
||||
dashboard.next_gc_recycle=Próxima reciclagem do GC
|
||||
dashboard.last_gc_time=Desde da ultima vez do GC
|
||||
dashboard.total_gc_time=Pausa total do GC
|
||||
@ -2752,7 +2778,7 @@ dashboard.delete_old_system_notices=Excluir todos os avisos de sistema antigos d
|
||||
dashboard.sync_tag.started=Sincronização de Tags iniciada
|
||||
dashboard.rebuild_issue_indexer=Reconstruir indexador de issues
|
||||
|
||||
users.user_manage_panel=Gerenciamento de conta de usuário
|
||||
users.user_manage_panel=Gerenciamento de Conta de Usuário
|
||||
users.new_account=Criar Conta de Usuário
|
||||
users.name=Nome de usuário
|
||||
users.full_name=Nome Completo
|
||||
@ -2766,7 +2792,7 @@ users.repos=Repositórios
|
||||
users.created=Criado
|
||||
users.last_login=Último acesso
|
||||
users.never_login=Nunca Acessado
|
||||
users.send_register_notify=Enviar notificação de cadastro de usuário
|
||||
users.send_register_notify=Enviar Notificação de Cadastro de Usuário
|
||||
users.new_success=Usuário "%s" criado.
|
||||
users.edit=Editar
|
||||
users.auth_source=Fonte da autenticação
|
||||
@ -2811,7 +2837,10 @@ users.details=Detalhes do usuário
|
||||
emails.email_manage_panel=Gerenciamento de E-mail de Usuário
|
||||
emails.primary=Principal
|
||||
emails.activated=Ativado
|
||||
emails.filter_sort.name=Nome de usuário
|
||||
emails.filter_sort.email=E-mail
|
||||
emails.filter_sort.email_reverse=E-mail (reverso)
|
||||
emails.filter_sort.name=Nome de Usuário
|
||||
emails.filter_sort.name_reverse=Nome de Usuário (reverso)
|
||||
emails.updated=Endereço de e-mail atualizado
|
||||
emails.not_updated=Falha ao atualizar o endereço de e-mail solicitado: %v
|
||||
emails.duplicate_active=Este endereço de e-mail já está ativo para um usuário diferente.
|
||||
@ -2965,33 +2994,33 @@ auths.login_source_of_type_exist=Uma fonte de autenticação deste tipo já exis
|
||||
auths.unable_to_initialize_openid=Não é possível inicializar o Provedor OpenID Connect: %s
|
||||
auths.invalid_openIdConnectAutoDiscoveryURL=URL do Auto Discovery inválida (deve ser uma URL válida, começando com http:// ou https://)
|
||||
|
||||
config.server_config=Configuração do servidor
|
||||
config.server_config=Configuração do Servidor
|
||||
config.app_name=Nome do Site
|
||||
config.app_ver=Versão do Gitea
|
||||
config.app_url=URL base do Gitea
|
||||
config.custom_conf=Caminho do Arquivo de Configuração
|
||||
config.custom_file_root_path=Caminho Raiz para Arquivo Personalizado
|
||||
config.domain=Domínio do Servidor
|
||||
config.offline_mode=Modo local
|
||||
config.offline_mode=Modo Local
|
||||
config.disable_router_log=Desabilitar o Log do roteador
|
||||
config.run_user=Executar como nome de usuário
|
||||
config.run_user=Executar como Usuário
|
||||
config.run_mode=Modo de Execução
|
||||
config.git_version=Versão do Git
|
||||
config.repo_root_path=Caminho raiz do repositório
|
||||
config.repo_root_path=Caminho Raiz do Repositório
|
||||
config.lfs_root_path=Caminho raiz do LFS
|
||||
config.log_file_root_path=Caminho do log
|
||||
config.script_type=Tipo de script
|
||||
config.reverse_auth_user=Usuário de autenticação reversa
|
||||
config.log_file_root_path=Caminho do Log
|
||||
config.script_type=Tipo de Script
|
||||
config.reverse_auth_user=Usuário de Autenticação Reversa
|
||||
|
||||
config.ssh_config=Configuração de SSH
|
||||
config.ssh_enabled=Habilitado
|
||||
config.ssh_start_builtin_server=Usar o servidor embutido
|
||||
config.ssh_start_builtin_server=Usar o Servidor Embutido
|
||||
config.ssh_domain=Domínio do servidor SSH
|
||||
config.ssh_port=Porta
|
||||
config.ssh_listen_port=Porta de escuta
|
||||
config.ssh_root_path=Caminho da raiz
|
||||
config.ssh_minimum_key_size_check=Verificar tamanho mínimo da chave
|
||||
config.ssh_minimum_key_sizes=Tamanhos mínimos da chave
|
||||
config.ssh_listen_port=Porta de Escuta
|
||||
config.ssh_root_path=Caminho da Raiz
|
||||
config.ssh_minimum_key_size_check=Verificar Tamanho Mínimo da Chave
|
||||
config.ssh_minimum_key_sizes=Tamanhos Mínimos da Chave
|
||||
|
||||
config.lfs_config=Configuração de LFS
|
||||
config.lfs_enabled=Habilitado
|
||||
@ -3007,30 +3036,30 @@ config.db_schema=Esquema
|
||||
config.db_ssl_mode=SSL
|
||||
config.db_path=Caminho
|
||||
|
||||
config.service_config=Configuração do serviço
|
||||
config.register_email_confirm=Exigir confirmação de e-mail para se cadastrar
|
||||
config.service_config=Configuração do Serviço
|
||||
config.register_email_confirm=Exigir Confirmação de E-mail para se Cadastrar
|
||||
config.disable_register=Desabilitar Auto-Cadastro
|
||||
config.allow_only_internal_registration=Permitir Registro Somente Através do Próprio Gitea
|
||||
config.allow_only_external_registration=Permitir Cadastro Somente por Meio de Serviços Externos
|
||||
config.enable_openid_signup=Habilitar o auto-cadastro via OpenID
|
||||
config.enable_openid_signin=Habilitar acesso via OpenID
|
||||
config.show_registration_button=Mostrar botão de cadastro
|
||||
config.require_sign_in_view=Exigir acesso do usuário para a visualização de páginas
|
||||
config.mail_notify=Habilitar notificações de e-mail
|
||||
config.show_registration_button=Mostrar Botão de Cadastro
|
||||
config.require_sign_in_view=Exigir Acesso do Usuário para a Visualização de Páginas
|
||||
config.mail_notify=Habilitar Notificações de E-mail
|
||||
config.enable_captcha=Habilitar o CAPTCHA
|
||||
config.active_code_lives=Ativar Code Lives
|
||||
config.reset_password_code_lives=Tempo de expiração do código de recuperação de conta
|
||||
config.reset_password_code_lives=Tempo de Expiração do Código de Recuperação de Conta
|
||||
config.default_keep_email_private=Ocultar Endereços de E-mail por Padrão
|
||||
config.default_allow_create_organization=Permitir a Criação de Organizações por Padrão
|
||||
config.enable_timetracking=Habilitar Cronômetro
|
||||
config.default_enable_timetracking=Habilitar o Cronômetro por Padrão
|
||||
config.default_allow_only_contributors_to_track_time=Permitir que apenas os colaboradores acompanhem o cronômetro
|
||||
config.no_reply_address=Ocultar domínio de e-mail
|
||||
config.default_allow_only_contributors_to_track_time=Permitir que Apenas os Colaboradores Acompanhem o Cronômetro
|
||||
config.no_reply_address=Ocultar Domínio de E-mail
|
||||
config.default_visibility_organization=Visibilidade padrão para novas organizações
|
||||
|
||||
config.webhook_config=Configuração de Hook da Web
|
||||
config.queue_length=Tamanho da fila
|
||||
config.deliver_timeout=Intervalo de entrega
|
||||
config.queue_length=Tamanho da Fila
|
||||
config.deliver_timeout=Intervalo de Entrega
|
||||
config.skip_tls_verify=Ignorar verificação de TLS
|
||||
|
||||
config.mailer_config=Configuração de Envio de E-mail
|
||||
@ -3047,7 +3076,7 @@ config.mailer_sendmail_args=Argumentos extras para o Sendmail
|
||||
config.mailer_sendmail_timeout=Tempo limite do Sendmail
|
||||
config.mailer_use_dummy=Dummy
|
||||
config.test_email_placeholder=E-mail (por exemplo, teste@exemplo.com.br)
|
||||
config.send_test_mail=Enviar e-mail de teste
|
||||
config.send_test_mail=Enviar E-mail de Teste
|
||||
config.send_test_mail_submit=Enviar
|
||||
config.test_mail_failed=Ocorreu um erro ao enviar um e-mail de teste para "%s": %v
|
||||
config.test_mail_sent=Um e-mail de teste foi enviado para "%s".
|
||||
@ -3061,33 +3090,33 @@ config.cache_interval=Intervalo de Cache
|
||||
config.cache_conn=Conexão de Cache
|
||||
config.cache_item_ttl=Item de cache TTL
|
||||
|
||||
config.session_config=Configuração da sessão
|
||||
config.session_provider=Provedor da sessão
|
||||
config.provider_config=Configuração do provedor
|
||||
config.session_config=Configuração da Sessão
|
||||
config.session_provider=Provedor da Sessão
|
||||
config.provider_config=Configuração do Provedor
|
||||
config.cookie_name=Nome do Cookie
|
||||
config.gc_interval_time=Tempo de Intervalo do GC
|
||||
config.session_life_time=Tempo de vida da sessão
|
||||
config.session_life_time=Tempo de Vida da Sessão
|
||||
config.https_only=Apenas HTTPS
|
||||
config.cookie_life_time=Tempo de Vida do Cookie
|
||||
|
||||
config.picture_config=Configuração de imagem e avatar
|
||||
config.picture_service=Serviço de imagens
|
||||
config.picture_config=Configuração de Imagem e Avatar
|
||||
config.picture_service=Serviço de Imagens
|
||||
config.disable_gravatar=Desabilitar o Gravatar
|
||||
config.enable_federated_avatar=Habilitar avatares federativos
|
||||
config.enable_federated_avatar=Habilitar Avatares Federativos
|
||||
|
||||
config.git_config=Configuração do Git
|
||||
config.git_disable_diff_highlight=Desabilitar realce de mudanças no diff
|
||||
config.git_disable_diff_highlight=Desabilitar Realce de Mudanças no Diff
|
||||
config.git_max_diff_lines=Máximo de linhas mostradas no diff (para um único arquivo)
|
||||
config.git_max_diff_line_characters=Máximo de caracteres mostrados no diff (para uma única linha)
|
||||
config.git_max_diff_files=Máximo de arquivos a serem mostrados no diff
|
||||
config.git_max_diff_files=Máximo de Arquivos a Serem Mostrados no Diff
|
||||
config.git_gc_args=Argumentos do GC
|
||||
config.git_migrate_timeout=Tempo limite de migração
|
||||
config.git_mirror_timeout=Tempo limite de atualização de espelhamento
|
||||
config.git_clone_timeout=Tempo limite para operação de clone
|
||||
config.git_pull_timeout=Tempo limite para operação de pull
|
||||
config.git_migrate_timeout=Tempo Limite de Migração
|
||||
config.git_mirror_timeout=Tempo Limite de Atualização de Espelhamento
|
||||
config.git_clone_timeout=Tempo Limite para Operação de Clone
|
||||
config.git_pull_timeout=Tempo Limite para Operação de Pull
|
||||
config.git_gc_timeout=Tempo limite para execução do GC
|
||||
|
||||
config.log_config=Configuração de log
|
||||
config.log_config=Configuração de Log
|
||||
config.logger_name_fmt=Logger: %s
|
||||
config.disabled_logger=Desabilitado
|
||||
config.access_log_mode=Modo log Access
|
||||
@ -3098,18 +3127,18 @@ config.set_setting_failed=Falha ao definir configuração %s
|
||||
|
||||
monitor.stats=Estatísticas
|
||||
|
||||
monitor.cron=Tarefas cron
|
||||
monitor.cron=Tarefas Cron
|
||||
monitor.name=Nome
|
||||
monitor.schedule=Cronograma
|
||||
monitor.next=Próxima vez
|
||||
monitor.previous=Vez anterior
|
||||
monitor.next=Próxima Vez
|
||||
monitor.previous=Vez Anterior
|
||||
monitor.execute_times=Execuções
|
||||
monitor.process=Processos em execução
|
||||
monitor.process=Processos em Execução
|
||||
monitor.processes_count=%d processos
|
||||
monitor.download_diagnosis_report=Baixar relatório de diagnóstico
|
||||
monitor.desc=Descrição
|
||||
monitor.start=Hora de início
|
||||
monitor.execute_time=Tempo de execução
|
||||
monitor.execute_time=Tempo de Execução
|
||||
monitor.last_execution_result=Resultado
|
||||
monitor.process.cancel=Cancelar processo
|
||||
monitor.process.cancel_desc=Cancelar um processo pode causar perda de dados
|
||||
@ -3119,14 +3148,14 @@ monitor.queues=Filas
|
||||
monitor.queue=Fila: %s
|
||||
monitor.queue.name=Nome
|
||||
monitor.queue.type=Tipo
|
||||
monitor.queue.exemplar=Tipo de modelo
|
||||
monitor.queue.exemplar=Tipo de Modelo
|
||||
monitor.queue.numberworkers=Número de executores
|
||||
monitor.queue.maxnumberworkers=Número máximo de executores
|
||||
monitor.queue.numberinqueue=Número na Fila
|
||||
monitor.queue.settings.title=Configurações do conjunto
|
||||
monitor.queue.settings.maxnumberworkers.placeholder=Atualmente %[1]d
|
||||
monitor.queue.settings.maxnumberworkers.error=Número máximo de executores deve ser um número
|
||||
monitor.queue.settings.submit=Atualizar configurações
|
||||
monitor.queue.settings.submit=Atualizar Configurações
|
||||
monitor.queue.settings.changed=Configurações atualizadas
|
||||
monitor.queue.settings.remove_all_items=Remover tudo
|
||||
monitor.queue.settings.remove_all_items_done=Todos os itens da fila foram removidos.
|
||||
|
||||
@ -736,14 +736,14 @@ func updateBasicProperties(ctx *context.APIContext, opts api.EditRepoOption) err
|
||||
// Default branch only updated if changed and exist or the repository is empty
|
||||
updateRepoLicense := false
|
||||
if opts.DefaultBranch != nil && repo.DefaultBranch != *opts.DefaultBranch && (repo.IsEmpty || gitrepo.IsBranchExist(ctx, ctx.Repo.Repository, *opts.DefaultBranch)) {
|
||||
repo.DefaultBranch = *opts.DefaultBranch
|
||||
if !repo.IsEmpty {
|
||||
if err := gitrepo.SetDefaultBranch(ctx, ctx.Repo.Repository, *opts.DefaultBranch); err != nil {
|
||||
if err := gitrepo.SetDefaultBranch(ctx, repo, repo.DefaultBranch); err != nil {
|
||||
ctx.APIErrorInternal(err)
|
||||
return err
|
||||
}
|
||||
updateRepoLicense = true
|
||||
}
|
||||
repo.DefaultBranch = *opts.DefaultBranch
|
||||
}
|
||||
|
||||
if err := repo_service.UpdateRepository(ctx, repo, visibilityChanged); err != nil {
|
||||
|
||||
@ -707,12 +707,6 @@ func PrepareCompareDiff(
|
||||
}
|
||||
|
||||
func getBranchesAndTagsForRepo(ctx gocontext.Context, repo *repo_model.Repository) (branches, tags []string, err error) {
|
||||
gitRepo, err := gitrepo.OpenRepository(ctx, repo)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
defer gitRepo.Close()
|
||||
|
||||
branches, err = git_model.FindBranchNames(ctx, git_model.FindBranchOptions{
|
||||
RepoID: repo.ID,
|
||||
ListOptions: db.ListOptionsAll,
|
||||
@ -721,7 +715,7 @@ func getBranchesAndTagsForRepo(ctx gocontext.Context, repo *repo_model.Repositor
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
tags, err = gitRepo.GetTags(0, 0)
|
||||
tags, err = repo_model.GetTagNamesByRepoID(ctx, repo.ID)
|
||||
if err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
|
||||
@ -532,8 +532,8 @@ func DeleteBranch(ctx context.Context, doer *user_model.User, repo *repo_model.R
|
||||
// database branch record not exist or it's a deleted branch
|
||||
notExist := git_model.IsErrBranchNotExist(err) || rawBranch.IsDeleted
|
||||
|
||||
commit, err := gitRepo.GetBranchCommit(branchName)
|
||||
if err != nil {
|
||||
branchCommit, err := gitRepo.GetBranchCommit(branchName)
|
||||
if err != nil && !errors.Is(err, util.ErrNotExist) {
|
||||
return err
|
||||
}
|
||||
|
||||
@ -549,6 +549,9 @@ func DeleteBranch(ctx context.Context, doer *user_model.User, repo *repo_model.R
|
||||
return fmt.Errorf("DeleteBranch: %v", err)
|
||||
}
|
||||
}
|
||||
if branchCommit == nil {
|
||||
return nil
|
||||
}
|
||||
|
||||
return gitRepo.DeleteBranch(branchName, git.DeleteBranchOptions{
|
||||
Force: true,
|
||||
@ -557,20 +560,24 @@ func DeleteBranch(ctx context.Context, doer *user_model.User, repo *repo_model.R
|
||||
return err
|
||||
}
|
||||
|
||||
objectFormat := git.ObjectFormatFromName(repo.ObjectFormatName)
|
||||
if branchCommit == nil {
|
||||
return nil
|
||||
}
|
||||
|
||||
// Don't return error below this
|
||||
|
||||
objectFormat := git.ObjectFormatFromName(repo.ObjectFormatName)
|
||||
if err := PushUpdate(
|
||||
&repo_module.PushUpdateOptions{
|
||||
RefFullName: git.RefNameFromBranch(branchName),
|
||||
OldCommitID: commit.ID.String(),
|
||||
OldCommitID: branchCommit.ID.String(),
|
||||
NewCommitID: objectFormat.EmptyObjectID().String(),
|
||||
PusherID: doer.ID,
|
||||
PusherName: doer.Name,
|
||||
RepoUserName: repo.OwnerName,
|
||||
RepoName: repo.Name,
|
||||
}); err != nil {
|
||||
log.Error("Update: %v", err)
|
||||
log.Error("PushUpdateOptions: %v", err)
|
||||
}
|
||||
|
||||
return nil
|
||||
|
||||
@ -43,7 +43,7 @@ func InitWiki(ctx context.Context, repo *repo_model.Repository) error {
|
||||
return fmt.Errorf("InitRepository: %w", err)
|
||||
} else if err = gitrepo.CreateDelegateHooks(ctx, repo.WikiStorageRepo()); err != nil {
|
||||
return fmt.Errorf("createDelegateHooks: %w", err)
|
||||
} else if _, _, err = git.NewCommand("symbolic-ref", "HEAD").AddDynamicArguments(git.BranchPrefix+repo.DefaultWikiBranch).RunStdString(ctx, &git.RunOpts{Dir: repo.WikiPath()}); err != nil {
|
||||
} else if err = gitrepo.SetDefaultBranch(ctx, repo.WikiStorageRepo(), repo.DefaultWikiBranch); err != nil {
|
||||
return fmt.Errorf("unable to set default wiki branch to %q: %w", repo.DefaultWikiBranch, err)
|
||||
}
|
||||
return nil
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user