forked from mirror/gitea
Compare commits
7 Commits
fcc11253ac
...
24a8d54bfb
Author | SHA1 | Date | |
---|---|---|---|
qwerty287 | 24a8d54bfb | ||
Galen Suen | fbadc1a198 | ||
zeripath | 72d82c5b6f | ||
mscherer | 04c55e97a2 | ||
Gabriel Vasile | 2e8fc5b034 | ||
GiteaBot | 789d251ae4 | ||
mscherer | 1f0dab2116 |
|
@ -267,10 +267,10 @@ func main() {
|
||||||
logVerbose("batch cmd: %s %v", subCmd, substArgs)
|
logVerbose("batch cmd: %s %v", subCmd, substArgs)
|
||||||
switch subCmd {
|
switch subCmd {
|
||||||
case "gitea-fmt":
|
case "gitea-fmt":
|
||||||
cmdErrors = append(cmdErrors, passThroughCmd("gofmt", substArgs))
|
|
||||||
if containsString(subArgs, "-w") {
|
if containsString(subArgs, "-w") {
|
||||||
cmdErrors = append(cmdErrors, giteaFormatGoImports(files))
|
cmdErrors = append(cmdErrors, giteaFormatGoImports(files))
|
||||||
}
|
}
|
||||||
|
cmdErrors = append(cmdErrors, passThroughCmd("gofmt", substArgs))
|
||||||
case "misspell":
|
case "misspell":
|
||||||
cmdErrors = append(cmdErrors, passThroughCmd("misspell", substArgs))
|
cmdErrors = append(cmdErrors, passThroughCmd("misspell", substArgs))
|
||||||
default:
|
default:
|
||||||
|
|
|
@ -247,7 +247,7 @@ The following configuration set `Content-Type: application/vnd.android.package-a
|
||||||
- `HTTP_ADDR`: **0.0.0.0**: HTTP listen address.
|
- `HTTP_ADDR`: **0.0.0.0**: HTTP listen address.
|
||||||
- If `PROTOCOL` is set to `fcgi`, Gitea will listen for FastCGI requests on TCP socket
|
- If `PROTOCOL` is set to `fcgi`, Gitea will listen for FastCGI requests on TCP socket
|
||||||
defined by `HTTP_ADDR` and `HTTP_PORT` configuration settings.
|
defined by `HTTP_ADDR` and `HTTP_PORT` configuration settings.
|
||||||
- If `PROTOCOL` is set to `unix` or `fcgi+unix`, this should be the name of the Unix socket file to use.
|
- If `PROTOCOL` is set to `unix` or `fcgi+unix`, this should be the name of the Unix socket file to use. Relative paths will be made absolute against the AppWorkPath.
|
||||||
- `HTTP_PORT`: **3000**: HTTP listen port.
|
- `HTTP_PORT`: **3000**: HTTP listen port.
|
||||||
- If `PROTOCOL` is set to `fcgi`, Gitea will listen for FastCGI requests on TCP socket
|
- If `PROTOCOL` is set to `fcgi`, Gitea will listen for FastCGI requests on TCP socket
|
||||||
defined by `HTTP_ADDR` and `HTTP_PORT` configuration settings.
|
defined by `HTTP_ADDR` and `HTTP_PORT` configuration settings.
|
||||||
|
|
|
@ -583,6 +583,10 @@ func NewContext() {
|
||||||
sec := Cfg.Section("server")
|
sec := Cfg.Section("server")
|
||||||
AppName = Cfg.Section("").Key("APP_NAME").MustString("Gitea: Git with a cup of tea")
|
AppName = Cfg.Section("").Key("APP_NAME").MustString("Gitea: Git with a cup of tea")
|
||||||
|
|
||||||
|
Domain = sec.Key("DOMAIN").MustString("localhost")
|
||||||
|
HTTPAddr = sec.Key("HTTP_ADDR").MustString("0.0.0.0")
|
||||||
|
HTTPPort = sec.Key("HTTP_PORT").MustString("3000")
|
||||||
|
|
||||||
Protocol = HTTP
|
Protocol = HTTP
|
||||||
switch sec.Key("PROTOCOL").String() {
|
switch sec.Key("PROTOCOL").String() {
|
||||||
case "https":
|
case "https":
|
||||||
|
@ -605,6 +609,9 @@ func NewContext() {
|
||||||
log.Fatal("Failed to parse unixSocketPermission: %s", UnixSocketPermissionRaw)
|
log.Fatal("Failed to parse unixSocketPermission: %s", UnixSocketPermissionRaw)
|
||||||
}
|
}
|
||||||
UnixSocketPermission = uint32(UnixSocketPermissionParsed)
|
UnixSocketPermission = uint32(UnixSocketPermissionParsed)
|
||||||
|
if !filepath.IsAbs(HTTPAddr) {
|
||||||
|
HTTPAddr = filepath.Join(AppWorkPath, HTTPAddr)
|
||||||
|
}
|
||||||
case "unix":
|
case "unix":
|
||||||
Protocol = UnixSocket
|
Protocol = UnixSocket
|
||||||
UnixSocketPermissionRaw := sec.Key("UNIX_SOCKET_PERMISSION").MustString("666")
|
UnixSocketPermissionRaw := sec.Key("UNIX_SOCKET_PERMISSION").MustString("666")
|
||||||
|
@ -613,6 +620,9 @@ func NewContext() {
|
||||||
log.Fatal("Failed to parse unixSocketPermission: %s", UnixSocketPermissionRaw)
|
log.Fatal("Failed to parse unixSocketPermission: %s", UnixSocketPermissionRaw)
|
||||||
}
|
}
|
||||||
UnixSocketPermission = uint32(UnixSocketPermissionParsed)
|
UnixSocketPermission = uint32(UnixSocketPermissionParsed)
|
||||||
|
if !filepath.IsAbs(HTTPAddr) {
|
||||||
|
HTTPAddr = filepath.Join(AppWorkPath, HTTPAddr)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
EnableLetsEncrypt = sec.Key("ENABLE_LETSENCRYPT").MustBool(false)
|
EnableLetsEncrypt = sec.Key("ENABLE_LETSENCRYPT").MustBool(false)
|
||||||
LetsEncryptTOS = sec.Key("LETSENCRYPT_ACCEPTTOS").MustBool(false)
|
LetsEncryptTOS = sec.Key("LETSENCRYPT_ACCEPTTOS").MustBool(false)
|
||||||
|
@ -626,9 +636,6 @@ func NewContext() {
|
||||||
SSLMaximumVersion = sec.Key("SSL_MAX_VERSION").MustString("")
|
SSLMaximumVersion = sec.Key("SSL_MAX_VERSION").MustString("")
|
||||||
SSLCurvePreferences = sec.Key("SSL_CURVE_PREFERENCES").Strings(",")
|
SSLCurvePreferences = sec.Key("SSL_CURVE_PREFERENCES").Strings(",")
|
||||||
SSLCipherSuites = sec.Key("SSL_CIPHER_SUITES").Strings(",")
|
SSLCipherSuites = sec.Key("SSL_CIPHER_SUITES").Strings(",")
|
||||||
Domain = sec.Key("DOMAIN").MustString("localhost")
|
|
||||||
HTTPAddr = sec.Key("HTTP_ADDR").MustString("0.0.0.0")
|
|
||||||
HTTPPort = sec.Key("HTTP_PORT").MustString("3000")
|
|
||||||
GracefulRestartable = sec.Key("ALLOW_GRACEFUL_RESTARTS").MustBool(true)
|
GracefulRestartable = sec.Key("ALLOW_GRACEFUL_RESTARTS").MustBool(true)
|
||||||
GracefulHammerTime = sec.Key("GRACEFUL_HAMMER_TIME").MustDuration(60 * time.Second)
|
GracefulHammerTime = sec.Key("GRACEFUL_HAMMER_TIME").MustDuration(60 * time.Second)
|
||||||
StartupTimeout = sec.Key("STARTUP_TIMEOUT").MustDuration(0 * time.Second)
|
StartupTimeout = sec.Key("STARTUP_TIMEOUT").MustDuration(0 * time.Second)
|
||||||
|
|
|
@ -5,6 +5,7 @@
|
||||||
package upload
|
package upload
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"mime"
|
||||||
"net/http"
|
"net/http"
|
||||||
"net/url"
|
"net/url"
|
||||||
"path"
|
"path"
|
||||||
|
@ -31,7 +32,6 @@ func (err ErrFileTypeForbidden) Error() string {
|
||||||
return "This file extension or type is not allowed to be uploaded."
|
return "This file extension or type is not allowed to be uploaded."
|
||||||
}
|
}
|
||||||
|
|
||||||
var mimeTypeSuffixRe = regexp.MustCompile(`;.*$`)
|
|
||||||
var wildcardTypeRe = regexp.MustCompile(`^[a-z]+/\*$`)
|
var wildcardTypeRe = regexp.MustCompile(`^[a-z]+/\*$`)
|
||||||
|
|
||||||
// Verify validates whether a file is allowed to be uploaded.
|
// Verify validates whether a file is allowed to be uploaded.
|
||||||
|
@ -51,7 +51,11 @@ func Verify(buf []byte, fileName string, allowedTypesStr string) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
fullMimeType := http.DetectContentType(buf)
|
fullMimeType := http.DetectContentType(buf)
|
||||||
mimeType := strings.TrimSpace(mimeTypeSuffixRe.ReplaceAllString(fullMimeType, ""))
|
mimeType, _, err := mime.ParseMediaType(fullMimeType)
|
||||||
|
if err != nil {
|
||||||
|
log.Warn("Detected attachment type could not be parsed %s", fullMimeType)
|
||||||
|
return ErrFileTypeForbidden{Type: fullMimeType}
|
||||||
|
}
|
||||||
extension := strings.ToLower(path.Ext(fileName))
|
extension := strings.ToLower(path.Ext(fileName))
|
||||||
|
|
||||||
// https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/file#Unique_file_type_specifiers
|
// https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/file#Unique_file_type_specifiers
|
||||||
|
|
|
@ -155,6 +155,8 @@ lfs_path=Ruta raĂz de Git LFS
|
||||||
lfs_path_helper=Los archivos almacenados con Git LFS se almacenarán en este directorio. DĂ©jelo vacĂo para deshabilitarlo.
|
lfs_path_helper=Los archivos almacenados con Git LFS se almacenarán en este directorio. DĂ©jelo vacĂo para deshabilitarlo.
|
||||||
run_user=Ejecutar como usuario
|
run_user=Ejecutar como usuario
|
||||||
run_user_helper=Introduzca el nombre de usuario del sistema operativo sobre el que está ejecutando Gitea. Tenga en cuenta que este usuario debe tener acceso a la ruta a la raĂz de los repositorios.
|
run_user_helper=Introduzca el nombre de usuario del sistema operativo sobre el que está ejecutando Gitea. Tenga en cuenta que este usuario debe tener acceso a la ruta a la raĂz de los repositorios.
|
||||||
|
domain=Dominio del Servidor
|
||||||
|
domain_helper=Dominio o direcciĂłn de host para el servidor.
|
||||||
ssh_port=Puerto de servidor SSH
|
ssh_port=Puerto de servidor SSH
|
||||||
ssh_port_helper=NĂşmero de puerto en el que está escuchando su servidor SSH. DĂ©jelo vacĂo para deshabilitarlo.
|
ssh_port_helper=NĂşmero de puerto en el que está escuchando su servidor SSH. DĂ©jelo vacĂo para deshabilitarlo.
|
||||||
http_port=Puerto de escucha HTTP de Gitea
|
http_port=Puerto de escucha HTTP de Gitea
|
||||||
|
@ -519,7 +521,9 @@ website=Página web
|
||||||
location=LocalizaciĂłn
|
location=LocalizaciĂłn
|
||||||
update_theme=Actualizar tema
|
update_theme=Actualizar tema
|
||||||
update_profile=Actualizar perfil
|
update_profile=Actualizar perfil
|
||||||
|
update_language=Actualizar idioma
|
||||||
update_language_not_found=El idioma '%s' no está disponible.
|
update_language_not_found=El idioma '%s' no está disponible.
|
||||||
|
update_language_success=El idioma ha sido actualizado.
|
||||||
update_profile_success=Tu perfil ha sido actualizado.
|
update_profile_success=Tu perfil ha sido actualizado.
|
||||||
change_username=Su nombre de usuario ha sido cambiado.
|
change_username=Su nombre de usuario ha sido cambiado.
|
||||||
change_username_prompt=Nota: los cambios de nombre de usuario también cambian la URL de su cuenta.
|
change_username_prompt=Nota: los cambios de nombre de usuario también cambian la URL de su cuenta.
|
||||||
|
@ -895,6 +899,7 @@ migrate.clone_address_desc=La URL HTTP(S) o de Git 'clone' de un repositorio exi
|
||||||
migrate.github_token_desc=Puedes poner uno o más tokens con comas separadas aquĂ para hacer migrar más rápido debido al lĂmite de velocidad de Github API. PRECAUCIĂ“N: Abusar esta caracterĂstica puede violar la polĂtica del proveedor de servicios y llevar a bloquear la cuenta.
|
migrate.github_token_desc=Puedes poner uno o más tokens con comas separadas aquĂ para hacer migrar más rápido debido al lĂmite de velocidad de Github API. PRECAUCIĂ“N: Abusar esta caracterĂstica puede violar la polĂtica del proveedor de servicios y llevar a bloquear la cuenta.
|
||||||
migrate.clone_local_path=o una ruta local del servidor
|
migrate.clone_local_path=o una ruta local del servidor
|
||||||
migrate.permission_denied=No te está permitido importar repositorios locales.
|
migrate.permission_denied=No te está permitido importar repositorios locales.
|
||||||
|
migrate.permission_denied_blocked=No puede importar desde hosts no permitidos, por favor pida al administrador que marque ALLOWED_DOMAINS/ALLOW_LOCALNETWORKS/BLOCKED_DOMAINS configuraciĂłn.
|
||||||
migrate.invalid_local_path=La ruta local es inválida. No existe o no es un directorio.
|
migrate.invalid_local_path=La ruta local es inválida. No existe o no es un directorio.
|
||||||
migrate.invalid_lfs_endpoint=El punto final de LFS no es válido.
|
migrate.invalid_lfs_endpoint=El punto final de LFS no es válido.
|
||||||
migrate.failed=MigraciĂłn fallida: %v
|
migrate.failed=MigraciĂłn fallida: %v
|
||||||
|
@ -905,12 +910,14 @@ migrate.migrate=Migrar desde %s
|
||||||
migrate.migrating=Migrando desde <b>%s</b>...
|
migrate.migrating=Migrando desde <b>%s</b>...
|
||||||
migrate.migrating_failed=La migraciĂłn desde <b>%s</b> ha fallado.
|
migrate.migrating_failed=La migraciĂłn desde <b>%s</b> ha fallado.
|
||||||
migrate.migrating_failed.error=Error: %s
|
migrate.migrating_failed.error=Error: %s
|
||||||
|
migrate.migrating_failed_no_addr=MigraciĂłn fallida.
|
||||||
migrate.github.description=Migrar datos desde github.com u otra instancia de Github.
|
migrate.github.description=Migrar datos desde github.com u otra instancia de Github.
|
||||||
migrate.git.description=Migrar un repositorio sĂłlo desde cualquier servicio Git.
|
migrate.git.description=Migrar un repositorio sĂłlo desde cualquier servicio Git.
|
||||||
migrate.gitlab.description=Migrar datos de gitlab.com u otra instancia de GitLab.
|
migrate.gitlab.description=Migrar datos de gitlab.com u otra instancia de GitLab.
|
||||||
migrate.gitea.description=Migrar datos de gitea.com u otra instancia de Gitea.
|
migrate.gitea.description=Migrar datos de gitea.com u otra instancia de Gitea.
|
||||||
migrate.gogs.description=Migrar datos de notabug.org u otra instancia de Gogs.
|
migrate.gogs.description=Migrar datos de notabug.org u otra instancia de Gogs.
|
||||||
migrate.onedev.description=Migrar datos desde code.onedev.io u otra instancia de OneDev.
|
migrate.onedev.description=Migrar datos desde code.onedev.io u otra instancia de OneDev.
|
||||||
|
migrate.gitbucket.description=Migrar datos de instancias de GitBucket.
|
||||||
migrate.migrating_git=Migrando datos de Git
|
migrate.migrating_git=Migrando datos de Git
|
||||||
migrate.migrating_topics=Migrando Temas
|
migrate.migrating_topics=Migrando Temas
|
||||||
migrate.migrating_milestones=Migrando Hitos
|
migrate.migrating_milestones=Migrando Hitos
|
||||||
|
@ -939,6 +946,7 @@ clone_this_repo=Clonar este repositorio
|
||||||
create_new_repo_command=Crear un nuevo repositorio desde lĂnea de comandos
|
create_new_repo_command=Crear un nuevo repositorio desde lĂnea de comandos
|
||||||
push_exist_repo=Hacer push de un repositorio existente desde lĂnea de comandos
|
push_exist_repo=Hacer push de un repositorio existente desde lĂnea de comandos
|
||||||
empty_message=Este repositorio no contiene ningĂşn contenido.
|
empty_message=Este repositorio no contiene ningĂşn contenido.
|
||||||
|
broken_message=Los datos de git subyacentes a este repositorio no pueden ser leĂdos. Contacte con el administrador de esta instancia o elimine este repositorio.
|
||||||
|
|
||||||
code=CĂłdigo
|
code=CĂłdigo
|
||||||
code.desc=Acceder cĂłdigo fuente, archivos, commits, y ramas.
|
code.desc=Acceder cĂłdigo fuente, archivos, commits, y ramas.
|
||||||
|
@ -1165,6 +1173,9 @@ issues.add_assignee_at='fue asignado por <b>%s</b> %s'
|
||||||
issues.remove_assignee_at=`fue desasignado por <b>%s</b> %s`
|
issues.remove_assignee_at=`fue desasignado por <b>%s</b> %s`
|
||||||
issues.remove_self_assignment=`eliminado su asignaciĂłn %s`
|
issues.remove_self_assignment=`eliminado su asignaciĂłn %s`
|
||||||
issues.change_title_at=`cambiĂł el tĂtulo de <b><strike>%s</strike></b> a <b>%s</b> %s`
|
issues.change_title_at=`cambiĂł el tĂtulo de <b><strike>%s</strike></b> a <b>%s</b> %s`
|
||||||
|
issues.change_ref_at=`cambiĂł referencia de <b><strike>%s</strike></b> a <b>%s</b> %s`
|
||||||
|
issues.remove_ref_at=`eliminĂł la referencia <b>%s</b> %s`
|
||||||
|
issues.add_ref_at=`añadió la referencia <b>%s</b> %s`
|
||||||
issues.delete_branch_at=`rama eliminada <b>%s</b> %s`
|
issues.delete_branch_at=`rama eliminada <b>%s</b> %s`
|
||||||
issues.open_tab=%d abiertas
|
issues.open_tab=%d abiertas
|
||||||
issues.close_tab=%d cerradas
|
issues.close_tab=%d cerradas
|
||||||
|
@ -1398,10 +1409,12 @@ pulls.compare_changes_desc=Seleccione la rama en la que se fusiona y la rama a r
|
||||||
pulls.compare_base=fusionar en
|
pulls.compare_base=fusionar en
|
||||||
pulls.compare_compare=recuperar de
|
pulls.compare_compare=recuperar de
|
||||||
pulls.switch_comparison_type=Cambiar tipo de comparaciĂłn
|
pulls.switch_comparison_type=Cambiar tipo de comparaciĂłn
|
||||||
|
pulls.switch_head_and_base=Intercambiar cabeza y base
|
||||||
pulls.filter_branch=Filtrar rama
|
pulls.filter_branch=Filtrar rama
|
||||||
pulls.no_results=Sin resultados.
|
pulls.no_results=Sin resultados.
|
||||||
pulls.nothing_to_compare=Estas ramas son iguales. No hay necesidad para crear un pull request.
|
pulls.nothing_to_compare=Estas ramas son iguales. No hay necesidad para crear un pull request.
|
||||||
pulls.nothing_to_compare_and_allow_empty_pr=Estas ramas son iguales. Este PR estará vacĂo.
|
pulls.nothing_to_compare_and_allow_empty_pr=Estas ramas son iguales. Este PR estará vacĂo.
|
||||||
|
pulls.has_pull_request=`Ya existe un pull request entre estas ramas: <a href="%[1]s">%[2]s#%[3]d</a>`
|
||||||
pulls.create=Crear Pull Request
|
pulls.create=Crear Pull Request
|
||||||
pulls.title_desc=desea fusionar %[1]d commits de <code>%[2]s</code> en <code id="branch_target">%[3]s</code>
|
pulls.title_desc=desea fusionar %[1]d commits de <code>%[2]s</code> en <code id="branch_target">%[3]s</code>
|
||||||
pulls.merged_title_desc=fusionados %[1]d commits de <code>%[2]s</code> en <code>%[3]s</code> %[4]s
|
pulls.merged_title_desc=fusionados %[1]d commits de <code>%[2]s</code> en <code>%[3]s</code> %[4]s
|
||||||
|
@ -1919,6 +1932,8 @@ settings.require_signed_commits=Requiere commits firmados
|
||||||
settings.require_signed_commits_desc=Rechazar push en esta rama si los commits no están firmados o no son verificables.
|
settings.require_signed_commits_desc=Rechazar push en esta rama si los commits no están firmados o no son verificables.
|
||||||
settings.protect_protected_file_patterns=Patrones de archivos protegidos (separados con punto y coma '\;'):
|
settings.protect_protected_file_patterns=Patrones de archivos protegidos (separados con punto y coma '\;'):
|
||||||
settings.protect_protected_file_patterns_desc=Archivos protegidos que no están permitidos a ser cambiados directamente incluso si el usuario tiene permiso para agregar, editar o borrar archivos en esta rama. Múltiples patrones pueden separarse usando punto y coma ('\;'). Vea la documentación de <a href="https://pkg.go.dev/github.com/gobwas/glob#Compile">github.com/gobwas/glob</a> para la sintaxis de patrones. Ejemplos: <code>.drone.yml</code>, <code>/docs/**/*.txt</code>.
|
settings.protect_protected_file_patterns_desc=Archivos protegidos que no están permitidos a ser cambiados directamente incluso si el usuario tiene permiso para agregar, editar o borrar archivos en esta rama. Múltiples patrones pueden separarse usando punto y coma ('\;'). Vea la documentación de <a href="https://pkg.go.dev/github.com/gobwas/glob#Compile">github.com/gobwas/glob</a> para la sintaxis de patrones. Ejemplos: <code>.drone.yml</code>, <code>/docs/**/*.txt</code>.
|
||||||
|
settings.protect_unprotected_file_patterns=Patrones de archivos sin protecciĂłn (separados con punto y coma '\;'):
|
||||||
|
settings.protect_unprotected_file_patterns_desc=Archivos sin protecciĂłn que se pueden cambiar directamente si el usuario tiene acceso de escritura, evitando la restricciĂłn push. MĂşltiples patrones pueden separarse usando punto y coma ('\;'). Vea la documentaciĂłn de <a href="https://pkg.go.dev/github.com/gobwas/glob#Compile">github.com/gobwas/glob</a> para la sintaxis de patrones. Ejemplos: <code>.drone.yml</code>, <code>/docs/**/*.txt</code>.
|
||||||
settings.add_protected_branch=Activar protecciĂłn
|
settings.add_protected_branch=Activar protecciĂłn
|
||||||
settings.delete_protected_branch=Desactivar protecciĂłn
|
settings.delete_protected_branch=Desactivar protecciĂłn
|
||||||
settings.update_protect_branch_success=La protecciĂłn de la rama '%s' ha sido actualizada.
|
settings.update_protect_branch_success=La protecciĂłn de la rama '%s' ha sido actualizada.
|
||||||
|
@ -1992,6 +2007,7 @@ settings.lfs_pointers.inRepo=En repositorio
|
||||||
settings.lfs_pointers.exists=Existe en almacén
|
settings.lfs_pointers.exists=Existe en almacén
|
||||||
settings.lfs_pointers.accessible=Accesible al usuario
|
settings.lfs_pointers.accessible=Accesible al usuario
|
||||||
settings.lfs_pointers.associateAccessible=Asociar %d OID accesibles
|
settings.lfs_pointers.associateAccessible=Asociar %d OID accesibles
|
||||||
|
settings.rename_branch_failed_exist=No se puede renombrar la rama porque la rama destino %s ya existe.
|
||||||
settings.rename_branch_failed_not_exist=No se puede renombrar la rama %s porque no existe.
|
settings.rename_branch_failed_not_exist=No se puede renombrar la rama %s porque no existe.
|
||||||
settings.rename_branch_success=La rama %s se renombrĂł correctamente a %s.
|
settings.rename_branch_success=La rama %s se renombrĂł correctamente a %s.
|
||||||
settings.rename_branch_from=nombre de la rama vieja
|
settings.rename_branch_from=nombre de la rama vieja
|
||||||
|
@ -2028,6 +2044,7 @@ diff.file_suppressed=La diferencia del archivo ha sido suprimido porque es demas
|
||||||
diff.file_suppressed_line_too_long=Las diferiencias del archivo han sido suprimidas porque una o mas lineas son muy largas
|
diff.file_suppressed_line_too_long=Las diferiencias del archivo han sido suprimidas porque una o mas lineas son muy largas
|
||||||
diff.too_many_files=Algunos archivos no se mostraron porque demasiados archivos han cambiado en esta diferencia
|
diff.too_many_files=Algunos archivos no se mostraron porque demasiados archivos han cambiado en esta diferencia
|
||||||
diff.show_more=Ver más
|
diff.show_more=Ver más
|
||||||
|
diff.load=Cargar Diff
|
||||||
diff.generated=generado
|
diff.generated=generado
|
||||||
diff.vendored=vendido
|
diff.vendored=vendido
|
||||||
diff.comment.placeholder=Deja un comentario
|
diff.comment.placeholder=Deja un comentario
|
||||||
|
@ -2377,6 +2394,7 @@ users.list_status_filter.reset=Reiniciar
|
||||||
users.list_status_filter.is_active=Activo
|
users.list_status_filter.is_active=Activo
|
||||||
users.list_status_filter.not_active=Inactivo
|
users.list_status_filter.not_active=Inactivo
|
||||||
users.list_status_filter.is_admin=Administrador
|
users.list_status_filter.is_admin=Administrador
|
||||||
|
users.list_status_filter.not_admin=Sin Admin
|
||||||
users.list_status_filter.is_restricted=Restringido
|
users.list_status_filter.is_restricted=Restringido
|
||||||
users.list_status_filter.not_restricted=No restringido
|
users.list_status_filter.not_restricted=No restringido
|
||||||
users.list_status_filter.is_prohibit_login=Prohibido el inicio de sesiĂłn
|
users.list_status_filter.is_prohibit_login=Prohibido el inicio de sesiĂłn
|
||||||
|
@ -2487,6 +2505,7 @@ auths.oauth2_authURL=URL de AutorizaciĂłn
|
||||||
auths.oauth2_profileURL=URL del perfil
|
auths.oauth2_profileURL=URL del perfil
|
||||||
auths.oauth2_emailURL=URL de correo
|
auths.oauth2_emailURL=URL de correo
|
||||||
auths.skip_local_two_fa=Omitir 2FA local
|
auths.skip_local_two_fa=Omitir 2FA local
|
||||||
|
auths.skip_local_two_fa_helper=Dejar sin ajustar significa que los usuarios locales con una configuración 2FA tendrán que pasar 2FA para iniciar sesión
|
||||||
auths.oauth2_tenant=Tenant
|
auths.oauth2_tenant=Tenant
|
||||||
auths.enable_auto_register=Hablilitar Auto-Registro
|
auths.enable_auto_register=Hablilitar Auto-Registro
|
||||||
auths.sspi_auto_create_users=Crear usuarios automáticamente
|
auths.sspi_auto_create_users=Crear usuarios automáticamente
|
||||||
|
@ -2535,6 +2554,7 @@ config.app_ver=VersiĂłn de Gitea
|
||||||
config.app_url=URL base de Gitea
|
config.app_url=URL base de Gitea
|
||||||
config.custom_conf=Ruta del fichero de configuraciĂłn
|
config.custom_conf=Ruta del fichero de configuraciĂłn
|
||||||
config.custom_file_root_path=Ruta raĂz de los archivos personalizada
|
config.custom_file_root_path=Ruta raĂz de los archivos personalizada
|
||||||
|
config.domain=Dominio del Servidor
|
||||||
config.offline_mode=Modo offline
|
config.offline_mode=Modo offline
|
||||||
config.disable_router_log=Deshabilitar Log del Router
|
config.disable_router_log=Deshabilitar Log del Router
|
||||||
config.run_user=Ejecutar como usuario
|
config.run_user=Ejecutar como usuario
|
||||||
|
@ -2550,6 +2570,7 @@ config.reverse_auth_user=AutenticaciĂłn Inversa de Usuario
|
||||||
config.ssh_config=ConfiguraciĂłn SSH
|
config.ssh_config=ConfiguraciĂłn SSH
|
||||||
config.ssh_enabled=Habilitado
|
config.ssh_enabled=Habilitado
|
||||||
config.ssh_start_builtin_server=Utilizar servidor integrado
|
config.ssh_start_builtin_server=Utilizar servidor integrado
|
||||||
|
config.ssh_domain=Dominio del servidor SSH
|
||||||
config.ssh_port=Puerto
|
config.ssh_port=Puerto
|
||||||
config.ssh_listen_port=Puerto de escucha
|
config.ssh_listen_port=Puerto de escucha
|
||||||
config.ssh_root_path=Ruta raĂz
|
config.ssh_root_path=Ruta raĂz
|
||||||
|
@ -2746,14 +2767,32 @@ notices.delete_success=Los avisos del sistema se han eliminado.
|
||||||
[action]
|
[action]
|
||||||
create_repo=creĂł el repositorio <a href="%s">%s</a>
|
create_repo=creĂł el repositorio <a href="%s">%s</a>
|
||||||
rename_repo=repositorio renombrado de <code>%[1]s</code> a <a href="%[2]s">%[3]s</a>
|
rename_repo=repositorio renombrado de <code>%[1]s</code> a <a href="%[2]s">%[3]s</a>
|
||||||
|
commit_repo=hizo push a <a href="%[2]s">%[3]s</a> en <a href="%[1]s">%[4]s</a>
|
||||||
|
create_issue=`abriĂł la incidencia <a href="%[1]s">%[3]s#%[2]s</a>`
|
||||||
|
close_issue=`cerrĂł la incidencia <a href="%[1]s">%[3]s#%[2]s</a>`
|
||||||
|
reopen_issue=`reabriĂł la incidencia <a href="%[1]s">%[3]s#%[2]s</a>`
|
||||||
|
create_pull_request=`creĂł el pull request <a href="%[1]s">%[3]s#%[2]s</a>`
|
||||||
|
close_pull_request=`cerrĂł el pull request <a href="%[1]s">%[3]s#%[2]s</a>`
|
||||||
|
reopen_pull_request=`reabriĂł el pull request <a href="%[1]s">%[3]s#%[2]s</a>`
|
||||||
|
comment_issue=`comentĂł en la incidencia <a href="%[1]s">%[3]s#%[2]s</a>`
|
||||||
|
comment_pull=`comentĂł en el pull request <a href="%[1]s">%[3]s#%[2]s</a>`
|
||||||
|
merge_pull_request=`fusionĂł el pull request <a href="%[1]s">%[3]s#%[2]s</a>`
|
||||||
transfer_repo=transfiriĂł el repositorio <code>%s</code> a <a href="%s">%s</a>
|
transfer_repo=transfiriĂł el repositorio <code>%s</code> a <a href="%s">%s</a>
|
||||||
|
push_tag=hizĂł push la etiqueta <a href="%[2]s">%[3]s</a> a <a href="%[1]s">%[4]s</a>
|
||||||
delete_tag=etiqueta eliminada %[2]s de <a href="%[1]s">%[3]s</a>
|
delete_tag=etiqueta eliminada %[2]s de <a href="%[1]s">%[3]s</a>
|
||||||
delete_branch=rama %[2]s eliminada, de <a href="%[1]s">%[3]s</a>
|
delete_branch=rama %[2]s eliminada, de <a href="%[1]s">%[3]s</a>
|
||||||
compare_branch=Comparar
|
compare_branch=Comparar
|
||||||
compare_commits=Comparar %d commits
|
compare_commits=Comparar %d commits
|
||||||
compare_commits_general=Comparar commits
|
compare_commits_general=Comparar commits
|
||||||
|
mirror_sync_push=sincronizó cambios a <a href="%[2]s">%[3]s</a> en <a href="%[1]s">%[4]s</a> desde réplica
|
||||||
|
mirror_sync_create=sincronizó la nueva referencia <a href="%[2]s">%[3]s</a> a <a href="%[1]s">%[4]s</a> de réplica
|
||||||
mirror_sync_delete=sincronizada y eliminada referencia <code>%[2]s</code> en <a href="%[1]s">%[3]s</a> desde réplica
|
mirror_sync_delete=sincronizada y eliminada referencia <code>%[2]s</code> en <a href="%[1]s">%[3]s</a> desde réplica
|
||||||
|
approve_pull_request=`aprobĂł <a href="%[1]s">%[3]s#%[2]s</a>`
|
||||||
|
reject_pull_request=`sugiriĂł cambios para <a href="%[1]s">%[3]s#%[2]s</a>`
|
||||||
|
publish_release=`se lanzĂł <a href="%[2]s"> "%[4]s" </a> en <a href="%[1]s">%[3]s</a>`
|
||||||
|
review_dismissed=`descartĂł la revisiĂłn de <b>%[4]s</b> para <a href="%[1]s">%[3]s#%[2]s</a>`
|
||||||
review_dismissed_reason=Motivo:
|
review_dismissed_reason=Motivo:
|
||||||
|
create_branch=creĂł rama <a href="%[2]s">%[3]s</a> en <a href="%[1]s">%[4]s</a>
|
||||||
starred_repo=destacĂł <a href="%[1]s">%[2]s</a>
|
starred_repo=destacĂł <a href="%[1]s">%[2]s</a>
|
||||||
watched_repo=comenzĂł a seguir <a href="%[1]s">%[2]s</a>
|
watched_repo=comenzĂł a seguir <a href="%[1]s">%[2]s</a>
|
||||||
|
|
||||||
|
|
|
@ -955,7 +955,6 @@ func NewIssuePost(ctx *context.Context) {
|
||||||
ctx.Data["NewIssueChooseTemplate"] = len(ctx.IssueTemplatesFromDefaultBranch()) > 0
|
ctx.Data["NewIssueChooseTemplate"] = len(ctx.IssueTemplatesFromDefaultBranch()) > 0
|
||||||
ctx.Data["RequireHighlightJS"] = true
|
ctx.Data["RequireHighlightJS"] = true
|
||||||
ctx.Data["RequireSimpleMDE"] = true
|
ctx.Data["RequireSimpleMDE"] = true
|
||||||
ctx.Data["ReadOnly"] = false
|
|
||||||
ctx.Data["PullRequestWorkInProgressPrefixes"] = setting.Repository.PullRequest.WorkInProgressPrefixes
|
ctx.Data["PullRequestWorkInProgressPrefixes"] = setting.Repository.PullRequest.WorkInProgressPrefixes
|
||||||
ctx.Data["IsAttachmentEnabled"] = setting.Attachment.Enabled
|
ctx.Data["IsAttachmentEnabled"] = setting.Attachment.Enabled
|
||||||
upload.AddUploadContext(ctx, "comment")
|
upload.AddUploadContext(ctx, "comment")
|
||||||
|
@ -1630,7 +1629,6 @@ func ViewIssue(ctx *context.Context) {
|
||||||
ctx.Data["Participants"] = participants
|
ctx.Data["Participants"] = participants
|
||||||
ctx.Data["NumParticipants"] = len(participants)
|
ctx.Data["NumParticipants"] = len(participants)
|
||||||
ctx.Data["Issue"] = issue
|
ctx.Data["Issue"] = issue
|
||||||
ctx.Data["ReadOnly"] = false
|
|
||||||
ctx.Data["SignInLink"] = setting.AppSubURL + "/user/login?redirect_to=" + url.QueryEscape(ctx.Data["Link"].(string))
|
ctx.Data["SignInLink"] = setting.AppSubURL + "/user/login?redirect_to=" + url.QueryEscape(ctx.Data["Link"].(string))
|
||||||
ctx.Data["IsIssuePoster"] = ctx.IsSigned && issue.IsPoster(ctx.User.ID)
|
ctx.Data["IsIssuePoster"] = ctx.IsSigned && issue.IsPoster(ctx.User.ID)
|
||||||
ctx.Data["HasIssuesOrPullsWritePermission"] = ctx.Repo.CanWriteIssuesOrPulls(issue.IsPull)
|
ctx.Data["HasIssuesOrPullsWritePermission"] = ctx.Repo.CanWriteIssuesOrPulls(issue.IsPull)
|
||||||
|
|
|
@ -681,13 +681,14 @@ func SignInOAuthCallback(ctx *context.Context) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
u = &user_model.User{
|
u = &user_model.User{
|
||||||
Name: getUserName(&gothUser),
|
Name: getUserName(&gothUser),
|
||||||
FullName: gothUser.Name,
|
FullName: gothUser.Name,
|
||||||
Email: gothUser.Email,
|
Email: gothUser.Email,
|
||||||
IsActive: !setting.OAuth2Client.RegisterEmailConfirm,
|
IsActive: !setting.OAuth2Client.RegisterEmailConfirm,
|
||||||
LoginType: login.OAuth2,
|
LoginType: login.OAuth2,
|
||||||
LoginSource: loginSource.ID,
|
LoginSource: loginSource.ID,
|
||||||
LoginName: gothUser.UserID,
|
LoginName: gothUser.UserID,
|
||||||
|
IsRestricted: setting.Service.DefaultUserIsRestricted,
|
||||||
}
|
}
|
||||||
|
|
||||||
if !createAndHandleCreatedUser(ctx, base.TplName(""), nil, u, &gothUser, setting.OAuth2Client.AccountLinking != setting.OAuth2AccountLinkingDisabled) {
|
if !createAndHandleCreatedUser(ctx, base.TplName(""), nil, u, &gothUser, setting.OAuth2Client.AccountLinking != setting.OAuth2AccountLinkingDisabled) {
|
||||||
|
|
|
@ -232,10 +232,16 @@ func RegisterRoutes(m *web.Route) {
|
||||||
// Routers.
|
// Routers.
|
||||||
// for health check
|
// for health check
|
||||||
m.Get("/", Home)
|
m.Get("/", Home)
|
||||||
m.Get("/.well-known/openid-configuration", user.OIDCWellKnown)
|
m.Group("/.well-known", func() {
|
||||||
if setting.Federation.Enabled {
|
m.Get("/openid-configuration", user.OIDCWellKnown)
|
||||||
m.Get("/.well-known/nodeinfo", NodeInfoLinks)
|
if setting.Federation.Enabled {
|
||||||
}
|
m.Get("/nodeinfo", NodeInfoLinks)
|
||||||
|
}
|
||||||
|
m.Get("/change-password", func(w http.ResponseWriter, req *http.Request) {
|
||||||
|
http.Redirect(w, req, "/user/settings/account", http.StatusTemporaryRedirect)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
m.Group("/explore", func() {
|
m.Group("/explore", func() {
|
||||||
m.Get("", func(ctx *context.Context) {
|
m.Get("", func(ctx *context.Context) {
|
||||||
ctx.Redirect(setting.AppSubURL + "/explore/repos")
|
ctx.Redirect(setting.AppSubURL + "/explore/repos")
|
||||||
|
|
|
@ -11,12 +11,12 @@ import (
|
||||||
"code.gitea.io/gitea/models/login"
|
"code.gitea.io/gitea/models/login"
|
||||||
user_model "code.gitea.io/gitea/models/user"
|
user_model "code.gitea.io/gitea/models/user"
|
||||||
"code.gitea.io/gitea/modules/log"
|
"code.gitea.io/gitea/modules/log"
|
||||||
|
"code.gitea.io/gitea/services/auth/source/oauth2"
|
||||||
|
"code.gitea.io/gitea/services/auth/source/smtp"
|
||||||
|
|
||||||
_ "code.gitea.io/gitea/services/auth/source/db" // register the sources (and below)
|
_ "code.gitea.io/gitea/services/auth/source/db" // register the sources (and below)
|
||||||
_ "code.gitea.io/gitea/services/auth/source/ldap" // register the ldap source
|
_ "code.gitea.io/gitea/services/auth/source/ldap" // register the ldap source
|
||||||
"code.gitea.io/gitea/services/auth/source/oauth2"
|
_ "code.gitea.io/gitea/services/auth/source/pam" // register the pam source
|
||||||
_ "code.gitea.io/gitea/services/auth/source/pam" // register the pam source
|
|
||||||
"code.gitea.io/gitea/services/auth/source/smtp"
|
|
||||||
_ "code.gitea.io/gitea/services/auth/source/sspi" // register the sspi source
|
_ "code.gitea.io/gitea/services/auth/source/sspi" // register the sspi source
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -5,10 +5,10 @@
|
||||||
{{$.CsrfTokenHtml}}
|
{{$.CsrfTokenHtml}}
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
<div class="ui {{if .ReadOnly}}disabled{{end}} floating filter select-branch dropdown" data-no-results="{{.i18n.Tr "repo.pulls.no_results"}}">
|
<div class="ui {{if not .HasIssuesOrPullsWritePermission}}disabled{{end}} floating filter select-branch dropdown" data-no-results="{{.i18n.Tr "repo.pulls.no_results"}}">
|
||||||
<div class="ui basic small button">
|
<div class="ui basic small button">
|
||||||
<span class="text branch-name">{{if .Issue.Ref}}{{$.RefEndName}}{{else}}{{.i18n.Tr "repo.issues.no_ref"}}{{end}}</span>
|
<span class="text branch-name">{{if .Issue.Ref}}{{$.RefEndName}}{{else}}{{.i18n.Tr "repo.issues.no_ref"}}{{end}}</span>
|
||||||
{{svg "octicon-triangle-down" 14 "dropdown icon"}}
|
{{if .HasIssuesOrPullsWritePermission}}{{svg "octicon-triangle-down" 14 "dropdown icon"}}{{end}}
|
||||||
</div>
|
</div>
|
||||||
<div class="menu">
|
<div class="menu">
|
||||||
<div class="ui icon search input">
|
<div class="ui icon search input">
|
||||||
|
|
Loading…
Reference in New Issue