Merge branch 'main' into feature-activitypub
This commit is contained in:
commit
7bfadb46ff
24 changed files with 730 additions and 116 deletions
|
@ -21,6 +21,7 @@ import (
|
|||
"code.gitea.io/gitea/routers"
|
||||
"code.gitea.io/gitea/routers/install"
|
||||
|
||||
"github.com/felixge/fgprof"
|
||||
"github.com/urfave/cli"
|
||||
ini "gopkg.in/ini.v1"
|
||||
)
|
||||
|
@ -145,6 +146,7 @@ func runWeb(ctx *cli.Context) error {
|
|||
|
||||
if setting.EnablePprof {
|
||||
go func() {
|
||||
http.DefaultServeMux.Handle("/debug/fgprof", fgprof.Handler())
|
||||
_, _, finished := process.GetManager().AddTypedContext(context.Background(), "Web: PProf Server", process.SystemProcessType, true)
|
||||
log.Info("Starting pprof server on localhost:6060")
|
||||
log.Info("%v", http.ListenAndServe("localhost:6060", nil))
|
||||
|
|
1
go.mod
1
go.mod
|
@ -26,6 +26,7 @@ require (
|
|||
github.com/editorconfig/editorconfig-core-go/v2 v2.4.4
|
||||
github.com/emirpasic/gods v1.18.1
|
||||
github.com/ethantkoenig/rupture v1.0.1
|
||||
github.com/felixge/fgprof v0.9.2
|
||||
github.com/gliderlabs/ssh v0.3.4
|
||||
github.com/go-ap/activitypub v0.0.0-20220615144428-48208c70483b
|
||||
github.com/go-chi/chi/v5 v5.0.7
|
||||
|
|
4
go.sum
4
go.sum
|
@ -428,6 +428,8 @@ github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5Kwzbycv
|
|||
github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU=
|
||||
github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w=
|
||||
github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk=
|
||||
github.com/felixge/fgprof v0.9.2 h1:tAMHtWMyl6E0BimjVbFt7fieU6FpjttsZN7j0wT5blc=
|
||||
github.com/felixge/fgprof v0.9.2/go.mod h1:+VNi+ZXtHIQ6wIw6bUT8nXQRefQflWECoFyRealT5sg=
|
||||
github.com/felixge/httpsnoop v1.0.1/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=
|
||||
github.com/felixge/httpsnoop v1.0.2 h1:+nS9g82KMXccJ/wp0zyRW9ZBHFETmMGtkk+2CTTrW4o=
|
||||
github.com/felixge/httpsnoop v1.0.2/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=
|
||||
|
@ -777,6 +779,7 @@ github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLe
|
|||
github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
|
||||
github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
|
||||
github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE=
|
||||
github.com/google/pprof v0.0.0-20211214055906-6f57359322fd/go.mod h1:KgnwoLYCZ8IQu3XUZ8Nc/bM9CCZFOyjUNOSygVozoDg=
|
||||
github.com/google/pprof v0.0.0-20220509035851-59ca7ad80af3 h1:vFrXU7L2gqtlP/ZGijSpaDIc16ZQrZI4FAuYtpQTyQc=
|
||||
github.com/google/pprof v0.0.0-20220509035851-59ca7ad80af3/go.mod h1:Pt31oes+eGImORns3McJn8zHefuQl2rG8l6xQjGYB4U=
|
||||
github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
|
||||
|
@ -900,6 +903,7 @@ github.com/iancoleman/strcase v0.0.0-20180726023541-3605ed457bf7/go.mod h1:SK73t
|
|||
github.com/iancoleman/strcase v0.2.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho=
|
||||
github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
|
||||
github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
|
||||
github.com/ianlancetaylor/demangle v0.0.0-20210905161508-09a460cdf81d/go.mod h1:aYm2/VgdVmcIU8iMfdMvDMsRAQjcfZSKFby6HOFvi/w=
|
||||
github.com/imdario/mergo v0.3.4/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA=
|
||||
github.com/imdario/mergo v0.3.8/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA=
|
||||
github.com/imdario/mergo v0.3.9/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA=
|
||||
|
|
|
@ -30,6 +30,7 @@ import (
|
|||
"code.gitea.io/gitea/modules/util"
|
||||
|
||||
"xorm.io/builder"
|
||||
"xorm.io/xorm/schemas"
|
||||
)
|
||||
|
||||
// ActionType represents the type of an action.
|
||||
|
@ -70,25 +71,36 @@ const (
|
|||
// used in template render.
|
||||
type Action struct {
|
||||
ID int64 `xorm:"pk autoincr"`
|
||||
UserID int64 `xorm:"INDEX"` // Receiver user id.
|
||||
UserID int64 // Receiver user id.
|
||||
OpType ActionType
|
||||
ActUserID int64 `xorm:"INDEX"` // Action user id.
|
||||
ActUser *user_model.User `xorm:"-"`
|
||||
RepoID int64 `xorm:"INDEX"`
|
||||
ActUserID int64 // Action user id.
|
||||
ActUser *user_model.User `xorm:"-"`
|
||||
RepoID int64
|
||||
Repo *repo_model.Repository `xorm:"-"`
|
||||
CommentID int64 `xorm:"INDEX"`
|
||||
Comment *issues_model.Comment `xorm:"-"`
|
||||
IsDeleted bool `xorm:"INDEX NOT NULL DEFAULT false"`
|
||||
IsDeleted bool `xorm:"NOT NULL DEFAULT false"`
|
||||
RefName string
|
||||
IsPrivate bool `xorm:"INDEX NOT NULL DEFAULT false"`
|
||||
IsPrivate bool `xorm:"NOT NULL DEFAULT false"`
|
||||
Content string `xorm:"TEXT"`
|
||||
CreatedUnix timeutil.TimeStamp `xorm:"INDEX created"`
|
||||
CreatedUnix timeutil.TimeStamp `xorm:"created"`
|
||||
}
|
||||
|
||||
func init() {
|
||||
db.RegisterModel(new(Action))
|
||||
}
|
||||
|
||||
// TableIndices implements xorm's TableIndices interface
|
||||
func (a *Action) TableIndices() []*schemas.Index {
|
||||
actUserIndex := schemas.NewIndex("au_r_c_u_d", schemas.IndexType)
|
||||
actUserIndex.AddColumn("act_user_id", "repo_id", "created_unix", "user_id", "is_deleted")
|
||||
|
||||
repoIndex := schemas.NewIndex("r_c_u_d", schemas.IndexType)
|
||||
repoIndex.AddColumn("repo_id", "created_unix", "user_id", "is_deleted")
|
||||
|
||||
return []*schemas.Index{actUserIndex, repoIndex}
|
||||
}
|
||||
|
||||
// GetOpType gets the ActionType of this action.
|
||||
func (a *Action) GetOpType() ActionType {
|
||||
return a.OpType
|
||||
|
|
|
@ -733,7 +733,7 @@ func DeleteLabelsByRepoID(ctx context.Context, repoID int64) error {
|
|||
|
||||
// CountOrphanedLabels return count of labels witch are broken and not accessible via ui anymore
|
||||
func CountOrphanedLabels() (int64, error) {
|
||||
noref, err := db.GetEngine(db.DefaultContext).Table("label").Where("repo_id=? AND org_id=?", 0, 0).Count("label.id")
|
||||
noref, err := db.GetEngine(db.DefaultContext).Table("label").Where("repo_id=? AND org_id=?", 0, 0).Count()
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
|
|
|
@ -387,6 +387,8 @@ var migrations = []Migration{
|
|||
NewMigration("Add auto merge table", addAutoMergeTable),
|
||||
// v215 -> v216
|
||||
NewMigration("allow to view files in PRs", addReviewViewedFiles),
|
||||
// v216 -> v217
|
||||
NewMigration("Improve Action table indices", improveActionTableIndices),
|
||||
}
|
||||
|
||||
// GetCurrentDBVersion returns the current db version
|
||||
|
|
67
models/migrations/v216.go
Normal file
67
models/migrations/v216.go
Normal file
|
@ -0,0 +1,67 @@
|
|||
// Copyright 2022 The Gitea Authors. All rights reserved.
|
||||
// Use of this source code is governed by a MIT-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package migrations
|
||||
|
||||
import (
|
||||
"code.gitea.io/gitea/modules/timeutil"
|
||||
|
||||
"xorm.io/xorm"
|
||||
"xorm.io/xorm/schemas"
|
||||
)
|
||||
|
||||
type improveActionTableIndicesAction struct {
|
||||
ID int64 `xorm:"pk autoincr"`
|
||||
UserID int64 // Receiver user id.
|
||||
OpType int
|
||||
ActUserID int64 // Action user id.
|
||||
RepoID int64
|
||||
CommentID int64 `xorm:"INDEX"`
|
||||
IsDeleted bool `xorm:"NOT NULL DEFAULT false"`
|
||||
RefName string
|
||||
IsPrivate bool `xorm:"NOT NULL DEFAULT false"`
|
||||
Content string `xorm:"TEXT"`
|
||||
CreatedUnix timeutil.TimeStamp `xorm:"created"`
|
||||
}
|
||||
|
||||
// TableName sets the name of this table
|
||||
func (a *improveActionTableIndicesAction) TableName() string {
|
||||
return "action"
|
||||
}
|
||||
|
||||
// TableIndices implements xorm's TableIndices interface
|
||||
func (a *improveActionTableIndicesAction) TableIndices() []*schemas.Index {
|
||||
actUserIndex := schemas.NewIndex("au_r_c_u_d", schemas.IndexType)
|
||||
actUserIndex.AddColumn("act_user_id", "repo_id", "created_unix", "user_id", "is_deleted")
|
||||
|
||||
repoIndex := schemas.NewIndex("r_c_u_d", schemas.IndexType)
|
||||
repoIndex.AddColumn("repo_id", "created_unix", "user_id", "is_deleted")
|
||||
|
||||
return []*schemas.Index{actUserIndex, repoIndex}
|
||||
}
|
||||
|
||||
func improveActionTableIndices(x *xorm.Engine) error {
|
||||
{
|
||||
type Action struct {
|
||||
ID int64 `xorm:"pk autoincr"`
|
||||
UserID int64 `xorm:"INDEX"` // Receiver user id.
|
||||
OpType int
|
||||
ActUserID int64 `xorm:"INDEX"` // Action user id.
|
||||
RepoID int64 `xorm:"INDEX"`
|
||||
CommentID int64 `xorm:"INDEX"`
|
||||
IsDeleted bool `xorm:"INDEX NOT NULL DEFAULT false"`
|
||||
RefName string
|
||||
IsPrivate bool `xorm:"INDEX NOT NULL DEFAULT false"`
|
||||
Content string `xorm:"TEXT"`
|
||||
CreatedUnix timeutil.TimeStamp `xorm:"INDEX created"`
|
||||
}
|
||||
if err := x.Sync2(&Action{}); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := x.DropIndexes(&Action{}); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
return x.Sync2(&improveActionTableIndicesAction{})
|
||||
}
|
|
@ -199,6 +199,12 @@ func checkDBConsistency(ctx context.Context, logger log.Logger, autofix bool) er
|
|||
// find OAuth2AuthorizationCode without existing OAuth2Grant
|
||||
genericOrphanCheck("Orphaned OAuth2AuthorizationCode without existing OAuth2Grant",
|
||||
"oauth2_authorization_code", "oauth2_grant", "oauth2_authorization_code.grant_id=oauth2_grant.id"),
|
||||
// find stopwatches without existing user
|
||||
genericOrphanCheck("Orphaned Stopwatches without existing User",
|
||||
"stopwatch", "user", "stopwatch.user_id=user.id"),
|
||||
// find stopwatches without existing issue
|
||||
genericOrphanCheck("Orphaned Stopwatches without existing Issue",
|
||||
"stopwatch", "issue", "stopwatch.issue_id=issue.id"),
|
||||
)
|
||||
|
||||
for _, c := range consistencyChecks {
|
||||
|
|
|
@ -94,7 +94,9 @@ loop:
|
|||
for _, userStopwatches := range usersStopwatches {
|
||||
apiSWs, err := convert.ToStopWatches(userStopwatches.StopWatches)
|
||||
if err != nil {
|
||||
log.Error("Unable to APIFormat stopwatches: %v", err)
|
||||
if !issues_model.IsErrIssueNotExist(err) {
|
||||
log.Error("Unable to APIFormat stopwatches: %v", err)
|
||||
}
|
||||
continue
|
||||
}
|
||||
dataBs, err := json.Marshal(apiSWs)
|
||||
|
|
|
@ -238,6 +238,9 @@ func syncGitConfig() (err error) {
|
|||
if err := configSet("gc.writeCommitGraph", "true"); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := configSet("fetch.writeCommitGraph", "true"); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
if SupportProcReceive {
|
||||
|
@ -251,6 +254,19 @@ func syncGitConfig() (err error) {
|
|||
}
|
||||
}
|
||||
|
||||
// Due to CVE-2022-24765, git now denies access to git directories which are not owned by current user
|
||||
// however, some docker users and samba users find it difficult to configure their systems so that Gitea's git repositories are owned by the Gitea user. (Possibly Windows Service users - but ownership in this case should really be set correctly on the filesystem.)
|
||||
// see issue: https://github.com/go-gitea/gitea/issues/19455
|
||||
// Fundamentally the problem lies with the uid-gid-mapping mechanism for filesystems in docker on windows (and to a lesser extent samba).
|
||||
// Docker's configuration mechanism for local filesystems provides no way of setting this mapping and although there is a mechanism for setting this uid through using cifs mounting it is complicated and essentially undocumented
|
||||
// Thus the owner uid/gid for files on these filesystems will be marked as root.
|
||||
// As Gitea now always use its internal git config file, and access to the git repositories is managed through Gitea,
|
||||
// it is now safe to set "safe.directory=*" for internal usage only.
|
||||
// Please note: the wildcard "*" is only supported by Git 2.30.4/2.31.3/2.32.2/2.33.3/2.34.3/2.35.3/2.36 and later
|
||||
// Although only supported by Git 2.30.4/2.31.3/2.32.2/2.33.3/2.34.3/2.35.3/2.36 and later - this setting is tolerated by earlier versions
|
||||
if err := configAddNonExist("safe.directory", "*"); err != nil {
|
||||
return err
|
||||
}
|
||||
if runtime.GOOS == "windows" {
|
||||
if err := configSet("core.longpaths", "true"); err != nil {
|
||||
return err
|
||||
|
|
|
@ -89,8 +89,10 @@ func (l *ChannelledLog) Start() {
|
|||
l.closeLogger()
|
||||
return
|
||||
}
|
||||
l.emptyQueue()
|
||||
l.loggerProvider.Flush()
|
||||
case <-l.close:
|
||||
l.emptyQueue()
|
||||
l.closeLogger()
|
||||
return
|
||||
}
|
||||
|
@ -111,6 +113,20 @@ func (l *ChannelledLog) LogEvent(event *Event) error {
|
|||
}
|
||||
}
|
||||
|
||||
func (l *ChannelledLog) emptyQueue() bool {
|
||||
for {
|
||||
select {
|
||||
case event, ok := <-l.queue:
|
||||
if !ok {
|
||||
return false
|
||||
}
|
||||
l.loggerProvider.LogEvent(event)
|
||||
default:
|
||||
return true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func (l *ChannelledLog) closeLogger() {
|
||||
l.loggerProvider.Flush()
|
||||
l.loggerProvider.Close()
|
||||
|
@ -345,18 +361,41 @@ func (m *MultiChannelledLog) Start() {
|
|||
m.closeLoggers()
|
||||
return
|
||||
}
|
||||
m.emptyQueue()
|
||||
m.rwmutex.RLock()
|
||||
for _, logger := range m.loggers {
|
||||
logger.Flush()
|
||||
}
|
||||
m.rwmutex.RUnlock()
|
||||
case <-m.close:
|
||||
m.emptyQueue()
|
||||
m.closeLoggers()
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func (m *MultiChannelledLog) emptyQueue() bool {
|
||||
for {
|
||||
select {
|
||||
case event, ok := <-m.queue:
|
||||
if !ok {
|
||||
return false
|
||||
}
|
||||
m.rwmutex.RLock()
|
||||
for _, logger := range m.loggers {
|
||||
err := logger.LogEvent(event)
|
||||
if err != nil {
|
||||
fmt.Println(err)
|
||||
}
|
||||
}
|
||||
m.rwmutex.RUnlock()
|
||||
default:
|
||||
return true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// LogEvent logs an event to this MultiChannelledLog
|
||||
func (m *MultiChannelledLog) LogEvent(event *Event) error {
|
||||
select {
|
||||
|
|
|
@ -976,9 +976,6 @@ type remoteAddress struct {
|
|||
|
||||
func mirrorRemoteAddress(ctx context.Context, m *repo_model.Repository, remoteName string) remoteAddress {
|
||||
a := remoteAddress{}
|
||||
if !m.IsMirror {
|
||||
return a
|
||||
}
|
||||
|
||||
remoteURL := m.OriginalURL
|
||||
if remoteURL == "" {
|
||||
|
|
|
@ -2,6 +2,7 @@ home=Startseite
|
|||
dashboard=Übersicht
|
||||
explore=Erkunden
|
||||
help=Hilfe
|
||||
logo=Logo
|
||||
sign_in=Anmelden
|
||||
sign_in_with=Anmelden mit
|
||||
sign_out=Abmelden
|
||||
|
@ -44,7 +45,9 @@ webauthn_error_unknown=Ein unbekannter Fehler ist aufgetreten. Bitte versuche es
|
|||
webauthn_error_insecure=WebAuthn unterstützt nur sichere Verbindungen. Zum Testen über HTTP kannst du "localhost" oder "127.0.0.1" als Host verwenden
|
||||
webauthn_error_unable_to_process=Der Server konnte deine Anfrage nicht bearbeiten.
|
||||
webauthn_error_duplicated=Für diese Anfrage ist der Sicherheitsschlüssel nicht erlaubt. Bitte stell sicher, dass er nicht bereits registriert ist.
|
||||
webauthn_error_empty=Du musst einen Namen für diesen Schlüssel festlegen.
|
||||
webauthn_error_timeout=Das Zeitlimit wurde erreicht, bevor dein Schlüssel gelesen werden konnte. Bitte lade die Seite erneut.
|
||||
webauthn_u2f_deprecated=Der Schlüssel: '%s' authentifiziert sich über den veralteten U2F-Prozess. Bitte registriere den Schlüssel neu und lösche die alte Registrierung.
|
||||
webauthn_reload=Neu laden
|
||||
|
||||
repository=Repository
|
||||
|
@ -103,6 +106,7 @@ error404=Die Seite, die du gerade versuchst aufzurufen, <strong>existiert entwed
|
|||
|
||||
never=Niemals
|
||||
|
||||
rss_feed=RSS Feed
|
||||
|
||||
[error]
|
||||
occurred=Ein Fehler ist aufgetreten
|
||||
|
@ -143,6 +147,8 @@ path=Pfad
|
|||
sqlite_helper=Dateipfad zur SQLite3 Datenbank.<br>Gebe einen absoluten Pfad an, wenn Gitea als Service gestartet wird.
|
||||
reinstall_error=Du versuchst, in eine bereits existierende Gitea Datenbank zu installieren
|
||||
reinstall_confirm_message=Eine Neuinstallation mit einer bestehenden Gitea-Datenbank kann mehrere Probleme verursachen. In den meisten Fällen solltest du deine vorhandene "app.ini" verwenden, um Gitea auszuführen. Wenn du weist, was du tust, bestätigen die folgenden Angaben:
|
||||
reinstall_confirm_check_1=Die von der SECRET_KEY in app.ini verschlüsselten Daten können verloren gehen: Benutzer können sich unter Umständen nicht mit 2FA/OTP einloggen & Spiegelungen könnten nicht mehr richtig funktionieren. Durch Ankreuzung dieses Kästchens bestätigst du, dass die aktuelle app.ini Datei den korrekten SECRET_KEY enthält.
|
||||
reinstall_confirm_check_2=Die Repositories und Einstellungen müssen eventuell neu synchronisiert werden. Durch Ankreuzung dieses Kästchens bestätigst du, dass du die Hooks für die Repositories und authorized_keys Datei manuell neu synchronisierst. Du bestätigst, dass du sicher stellst, dass die Repository- und Spiegel-Einstellungen korrekt sind.
|
||||
reinstall_confirm_check_3=Du bestätigst, dass du absolut sicher bist, dass diese Gitea mit der richtigen app.ini läuft, und du sicher bist, dass du neu installieren musst. Du bestätigst, dass du die oben genannten Risiken anerkennst.
|
||||
err_empty_db_path=Der SQLite3 Datenbankpfad darf nicht leer sein.
|
||||
no_admin_and_disable_registration=Du kannst Selbst-Registrierungen nicht deaktivieren, ohne ein Administratorkonto zu erstellen.
|
||||
|
@ -265,6 +271,7 @@ search=Suche
|
|||
code=Code
|
||||
search.fuzzy=Ähnlich
|
||||
search.match=Genau
|
||||
code_search_unavailable=Derzeit ist die Code-Suche nicht verfügbar. Bitte wende dich an den Website-Administrator.
|
||||
repo_no_results=Keine passenden Repositories gefunden.
|
||||
user_no_results=Keine passenden Benutzer gefunden.
|
||||
org_no_results=Keine passenden Organisationen gefunden.
|
||||
|
@ -278,6 +285,7 @@ register_helper_msg=Hast du bereits ein Konto? Jetzt anmelden!
|
|||
social_register_helper_msg=Hast du bereits ein Konto? Jetzt verknüpfen!
|
||||
disable_register_prompt=Die Registrierung ist deaktiviert. Bitte wende dich an den Administrator.
|
||||
disable_register_mail=E-Mail-Bestätigung bei der Registrierung ist deaktiviert.
|
||||
manual_activation_only=Kontaktiere den Website-Administrator, um die Aktivierung abzuschließen.
|
||||
remember_me=Dieses Gerät speichern
|
||||
forgot_password_title=Passwort vergessen
|
||||
forgot_password=Passwort vergessen?
|
||||
|
@ -435,6 +443,7 @@ size_error=` muss die Größe %s haben.`
|
|||
min_size_error=` muss mindestens %s Zeichen enthalten.`
|
||||
max_size_error=` darf höchstens %s Zeichen enthalten.`
|
||||
email_error=` ist keine gültige E-Mail-Adresse.`
|
||||
url_error=`'%s' ist keine valide URL.`
|
||||
include_error=` muss den Text „%s“ enthalten.`
|
||||
glob_pattern_error=` Der Glob Pattern ist ungültig: %s.`
|
||||
regex_pattern_error=` regex ist ungültig: %s.`
|
||||
|
@ -482,7 +491,9 @@ auth_failed=Authentifizierung fehlgeschlagen: %v
|
|||
|
||||
still_own_repo=Dein Konto besitzt ein oder mehrere Repositories. Diese müssen zuerst gelöscht oder übertragen werden.
|
||||
still_has_org=Dein Account ist Mitglied in mindestens einer Organisation. Bitte verlasse diese zuerst.
|
||||
still_own_packages=Ihr Konto besitzt ein oder mehrere Pakete; löschen Sie diese zuerst.
|
||||
org_still_own_repo=Diese Organisation besitzt noch mindestens ein Repository. Bitte lösche oder übertrage diese zuerst.
|
||||
org_still_own_packages=Diese Organisation besitzt noch ein oder mehrere Pakete; lösche diese bitte zuerst.
|
||||
|
||||
target_branch_not_exist=Der Ziel-Branch existiert nicht.
|
||||
|
||||
|
@ -545,8 +556,11 @@ continue=Weiter
|
|||
cancel=Abbrechen
|
||||
language=Sprache
|
||||
ui=Theme
|
||||
hidden_comment_types=Ausgeblendeter Kommentartypen
|
||||
comment_type_group_reference=Verweis auf Mitglieder
|
||||
comment_type_group_label=Label
|
||||
comment_type_group_milestone=Meilenstein
|
||||
comment_type_group_assignee=Zuweisung
|
||||
comment_type_group_title=Titel
|
||||
comment_type_group_branch=Branch
|
||||
comment_type_group_time_tracking=Zeiterfassung
|
||||
|
@ -703,6 +717,9 @@ generate_token_success=Ein neuer Token wurde generiert. Kopiere diesen, da er ni
|
|||
generate_token_name_duplicate=<strong>%s</strong> wurde bereits als Anwendungsname verwendet. Bitte wähle einen neuen Namen.
|
||||
delete_token=Löschen
|
||||
access_token_deletion=Zugriffstoken löschen
|
||||
access_token_deletion_cancel_action=Abbrechen
|
||||
access_token_deletion_confirm_action=Löschen
|
||||
access_token_deletion_desc=Wenn du ein Token löschst, haben die Anwendungen, die es nutzen, keinen Zugriff mehr auf deinen Account. Dies kann nicht rückgängig gemacht werden. Fortfahren?
|
||||
delete_token_success=Der Zugriffstoken wurde gelöscht. Anwendungen die diesen Token genutzt haben, haben nun keinen Zugriff mehr auf deinen Account.
|
||||
|
||||
manage_oauth2_applications=OAuth2 Anwendungen verwalten
|
||||
|
@ -755,6 +772,7 @@ passcode_invalid=Die PIN ist falsch. Probiere es erneut.
|
|||
twofa_enrolled=Die Zwei-Faktor-Authentifizierung wurde für dein Konto aktiviert. Bewahre dein Einmalpasswort (%s) an einem sicheren Ort auf, da es nicht wieder angezeigt werden wird.
|
||||
twofa_failed_get_secret=Fehler beim Abrufen des Secrets.
|
||||
|
||||
webauthn_desc=Sicherheitsschlüssel sind Geräte, die kryptografische Schlüssel beeinhalten. Diese können für die Zwei-Faktor-Authentifizierung verwendet werden. Der Sicherheitsschlüssel muss den Standard „<a rel="noreferrer" target="_blank" href="https://w3c.github.io/webauthn/#webauthn-authenticator">WebAuthn</a>“ unterstützen.
|
||||
webauthn_register_key=Sicherheitsschlüssel hinzufügen
|
||||
webauthn_nickname=Nickname
|
||||
webauthn_delete_key=Sicherheitsschlüssel entfernen
|
||||
|
@ -763,6 +781,7 @@ webauthn_delete_key_desc=Wenn du einen Sicherheitsschlüssel entfernst, kannst d
|
|||
manage_account_links=Verknüpfte Accounts verwalten
|
||||
manage_account_links_desc=Diese externen Accounts sind mit deinem Gitea-Account verknüpft.
|
||||
account_links_not_available=Es sind keine externen Accounts mit diesem Gitea-Account verknüpft.
|
||||
link_account=Account verbinden
|
||||
remove_account_link=Verknüpften Account entfernen
|
||||
remove_account_link_desc=Wenn du den verknüpften Account entfernst, wirst du darüber nicht mehr auf deinen Gitea-Account zugreifen können. Fortfahren?
|
||||
remove_account_link_success=Der verknüpfte Account wurde entfernt.
|
||||
|
@ -843,6 +862,7 @@ default_branch=Standardbranch
|
|||
default_branch_helper=Der default Branch ist der Basisbranch für Pull-Requests und Commits.
|
||||
mirror_prune=Entfernen
|
||||
mirror_prune_desc=Entferne veraltete remote-tracking Referenzen
|
||||
mirror_interval=Mirror-Intervall. Gültige Zeiteinheiten sind 'h', 'm', sowie 's'. 0 deaktiviert die automatische Synchronisierung. (Minimum: %s)
|
||||
mirror_interval_invalid=Das Spiegel-Intervall ist ungültig.
|
||||
mirror_address=Klonen via URL
|
||||
mirror_address_desc=Gib alle erforderlichen Anmeldedaten im Abschnitt "Authentifizierung" ein.
|
||||
|
@ -994,6 +1014,7 @@ tags=Tags
|
|||
issues=Issues
|
||||
pulls=Pull-Requests
|
||||
project_board=Projekte
|
||||
packages=Pakete
|
||||
labels=Label
|
||||
org_labels_desc=Labels der Organisationsebene, die mit <strong>allen Repositories</strong> in dieser Organisation verwendet werden können
|
||||
org_labels_desc_manage=verwalten
|
||||
|
@ -1024,6 +1045,7 @@ line_unicode=`Diese Zeile hat versteckte Unicode-Zeichen`
|
|||
escape_control_characters=Escapen
|
||||
unescape_control_characters=Unescapen
|
||||
file_copy_permalink=Permalink kopieren
|
||||
view_git_blame=Git Blame ansehen
|
||||
video_not_supported_in_browser=Dein Browser unterstützt das HTML5 'video'-Tag nicht.
|
||||
audio_not_supported_in_browser=Dein Browser unterstützt den HTML5 'audio'-Tag nicht.
|
||||
stored_lfs=Gespeichert mit Git LFS
|
||||
|
@ -1102,6 +1124,7 @@ editor.no_commit_to_branch=Kann nicht direkt zum Branch committen, da:
|
|||
editor.user_no_push_to_branch=Benutzer kann nicht in die Branch pushen
|
||||
editor.require_signed_commit=Branch erfordert einen signierten Commit
|
||||
editor.cherry_pick=Cherry-Picke %s von:
|
||||
editor.revert=%s zurücksetzen auf:
|
||||
|
||||
commits.desc=Durchsuche die Quellcode-Änderungshistorie.
|
||||
commits.commits=Commits
|
||||
|
@ -1124,6 +1147,11 @@ commits.ssh_key_fingerprint=SSH-Key-Fingerabdruck
|
|||
|
||||
commit.actions=Aktionen
|
||||
commit.revert=Zurücksetzen
|
||||
commit.revert-header=Setze zurück: %s
|
||||
commit.revert-content=Branch auswählen, der zurückgesetzt werden soll:
|
||||
commit.cherry-pick=Cherry-Pick
|
||||
commit.cherry-pick-header=Cherry-Picke: %s
|
||||
commit.cherry-pick-content=Branch auswählen, auf dem Cherry-Picked werden soll:
|
||||
|
||||
ext_issues=Zugriff auf Externe Issues
|
||||
ext_issues.desc=Link zu externem Issuetracker.
|
||||
|
@ -1162,6 +1190,7 @@ projects.board.deletion_desc=Beim Löschen eines Projektboards werden alle Eintr
|
|||
projects.board.color=Farbe
|
||||
projects.open=Öffnen
|
||||
projects.close=Schließen
|
||||
projects.board.assigned_to=Zugewiesen an
|
||||
|
||||
issues.desc=Verwalte Bug-Reports, Aufgaben und Meilensteine.
|
||||
issues.filter_assignees=Filter
|
||||
|
@ -1256,6 +1285,7 @@ issues.filter_sort.moststars=Meiste Favoriten
|
|||
issues.filter_sort.feweststars=Wenigste Favoriten
|
||||
issues.filter_sort.mostforks=Meiste Forks
|
||||
issues.filter_sort.fewestforks=Wenigste Forks
|
||||
issues.keyword_search_unavailable=Zurzeit ist die Stichwort-Suche nicht verfügbar. Bitte wende dich an den Website-Administrator.
|
||||
issues.action_open=Öffnen
|
||||
issues.action_close=Schließen
|
||||
issues.action_label=Label
|
||||
|
@ -1351,6 +1381,9 @@ issues.lock.reason=Grund für die Sperrung
|
|||
issues.lock.title=Diskussion zu diesem Issue sperren.
|
||||
issues.unlock.title=Diskussion zu diesem Issue entsperren.
|
||||
issues.comment_on_locked=Du kannst einen gesperrten Issue nicht kommentieren.
|
||||
issues.delete=Löschen
|
||||
issues.delete.title=Dieses Issue löschen?
|
||||
issues.delete.text=Möchtest du dieses Issue wirklich löschen? (Dadurch wird der Inhalt dauerhaft gelöscht. Denke daran, es stattdessen zu schließen, wenn du es archivieren willst)
|
||||
issues.tracker=Zeiterfassung
|
||||
issues.start_tracking_short=Zeiterfassung starten
|
||||
issues.start_tracking=Zeiterfassung starten
|
||||
|
@ -1391,6 +1424,8 @@ issues.due_date_remove=hat %[2]s das Fälligkeitsdatum %[1]s entfernt
|
|||
issues.due_date_overdue=Überfällig
|
||||
issues.due_date_invalid=Das Fälligkeitsdatum ist ungültig oder außerhalb des zulässigen Bereichs. Bitte verwende das Format „jjjj-mm-tt“.
|
||||
issues.dependency.title=Abhängigkeiten
|
||||
issues.dependency.issue_no_dependencies=Keine Abhängigkeiten gesetzt.
|
||||
issues.dependency.pr_no_dependencies=Keine Abhängigkeiten gesetzt.
|
||||
issues.dependency.add=Abhängigkeit hinzufügen…
|
||||
issues.dependency.cancel=Abbrechen
|
||||
issues.dependency.remove=Entfernen
|
||||
|
@ -1429,6 +1464,7 @@ issues.review.add_review_request=hat ein Review von %s %s angefragt
|
|||
issues.review.remove_review_request=hat die Aufforderung zum Review an %s %s entfernt
|
||||
issues.review.remove_review_request_self=hat das Review verweigert %s
|
||||
issues.review.pending=Ausstehend
|
||||
issues.review.pending.tooltip=Dieser Kommentar ist derzeit nicht für andere Benutzer sichtbar. Um Ihre ausstehenden Kommentare einzureichen, wählen Sie '%s' -> '%s/%s/%s' oben auf der Seite.
|
||||
issues.review.review=Review
|
||||
issues.review.reviewers=Reviewer
|
||||
issues.review.outdated=Veraltet
|
||||
|
@ -1447,6 +1483,7 @@ issues.content_history.created=erstellt
|
|||
issues.content_history.delete_from_history=Aus dem Verlauf entfernen
|
||||
issues.content_history.delete_from_history_confirm=Aus dem Verlauf löschen?
|
||||
issues.content_history.options=Optionen
|
||||
issues.reference_link=Referenz: %s
|
||||
|
||||
compare.compare_base=Basis
|
||||
compare.compare_head=vergleichen
|
||||
|
@ -1455,7 +1492,13 @@ pulls.desc=Pull-Requests und Code-Reviews aktivieren.
|
|||
pulls.new=Neuer Pull-Request
|
||||
pulls.view=Pull-Request ansehen
|
||||
pulls.compare_changes=Neuer Pull-Request
|
||||
pulls.allow_edits_from_maintainers=Änderungen von Maintainern erlauben
|
||||
pulls.allow_edits_from_maintainers_desc=Nutzer mit Schreibzugriff auf den Basisbranch können auch auf diesen Branch pushen
|
||||
pulls.allow_edits_from_maintainers_err=Aktualisieren fehlgeschlagen
|
||||
pulls.compare_changes_desc=Wähle den Ziel- und Quellbranch aus.
|
||||
pulls.has_viewed_file=Gesehen
|
||||
pulls.has_changed_since_last_review=Inzwischen geändert
|
||||
pulls.viewed_files_label=%[1]d / %[2]d Dateien reviewed
|
||||
pulls.compare_base=Ziel
|
||||
pulls.compare_compare=pullen von
|
||||
pulls.switch_comparison_type=Vergleichstyp wechseln
|
||||
|
@ -1555,8 +1598,17 @@ pulls.merge_instruction_hint=`Siehe auch die <a class="show-instruction">Anleitu
|
|||
pulls.merge_instruction_step1_desc=Wechsle auf einen neuen Branch in deinem lokalen Repository und teste die Änderungen.
|
||||
pulls.merge_instruction_step2_desc=Führe die Änderungen zusammen und aktualisiere den Stand online auf Gitea.
|
||||
|
||||
pulls.auto_merge_button_when_succeed=(Wenn die Checks erfolgreich sind)
|
||||
pulls.auto_merge_when_succeed=Automergen, sobald alle Checks erfüllt sind
|
||||
pulls.auto_merge_newly_scheduled=Der Pull-Request wird automatisch gemergt, wenn alle Checks erfolgreich sind.
|
||||
pulls.auto_merge_has_pending_schedule=%[1]s hat einen Automerge für diesen Pull-Request %[2]s geplant.
|
||||
|
||||
pulls.auto_merge_cancel_schedule=Automerge abbrechen
|
||||
pulls.auto_merge_not_scheduled=Dieser Pull Request hat keinen geplanten Automerge.
|
||||
pulls.auto_merge_canceled_schedule=Der Automerge dieses Pull-Requests wurde abgebrochen.
|
||||
|
||||
pulls.auto_merge_newly_scheduled_comment=`hat einen Automerge für diesen Pull-Request %[1]s geplant`
|
||||
pulls.auto_merge_canceled_schedule_comment=`hat den Automerge für diesen Pull-Request %[1]s abgebrochen`
|
||||
|
||||
milestones.new=Neuer Meilenstein
|
||||
milestones.closed=Geschlossen %s
|
||||
|
@ -1700,6 +1752,8 @@ search.search_repo=Repository durchsuchen
|
|||
search.fuzzy=Ähnlich
|
||||
search.match=Genau
|
||||
search.results=Suchergebnisse für „%s“ in <a href="%s"> %s</a>
|
||||
search.code_no_results=Es konnte kein passender Code für deinen Suchbegriff gefunden werden.
|
||||
search.code_search_unavailable=Derzeit ist die Code-Suche nicht verfügbar. Bitte wende dich an den Website-Administrator.
|
||||
|
||||
settings=Einstellungen
|
||||
settings.desc=In den Einstellungen kannst du die Einstellungen des Repositorys anpassen
|
||||
|
@ -1750,6 +1804,9 @@ settings.tracker_url_format_error=Das URL-Format des externen Issue-Trackers ist
|
|||
settings.tracker_issue_style=Namenskonvention des externen Issue-Trackers
|
||||
settings.tracker_issue_style.numeric=Numerisch
|
||||
settings.tracker_issue_style.alphanumeric=Alphanumerisch
|
||||
settings.tracker_issue_style.regexp=Regulärer Ausdruck
|
||||
settings.tracker_issue_style.regexp_pattern=Regulärer Ausdruck
|
||||
settings.tracker_issue_style.regexp_pattern_desc=Die erste gecapturte Gruppe wird statt <code>{index}</code> verwendet.
|
||||
settings.tracker_url_format_desc=Du kannst die Platzhalter <code>{user}</code>, <code>{repo}</code>, <code>{index}</code> für den Benutzernamen, den Namen des Repositorys und die Issue-Nummer verwenden.
|
||||
settings.enable_timetracker=Zeiterfassung aktivieren
|
||||
settings.allow_only_contributors_to_track_time=Nur Mitarbeitern erlauben, die Zeiterfassung zu nutzen
|
||||
|
@ -1761,12 +1818,15 @@ settings.pulls.allow_rebase_merge_commit=Rebasing mit expliziten merge commits a
|
|||
settings.pulls.allow_squash_commits=Mergen von Commits durch Squash aktivieren
|
||||
settings.pulls.allow_manual_merge=Manuelles Mergen von Pull Requests aktivieren
|
||||
settings.pulls.enable_autodetect_manual_merge=Autoerkennung von manuellen Merges aktivieren (in Ausnahmefällen können Fehleinschätzungen auftreten)
|
||||
settings.pulls.allow_rebase_update=Update von Pull Request Branches per Rebase erlauben
|
||||
settings.pulls.default_delete_branch_after_merge=Standardmäßig bei Pull-Requests den Branch nach dem Mergen löschen
|
||||
settings.packages_desc=Repository Packages Registry aktivieren
|
||||
settings.projects_desc=Repository-Projekte aktivieren
|
||||
settings.admin_settings=Administratoreinstellungen
|
||||
settings.admin_enable_health_check=Repository-Health-Checks aktivieren (git fsck)
|
||||
settings.admin_code_indexer=Code-Indexer
|
||||
settings.admin_stats_indexer=Code-Statistik-Indexer
|
||||
settings.admin_indexer_commit_sha=Zuletzt indexierter SHA
|
||||
settings.admin_indexer_unindexed=Unindiziert
|
||||
settings.reindex_button=Zur Warteschlange für erneutes Indexieren hinzufügen
|
||||
settings.reindex_requested=Erneutes Indexieren angefordert
|
||||
|
@ -1918,6 +1978,8 @@ settings.event_pull_request_review=Pull-Request überprüft
|
|||
settings.event_pull_request_review_desc=Pull-Request genehmigt, abgelehnt oder Kommentar hinterlassen.
|
||||
settings.event_pull_request_sync=Pull-Request synchronisiert
|
||||
settings.event_pull_request_sync_desc=Pull-Request synchronisiert.
|
||||
settings.event_package=Paket
|
||||
settings.event_package_desc=Paket wurde in einem Repository erstellt oder gelöscht.
|
||||
settings.branch_filter=Branch-Filter
|
||||
settings.branch_filter_desc=Whitelist für Branches für Push-, Erzeugungs- und Löschevents, als glob Pattern beschrieben. Es werden Events für alle Branches gemeldet, falls das Pattern <code>*</code> ist, oder falls es leer ist. Siehe die <a href="https://pkg.go.dev/github.com/gobwas/glob#Compile">github.com/gobwas/glob</a> Dokumentation für die Syntax (Englisch). Beispiele: <code>master</code>, <code>{master,release*}</code>.
|
||||
settings.active=Aktiv
|
||||
|
@ -1931,6 +1993,7 @@ settings.hook_type=Hook-Typ
|
|||
settings.slack_token=Token
|
||||
settings.slack_domain=Domain
|
||||
settings.slack_channel=Kanal
|
||||
settings.add_web_hook_desc=<a target="_blank" rel="noreferrer" href="%s">%s</a> in das Repository integrieren.
|
||||
settings.web_hook_name_gitea=Gitea
|
||||
settings.web_hook_name_gogs=Gogs
|
||||
settings.web_hook_name_slack=Slack
|
||||
|
@ -2000,6 +2063,7 @@ settings.require_signed_commits_desc=Pushes auf diesen Branch ablehnen, wenn Com
|
|||
settings.protect_protected_file_patterns=Geschützte Dateimuster (durch Semikolon getrennt '\;'):
|
||||
settings.protect_protected_file_patterns_desc=Geschützte Dateien, die nicht einmal geändert werden können, wenn der Benutzer die Rechte hat, Dateien in diesem Branch hinzuzufügen, zu bearbeiten, oder zu löschen. Verschiedene Pattern können per Semicolon (';') getrennt werden. Siehe die <a href="https://pkg.go.dev/github.com/gobwas/glob#Compile">github.com/gobwas/glob</a> Dokumentation für die Pattern Syntax (Englisch). Beispiele: <code>.drone.yml</code>, <code>/docs/**/*.txt</code>.
|
||||
settings.protect_unprotected_file_patterns=Ungeschützte Dateimuster (durch Semikolon '\;' getrennt):
|
||||
settings.protect_unprotected_file_patterns_desc=Ungeschützte Dateien können ohne Push-Beschränkung geändert werden, falls der Benutzer Schreibzugriff hat. Mehrere Muster können mit Semikolon getrennt werden ('\;'). Siehe die <a href="https://pkg.go.dev/github.com/gobwas/glob#Compile">github.com/gobwas/glob</a> Dokumentation für Mustersyntax. Beispiele: <code>.drone.yml</code>, <code>/docs/**/*.txt</code>.
|
||||
settings.add_protected_branch=Schutz aktivieren
|
||||
settings.delete_protected_branch=Schutz deaktivieren
|
||||
settings.update_protect_branch_success=Branch-Schutz für den Branch „%s“ wurde geändert.
|
||||
|
@ -2209,6 +2273,7 @@ branch.renamed=Branch %s wurde in %s umbenannt.
|
|||
tag.create_tag=Tag <strong>%s</strong> erstellen
|
||||
tag.create_tag_operation=Tag erstellen
|
||||
tag.confirm_create_tag=Tag erstellen
|
||||
tag.create_tag_from=Neuen Tag von '%s' erstellen
|
||||
|
||||
tag.create_success=Tag "%s" wurde erstellt.
|
||||
|
||||
|
@ -2217,6 +2282,8 @@ topic.done=Fertig
|
|||
topic.count_prompt=Du kannst nicht mehr als 25 Themen auswählen
|
||||
topic.format_prompt=Themen müssen entweder mit einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.
|
||||
|
||||
find_file.go_to_file=Datei suchen
|
||||
find_file.no_matching=Keine passende Datei gefunden
|
||||
|
||||
error.csv.too_large=Diese Datei kann nicht gerendert werden, da sie zu groß ist.
|
||||
error.csv.unexpected=Diese Datei kann nicht gerendert werden, da sie ein unerwartetes Zeichen in Zeile %d und Spalte %d enthält.
|
||||
|
@ -2354,9 +2421,11 @@ first_page=Erste
|
|||
last_page=Letzte
|
||||
total=Gesamt: %d
|
||||
|
||||
dashboard.new_version_hint=Gitea %s ist jetzt verfügbar, die derzeitige Version ist %s. Weitere Details findest du im <a target="_blank" rel="noreferrer" href="https://blog.gitea.io">Blog</a>.
|
||||
dashboard.statistic=Übersicht
|
||||
dashboard.operations=Wartungsoperationen
|
||||
dashboard.system_status=System-Status
|
||||
dashboard.statistic_info=Giteas Datenbank hat <b>%d</b> Benutzer, <b>%d</b> Organisationen, <b>%d</b> öffentliche Schlüssel, <b>%d</b> Repositorys, <b>%d</b> Beobachtungen, <b>%d</b> Favoriten, ~<b>%d</b> Aktionen, <b>%d</b> Zugriffe, <b>%d</b> Issues, <b>%d</b> Kommentare, <b>%d</b> Konten sozialer Netzwerke, <b>%d</b> Gefolgte, <b>%d</b> Mirrors, <b>%d</b> Releases, <b>%d</b> Login-Quellen, <b>%d</b> Webhooks, <b>%d</b> Meilensteine, <b>%d</b> Label, <b>%d</b> Hook-Tasks, <b>%d</b> Teams, <b>%d</b> Aktualisierungs-Tasks, <b>%d</b> Anhänge.
|
||||
dashboard.operation_name=Name der Operation
|
||||
dashboard.operation_switch=Wechseln
|
||||
dashboard.operation_run=Ausführen
|
||||
|
@ -2395,6 +2464,7 @@ dashboard.resync_all_hooks=Synchronisiere „pre-receive“-, „update“- und
|
|||
dashboard.reinit_missing_repos=Alle Git-Repositories mit Einträgen neu einlesen
|
||||
dashboard.sync_external_users=Externe Benutzerdaten synchronisieren
|
||||
dashboard.cleanup_hook_task_table=Hook-Task-Tabelle bereinigen
|
||||
dashboard.cleanup_packages=Veraltete Pakete löschen
|
||||
dashboard.server_uptime=Server-Uptime
|
||||
dashboard.current_goroutine=Aktuelle Goroutinen
|
||||
dashboard.current_memory_usage=Aktuelle Speichernutzung
|
||||
|
@ -2426,6 +2496,8 @@ dashboard.last_gc_pause=Letzte GC-Pause
|
|||
dashboard.gc_times=Anzahl GC
|
||||
dashboard.delete_old_actions=Alle alten Aktionen aus der Datenbank löschen
|
||||
dashboard.delete_old_actions.started=Löschen aller alten Aktionen in der Datenbank gestartet.
|
||||
dashboard.update_checker=Update-Checker
|
||||
dashboard.delete_old_system_notices=Alle alten Systemmeldungen aus der Datenbank löschen
|
||||
|
||||
users.user_manage_panel=Benutzerkontenverwaltung
|
||||
users.new_account=Benutzerkonto erstellen
|
||||
|
@ -2460,8 +2532,10 @@ users.allow_import_local=Darf lokale Repositories importieren
|
|||
users.allow_create_organization=Darf Organisationen erstellen
|
||||
users.update_profile=Benutzerkonto aktualisieren
|
||||
users.delete_account=Benutzerkonto löschen
|
||||
users.cannot_delete_self=Du kannst dich nicht selbst löschen
|
||||
users.still_own_repo=Dieser Benutzer besitzt noch mindestens ein Repository. Bitte lösche oder übertrage diese zuerst.
|
||||
users.still_has_org=Dieser Nutzer ist Mitglied einer Organisation. Du musst ihn zuerst aus allen Organisationen entfernen.
|
||||
users.still_own_packages=Dieser Benutzer besitzt noch ein oder mehrere Pakete. Lösche diese Pakete zuerst.
|
||||
users.deletion_success=Der Account wurde gelöscht.
|
||||
users.reset_2fa=2FA zurücksetzen
|
||||
users.list_status_filter.menu_text=Filter
|
||||
|
@ -2508,6 +2582,16 @@ repos.forks=Forks
|
|||
repos.issues=Issues
|
||||
repos.size=Größe
|
||||
|
||||
packages.package_manage_panel=Paketverwaltung
|
||||
packages.total_size=Gesamtgröße: %s
|
||||
packages.owner=Besitzer
|
||||
packages.creator=Ersteller
|
||||
packages.name=Name
|
||||
packages.version=Version
|
||||
packages.type=Typ
|
||||
packages.repository=Repository
|
||||
packages.size=Größe
|
||||
packages.published=Veröffentlicht
|
||||
|
||||
defaulthooks=Standard-Webhooks
|
||||
defaulthooks.desc=Webhooks senden automatisch eine HTTP POST Anfrage an einen Server, wenn bestimmte Gitea Events ausgelöst werden. Hier definierte Webhooks sind die Standardwerte, die in alle neuen Repositories kopiert werden. Mehr Infos findest du in der <a target="_blank" rel="noopener" href="https://docs.gitea.io/en-us/webhooks/">Webhooks Anleitung</a> (auf englisch).
|
||||
|
@ -2551,9 +2635,13 @@ auths.filter=Benutzerfilter
|
|||
auths.admin_filter=Admin-Filter
|
||||
auths.restricted_filter=Eingeschränkte Filter
|
||||
auths.restricted_filter_helper=Leer lassen, um keine Benutzer als eingeschränkt festzulegen. Verwende einen Stern ('*'), um alle Benutzer, die nicht dem Admin-Filter entsprechen, als eingeschränkt zu setzen.
|
||||
auths.verify_group_membership=Gruppenmitgliedschaft in LDAP verifizieren (zum Überspringen leer lassen)
|
||||
auths.group_search_base=Gruppensuche Basisdomainname
|
||||
auths.group_attribute_list_users=Gruppenattribut, welches die die Benutzerliste enthält
|
||||
auths.user_attribute_in_group=Benutzerattribut in der Gruppenliste
|
||||
auths.map_group_to_team=Ordne LDAP-Gruppen Organisationsteams zu (zum Überspringen leer lassen)
|
||||
auths.map_group_to_team_removal=Benutzer aus synchronisierten Teams entfernen, wenn der Benutzer nicht zur entsprechenden LDAP-Gruppe gehört
|
||||
auths.enable_ldap_groups=LDAP-Gruppen aktivieren
|
||||
auths.ms_ad_sa=MS-AD-Suchattribute
|
||||
auths.smtp_auth=SMTP-Authentifizierungstyp
|
||||
auths.smtphost=SMTP-Host
|
||||
|
@ -2579,6 +2667,7 @@ auths.oauth2_authURL=Authorisierungs-URL
|
|||
auths.oauth2_profileURL=Profil-URL
|
||||
auths.oauth2_emailURL=E-Mail-URL
|
||||
auths.skip_local_two_fa=Lokale 2FA überspringen
|
||||
auths.skip_local_two_fa_helper=Leer lassen bedeutet, dass lokale User die 2FA immer noch bestehen müssen, um sich anzumelden
|
||||
auths.oauth2_tenant=Inhaber
|
||||
auths.oauth2_scopes=Zusätzliche Bereiche
|
||||
auths.oauth2_required_claim_name=Benötigter Claim-Name
|
||||
|
@ -2771,9 +2860,12 @@ monitor.next=Nächste Ausführung
|
|||
monitor.previous=Letzte Ausführung
|
||||
monitor.execute_times=Ausführungen
|
||||
monitor.process=Laufende Prozesse
|
||||
monitor.stacktrace=Stacktraces
|
||||
monitor.goroutines=%d Goroutinen
|
||||
monitor.desc=Beschreibung
|
||||
monitor.start=Startzeit
|
||||
monitor.execute_time=Ausführungszeit
|
||||
monitor.last_execution_result=Ergebnis
|
||||
monitor.process.cancel=Prozess abbrechen
|
||||
monitor.process.cancel_desc=Abbrechen eines Prozesses kann Datenverlust verursachen
|
||||
monitor.process.cancel_notices=Abbrechen: <strong>%s</strong>?
|
||||
|
@ -2785,6 +2877,7 @@ monitor.queue.type=Typ
|
|||
monitor.queue.exemplar=Beispieltyp
|
||||
monitor.queue.numberworkers=Anzahl der Worker
|
||||
monitor.queue.maxnumberworkers=Maximale Anzahl der Worker
|
||||
monitor.queue.numberinqueue=Nummer in der Warteschlange
|
||||
monitor.queue.review=Konfiguration überprüfen
|
||||
monitor.queue.review_add=Worker hinzufügen/prüfen
|
||||
monitor.queue.configuration=Erstkonfiguration
|
||||
|
@ -2804,6 +2897,12 @@ monitor.queue.pool.flush.title=Warteschlange leeren
|
|||
monitor.queue.pool.flush.desc=Flush fügt einen Worker hinzu, der sich beendet, sobald die Warteschlange leer ist oder in den Timeout läuft.
|
||||
monitor.queue.pool.flush.submit=Füge Flush-Worker hinzu
|
||||
monitor.queue.pool.flush.added=Flush-Worker hinzugefügt für %[1]s
|
||||
monitor.queue.pool.pause.title=Warteschlange pausieren
|
||||
monitor.queue.pool.pause.desc=Eine pausierte Warteschlange verarbeitet keine Daten mehr
|
||||
monitor.queue.pool.pause.submit=Warteschlange pausieren
|
||||
monitor.queue.pool.resume.title=Warteschlange fortsetzen
|
||||
monitor.queue.pool.resume.desc=Diese Warteschlange wieder starten
|
||||
monitor.queue.pool.resume.submit=Warteschlange fortsetzen
|
||||
|
||||
monitor.queue.settings.title=Pool-Einstellungen
|
||||
monitor.queue.settings.desc=Pools wachsen dynamisch mit einem Boost als Reaktion auf die Blockierung ihrer Workerwarteschlangen. Diese Änderungen wirken sich nicht auf die aktuellen Worker Gruppen aus.
|
||||
|
@ -2934,4 +3033,94 @@ error.no_unit_allowed_repo=Du hast keine Berechtigung, um auf irgendeinen Bereic
|
|||
error.unit_not_allowed=Du hast keine Berechtigung, um auf diesen Repository-Bereich zuzugreifen.
|
||||
|
||||
[packages]
|
||||
title=Pakete
|
||||
desc=Repository-Pakete verwalten.
|
||||
empty=Noch keine Pakete vorhanden.
|
||||
empty.documentation=Weitere Informationen zur Paketverwaltung findest du in der <a target="_blank" rel="noopener noreferrer" href="https://docs.gitea.io/en-us/packages/overview">Dokumentation</a>.
|
||||
filter.type=Typ
|
||||
filter.type.all=Alle
|
||||
filter.no_result=Keine Ergebnisse mit diesen Kriterien gefunden.
|
||||
filter.container.tagged=Getaggt
|
||||
filter.container.untagged=Nicht getaggt
|
||||
published_by=%[1]s von <a href="%[2]s">%[3]s</a> veröffentlicht
|
||||
published_by_in=%[1]s von <a href="%[2]s">%[3]s</a> in <a href="%[4]s"><strong>%[5]s</strong></a> veröffentlicht
|
||||
installation=Installation
|
||||
about=Über dieses Paket
|
||||
requirements=Voraussetzungen
|
||||
dependencies=Abhängigkeiten
|
||||
keywords=Schlüsselwörter
|
||||
details=Details
|
||||
details.author=Autor
|
||||
details.project_site=Projektseite
|
||||
details.license=Lizenz
|
||||
assets=Dateien
|
||||
versions=Versionen
|
||||
versions.on=am
|
||||
versions.view_all=Alle anzeigen
|
||||
dependency.id=ID
|
||||
dependency.version=Version
|
||||
composer.registry=Setze diese Paketverwaltung in deiner <code>~/.composer/config.json</code> Datei auf:
|
||||
composer.install=Nutze folgenden Befehl, um das Paket mit Composer zu installieren:
|
||||
composer.documentation=Weitere Informationen zur Composer-Paketverwaltung findest du in der <a target="_blank" rel="noopener noreferrer" href="https://docs.gitea.io/en-us/packages/composer/">Dokumentation</a>.
|
||||
composer.dependencies=Abhängigkeiten
|
||||
composer.dependencies.development=Entwicklungsabhängigkeiten
|
||||
conan.details.repository=Repository
|
||||
conan.registry=Diese Registry über die Kommandozeile einrichten:
|
||||
conan.install=Um das Paket mit Conan zu installieren, führe den folgenden Befehl aus:
|
||||
conan.documentation=Weitere Informationen zur Conan-Paketverwaltung findest du in der <a target="_blank" rel="noopener noreferrer" href="https://docs.gitea.io/en-us/packages/conan/">Dokumentation</a>.
|
||||
container.details.type=Container-Image Typ
|
||||
container.details.platform=Plattform
|
||||
container.details.repository_site=Repository-Seite
|
||||
container.details.documentation_site=Dokumentationsseite
|
||||
container.pull=Downloade das Container-Image aus der Kommandozeile:
|
||||
container.documentation=Weitere Informationen zur Container-Imageverwaltung findest du in der <a target="_blank" rel="noopener noreferrer" href="https://docs.gitea.io/en-us/packages/container/">Dokumentation</a>.
|
||||
container.multi_arch=Betriebsystem / Architektur
|
||||
container.layers=Container-Image Ebenen
|
||||
container.labels=Labels
|
||||
container.labels.key=Schlüssel
|
||||
container.labels.value=Wert
|
||||
generic.download=Downloade das Paket aus der Kommandozeile:
|
||||
generic.documentation=Weitere Informationen zur generischen Paketverwaltung findest du in der <a target="_blank" rel="noopener noreferrer" href="https://docs.gitea.io/en-us/packages/generic">Dokumentation</a>.
|
||||
helm.registry=Diese Paketverwaltung über die Kommandozeile einrichten:
|
||||
helm.install=Nutze folgenden Befehl, um das Paket zu installieren:
|
||||
helm.documentation=Weitere Informationen zur Helm-Paketverwaltung findest du in der <a target="_blank" rel="noopener noreferrer" href="https://docs.gitea.io/en-us/packages/helm/">Dokumentation</a>.
|
||||
maven.registry=Setze diese Paketverwaltung in der <code>pom.xml</code> deines Projektes auf:
|
||||
maven.install=Nimm Folgendes in den <code>dependencies</code> deiner <code>pom.xml</code> auf, um das Paket zu installieren:
|
||||
maven.install2=Über die Kommandozeile ausführen:
|
||||
maven.download=Nutze folgendes Kommando, um die Dependency herunterzuladen:
|
||||
maven.documentation=Weitere Informationen zur Maven-Paketverwaltung findest du in der <a target="_blank" rel="noopener noreferrer" href="https://docs.gitea.io/en-us/packages/maven/">Dokumentation</a>.
|
||||
nuget.registry=Diese Registry über die Kommandozeile einrichten:
|
||||
nuget.install=Um das Paket mit NuGet zu installieren, führe den folgenden Befehl aus:
|
||||
nuget.documentation=Weitere Informationen zur NuGet-Paketverwaltung findest du in der <a target="_blank" rel="noopener noreferrer" href="https://docs.gitea.io/en-us/packages/nuget/">Dokumentation</a>.
|
||||
nuget.dependency.framework=Zielframework
|
||||
npm.registry=Setze diese Paketverwaltung in der <code>.npmrc</code> deines Projektes auf:
|
||||
npm.install=Um das Paket mit npm zu installieren, führe den folgenden Befehl aus:
|
||||
npm.install2=oder füge es zur package.json-Datei hinzu:
|
||||
npm.documentation=Weitere Informationen zur npm-Paketverwaltung findest du in der <a target="_blank" rel="noopener noreferrer" href="https://docs.gitea.io/en-us/packages/npm/">Dokumentation</a>.
|
||||
npm.dependencies=Abhängigkeiten
|
||||
npm.dependencies.development=Entwicklungsabhängigkeiten
|
||||
npm.dependencies.peer=Peer Abhängigkeiten
|
||||
npm.dependencies.optional=Optionale Abhängigkeiten
|
||||
npm.details.tag=Tag
|
||||
pypi.requires=Erfordert Python
|
||||
pypi.install=Nutze folgenden Befehl, um das Paket mit pip zu installieren:
|
||||
pypi.documentation=Weitere Informationen zur PyPI-Paketverwaltung findest du in der <a target="_blank" rel="noopener noreferrer" href="https://docs.gitea.io/en-us/packages/pypi/">Dokumentation</a>.
|
||||
rubygems.install=Um das Paket mit gem zu installieren, führe den folgenden Befehl aus:
|
||||
rubygems.install2=oder füg es zum Gemfile hinzu:
|
||||
rubygems.dependencies.runtime=Laufzeitabhängigkeiten
|
||||
rubygems.dependencies.development=Entwicklungsabhängigkeiten
|
||||
rubygems.required.ruby=Benötigt Ruby Version
|
||||
rubygems.required.rubygems=Benötigt RubyGem Version
|
||||
rubygems.documentation=Weitere Informationen zur RubyGems-Paketverwaltung findest du in der <a target="_blank" rel="noopener noreferrer" href="https://docs.gitea.io/en-us/packages/rubygems/">Dokumentation</a>.
|
||||
settings.link=Dieses Paket einem Repository zuweisen
|
||||
settings.link.description=Wenn du ein Paket mit einem Repository verknüpfst, wird es in der Paketliste des Repositories angezeigt.
|
||||
settings.link.select=Repository auswählen
|
||||
settings.link.button=Repository-Link aktualisieren
|
||||
settings.link.success=Repository-Link wurde erfolgreich aktualisiert.
|
||||
settings.link.error=Fehler beim Aktualisieren des Repository-Links.
|
||||
settings.delete=Paket löschen
|
||||
settings.delete.description=Das Löschen eines Pakets ist dauerhaft und kann nicht rückgängig gemacht werden.
|
||||
settings.delete.notice=Du bist dabei, %s (%s) zu löschen. Dieser Vorgang ist unwiderruflich. Bist du sicher?
|
||||
settings.delete.success=Das Paket wurde gelöscht.
|
||||
settings.delete.error=Löschen des Pakets fehlgeschlagen.
|
||||
|
||||
|
|
|
@ -2,6 +2,7 @@ home=Inicio
|
|||
dashboard=Panel de control
|
||||
explore=Explorar
|
||||
help=Ayuda
|
||||
logo=Logotipo
|
||||
sign_in=Iniciar sesión
|
||||
sign_in_with=Iniciar sesión con
|
||||
sign_out=Cerrar sesión
|
||||
|
@ -105,6 +106,7 @@ error404=La página a la que está intentando acceder o <strong>no existe</stron
|
|||
|
||||
never=Nunca
|
||||
|
||||
rss_feed=Fuentes RSS
|
||||
|
||||
[error]
|
||||
occurred=Ha ocurrido un error
|
||||
|
@ -441,6 +443,7 @@ size_error=` debe ser de tamaño %s.`
|
|||
min_size_error=` debe contener al menos %s caracteres.`
|
||||
max_size_error=` debe contener como máximo %s caracteres.`
|
||||
email_error=` no es una dirección de correo válida.`
|
||||
url_error=`'%s' no es un URL válido.`
|
||||
include_error=` debe contener la subcadena '%s'.`
|
||||
glob_pattern_error=` el patrón globo no es válido: %s.`
|
||||
regex_pattern_error=` el patrón de regex no es válido: %s.`
|
||||
|
@ -488,7 +491,9 @@ auth_failed=Autenticación fallo: %v
|
|||
|
||||
still_own_repo=Su cuenta posee uno o más repositorios; elimine o transfiera primero.
|
||||
still_has_org=Su cuenta es miembro de una o más organizaciones; déjalas primero.
|
||||
still_own_packages=Su cuenta posee uno o más repositorios; elimine o transfiera primero.
|
||||
org_still_own_repo=Esta organización todavía es dueña de uno o más repositorios; elimínelos o transfiéralos primero.
|
||||
org_still_own_packages=Esta organización todavía es dueña de uno o más repositorios; elimínelos o transfiéralos primero.
|
||||
|
||||
target_branch_not_exist=La rama de destino no existe
|
||||
|
||||
|
@ -561,6 +566,12 @@ comment_type_group_branch=Rama
|
|||
comment_type_group_time_tracking=Seguimiento de Tiempo
|
||||
comment_type_group_deadline=Fecha límite
|
||||
comment_type_group_dependency=Dependencia
|
||||
comment_type_group_lock=Estado de bloqueo
|
||||
comment_type_group_review_request=Revisión solicitada
|
||||
comment_type_group_pull_request_push=Commits añandidos
|
||||
comment_type_group_project=Proyecto
|
||||
comment_type_group_issue_ref=Referencia del incidente
|
||||
saved_successfully=Tus ajustes se han guardado correctamente.
|
||||
privacy=Privacidad
|
||||
keep_activity_private=Ocultar la actividad de la página del perfil
|
||||
keep_activity_private_popup=Hace la actividad visible sólo para ti y los administradores
|
||||
|
@ -706,6 +717,9 @@ generate_token_success=Su nuevo token ha sido generado. Cópielo ahora, ya que n
|
|||
generate_token_name_duplicate=<strong>%s</strong> ya se ha utilizado como nombre de la aplicación. Por favor, utilice una nueva.
|
||||
delete_token=Eliminar
|
||||
access_token_deletion=Eliminar Token de Acceso
|
||||
access_token_deletion_cancel_action=Cancelar
|
||||
access_token_deletion_confirm_action=Eliminar
|
||||
access_token_deletion_desc=Eliminar un token revocará el acceso a su cuenta para las aplicaciones que lo usen. Esto no se puede deshacer. ¿Continuar?
|
||||
delete_token_success=El token ha sido eliminado. Las aplicaciones que lo usen ya no tienen acceso a su cuenta.
|
||||
|
||||
manage_oauth2_applications=Administrar aplicaciones OAuth2
|
||||
|
@ -767,6 +781,7 @@ webauthn_delete_key_desc=Si elimina una clave de seguridad no podrá utilizarla
|
|||
manage_account_links=Administrar cuentas vinculadas
|
||||
manage_account_links_desc=Estas cuentas externas están vinculadas a su cuenta de Gitea.
|
||||
account_links_not_available=Actualmente no hay cuentas externas vinculadas a su cuenta de Gitea.
|
||||
link_account=Enlazar cuenta
|
||||
remove_account_link=Eliminar cuenta vinculada
|
||||
remove_account_link_desc=Eliminar una cuenta vinculada revocará su acceso a su cuenta de Gitea. ¿Continuar?
|
||||
remove_account_link_success=La cuenta vinculada ha sido eliminada.
|
||||
|
@ -847,6 +862,7 @@ default_branch=Rama por defecto
|
|||
default_branch_helper=La rama por defecto es la rama base para pull requests y commits de código.
|
||||
mirror_prune=Purgar
|
||||
mirror_prune_desc=Eliminar referencias de seguimiento de remotes obsoletas
|
||||
mirror_interval=Intervalo de replicación (las unidades de tiempo válidas son «h», «m» y «s»). 0 desactiva la sincronización automática. (Intervalo mínimo: %s)
|
||||
mirror_interval_invalid=El intervalo de réplica no es válido.
|
||||
mirror_address=Clonar desde URL
|
||||
mirror_address_desc=Ponga cualquier credencial requerida en la sección de Autorización.
|
||||
|
@ -998,6 +1014,7 @@ tags=Etiquetas
|
|||
issues=Incidencias
|
||||
pulls=Pull Requests
|
||||
project_board=Proyectos
|
||||
packages=Paquetes
|
||||
labels=Etiquetas
|
||||
org_labels_desc=Etiquetas de nivel de la organización que pueden ser utilizadas con <strong>todos los repositorios</strong> bajo esta organización
|
||||
org_labels_desc_manage=gestionar
|
||||
|
@ -1028,6 +1045,7 @@ line_unicode=`Esta línea tiene caracteres unicode ocultos`
|
|||
escape_control_characters=Escapar
|
||||
unescape_control_characters=No Escapar
|
||||
file_copy_permalink=Copiar Permalink
|
||||
view_git_blame=Ver la culpa de Git
|
||||
video_not_supported_in_browser=Su navegador no soporta el tag video de HTML5.
|
||||
audio_not_supported_in_browser=Su navegador no soporta el tag audio de HTML5.
|
||||
stored_lfs=Almacenados con Git LFS
|
||||
|
@ -1066,6 +1084,10 @@ editor.add_tmpl=Añadir '<filename>'
|
|||
editor.add=Añadir '%s'
|
||||
editor.update=Actualizar '%s'
|
||||
editor.delete=Eliminar '%s'
|
||||
editor.patch=Aplicar parche
|
||||
editor.patching=Parcheando:
|
||||
editor.fail_to_apply_patch=No se puede aplicar el parche '%s'
|
||||
editor.new_patch=Nuevo parche
|
||||
editor.commit_message_desc=Añadir una descripción extendida opcional…
|
||||
editor.signoff_desc=Añadir un trailer firmado por el committer al final del mensaje de registro de confirmación.
|
||||
editor.commit_directly_to_this_branch=Hacer commit directamente en la rama <strong class="branch-name">%s</strong>.
|
||||
|
@ -1101,6 +1123,8 @@ editor.cannot_commit_to_protected_branch=No se puede hacer commit a la rama prot
|
|||
editor.no_commit_to_branch=No se puede hacer commit directamente a la rama porque:
|
||||
editor.user_no_push_to_branch=El usuario no puede hacer push a la rama
|
||||
editor.require_signed_commit=Esta rama requiere un commit firmado
|
||||
editor.cherry_pick=Hacer Cherry-pick %s en:
|
||||
editor.revert=Revertir %s en:
|
||||
|
||||
commits.desc=Ver el historial de cambios de código fuente.
|
||||
commits.commits=Commits
|
||||
|
@ -1121,6 +1145,13 @@ commits.signed_by_untrusted_user_unmatched=Firmado por un usuario no fiable que
|
|||
commits.gpg_key_id=ID de clave GPG
|
||||
commits.ssh_key_fingerprint=Huella clave SSH
|
||||
|
||||
commit.actions=Acciones
|
||||
commit.revert=Revertir
|
||||
commit.revert-header=Revertir: %s
|
||||
commit.revert-content=Seleccionar rama en la que revertir:
|
||||
commit.cherry-pick=Hacer Cherry-pick
|
||||
commit.cherry-pick-header=Hacer Cherry-pick: %s
|
||||
commit.cherry-pick-content=Seleccionar rama en la que hacer cherry-pick:
|
||||
|
||||
ext_issues=Acceso a incidencias externas
|
||||
ext_issues.desc=Enlace a un gestor de incidencias externo.
|
||||
|
@ -1159,6 +1190,7 @@ projects.board.deletion_desc=Eliminar un tablón de proyecto mueve todas las inc
|
|||
projects.board.color=Color
|
||||
projects.open=Abrir
|
||||
projects.close=Cerrar
|
||||
projects.board.assigned_to=Asignado a
|
||||
|
||||
issues.desc=Organizar los informes de fallos, tareas e hitos.
|
||||
issues.filter_assignees=Filtrar asignado
|
||||
|
@ -1253,6 +1285,7 @@ issues.filter_sort.moststars=Mas estrellas
|
|||
issues.filter_sort.feweststars=Menor número de estrellas
|
||||
issues.filter_sort.mostforks=La mayoría de forks
|
||||
issues.filter_sort.fewestforks=Menor número de forks
|
||||
issues.keyword_search_unavailable=Actualmente la búsqueda por palabra clave no está disponible. Por favor, póngase en contacto con el administrador de su sitio.
|
||||
issues.action_open=Abrir
|
||||
issues.action_close=Cerrar
|
||||
issues.action_label=Etiqueta
|
||||
|
@ -1348,6 +1381,9 @@ issues.lock.reason=Motivo del bloqueo
|
|||
issues.lock.title=Bloquear conversación sobre esta incidencia.
|
||||
issues.unlock.title=Desbloquear conversación sobre esta incidencia.
|
||||
issues.comment_on_locked=No puede comentar una incidencia bloqueada.
|
||||
issues.delete=Eliminar
|
||||
issues.delete.title=¿Eliminar esta incidencia?
|
||||
issues.delete.text=¿Realmente quieres eliminar esta incidencia? (Esto eliminará permanentemente todo el contenido. Considera cerrarlo en su lugar, si quieres mantenerlo archivado)
|
||||
issues.tracker=Gestor de tiempo
|
||||
issues.start_tracking_short=Iniciar temporizador
|
||||
issues.start_tracking=Inicio de seguimiento de tiempo
|
||||
|
@ -1388,6 +1424,8 @@ issues.due_date_remove=eliminó la fecha de vencimiento %s %s
|
|||
issues.due_date_overdue=Vencido
|
||||
issues.due_date_invalid=La fecha de vencimiento es inválida o está fuera de rango. Por favor utilice el formato 'aaaa-mm-dd'.
|
||||
issues.dependency.title=Dependencias
|
||||
issues.dependency.issue_no_dependencies=No se han establecido dependencias.
|
||||
issues.dependency.pr_no_dependencies=No se han establecido dependencias.
|
||||
issues.dependency.add=Añadir dependencia…
|
||||
issues.dependency.cancel=Cancelar
|
||||
issues.dependency.remove=Eliminar
|
||||
|
@ -1426,6 +1464,7 @@ issues.review.add_review_request=solicitud de revisión de %s %s
|
|||
issues.review.remove_review_request=solicitud de revisión eliminada para %s %s
|
||||
issues.review.remove_review_request_self=rechazó revisar %s
|
||||
issues.review.pending=Pendiente
|
||||
issues.review.pending.tooltip=Este comentario no es visible actualmente para otros usuarios. Para enviar sus comentarios pendientes, seleccione '%s' -> '%s/%s/%s' en la parte superior de la página.
|
||||
issues.review.review=Revisar
|
||||
issues.review.reviewers=Revisores
|
||||
issues.review.outdated=Obsoleto
|
||||
|
@ -1444,6 +1483,7 @@ issues.content_history.created=creado
|
|||
issues.content_history.delete_from_history=Eliminar del historial
|
||||
issues.content_history.delete_from_history_confirm=¿Eliminar del historial?
|
||||
issues.content_history.options=Opciones
|
||||
issues.reference_link=Referencia: %s
|
||||
|
||||
compare.compare_base=base
|
||||
compare.compare_head=comparar
|
||||
|
@ -1452,7 +1492,13 @@ pulls.desc=Activar Pull Requests y revisiones de código.
|
|||
pulls.new=Nuevo Pull Request
|
||||
pulls.view=Ver Pull Request
|
||||
pulls.compare_changes=Nuevo pull request
|
||||
pulls.allow_edits_from_maintainers=Permitir ediciones de mantenedores
|
||||
pulls.allow_edits_from_maintainers_desc=Los usuarios con acceso de escritura a la rama base también pueden hacer push a esta rama
|
||||
pulls.allow_edits_from_maintainers_err=Error al Actualizar
|
||||
pulls.compare_changes_desc=Seleccione la rama en la que se fusiona y la rama a recuperar.
|
||||
pulls.has_viewed_file=Visto
|
||||
pulls.has_changed_since_last_review=Cambiado desde tu última revisión
|
||||
pulls.viewed_files_label=%[1]d / %[2]d archivos vistos
|
||||
pulls.compare_base=fusionar en
|
||||
pulls.compare_compare=recuperar de
|
||||
pulls.switch_comparison_type=Cambiar tipo de comparación
|
||||
|
@ -1552,8 +1598,17 @@ pulls.merge_instruction_hint=`También puede ver <a class="show-instruction">ins
|
|||
pulls.merge_instruction_step1_desc=Desde el repositorio de su proyecto, revisa una nueva rama y prueba los cambios.
|
||||
pulls.merge_instruction_step2_desc=Combine los cambios y actualice en Gitea.
|
||||
|
||||
pulls.auto_merge_button_when_succeed=(cuando las comprobaciones tengan éxito)
|
||||
pulls.auto_merge_when_succeed=Fusionar automática cuando todas las comprobaciones tengan éxito
|
||||
pulls.auto_merge_newly_scheduled=El Pull Request se programó para fusionarse cuando todas las comprobaciones tengan éxito.
|
||||
pulls.auto_merge_has_pending_schedule=%[1]s programó este Pull Request para fusionar automática cuando todas las comprobaciones tengan éxito %[2]s.
|
||||
|
||||
pulls.auto_merge_cancel_schedule=Cancelar fusión automática
|
||||
pulls.auto_merge_not_scheduled=Este Pull Request no está programado para fusionar automática.
|
||||
pulls.auto_merge_canceled_schedule=Fusión automaticá estaba cancellada para este Pull Request.
|
||||
|
||||
pulls.auto_merge_newly_scheduled_comment=`programó este Pull Request para fusionar automática cuando todas las comprobaciones tengan éxito %[1]s`
|
||||
pulls.auto_merge_canceled_schedule_comment=`canceló la fusión automática de este Pull Request %[1]s`
|
||||
|
||||
milestones.new=Nuevo hito
|
||||
milestones.closed=Cerrada %s
|
||||
|
@ -1697,6 +1752,8 @@ search.search_repo=Buscar repositorio
|
|||
search.fuzzy=Parcial
|
||||
search.match=Coincidir
|
||||
search.results=Resultados de la búsqueda para "%s" en <a href="%s">%s</a>
|
||||
search.code_no_results=No se ha encontrado código de fuente que coincida con su término de búsqueda.
|
||||
search.code_search_unavailable=Actualmente la búsqueda de código no está disponible. Póngase en contacto con el administrador de su sitio.
|
||||
|
||||
settings=Configuración
|
||||
settings.desc=La configuración es donde puede administrar la configuración del repositorio
|
||||
|
@ -1747,6 +1804,9 @@ settings.tracker_url_format_error=El formato de la URL del gestor de incidencias
|
|||
settings.tracker_issue_style=Formato numérico del gestor de incidencias externo
|
||||
settings.tracker_issue_style.numeric=Numérico
|
||||
settings.tracker_issue_style.alphanumeric=Alfanumérico
|
||||
settings.tracker_issue_style.regexp=Expresión regular
|
||||
settings.tracker_issue_style.regexp_pattern=Pauta de expresiones regulares
|
||||
settings.tracker_issue_style.regexp_pattern_desc=Se utilizará el primer grupo capturado en lugar de <code>{index}</code>.
|
||||
settings.tracker_url_format_desc=Utilice los marcadores <code>{user}</code>, <code>{repo}</code> y <code>{index}</code> para designar el usuario, el nombre del repositorio y el índice de incidencia.
|
||||
settings.enable_timetracker=Habilitar gestor de tiempo
|
||||
settings.allow_only_contributors_to_track_time=Deje que solo los colaboradores hagan un seguimiento del tiempo
|
||||
|
@ -1758,7 +1818,9 @@ settings.pulls.allow_rebase_merge_commit=Activar Rebase con commits explícitos
|
|||
settings.pulls.allow_squash_commits=Activar Squash en los commits fusionados
|
||||
settings.pulls.allow_manual_merge=Habilitar marcar PR como fusionado manualmente
|
||||
settings.pulls.enable_autodetect_manual_merge=Habilitar la autodetección de los commits fusionado manualmente (Nota: en algunos casos especiales, pueden producirse errores de apreciación)
|
||||
settings.pulls.allow_rebase_update=Habilitar la actualización de la rama de Pull Request por rebase
|
||||
settings.pulls.default_delete_branch_after_merge=Eliminar por defecto la rama de pull request después de fusionar
|
||||
settings.packages_desc=Habilitar registro de paquetes de repositorio
|
||||
settings.projects_desc=Activar Proyectos de Repositorio
|
||||
settings.admin_settings=Ajustes de administrador
|
||||
settings.admin_enable_health_check=Activar cheques de estado de salud del repositorio (git fsck)
|
||||
|
@ -1916,6 +1978,8 @@ settings.event_pull_request_review=Pull Request revisado
|
|||
settings.event_pull_request_review_desc=Pull request aprobado, rechazado o comentario de revisión.
|
||||
settings.event_pull_request_sync=Pull Request sincronizado
|
||||
settings.event_pull_request_sync_desc=Pull request sincronizado.
|
||||
settings.event_package=Paquete
|
||||
settings.event_package_desc=Paquete creado o eliminado en un repositorio.
|
||||
settings.branch_filter=Filtro de rama
|
||||
settings.branch_filter_desc=Lista blanca de rama para eventos de push, creación de rama y eliminación de rama, especificados como patrón globo. Si está vacío o <code>*</code>, se reportan eventos para todas las ramas. Ver <a href="https://pkg.go.dev/github.com/gobwas/glob#Compile">github.com/gobwas/glob</a> documentación para la sintaxis. Ejemplos: <code>master</code>, <code>{master,release*}</code>.
|
||||
settings.active=Activo
|
||||
|
@ -1929,6 +1993,23 @@ settings.hook_type=Tipo de Hook
|
|||
settings.slack_token=Token
|
||||
settings.slack_domain=Dominio
|
||||
settings.slack_channel=Canal
|
||||
settings.add_web_hook_desc=Integrar <a target="_blank" rel="noreferrer" href="%s">%s</a> en su repositorio.
|
||||
settings.web_hook_name_gitea=Gitea
|
||||
settings.web_hook_name_gogs=Gogs
|
||||
settings.web_hook_name_slack=Slack
|
||||
settings.web_hook_name_discord=Discord
|
||||
settings.web_hook_name_dingtalk=DingTalk
|
||||
settings.web_hook_name_telegram=Telegram
|
||||
settings.web_hook_name_matrix=Matrix
|
||||
settings.web_hook_name_msteams=Microsoft Teams
|
||||
settings.web_hook_name_feishu_or_larksuite=Feishu / Lark Suite
|
||||
settings.web_hook_name_feishu=Feishu
|
||||
settings.web_hook_name_larksuite=Lark Suite
|
||||
settings.web_hook_name_wechatwork=WeCom (Wechat Work)
|
||||
settings.web_hook_name_packagist=Packagist
|
||||
settings.packagist_username=Nombre de usuario Packagist
|
||||
settings.packagist_api_token=Token de API
|
||||
settings.packagist_package_url=URL del paquete Packagist
|
||||
settings.deploy_keys=Claves de Implementación
|
||||
settings.add_deploy_key=Añadir Clave de Implementación
|
||||
settings.deploy_key_desc=Las claves de implementación tienen acceso de sólo lectura al repositorio.
|
||||
|
@ -2184,11 +2265,15 @@ branch.included_desc=Esta rama forma parte de la predeterminada
|
|||
branch.included=Incluida
|
||||
branch.create_new_branch=Crear rama desde la rama:
|
||||
branch.confirm_create_branch=Crear rama
|
||||
branch.create_branch_operation=Crear rama
|
||||
branch.new_branch=Crear nueva rama
|
||||
branch.new_branch_from=Crear nueva rama desde '%s'
|
||||
branch.renamed=La rama %s fue renombrada a %s.
|
||||
|
||||
tag.create_tag=Crear etiqueta <strong>%s</strong>
|
||||
tag.create_tag_operation=Crear etiqueta
|
||||
tag.confirm_create_tag=Crear etiqueta
|
||||
tag.create_tag_from=Crear etiqueta nueva a partir de «%s»
|
||||
|
||||
tag.create_success=La etiqueta '%s' ha sido creada.
|
||||
|
||||
|
@ -2197,6 +2282,8 @@ topic.done=Hecho
|
|||
topic.count_prompt=No puede seleccionar más de 25 temas
|
||||
topic.format_prompt=Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y pueden tener hasta 35 caracteres de largo.
|
||||
|
||||
find_file.go_to_file=Ir al archivo
|
||||
find_file.no_matching=No se encontró ningún archivo que coincidiese
|
||||
|
||||
error.csv.too_large=No se puede renderizar este archivo porque es demasiado grande.
|
||||
error.csv.unexpected=No se puede procesar este archivo porque contiene un carácter inesperado en la línea %d y la columna %d.
|
||||
|
@ -2334,9 +2421,11 @@ first_page=Primera
|
|||
last_page=Última
|
||||
total=Total: %d
|
||||
|
||||
dashboard.new_version_hint=Gitea %s ya está disponible; en este momento ejecuta la versión %s. Consulte el <a target="_blank" rel="noreferrer" href="https://blog.gitea.io">blog</a> para conocer más.
|
||||
dashboard.statistic=Resumen
|
||||
dashboard.operations=Operaciones de mantenimiento
|
||||
dashboard.system_status=Estado del sistema
|
||||
dashboard.statistic_info=La base de datos de Gitea contiene <b>%d</b> usuarios, <b>%d</b> organizaciones, <b>%d</b> claves públicas, <b>%d</b> repositorios, <b>%d</b> elementos observados, <b>%d</b> destacados, ~<b>%d</b> acciones, <b>%d</b> accesos, <b>%d</b> incidencias, <b>%d</b> comentarios, <b>%d</b> cuentas sociales, <b>%d</b> seguidos, <b>%d</b> réplicas, <b>%d</b> releases, <b>%d</b> orígenes de autenticación, <b>%d</b> webhooks, <b>%d</b> milestones, <b>%d</b> etiquetas, <b>%d</b> tareas de hook, <b>%d</b> equipos, <b>%d</b> tareas de actualización, <b>%d</b> adjuntos.
|
||||
dashboard.operation_name=Nombre de la operación
|
||||
dashboard.operation_switch=Interruptor
|
||||
dashboard.operation_run=Ejecutar
|
||||
|
@ -2375,6 +2464,7 @@ dashboard.resync_all_hooks=Resincronizar los hooks de pre-recepción, actualizac
|
|||
dashboard.reinit_missing_repos=Reiniciar todos los repositorios Git faltantes de los que existen registros
|
||||
dashboard.sync_external_users=Sincronizar datos de usuario externo
|
||||
dashboard.cleanup_hook_task_table=Limpiar tabla hook_task
|
||||
dashboard.cleanup_packages=Limpieza de paquetes caducados
|
||||
dashboard.server_uptime=Tiempo de actividad del servidor
|
||||
dashboard.current_goroutine=Gorutinas actuales
|
||||
dashboard.current_memory_usage=Uso de memoria actual
|
||||
|
@ -2406,6 +2496,8 @@ dashboard.last_gc_pause=Última Pausa por GC
|
|||
dashboard.gc_times=Ejecuciones GC
|
||||
dashboard.delete_old_actions=Eliminar todas las acciones antiguas de la base de datos
|
||||
dashboard.delete_old_actions.started=Eliminar todas las acciones antiguas de la base de datos inicializada.
|
||||
dashboard.update_checker=Buscador de actualizaciones
|
||||
dashboard.delete_old_system_notices=Borrar todos los avisos antiguos del sistema de la base de datos
|
||||
|
||||
users.user_manage_panel=Gestión de cuentas de usuario
|
||||
users.new_account=Crear Cuenta de Usuario
|
||||
|
@ -2440,8 +2532,10 @@ users.allow_import_local=Puede importar repositorios locales
|
|||
users.allow_create_organization=Puede crear organizaciones
|
||||
users.update_profile=Actualizar cuenta de usuario
|
||||
users.delete_account=Eliminar Cuenta de Usuario
|
||||
users.cannot_delete_self=No puedes eliminarte a ti mismo
|
||||
users.still_own_repo=Este usuario todavía posee uno o más depósitos. Eliminar o transferir estos repositorios primero.
|
||||
users.still_has_org=Este usuario es un miembro de una organización. Primero retire el usuario de cualquier organización.
|
||||
users.still_own_packages=Este usuario todavía posee uno o más paquetes. Elimine estos paquetes primero.
|
||||
users.deletion_success=La cuenta de usuario ha sido eliminada.
|
||||
users.reset_2fa=Reiniciar 2FA
|
||||
users.list_status_filter.menu_text=Filtro
|
||||
|
@ -2488,6 +2582,16 @@ repos.forks=Forks
|
|||
repos.issues=Incidencias
|
||||
repos.size=Tamaño
|
||||
|
||||
packages.package_manage_panel=Gestión de paquetes
|
||||
packages.total_size=Tamaño total: %s
|
||||
packages.owner=Propietario
|
||||
packages.creator=Creador
|
||||
packages.name=Nombre
|
||||
packages.version=Versión
|
||||
packages.type=Tipo
|
||||
packages.repository=Repositorio
|
||||
packages.size=Tamaño
|
||||
packages.published=Publicado
|
||||
|
||||
defaulthooks=Webhooks por defecto
|
||||
defaulthooks.desc=Los Webhooks automáticamente hacen peticiones HTTP POST a un servidor cuando ciertos eventos de Gitea se activan. Los ganchos definidos aquí son predeterminados y serán copiados en todos los nuevos repositorios. Leer más en la guía <a target="_blank" rel="noopener" href="https://docs.gitea.io/en-us/webhooks/">webhooks</a>.
|
||||
|
@ -2531,9 +2635,13 @@ auths.filter=Filtro de usuario
|
|||
auths.admin_filter=Filtro de aministrador
|
||||
auths.restricted_filter=Filtro restringido
|
||||
auths.restricted_filter_helper=Dejar en blanco para no establecer ningún usuario como restringido. Utilice un asterisco ('*') para establecer todos los usuarios que no coincidan con el filtro de administración como restringido.
|
||||
auths.verify_group_membership=Verificar pertenencia al grupo en LDAP (dejar el filtro vacío para saltar)
|
||||
auths.group_search_base=Base DN para la búsqueda de grupos
|
||||
auths.group_attribute_list_users=Atributo del grupo que contiene la lista de usuarios
|
||||
auths.user_attribute_in_group=Atributo de usuario listado en el grupo
|
||||
auths.map_group_to_team=Mapear grupos LDAP a equipos de la Organización (dejar el campo vacío para saltar)
|
||||
auths.map_group_to_team_removal=Eliminar usuarios de equipos sincronizados si el usuario no pertenece al grupo LDAP correspondiente
|
||||
auths.enable_ldap_groups=Habilitar grupos LDAP
|
||||
auths.ms_ad_sa=Atributos de búsqueda de MS AD
|
||||
auths.smtp_auth=Tipo de autenticación SMTP
|
||||
auths.smtphost=Servidor SMTP
|
||||
|
@ -2752,9 +2860,12 @@ monitor.next=Siguiente
|
|||
monitor.previous=Anterior
|
||||
monitor.execute_times=Ejecuciones
|
||||
monitor.process=Procesos en ejecución
|
||||
monitor.stacktrace=Rastros de pila
|
||||
monitor.goroutines=%d Gorutinas
|
||||
monitor.desc=Descripción
|
||||
monitor.start=Hora de Inicio
|
||||
monitor.execute_time=Tiempo de ejecución
|
||||
monitor.last_execution_result=Resultado
|
||||
monitor.process.cancel=Cancelar el proceso
|
||||
monitor.process.cancel_desc=Cancelar un proceso puede ocasionar una pérdida de datos
|
||||
monitor.process.cancel_notices=Cancelar: <strong>%s</strong>?
|
||||
|
@ -2766,6 +2877,7 @@ monitor.queue.type=Tipo
|
|||
monitor.queue.exemplar=Ejemplo
|
||||
monitor.queue.numberworkers=Número de trabajadores
|
||||
monitor.queue.maxnumberworkers=Número máximo de trabajadores
|
||||
monitor.queue.numberinqueue=Número en cola
|
||||
monitor.queue.review=Revisar configuración
|
||||
monitor.queue.review_add=Revisar/Añadir trabajadores
|
||||
monitor.queue.configuration=Configuración inicial
|
||||
|
@ -2786,7 +2898,10 @@ monitor.queue.pool.flush.desc=Al vaciar la cola se añadirá un worker que termi
|
|||
monitor.queue.pool.flush.submit=Añadir trabajador de vaciado
|
||||
monitor.queue.pool.flush.added=Trabajador de vaciado añadido por %[1]s
|
||||
monitor.queue.pool.pause.title=Pausar cola
|
||||
monitor.queue.pool.pause.desc=La pausa de una cola evitará que procese datos
|
||||
monitor.queue.pool.pause.submit=Pausar cola
|
||||
monitor.queue.pool.resume.title=Reanudar cola
|
||||
monitor.queue.pool.resume.desc=Establecer esta cola para reanudar el trabajo
|
||||
monitor.queue.pool.resume.submit=Reanudar cola
|
||||
|
||||
monitor.queue.settings.title=Ajustes del grupo
|
||||
|
@ -2918,4 +3033,94 @@ error.no_unit_allowed_repo=No tiene permisos para acceder a ninguna sección de
|
|||
error.unit_not_allowed=No tiene permisos para acceder a esta sección del repositorio.
|
||||
|
||||
[packages]
|
||||
title=Paquetes
|
||||
desc=Administrar paquetes del repositorio.
|
||||
empty=Todavía no hay paquetes.
|
||||
empty.documentation=Para más información sobre el registro de paquetes, consulte <a target="_blank" rel="noopener noreferrer" href="https://docs.gitea.io/en-us/packages/overview">la documentación</a>.
|
||||
filter.type=Tipo
|
||||
filter.type.all=Todo
|
||||
filter.no_result=El filtro no produjo ningún resultado.
|
||||
filter.container.tagged=Etiquetado
|
||||
filter.container.untagged=Etiqueta eliminada
|
||||
published_by=Publicado %[1]s por <a href="%[2]s">%[3]s</a>
|
||||
published_by_in=Publicado %[1]s por <a href="%[2]s">%[3]s</a> en <a href="%[4]s"><strong>%[5]s</strong></a>
|
||||
installation=Instalación
|
||||
about=Acerca de este paquete
|
||||
requirements=Requisitos
|
||||
dependencies=Dependencias
|
||||
keywords=Palabras clave
|
||||
details=Detalles
|
||||
details.author=Autoría
|
||||
details.project_site=Sitio del proyecto
|
||||
details.license=Licencia
|
||||
assets=Activos
|
||||
versions=Versiones
|
||||
versions.on=en
|
||||
versions.view_all=Ver todo
|
||||
dependency.id=Id.
|
||||
dependency.version=Versión
|
||||
composer.registry=Configura este registro en el archivo <code>~/.composer/config.json</code>:
|
||||
composer.install=Para instalar el paquete usando Composer, ejecute el siguiente comando:
|
||||
composer.documentation=Para más información sobre el registro de Composer, consulte <a target="_blank" rel="noopener noreferrer" href="https://docs.gitea.io/en-us/packages/composer/">la documentación</a>.
|
||||
composer.dependencies=Dependencias
|
||||
composer.dependencies.development=Dependencias de desarrollo
|
||||
conan.details.repository=Repositorio
|
||||
conan.registry=Configurar este registro desde la línea de comandos:
|
||||
conan.install=Para instalar el paquete usando Conan, ejecuta el siguiente comando:
|
||||
conan.documentation=Para más información sobre el registro de Conan, consulte <a target="_blank" rel="noopener noreferrer" href="https://docs.gitea.io/en-us/packages/conan/">la documentación</a>.
|
||||
container.details.type=Tipo de imagen
|
||||
container.details.platform=Plataforma
|
||||
container.details.repository_site=Sitio del repositorio
|
||||
container.details.documentation_site=Sitio de documentación
|
||||
container.pull=Arrastra la imagen desde la línea de comandos:
|
||||
container.documentation=Para más información sobre el registro de Container, consulte <a target="_blank" rel="noopener noreferrer" href="https://docs.gitea.io/en-us/packages/container/">la documentación</a>.
|
||||
container.multi_arch=SO / Arquitectura
|
||||
container.layers=Capas de imagen
|
||||
container.labels=Etiquetas
|
||||
container.labels.key=Clave
|
||||
container.labels.value=Valor
|
||||
generic.download=Descargar paquete desde la línea de comandos:
|
||||
generic.documentation=Para más información sobre el registro genérico, consulte <a target="_blank" rel="noopener noreferrer" href="https://docs.gitea.io/en-us/packages/generic">la documentación</a>.
|
||||
helm.registry=Configurar este registro desde la línea de comandos:
|
||||
helm.install=Para instalar el paquete, ejecute el siguiente comando:
|
||||
helm.documentation=Para obtener más información sobre el registro de Helm, consulte <a target="_blank" rel="noopener noreferrer" href="https://docs.gitea.io/en-us/packages/helm/">la documentación</a>.
|
||||
maven.registry=Configure este registro en su proyecto <code>pom.xml</code> archivo:
|
||||
maven.install=Para usar el paquete incluya lo siguiente en el bloque <code>dependencias</code> en el archivo <code>pom.xml</code>:
|
||||
maven.install2=Ejecutar vía línea de comandos:
|
||||
maven.download=Para descargar la dependencia, ejecute vía línea de comandos:
|
||||
maven.documentation=Para obtener más información sobre el registro de Maven, consulte <a target="_blank" rel="noopener noreferrer" href="https://docs.gitea.io/en-us/packages/maven/">la documentación</a>.
|
||||
nuget.registry=Configurar este registro desde la línea de comandos:
|
||||
nuget.install=Para instalar el paquete usando NuGet, ejecute el siguiente comando:
|
||||
nuget.documentation=Para obtener más información sobre el registro de NuGet consulte <a target="_blank" rel="noopener noreferrer" href="https://docs.gitea.io/en-us/packages/nuget/">la documentación</a>.
|
||||
nuget.dependency.framework=Marco de destino
|
||||
npm.registry=Configura este registro en tu proyecto <code>.npmrc</code> archivo:
|
||||
npm.install=Para instalar el paquete usando npm, ejecute el siguiente comando:
|
||||
npm.install2=o añádelo al archivo package.json:
|
||||
npm.documentation=Para más información sobre el registro de npm, consulte <a target="_blank" rel="noopener noreferrer" href="https://docs.gitea.io/en-us/packages/npm/">la documentación</a>.
|
||||
npm.dependencies=Dependencias
|
||||
npm.dependencies.development=Dependencias de desarrollo
|
||||
npm.dependencies.peer=Dependencias de pares
|
||||
npm.dependencies.optional=Dependencias opcionales
|
||||
npm.details.tag=Etiqueta
|
||||
pypi.requires=Requiere Python
|
||||
pypi.install=Para instalar el paquete usando pip, ejecute el siguiente comando:
|
||||
pypi.documentation=Para obtener más información sobre el registro PyPI, consulte <a target="_blank" rel="noopener noreferrer" href="https://docs.gitea.io/en-us/packages/pypi/">la documentación</a>.
|
||||
rubygems.install=Para instalar el paquete usando gem, ejecute el siguiente comando:
|
||||
rubygems.install2=o añádelo al archivo Gemfile:
|
||||
rubygems.dependencies.runtime=Dependencias en tiempo de ejecución
|
||||
rubygems.dependencies.development=Dependencias de desarrollo
|
||||
rubygems.required.ruby=Requiere versión Ruby
|
||||
rubygems.required.rubygems=Requiere la versión de RubyGem
|
||||
rubygems.documentation=Para obtener más información sobre el registro de RubyGems, consulte <a target="_blank" rel="noopener noreferrer" href="https://docs.gitea.io/en-us/packages/rubygems/">la documentación</a>.
|
||||
settings.link=Vincular este paquete a un repositorio
|
||||
settings.link.description=Si enlaza un paquete con un repositorio, el paquete se enumera en la lista de paquetes del repositorio.
|
||||
settings.link.select=Seleccionar repositorio
|
||||
settings.link.button=Actualizar enlace de repositorio
|
||||
settings.link.success=El enlace del repositorio se ha actualizado correctamente.
|
||||
settings.link.error=Error al actualizar el enlace del repositorio.
|
||||
settings.delete=Eliminar paquete
|
||||
settings.delete.description=La eliminación de un paquete es permanente y no se puede deshacer.
|
||||
settings.delete.notice=Está a punto de eliminar %s (%s). Esta operación es irreversible, ¿está seguro?
|
||||
settings.delete.success=Se ha eliminado el paquete.
|
||||
settings.delete.error=No se pudo eliminar el paquete.
|
||||
|
||||
|
|
|
@ -34,6 +34,7 @@ twofa=Authentification à deux facteurs
|
|||
twofa_scratch=Code de secours pour l'authentification à deux facteurs
|
||||
passcode=Code d'accès
|
||||
|
||||
webauthn_insert_key=Insérez votre clé de sécurité
|
||||
|
||||
repository=Dépôt
|
||||
organization=Organisation
|
||||
|
@ -91,6 +92,7 @@ error404=La page que vous essayez d'atteindre <strong>n'existe pas</strong> ou <
|
|||
|
||||
never=Jamais
|
||||
|
||||
rss_feed=Flux RSS
|
||||
|
||||
[error]
|
||||
missing_csrf=Requête incorrecte: aucun jeton CSRF présent
|
||||
|
@ -347,6 +349,7 @@ reset_password.text=Veuillez cliquer sur le lien suivant pour récupérer votre
|
|||
|
||||
register_success=Inscription réussie
|
||||
|
||||
issue_assigned.issue=@%[1]s vous a assigné le ticket %[2]s dans le dépôt %[3]s.
|
||||
|
||||
issue.x_mentioned_you=<b>@%s</b> vous a mentionné:
|
||||
issue.action.approve=<b>@%[1]s</b> a approuvé cette demande d'ajout.
|
||||
|
@ -357,12 +360,17 @@ issue.action.ready_for_review=<b>@%[1]s</b> a marqué cette demande d'ajout prê
|
|||
issue.in_tree_path=Dans %s:
|
||||
|
||||
release.new.subject=%s publiée dans %s
|
||||
release.new.text=<b>@%[1]s</b> a publié [2]s dans %[3]s
|
||||
release.title=Titre: %s
|
||||
release.note=Remarque :
|
||||
release.downloads=Téléchargements :
|
||||
release.download.zip=Code source (ZIP)
|
||||
release.download.targz=Code source (TAR.GZ)
|
||||
|
||||
repo.transfer.subject_to=%s aimerait transférer "%s" à %s
|
||||
repo.transfer.subject_to_you=%s aimerait vous transférer "%s"
|
||||
repo.transfer.to_you=vous
|
||||
repo.transfer.body=Pour l'accepter ou le rejeter, visitez %s ou ignorez-le.
|
||||
|
||||
repo.collaborator.added.subject=%s vous a ajouté à %s
|
||||
repo.collaborator.added.text=Vous avez été ajouté en tant que collaborateur du dépôt :
|
||||
|
@ -475,6 +483,7 @@ form.name_chars_not_allowed=Le nom d'utilisateur '%s' contient des caractères n
|
|||
[settings]
|
||||
profile=Profil
|
||||
account=Compte
|
||||
appearance=Apparence
|
||||
password=Mot de passe
|
||||
security=Sécurité
|
||||
avatar=Avatar
|
||||
|
@ -498,7 +507,9 @@ website=Site Web
|
|||
location=Localisation
|
||||
update_theme=Mise à jour du thème
|
||||
update_profile=Valider les modifications
|
||||
update_language=Mettre à jour le langage
|
||||
update_language_not_found=La langue '%s' n'est pas disponible.
|
||||
update_language_success=Le langage à été mis à jour.
|
||||
update_profile_success=Votre profil a été mis à jour.
|
||||
change_username=Votre nom d'utilisateur a été modifié.
|
||||
change_username_prompt=Remarque : changer votre nom d'utilisateur change également l'URL de votre compte.
|
||||
|
@ -507,6 +518,21 @@ continue=Continuer
|
|||
cancel=Annuler
|
||||
language=Langues
|
||||
ui=Thème
|
||||
comment_type_group_reference=Référence
|
||||
comment_type_group_label=Étiquette
|
||||
comment_type_group_milestone=Jalon
|
||||
comment_type_group_assignee=Assigné à
|
||||
comment_type_group_title=Titre
|
||||
comment_type_group_branch=Branche
|
||||
comment_type_group_time_tracking=Suivi du temps
|
||||
comment_type_group_deadline=Date d’échéance
|
||||
comment_type_group_dependency=Dépendance
|
||||
comment_type_group_lock=Verrouiller le statut
|
||||
comment_type_group_review_request=Demande de revue
|
||||
comment_type_group_pull_request_push=Révisions ajoutées
|
||||
comment_type_group_project=Projet
|
||||
comment_type_group_issue_ref=Référence du ticket
|
||||
saved_successfully=Vos paramètres ont été enregistrés avec succès.
|
||||
privacy=Confidentialité
|
||||
keep_activity_private=Masquer l'activité de la page de profil
|
||||
keep_activity_private_popup=Rend l'activité visible uniquement pour vous et les administrateurs
|
||||
|
@ -520,6 +546,7 @@ delete_current_avatar=Supprimer l'avatar actuel
|
|||
uploaded_avatar_not_a_image=Le fichier téléversé n'est pas une image.
|
||||
uploaded_avatar_is_too_big=Le fichier téléversé dépasse la taille maximale.
|
||||
update_avatar_success=Votre avatar a été mis à jour.
|
||||
update_user_avatar_success=L'avatar de l'utilisateur a été mis à jour.
|
||||
|
||||
change_password=Modifier le mot de passe
|
||||
old_password=Mot de passe actuel
|
||||
|
@ -580,6 +607,18 @@ ssh_key_been_used=Cette clef SSH a déjà été ajoutée au serveur.
|
|||
ssh_key_name_used=Une clé SSH avec le même nom existe déjà sur votre compte.
|
||||
ssh_principal_been_used=Ce principal a déjà été ajouté au serveur.
|
||||
gpg_key_id_used=Une clef GPG publique avec le même identifiant existe déjà.
|
||||
gpg_key_verified=Clé vérifiée
|
||||
gpg_invalid_token_signature=La clé GPG fournie, la signature et le jeton ne correspondent pas ou le jeton n'est pas à jour.
|
||||
gpg_token_required=Vous devez fournir une signature pour le jeton ci-dessous
|
||||
gpg_token=Jeton
|
||||
gpg_token_help=Vous pouvez générer une signature en utilisant :
|
||||
gpg_token_code=echo "%s" | gpg -a --default-key %s --detach-sig
|
||||
gpg_token_signature=Signature GPG renforcée
|
||||
key_signature_gpg_placeholder=Commence par '-----BEGIN PGP SIGNATURE-----'
|
||||
ssh_token_required=Vous devez fournir une signature pour le jeton ci-dessous
|
||||
ssh_token=Jeton
|
||||
ssh_token_help=Vous pouvez générer une signature en utilisant :
|
||||
ssh_token_signature=Signature SSH renforcée
|
||||
subkeys=Sous-clés
|
||||
key_id=Clé ID
|
||||
key_name=Nom de la Clé
|
||||
|
@ -702,6 +741,12 @@ email_notifications.onmention=N'envoyer un e-mail que si vous êtes mentionné
|
|||
email_notifications.disable=Désactiver les notifications par email
|
||||
email_notifications.submit=Définir la préférence e-mail
|
||||
|
||||
visibility.public=Publique
|
||||
visibility.public_tooltip=Visible par tous les utilisateurs
|
||||
visibility.limited=Limitée
|
||||
visibility.limited_tooltip=Visible uniquement par les utilisateurs connectés
|
||||
visibility.private=Privée
|
||||
visibility.private_tooltip=Visible uniquement par les membres de l'organisation
|
||||
|
||||
[repo]
|
||||
new_repo_helper=Un dépôt contient tous les fichiers du projet, y compris l'historique des révisions. Vous l'avez déjà ailleurs ? <a href="%s">Migrer le dépôt.</a>
|
||||
|
@ -724,6 +769,10 @@ fork_repo=Créer une bifurcation du dépôt
|
|||
fork_from=Bifurquer depuis
|
||||
fork_visibility_helper=La visibilité d'un dépôt bifurqué ne peut pas être modifiée.
|
||||
use_template=Utiliser ce modèle
|
||||
clone_in_vsc=Cloner dans VS Code
|
||||
download_zip=Télécharger le ZIP
|
||||
download_tar=Télécharger le TAR.GZ
|
||||
download_bundle=Télécharger le BUNDLE
|
||||
generate_repo=Générer un dépôt
|
||||
generate_from=Générer depuis
|
||||
repo_desc=Description
|
||||
|
@ -742,6 +791,8 @@ readme_helper_desc=Vous pouvez écrire ici une description complète de votre pr
|
|||
auto_init=Initialiser le dépôt (ajoute les fichiers .gitignore, Licence et LISEZMOI)
|
||||
trust_model_helper=Sélectionnez le modèle de confiance pour la vérification des signatures. Les options possibles sont :
|
||||
trust_model_helper_collaborator=Collaborateur: Faire confiance aux signatures des collaborateurs
|
||||
trust_model_helper_committer=Auteur de la révision: Faire confiance aux signatures qui correspondent à celle de l'auteur de la révision
|
||||
trust_model_helper_collaborator_committer=Collaborateur+Auteur: Faire confiance aux signatures des collaborateurs qui correspondent à l'auteur de la révision
|
||||
trust_model_helper_default=Valeur par défaut: Utiliser le modèle de confiance par défaut pour cette installation
|
||||
create_repo=Créer un dépôt
|
||||
default_branch=Branche par défaut
|
||||
|
@ -777,6 +828,7 @@ delete_preexisting_label=Supprimer
|
|||
delete_preexisting=Supprimer les fichiers préexistants
|
||||
delete_preexisting_content=Supprimer les fichiers dans %s
|
||||
delete_preexisting_success=Supprimer les fichiers non adoptés dans %s
|
||||
blame_prior=Voir le blame avant cette modification
|
||||
|
||||
transfer.accept=Accepter le transfert
|
||||
transfer.accept_desc=Transférer à "%s"
|
||||
|
@ -844,6 +896,11 @@ migrate.migrate=Migrer depuis %s
|
|||
migrate.migrating=Migration de <b>%s</b> ...
|
||||
migrate.migrating_failed=La migration de <b>%s</b> a échoué.
|
||||
migrate.migrating_failed.error=Erreur: %s
|
||||
migrate.git.description=Migrer uniquement un dépôt depuis n’importe quel service Git.
|
||||
migrate.gitlab.description=Migrer les données depuis gitlab.com ou d’autres instances de GitLab.
|
||||
migrate.gitea.description=Migrer les données depuis gitea.com ou d’autres instances de Gitea.
|
||||
migrate.gogs.description=Migrer les données depuis notabug.org ou d’autres instances de Gogs.
|
||||
migrate.onedev.description=Migrer les données depuis code.onedev.io ou d’autre instance de OneDev.
|
||||
migrate.migrating_git=Migration des données Git
|
||||
migrate.migrating_topics=Migration des sujets
|
||||
migrate.migrating_milestones=Migration des jalons
|
||||
|
@ -896,6 +953,7 @@ release=Versions
|
|||
releases=Versions
|
||||
tag=Tag
|
||||
released_this=a publié ceci
|
||||
file.title=%s sur %s
|
||||
file_raw=Brut
|
||||
file_history=Historique
|
||||
file_view_source=Voir le code source
|
||||
|
@ -904,6 +962,7 @@ file_view_raw=Voir le Raw
|
|||
file_permalink=Lien permanent
|
||||
file_too_large=Le fichier est trop gros pour être affiché.
|
||||
|
||||
file_copy_permalink=Copier le lien permanent
|
||||
video_not_supported_in_browser=Votre navigateur ne supporte pas le tag HTML5 "video".
|
||||
audio_not_supported_in_browser=Votre navigateur ne supporte pas la balise « audio » HTML5.
|
||||
stored_lfs=Stocké avec Git LFS
|
||||
|
@ -912,7 +971,9 @@ commit_graph=Graphique des révisions
|
|||
commit_graph.select=Sélectionner les branches
|
||||
commit_graph.hide_pr_refs=Masquer les demandes d'ajout
|
||||
commit_graph.monochrome=Monochrome
|
||||
commit_graph.color=Couleur
|
||||
blame=Annotations
|
||||
download_file=Télécharger le fichier
|
||||
normal_view=Vue normale
|
||||
line=ligne
|
||||
lines=lignes
|
||||
|
@ -977,6 +1038,7 @@ editor.require_signed_commit=Cette branche nécessite une révision signée
|
|||
commits.desc=Naviguer dans l'historique des modifications.
|
||||
commits.commits=Révisions
|
||||
commits.no_commits=Pas de révisions en commun. '%s' et '%s' ont des historiques entièrement différents.
|
||||
commits.nothing_to_compare=Ces branches sont égales.
|
||||
commits.search=Rechercher des révisions…
|
||||
commits.search.tooltip=Vous pouvez préfixer les mots-clés avec "author:", "committer:", "after:", ou "before:", par exemple "revert author:Alice before:2019-04-01".
|
||||
commits.find=Chercher
|
||||
|
@ -1025,6 +1087,7 @@ projects.board.set_default=Définir par défaut
|
|||
projects.board.set_default_desc=Définir ce tableau comme valeur par défaut pour les tickets et demande d'ajouts non catégorisés
|
||||
projects.board.delete=Supprimer le tableau
|
||||
projects.board.deletion_desc=La suppression d'un tableau de projet déplace tous les tickets liés dans 'Non catégorisé'. Voulez vous continuer ?
|
||||
projects.board.color=Couleur
|
||||
projects.open=Ouvrir
|
||||
projects.close=Fermer
|
||||
|
||||
|
@ -1126,6 +1189,7 @@ issues.action_milestone_no_select=Aucun jalon
|
|||
issues.action_assignee=Assigné à
|
||||
issues.action_assignee_no_select=Pas d'assignataire
|
||||
issues.opened_by=créé %[1]s par <a href="%[2]s">%[3]s</a>
|
||||
issues.opened_by_fake=%[1]s ouvert par %[2]s
|
||||
issues.previous=Page Précédente
|
||||
issues.next=Page Suivante
|
||||
issues.open_title=Ouvert
|
||||
|
@ -1254,6 +1318,8 @@ issues.dependency.remove=Supprimer
|
|||
issues.dependency.remove_info=Supprimer cette dépendance
|
||||
issues.dependency.added_dependency=`a ajouté une nouvelle dépendance %s`
|
||||
issues.dependency.removed_dependency=`a supprimé une dépendance %s`
|
||||
issues.dependency.pr_closing_blockedby=La fermeture de cette demande d’ajout est bloquée par les tickets suivants
|
||||
issues.dependency.issue_closing_blockedby=La fermeture de ce ticket est bloquée par les tickets suivants
|
||||
issues.dependency.issue_close_blocks=Cette demande d'ajout empêche la clôture des tickets suivants
|
||||
issues.dependency.pr_close_blocks=Cette demande d'ajout empêche la clôture des tickets suivants
|
||||
issues.dependency.issue_close_blocked=Vous devez fermer tous les tickets qui bloquent ce ticket avant de pouvoir le fermer.
|
||||
|
@ -1296,6 +1362,11 @@ issues.review.un_resolve_conversation=Conversation non résolue
|
|||
issues.review.resolved_by=marquer cette conversation comme résolue
|
||||
issues.assignee.error=Tous les assignés n'ont pas été ajoutés en raison d'une erreur inattendue.
|
||||
issues.reference_issue.body=Corps
|
||||
issues.content_history.edited=édité
|
||||
issues.content_history.created=créé
|
||||
issues.content_history.delete_from_history=Supprimé de l’historique
|
||||
issues.content_history.delete_from_history_confirm=Supprimer de l’historique ?
|
||||
issues.content_history.options=Options
|
||||
|
||||
compare.compare_base=base
|
||||
compare.compare_head=comparer
|
||||
|
@ -1306,6 +1377,7 @@ pulls.compare_changes=Nouvelle demande de fusion
|
|||
pulls.compare_changes_desc=Sélectionnez la branche dans laquelle fusionner et la branche depuis laquelle tirer les modifications.
|
||||
pulls.compare_base=fusionner dans
|
||||
pulls.compare_compare=tirer les modifications depuis
|
||||
pulls.switch_comparison_type=Changer le type de comparaison
|
||||
pulls.filter_branch=Filtre de branche
|
||||
pulls.no_results=Aucun résultat trouvé.
|
||||
pulls.nothing_to_compare=Ces branches sont identiques. Il n'y a pas besoin de créer une demande de fusion.
|
||||
|
@ -1326,6 +1398,9 @@ pulls.manually_merged_as=La demande d'ajout a été fusionnée manuellement en t
|
|||
pulls.is_closed=La demande de fusion a été fermée.
|
||||
pulls.has_merged=La pull request a été fusionnée.
|
||||
pulls.title_wip_desc=`<a href="#">Préfixer le titre par <strong>%s</strong></a> pour empêcher cette demande d'ajout d'être fusionnée par erreur.`
|
||||
pulls.cannot_merge_work_in_progress=Cette demande d'ajout est marquée comme en cours de chantier.
|
||||
pulls.still_in_progress=Toujours en cours ?
|
||||
pulls.add_prefix=Ajouter le préfixe <strong>%s</strong>
|
||||
pulls.remove_prefix=Enlever le préfixe <strong>%s</strong>
|
||||
pulls.data_broken=Cette demande de fusion est impossible par manque d'informations de bifurcation.
|
||||
pulls.files_conflicted=Cette demande d'ajout contient des modifications en conflit avec la branche ciblée.
|
||||
|
@ -1545,7 +1620,9 @@ settings.hooks=Déclencheurs Web
|
|||
settings.githooks=Déclencheurs Git
|
||||
settings.basic_settings=Paramètres de base
|
||||
settings.mirror_settings=Réglages Miroir
|
||||
settings.mirror_settings.mirrored_repository=Dépôt en miroir
|
||||
settings.mirror_settings.direction=Direction
|
||||
settings.mirror_settings.direction.push=Pousser
|
||||
settings.mirror_settings.last_update=Dernière mise à jour
|
||||
settings.mirror_settings.push_mirror.remote_url=URL du dépôt distant Git
|
||||
settings.sync_mirror=Synchroniser maintenant
|
||||
|
@ -1586,6 +1663,7 @@ settings.pulls.allow_rebase_merge_commit=Activer le rebasage avec un commit de f
|
|||
settings.pulls.allow_squash_commits=Activer la concaténation de révisions
|
||||
settings.pulls.allow_manual_merge=Activer le marquage des demandes d'ajout comme fusionnées manuellement
|
||||
settings.pulls.enable_autodetect_manual_merge=Activer la détection automatique de la fusion manuelle (Remarque : dans certains cas particuliers, des erreurs de détection peuvent se produire)
|
||||
settings.pulls.default_delete_branch_after_merge=Supprimer la branche après la fusion par default
|
||||
settings.projects_desc=Activer les projets de dépôt
|
||||
settings.admin_settings=Paramètres administrateur
|
||||
settings.admin_enable_health_check=Activer les vérifications de santé du dépôt (git fsck)
|
||||
|
@ -1613,6 +1691,7 @@ settings.transfer_form_title=Entrez le nom du dépôt pour confirmer :
|
|||
settings.transfer_in_progress=Il y a actuellement un transfert en cours. Veuillez l'annuler si vous souhaitez transférer ce dépôt à un autre utilisateur.
|
||||
settings.transfer_notices_1=- Vous perdrez l'accès à ce dépôt si vous le transférez à un autre utilisateur.
|
||||
settings.transfer_notices_2=- Vous conserverez l'accès à ce dépôt si vous le transférez à une organisation dont vous êtes (co-)propriétaire.
|
||||
settings.transfer_notices_3=- Si le dépôt est privé et est transféré à un utilisateur individuel, cette action s'assure que l'utilisateur a au moins la permission de lire (et modifie les permissions si nécessaire).
|
||||
settings.transfer_owner=Nouveau propriétaire
|
||||
settings.transfer_perform=Effectuer le transfert
|
||||
settings.transfer_started=Ce dépôt a été marqué pour le transfert et attend la confirmation de "%s"
|
||||
|
@ -1885,6 +1964,7 @@ diff.file_image_width=Largeur
|
|||
diff.file_image_height=Hauteur
|
||||
diff.file_byte_size=Taille
|
||||
diff.file_suppressed=Fichier diff supprimé car celui-ci est trop grand
|
||||
diff.file_suppressed_line_too_long=Diff de fichier supprimé car une ou plusieurs lignes sont trop longues
|
||||
diff.comment.placeholder=Laisser un commentaire
|
||||
diff.comment.markdown_info=Mise en page avec markdown est prise en charge.
|
||||
diff.comment.add_single_comment=Ajouter un commentaire
|
||||
|
@ -1911,6 +1991,7 @@ release.new_release=Nouvelle version
|
|||
release.draft=Brouillon
|
||||
release.prerelease=Pré-publication
|
||||
release.stable=Stable
|
||||
release.compare=Comparer
|
||||
release.edit=Éditer
|
||||
release.ahead.target=à %s depuis cette livraison
|
||||
release.source_code=Code source
|
||||
|
@ -1963,6 +2044,10 @@ branch.restore=Restaurer la branche '%s'
|
|||
branch.download=Télécharger la branche '%s'
|
||||
branch.included_desc=Cette branche fait partie de la branche par défaut
|
||||
branch.included=Incluses
|
||||
branch.create_new_branch=Créer une branche à partir de la branche :
|
||||
branch.confirm_create_branch=Créer une branche
|
||||
branch.new_branch=Créer une nouvelle branche
|
||||
branch.new_branch_from=Créer une nouvelle branche à partir de '%s'
|
||||
|
||||
|
||||
|
||||
|
@ -2009,11 +2094,14 @@ settings.repoadminchangeteam=L'administrateur de dépôt peut ajouter et supprim
|
|||
settings.visibility=Visibilité
|
||||
settings.visibility.public=Public
|
||||
settings.visibility.limited=Limité (Visible uniquement aux utilisateurs connectés)
|
||||
settings.visibility.limited_shortname=Limité
|
||||
settings.visibility.private=Privé (Visible uniquement aux membres de l’organisation)
|
||||
settings.visibility.private_shortname=Privé
|
||||
|
||||
settings.update_settings=Valider
|
||||
settings.update_setting_success=Les paramètres de l'organisation ont été mis à jour.
|
||||
settings.change_orgname_prompt=NB: changer le nom de l'organisation changera aussi son URL.
|
||||
settings.change_orgname_redirect_prompt=L'ancien nom d'utilisateur redirigera jusqu'à ce qu'il soit réclamé.
|
||||
settings.update_avatar_success=L'avatar de l'organisation a été mis à jour.
|
||||
settings.delete=Supprimer l'organisation
|
||||
settings.delete_account=Supprimer cette organisation
|
||||
|
@ -2034,12 +2122,15 @@ members.member_role=Rôle du membre :
|
|||
members.owner=Propriétaire
|
||||
members.member=Membre
|
||||
members.remove=Exclure
|
||||
members.remove.detail=Supprimer %[1]s de %[2]s?
|
||||
members.leave=Quitter
|
||||
members.leave.detail=Quitter %s?
|
||||
members.invite_desc=Ajouter un nouveau membre à %s :
|
||||
members.invite_now=Envoyer une invitation
|
||||
|
||||
teams.join=Rejoindre
|
||||
teams.leave=Quitter
|
||||
teams.leave.detail=Quitter %s?
|
||||
teams.can_create_org_repo=Créer des dépôts
|
||||
teams.can_create_org_repo_helper=Les membres peuvent créer de nouveaux dépôts dans l'organisation. Le créateur obtiendra l'accès administrateur au nouveau dépôt.
|
||||
teams.read_access_helper=Les membres peuvent voir et cloner les dépôts de l'équipe.
|
||||
|
@ -2100,15 +2191,31 @@ dashboard.operation_switch=Basculer
|
|||
dashboard.operation_run=Exécuter
|
||||
dashboard.clean_unbind_oauth=Effacer les connexions OAuth associées
|
||||
dashboard.clean_unbind_oauth_success=Toutes les connexions OAuth associées ont été supprimées.
|
||||
dashboard.task.started=Tâche démarrée: %[1]s
|
||||
dashboard.task.process=Tâche: %[1]s
|
||||
dashboard.task.cancelled=Tâche: %[1]s a annulé: %[3]s
|
||||
dashboard.task.error=Erreur dans la tâche: %[1]s: %[3]s
|
||||
dashboard.task.finished=Tâche: %[1]s démarrée par %[2]s est terminée
|
||||
dashboard.task.unknown=Tâche inconnue: %[1]s
|
||||
dashboard.cron.process=Tâche planifiée: %[1]s
|
||||
dashboard.cron.cancelled=Tâche planifiée : %s annulée : %[3]s
|
||||
dashboard.cron.error=Erreur dans la tâche planifiée : %s: %[3]s
|
||||
dashboard.cron.finished=Tâche planifiée : %[1]s a terminé
|
||||
dashboard.delete_inactive_accounts=Supprimer tous les comptes non actifs
|
||||
dashboard.delete_inactive_accounts.started=Tâche de suppression de tous les comptes inactifs démarrée.
|
||||
dashboard.delete_repo_archives=Supprimer toutes les archives des dépôts (ZIP, TAR.GZ, etc..)
|
||||
dashboard.delete_repo_archives.started=Tâche de suppression de toutes les archives de dépôts démarrée.
|
||||
dashboard.delete_missing_repos=Supprimer tous les dépôts dont les fichiers Git sont manquants
|
||||
dashboard.delete_missing_repos.started=Tâche de suppression de tous les dépôts sans fichiers Git démarrée.
|
||||
dashboard.delete_generated_repository_avatars=Supprimer les avatars de dépôt générés
|
||||
dashboard.update_mirrors=Mettre à jour les miroirs
|
||||
dashboard.repo_health_check=Vérifier l'état de santé de tous les dépôts
|
||||
dashboard.check_repo_stats=Voir les statistiques de tous les dépôts
|
||||
dashboard.archive_cleanup=Supprimer les archives des vieux dépôts
|
||||
dashboard.deleted_branches_cleanup=Nettoyer les branches supprimées
|
||||
dashboard.git_gc_repos=Collecter les déchets des dépôts
|
||||
dashboard.resync_all_sshkeys.desc=(Inutile pour le serveur SSH intégré.)
|
||||
dashboard.resync_all_sshprincipals.desc=(Inutile pour le serveur SSH intégré.)
|
||||
dashboard.resync_all_hooks=Re-synchroniser les déclencheurs Git pre-receive, update et post-receive de tous les dépôts.
|
||||
dashboard.reinit_missing_repos=Réinitialiser tous les dépôts Git manquants pour lesquels un enregistrement existe
|
||||
dashboard.sync_external_users=Synchroniser les données de l’utilisateur externe
|
||||
|
@ -2256,6 +2363,8 @@ auths.smtpport=Port SMTP
|
|||
auths.allowed_domains=Domaines autorisés
|
||||
auths.allowed_domains_helper=Laisser ce champ vide autorise tous les domaines. Separez les domaines multiples avec une virgule (",").
|
||||
auths.skip_tls_verify=Ne pas vérifier TLS
|
||||
auths.force_smtps=Forcer SMTPS
|
||||
auths.helo_hostname=Nom d’hôte HELO
|
||||
auths.pam_service_name=Nom du Service PAM
|
||||
auths.oauth2_provider=Fournisseur OAuth2
|
||||
auths.oauth2_clientID=ID du client (clé)
|
||||
|
@ -2293,6 +2402,7 @@ auths.tip.twitter=Rendez-vous sur https://dev.twitter.com/apps, créez une appli
|
|||
auths.tip.discord=Enregistrer une nouvelle application sur https://discordapp.com/developers/applications/me
|
||||
auths.tip.gitea=Enregistrez une nouvelle application OAuth2. Un guide peut être trouvé sur https://docs.gitea.io/en-us/oauth2-provider/
|
||||
auths.tip.yandex=Créez une nouvelle application sur https://oauth.yandex.com/client/new. Sélectionnez les autorisations suivantes dans la section "Yandex API passport" : "Accès à l'adresse e-mail", "Accès à l'avatar de l'utilisateur" et "Accès au nom d'utilisateur, prénom et prénom, genre"
|
||||
auths.tip.mastodon=Entrez une URL d'instance personnalisée pour l'instance mastodon avec laquelle vous voulez vous authentifier (ou utiliser celle par défaut)
|
||||
auths.edit=Mettre à jour la source d'authentification
|
||||
auths.activated=Cette source d'authentification est activée
|
||||
auths.new_success=L'authentification "%s" a été ajoutée.
|
||||
|
@ -2352,6 +2462,7 @@ config.db_path=Emplacement
|
|||
config.service_config=Configuration du service
|
||||
config.register_email_confirm=Exiger la confirmation de l'e-mail lors de l'inscription
|
||||
config.disable_register=Désactiver le formulaire d'inscription
|
||||
config.allow_only_internal_registration=Autoriser l'inscription uniquement via Gitea lui-même
|
||||
config.allow_only_external_registration=N'autoriser l'inscription qu'à partir des services externes
|
||||
config.enable_openid_signup=Activer l'inscription avec OpenID
|
||||
config.enable_openid_signin=Activer la connexion avec OpenID
|
||||
|
|
|
@ -8,8 +8,10 @@ package private
|
|||
import (
|
||||
"net/http"
|
||||
|
||||
repo_model "code.gitea.io/gitea/models/repo"
|
||||
gitea_context "code.gitea.io/gitea/modules/context"
|
||||
"code.gitea.io/gitea/modules/git"
|
||||
"code.gitea.io/gitea/modules/log"
|
||||
"code.gitea.io/gitea/modules/private"
|
||||
"code.gitea.io/gitea/modules/web"
|
||||
"code.gitea.io/gitea/services/agit"
|
||||
|
@ -23,8 +25,17 @@ func HookProcReceive(ctx *gitea_context.PrivateContext) {
|
|||
return
|
||||
}
|
||||
|
||||
results := agit.ProcReceive(ctx, opts)
|
||||
if ctx.Written() {
|
||||
results, err := agit.ProcReceive(ctx, ctx.Repo.Repository, ctx.Repo.GitRepo, opts)
|
||||
if err != nil {
|
||||
if repo_model.IsErrUserDoesNotHaveAccessToRepo(err) {
|
||||
ctx.Error(http.StatusBadRequest, "UserDoesNotHaveAccessToRepo", err.Error())
|
||||
} else {
|
||||
log.Error(err.Error())
|
||||
ctx.JSON(http.StatusInternalServerError, map[string]interface{}{
|
||||
"Err": err.Error(),
|
||||
})
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
|
|
|
@ -215,7 +215,7 @@ func newAccessTokenResponse(ctx stdContext.Context, grant *auth.OAuth2Grant, ser
|
|||
Nonce: grant.Nonce,
|
||||
}
|
||||
if grant.ScopeContains("profile") {
|
||||
idToken.Name = user.FullName
|
||||
idToken.Name = user.GetDisplayName()
|
||||
idToken.PreferredUsername = user.Name
|
||||
idToken.Profile = user.HTMLURL()
|
||||
idToken.Picture = user.AvatarLink()
|
||||
|
|
|
@ -11,6 +11,7 @@ import (
|
|||
"code.gitea.io/gitea/models/db"
|
||||
"code.gitea.io/gitea/models/unittest"
|
||||
user_model "code.gitea.io/gitea/models/user"
|
||||
"code.gitea.io/gitea/modules/setting"
|
||||
"code.gitea.io/gitea/services/auth/source/oauth2"
|
||||
|
||||
"github.com/golang-jwt/jwt/v4"
|
||||
|
@ -64,6 +65,24 @@ func TestNewAccessTokenResponse_OIDCToken(t *testing.T) {
|
|||
assert.NoError(t, err)
|
||||
assert.Len(t, grants, 1)
|
||||
|
||||
// Scopes: openid profile email
|
||||
oidcToken = createAndParseToken(t, grants[0])
|
||||
assert.Equal(t, user.Name, oidcToken.Name)
|
||||
assert.Equal(t, user.Name, oidcToken.PreferredUsername)
|
||||
assert.Equal(t, user.HTMLURL(), oidcToken.Profile)
|
||||
assert.Equal(t, user.AvatarLink(), oidcToken.Picture)
|
||||
assert.Equal(t, user.Website, oidcToken.Website)
|
||||
assert.Equal(t, user.UpdatedUnix, oidcToken.UpdatedAt)
|
||||
assert.Equal(t, user.Email, oidcToken.Email)
|
||||
assert.Equal(t, user.IsActive, oidcToken.EmailVerified)
|
||||
|
||||
// set DefaultShowFullName to true
|
||||
oldDefaultShowFullName := setting.UI.DefaultShowFullName
|
||||
setting.UI.DefaultShowFullName = true
|
||||
defer func() {
|
||||
setting.UI.DefaultShowFullName = oldDefaultShowFullName
|
||||
}()
|
||||
|
||||
// Scopes: openid profile email
|
||||
oidcToken = createAndParseToken(t, grants[0])
|
||||
assert.Equal(t, user.FullName, oidcToken.Name)
|
||||
|
|
|
@ -99,7 +99,9 @@ func GetActiveStopwatch(ctx *context.Context) {
|
|||
|
||||
issue, err := issues_model.GetIssueByID(ctx, sw.IssueID)
|
||||
if err != nil || issue == nil {
|
||||
ctx.ServerError("GetIssueByID", err)
|
||||
if !issues_model.IsErrIssueNotExist(err) {
|
||||
ctx.ServerError("GetIssueByID", err)
|
||||
}
|
||||
return
|
||||
}
|
||||
if err = issue.LoadRepo(ctx); err != nil {
|
||||
|
|
|
@ -357,7 +357,7 @@ func renderReadmeFile(ctx *context.Context, readmeFile *namedBlob, readmeTreelin
|
|||
var result strings.Builder
|
||||
err := markup.Render(&markup.RenderContext{
|
||||
Ctx: ctx,
|
||||
RelativePath: ctx.Repo.TreePath,
|
||||
RelativePath: path.Join(ctx.Repo.TreePath, readmeFile.name), // ctx.Repo.TreePath is the directory not the Readme so we must append the Readme filename (and path).
|
||||
URLPrefix: readmeTreelink,
|
||||
Metas: ctx.Repo.Repository.ComposeDocumentMetas(),
|
||||
GitRepo: ctx.Repo.GitRepo,
|
||||
|
|
|
@ -5,15 +5,14 @@
|
|||
package agit
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"net/http"
|
||||
"os"
|
||||
"strings"
|
||||
|
||||
issues_model "code.gitea.io/gitea/models/issues"
|
||||
repo_model "code.gitea.io/gitea/models/repo"
|
||||
user_model "code.gitea.io/gitea/models/user"
|
||||
"code.gitea.io/gitea/modules/context"
|
||||
"code.gitea.io/gitea/modules/git"
|
||||
"code.gitea.io/gitea/modules/log"
|
||||
"code.gitea.io/gitea/modules/notification"
|
||||
|
@ -22,7 +21,7 @@ import (
|
|||
)
|
||||
|
||||
// ProcReceive handle proc receive work
|
||||
func ProcReceive(ctx *context.PrivateContext, opts *private.HookOptions) []private.HookProcReceiveRefResult {
|
||||
func ProcReceive(ctx context.Context, repo *repo_model.Repository, gitRepo *git.Repository, opts *private.HookOptions) ([]private.HookProcReceiveRefResult, error) {
|
||||
// TODO: Add more options?
|
||||
var (
|
||||
topicBranch string
|
||||
|
@ -32,10 +31,9 @@ func ProcReceive(ctx *context.PrivateContext, opts *private.HookOptions) []priva
|
|||
)
|
||||
|
||||
results := make([]private.HookProcReceiveRefResult, 0, len(opts.OldCommitIDs))
|
||||
repo := ctx.Repo.Repository
|
||||
gitRepo := ctx.Repo.GitRepo
|
||||
ownerName := ctx.Repo.Repository.OwnerName
|
||||
repoName := ctx.Repo.Repository.Name
|
||||
|
||||
ownerName := repo.OwnerName
|
||||
repoName := repo.Name
|
||||
|
||||
topicBranch = opts.GitPushOptions["topic"]
|
||||
_, forcePush = opts.GitPushOptions["force-push"]
|
||||
|
@ -101,11 +99,7 @@ func ProcReceive(ctx *context.PrivateContext, opts *private.HookOptions) []priva
|
|||
pr, err := issues_model.GetUnmergedPullRequest(repo.ID, repo.ID, headBranch, baseBranchName, issues_model.PullRequestFlowAGit)
|
||||
if err != nil {
|
||||
if !issues_model.IsErrPullRequestNotExist(err) {
|
||||
log.Error("Failed to get unmerged agit flow pull request in repository: %s/%s Error: %v", ownerName, repoName, err)
|
||||
ctx.JSON(http.StatusInternalServerError, map[string]interface{}{
|
||||
"Err": fmt.Sprintf("Failed to get unmerged agit flow pull request in repository: %s/%s Error: %v", ownerName, repoName, err),
|
||||
})
|
||||
return nil
|
||||
return nil, fmt.Errorf("Failed to get unmerged agit flow pull request in repository: %s/%s Error: %v", ownerName, repoName, err)
|
||||
}
|
||||
|
||||
// create a new pull request
|
||||
|
@ -115,11 +109,7 @@ func ProcReceive(ctx *context.PrivateContext, opts *private.HookOptions) []priva
|
|||
if !has || len(title) == 0 {
|
||||
commit, err := gitRepo.GetCommit(opts.NewCommitIDs[i])
|
||||
if err != nil {
|
||||
log.Error("Failed to get commit %s in repository: %s/%s Error: %v", opts.NewCommitIDs[i], ownerName, repoName, err)
|
||||
ctx.JSON(http.StatusInternalServerError, map[string]interface{}{
|
||||
"Err": fmt.Sprintf("Failed to get commit %s in repository: %s/%s Error: %v", opts.NewCommitIDs[i], ownerName, repoName, err),
|
||||
})
|
||||
return nil
|
||||
return nil, fmt.Errorf("Failed to get commit %s in repository: %s/%s Error: %v", opts.NewCommitIDs[i], ownerName, repoName, err)
|
||||
}
|
||||
title = strings.Split(commit.CommitMessage, "\n")[0]
|
||||
}
|
||||
|
@ -128,11 +118,7 @@ func ProcReceive(ctx *context.PrivateContext, opts *private.HookOptions) []priva
|
|||
|
||||
pusher, err := user_model.GetUserByID(opts.UserID)
|
||||
if err != nil {
|
||||
log.Error("Failed to get user. Error: %v", err)
|
||||
ctx.JSON(http.StatusInternalServerError, map[string]interface{}{
|
||||
"Err": fmt.Sprintf("Failed to get user. Error: %v", err),
|
||||
})
|
||||
return nil
|
||||
return nil, fmt.Errorf("Failed to get user. Error: %v", err)
|
||||
}
|
||||
|
||||
prIssue := &issues_model.Issue{
|
||||
|
@ -158,12 +144,7 @@ func ProcReceive(ctx *context.PrivateContext, opts *private.HookOptions) []priva
|
|||
}
|
||||
|
||||
if err := pull_service.NewPullRequest(ctx, repo, prIssue, []int64{}, []string{}, pr, []int64{}); err != nil {
|
||||
if repo_model.IsErrUserDoesNotHaveAccessToRepo(err) {
|
||||
ctx.Error(http.StatusBadRequest, "UserDoesNotHaveAccessToRepo", err.Error())
|
||||
return nil
|
||||
}
|
||||
ctx.Error(http.StatusInternalServerError, "NewPullRequest", err.Error())
|
||||
return nil
|
||||
return nil, err
|
||||
}
|
||||
|
||||
log.Trace("Pull request created: %d/%d", repo.ID, prIssue.ID)
|
||||
|
@ -179,20 +160,12 @@ func ProcReceive(ctx *context.PrivateContext, opts *private.HookOptions) []priva
|
|||
|
||||
// update exist pull request
|
||||
if err := pr.LoadBaseRepoCtx(ctx); err != nil {
|
||||
log.Error("Unable to load base repository for PR[%d] Error: %v", pr.ID, err)
|
||||
ctx.JSON(http.StatusInternalServerError, map[string]interface{}{
|
||||
"Err": fmt.Sprintf("Unable to load base repository for PR[%d] Error: %v", pr.ID, err),
|
||||
})
|
||||
return nil
|
||||
return nil, fmt.Errorf("Unable to load base repository for PR[%d] Error: %v", pr.ID, err)
|
||||
}
|
||||
|
||||
oldCommitID, err := gitRepo.GetRefCommitID(pr.GetGitRefName())
|
||||
if err != nil {
|
||||
log.Error("Unable to get ref commit id in base repository for PR[%d] Error: %v", pr.ID, err)
|
||||
ctx.JSON(http.StatusInternalServerError, map[string]interface{}{
|
||||
"Err": fmt.Sprintf("Unable to get ref commit id in base repository for PR[%d] Error: %v", pr.ID, err),
|
||||
})
|
||||
return nil
|
||||
return nil, fmt.Errorf("Unable to get ref commit id in base repository for PR[%d] Error: %v", pr.ID, err)
|
||||
}
|
||||
|
||||
if oldCommitID == opts.NewCommitIDs[i] {
|
||||
|
@ -208,11 +181,7 @@ func ProcReceive(ctx *context.PrivateContext, opts *private.HookOptions) []priva
|
|||
if !forcePush {
|
||||
output, _, err := git.NewCommand(ctx, "rev-list", "--max-count=1", oldCommitID, "^"+opts.NewCommitIDs[i]).RunStdString(&git.RunOpts{Dir: repo.RepoPath(), Env: os.Environ()})
|
||||
if err != nil {
|
||||
log.Error("Unable to detect force push between: %s and %s in %-v Error: %v", oldCommitID, opts.NewCommitIDs[i], repo, err)
|
||||
ctx.JSON(http.StatusInternalServerError, private.Response{
|
||||
Err: fmt.Sprintf("Fail to detect force push: %v", err),
|
||||
})
|
||||
return nil
|
||||
return nil, fmt.Errorf("Fail to detect force push: %v", err)
|
||||
} else if len(output) > 0 {
|
||||
results = append(results, private.HookProcReceiveRefResult{
|
||||
OriginalRef: opts.RefFullNames[i],
|
||||
|
@ -226,29 +195,17 @@ func ProcReceive(ctx *context.PrivateContext, opts *private.HookOptions) []priva
|
|||
|
||||
pr.HeadCommitID = opts.NewCommitIDs[i]
|
||||
if err = pull_service.UpdateRef(ctx, pr); err != nil {
|
||||
log.Error("Failed to update pull ref. Error: %v", err)
|
||||
ctx.JSON(http.StatusInternalServerError, map[string]interface{}{
|
||||
"Err": fmt.Sprintf("Failed to update pull ref. Error: %v", err),
|
||||
})
|
||||
return nil
|
||||
return nil, fmt.Errorf("Failed to update pull ref. Error: %v", err)
|
||||
}
|
||||
|
||||
pull_service.AddToTaskQueue(pr)
|
||||
pusher, err := user_model.GetUserByID(opts.UserID)
|
||||
if err != nil {
|
||||
log.Error("Failed to get user. Error: %v", err)
|
||||
ctx.JSON(http.StatusInternalServerError, map[string]interface{}{
|
||||
"Err": fmt.Sprintf("Failed to get user. Error: %v", err),
|
||||
})
|
||||
return nil
|
||||
return nil, fmt.Errorf("Failed to get user. Error: %v", err)
|
||||
}
|
||||
err = pr.LoadIssue()
|
||||
if err != nil {
|
||||
log.Error("Failed to load pull issue. Error: %v", err)
|
||||
ctx.JSON(http.StatusInternalServerError, map[string]interface{}{
|
||||
"Err": fmt.Sprintf("Failed to load pull issue. Error: %v", err),
|
||||
})
|
||||
return nil
|
||||
return nil, fmt.Errorf("Failed to load pull issue. Error: %v", err)
|
||||
}
|
||||
comment, err := issues_model.CreatePushPullComment(ctx, pusher, pr, oldCommitID, opts.NewCommitIDs[i])
|
||||
if err == nil && comment != nil {
|
||||
|
@ -266,7 +223,7 @@ func ProcReceive(ctx *context.PrivateContext, opts *private.HookOptions) []priva
|
|||
})
|
||||
}
|
||||
|
||||
return results
|
||||
return results, nil
|
||||
}
|
||||
|
||||
// UserNameChanged handle user name change for agit flow pull
|
||||
|
|
|
@ -159,6 +159,9 @@ func (g *RepositoryDumper) CreateRepo(repo *base.Repository, opts base.MigrateOp
|
|||
if err != nil {
|
||||
return fmt.Errorf("Clone: %v", err)
|
||||
}
|
||||
if err := git.WriteCommitGraph(g.ctx, repoPath); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if opts.Wiki {
|
||||
wikiPath := g.wikiPath()
|
||||
|
@ -179,6 +182,8 @@ func (g *RepositoryDumper) CreateRepo(repo *base.Repository, opts base.MigrateOp
|
|||
if err := os.RemoveAll(wikiPath); err != nil {
|
||||
return fmt.Errorf("Failed to remove %s: %v", wikiPath, err)
|
||||
}
|
||||
} else if err := git.WriteCommitGraph(g.ctx, wikiPath); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -283,7 +283,7 @@
|
|||
{{end}}
|
||||
{{end}}
|
||||
|
||||
{{if (gt .Issue.PullRequest.CommitsBehind 0)}}
|
||||
{{if and (gt .Issue.PullRequest.CommitsBehind 0) (not .Issue.IsClosed) (not .Issue.PullRequest.IsChecking) (not .IsPullFilesConflicted) (not .IsPullRequestBroken) (not $canAutoMerge)}}
|
||||
<div class="ui divider"></div>
|
||||
<div class="item item-section">
|
||||
<div class="item-section-left">
|
||||
|
@ -481,44 +481,6 @@
|
|||
{{end}}
|
||||
{{end}}
|
||||
|
||||
{{if and (gt .Issue.PullRequest.CommitsBehind 0) (not .Issue.IsClosed) (not .Issue.PullRequest.IsChecking) (not .IsPullFilesConflicted) (not .IsPullRequestBroken) (not $canAutoMerge)}}
|
||||
<div class="item df ac sb">
|
||||
<div>
|
||||
<i class="icon icon-octicon">{{svg "octicon-alert"}}</i>
|
||||
{{$.i18n.Tr "repo.pulls.outdated_with_base_branch"}}
|
||||
</div>
|
||||
<div>
|
||||
{{if and .UpdateAllowed .UpdateByRebaseAllowed }}
|
||||
<div class="dib">
|
||||
<div class="ui buttons update-button">
|
||||
<button class="ui button" data-do="{{.Link}}/update" data-redirect="{{.Link}}">
|
||||
<span class="button-text">
|
||||
{{$.i18n.Tr "repo.pulls.update_branch"}}
|
||||
</span>
|
||||
</button>
|
||||
|
||||
<div class="ui dropdown icon button no-text">
|
||||
{{svg "octicon-triangle-down" 14 "dropdown icon"}}
|
||||
<div class="menu">
|
||||
<div class="item active selected" data-do="{{.Link}}/update">{{$.i18n.Tr "repo.pulls.update_branch"}}</div>
|
||||
<div class="item" data-do="{{.Link}}/update?style=rebase">{{$.i18n.Tr "repo.pulls.update_branch_rebase"}}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{end}}
|
||||
{{if and .UpdateAllowed (not .UpdateByRebaseAllowed)}}
|
||||
<form action="{{.Link}}/update" method="post">
|
||||
{{.CsrfTokenHtml}}
|
||||
<button class="ui compact button" data-do="update">
|
||||
<span class="ui text">{{$.i18n.Tr "repo.pulls.update_branch"}}</span>
|
||||
</button>
|
||||
</form>
|
||||
{{end}}
|
||||
</div>
|
||||
</div>
|
||||
{{end}}
|
||||
|
||||
{{if $.StillCanManualMerge}}
|
||||
<div class="ui divider"></div>
|
||||
<div class="ui form manually-merged-fields" style="display: none">
|
||||
|
|
|
@ -45,7 +45,12 @@ export function initRepoCommitLastCommitLoader() {
|
|||
$('table#repo-files-table .commit-list').replaceWith(row);
|
||||
return;
|
||||
}
|
||||
entryMap[$(row).attr('data-entryname')].replaceWith(row);
|
||||
// there are other <tr> rows in response (eg: <tr class="has-parent">)
|
||||
// at the moment only the "data-entryname" rows should be processed
|
||||
const entryName = $(row).attr('data-entryname');
|
||||
if (entryName) {
|
||||
entryMap[entryName].replaceWith(row);
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
|
Reference in a new issue