aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--options/locale/locale_fr-FR.ini1
-rw-r--r--options/locale/locale_pt-PT.ini171
-rw-r--r--routers/api/v1/repo/action.go30
-rw-r--r--templates/repo/issue/view_content/conversation.tmpl2
-rw-r--r--tests/integration/api_actions_run_test.go (renamed from tests/integration/api_actions_delete_run_test.go)38
5 files changed, 231 insertions, 11 deletions
diff --git a/options/locale/locale_fr-FR.ini b/options/locale/locale_fr-FR.ini
index 6f0008af67..3ea317f96e 100644
--- a/options/locale/locale_fr-FR.ini
+++ b/options/locale/locale_fr-FR.ini
@@ -1322,6 +1322,7 @@ commit_graph.color=Couleur
commit.contained_in=Cette révision appartient à :
commit.contained_in_default_branch=Cette révision appartient à la branche par défaut
commit.load_referencing_branches_and_tags=Charger les branches et étiquettes référençant cette révision
+commit.merged_in_pr=Cette révision a été fusionnée dans la demande d’ajour %s.
blame=Annotations
download_file=Télécharger le fichier
normal_view=Vue normale
diff --git a/options/locale/locale_pt-PT.ini b/options/locale/locale_pt-PT.ini
index 2b96ed5102..099d4a7816 100644
--- a/options/locale/locale_pt-PT.ini
+++ b/options/locale/locale_pt-PT.ini
@@ -44,6 +44,7 @@ webauthn_use_twofa=Usar um código de dois passos do seu telefone
webauthn_error=Não foi possível ler a sua chave de segurança.
webauthn_unsupported_browser=O seu navegador não oferece suporte ao WebAuthn.
webauthn_error_unknown=Ocorreu um erro desconhecido. Tente novamente, por favor.
+webauthn_error_insecure=WebAuthn apenas suporta conexões seguras. Para testar sobre HTTP, pode usar a origem "localhost" ou "127.0.0.1".
webauthn_error_unable_to_process=O servidor não conseguiu processar o seu pedido.
webauthn_error_duplicated=A chave de segurança não é permitida neste pedido. Certifique-se de que a chave não está já registada.
webauthn_error_empty=Tem de definir um nome para esta chave.
@@ -167,6 +168,7 @@ no_results_found=Não foram encontrados quaisquer resultados.
internal_error_skipped=Ocorreu um erro interno mas foi ignorado: %s
[search]
+search=Pesquisar…
type_tooltip=Tipo de pesquisa
fuzzy=Aproximada
fuzzy_tooltip=Incluir também os resultados que estejam próximos do termo de pesquisa
@@ -176,10 +178,23 @@ regexp=Regexp
regexp_tooltip=Incluir apenas os resultados que correspondam ao termo de pesquisa com expressões regulares
exact=Fiel
exact_tooltip=Incluir somente os resultados que correspondam rigorosamente ao termo de pesquisa
+repo_kind=Pesquisar repositórios…
+user_kind=Pesquisar utilizadores…
+org_kind=Pesquisar organizações…
+team_kind=Pesquisar equipas…
+code_kind=Pesquisar código-fonte…
code_search_unavailable=A pesquisa de código não está disponível, neste momento. Entre em contacto com o administrador.
code_search_by_git_grep=Os resultados da pesquisa no código-fonte neste momento são fornecidos pelo "git grep". Esses resultados podem ser melhores se o administrador habilitar o indexador do repositório.
+package_kind=Pesquisar pacotes…
+project_kind=Pesquisar planeamentos…
+branch_kind=Pesquisar ramos…
+tag_kind=Pesquisar etiquetas…
tag_tooltip=Pesquisar etiquetas correspondentes. Use '%' para corresponder a qualquer sequência de números.
+commit_kind=Pesquisar cometimentos…
+runner_kind=Pesquisar executores…
no_results=Não foram encontrados resultados correspondentes.
+issue_kind=Pesquisar questões…
+pull_kind=Pesquisar puxadas…
keyword_search_unavailable=Pesquisar por palavra-chave não está disponível, neste momento. Entre em contacto com o administrador.
[aria]
@@ -215,6 +230,8 @@ buttons.enable_monospace_font=Habilitar tipo de letra mono-espaçado
buttons.disable_monospace_font=Desabilitar tipo de letra mono-espaçado
[filter]
+string.asc=A–Z
+string.desc=Z–A
[error]
occurred=Ocorreu um erro
@@ -235,6 +252,7 @@ license_desc=Vá buscar <a target="_blank" rel="noopener noreferrer" href="%[1]s
[install]
install=Instalação
+installing_desc=Instalando agora, por favor aguarde…
title=Configuração inicial
docker_helper=Se correr o Gitea dentro do Docker, leia a <a target="_blank" rel="noopener noreferrer" href="%s">documentação</a> antes de alterar quaisquer configurações.
require_db_desc=Gitea requer MySQL, PostgreSQL, MSSQL, SQLite3 ou TiDB (protocolo MySQL).
@@ -251,10 +269,16 @@ path=Localização
sqlite_helper=Localização do ficheiro da base de dados em SQLite3.<br>Insira um caminho absoluto se corre o Gitea como um serviço.
reinstall_error=Está a tentar instalar numa base de dados do Gitea já existente
reinstall_confirm_message=Reinstalar com uma base de dados do Gitea já existente pode causar múltiplos problemas. Na maioria dos casos deve usar o seu "app.ini" existente para correr o Gitea. Se souber o que está a fazer, confirme o seguinte:
+reinstall_confirm_check_1=Os dados encriptados pela chave secreta (SECRET_KEY) no ficheiro app.ini poderão ser perdidos: os utilizadores poderão não ser capazes de iniciar a sessão com autenticação em dois passos (2FA) ou com chaves de utilização única (OTP) e as réplicas poderão deixar de funcionar adequadamente. Ao marcar esta opção estará a confirmar que o ficheiro app.ini vigente contém a SECRET_KEY certa.
+reinstall_confirm_check_2=Os repositórios e as configurações poderão ter de voltar a ser sincronizados. Ao marcar esta opção estará a confirmar que vai voltar a sincronizar manualmente os automatismos para os repositórios e o ficheiro authorized_keys. Estará também a confirmar que vai assegurar que as configurações do repositório e das réplicas estão certas.
reinstall_confirm_check_3=Você confirma que tem a certeza absoluta de que este Gitea está a correr com a localização certa do ficheiro app.ini e que tem a certeza de que tem de voltar a instalar. Você confirma que tomou conhecimento dos riscos acima descritos.
err_empty_db_path=A localização da base de dados SQLite3 não pode estar vazia.
no_admin_and_disable_registration=Não pode desabilitar a auto-inscrição de utilizadores sem criar uma conta de administrador.
err_empty_admin_password=A senha do administrador não pode estar em branco.
+err_empty_admin_email=O endereço de email do administrador não pode estar em branco.
+err_admin_name_is_reserved=O nome de utilizador do administrador é inválido porque está reservado
+err_admin_name_pattern_not_allowed=O nome de utilizador do administrador é inválido porque corresponde a um padrão reservado.
+err_admin_name_is_invalid=O nome de utilizador do administrador é inválido
general_title=Configurações gerais
app_name=Título do sítio
@@ -270,6 +294,7 @@ domain_helper=Domínio ou endereço do servidor.
ssh_port=Porto do servidor SSH
ssh_port_helper=O número do porto que o seu servidor SSH usa. Deixe em branco para desabilitar.
http_port=Porto de escuta HTTP do Gitea
+http_port_helper=O número do porto onde o servidor web do Gitea estará à escuta.
app_url=URL base do Gitea
app_url_helper=Endereço base para os URLs e notificações por email das clonagens por HTTP(S).
log_root_path=Localização dos registos
@@ -405,6 +430,8 @@ allow_password_change=Exigir que o utilizador mude a senha (recomendado)
reset_password_mail_sent_prompt=Foi enviado um email de confirmação para <b>%s</b>. Verifique a sua caixa de entrada dentro de %s para completar o processo de recuperação.
active_your_account=Ponha a sua conta em funcionamento
account_activated=A conta foi posta em funcionamento
+prohibit_login=Início de sessão proibido
+prohibit_login_desc=A sua conta está proibida de iniciar sessão. Contacte o administrador.
resent_limit_prompt=Já fez um pedido recentemente para enviar um email para pôr a conta em funcionamento. Espere 3 minutos e tente novamente.
has_unconfirmed_mail=Olá %s, tem um endereço de email não confirmado (<b>%s</b>). Se não recebeu um email de confirmação ou precisa de o voltar a enviar, clique no botão abaixo.
change_unconfirmed_mail_address=Se o seu endereço de email estiver errado, pode mudá-lo aqui e enviar um novo email de confirmação.
@@ -425,6 +452,7 @@ use_scratch_code=Usar um código de recuperação
twofa_scratch_used=Você usou o seu código de recuperação. Foi reencaminhado para a página de configurações da autenticação em dois passos para poder remover o registo do seu dispositivo ou gerar um novo código de recuperação.
twofa_passcode_incorrect=A senha está errada. Se perdeu o seu dispositivo, use o código de recuperação para iniciar a sessão.
twofa_scratch_token_incorrect=O código de recuperação está errado.
+twofa_required=Tem de configurar a autenticação em dois passos para obter acesso aos repositórios ou então tentar iniciar a sessão novamente.
login_userpass=Iniciar sessão
login_openid=OpenID
oauth_signup_tab=Fazer inscrição
@@ -443,13 +471,17 @@ openid_connect_desc=O URI do OpenID escolhido é desconhecido. Associe-o a uma n
openid_register_title=Criar uma conta nova
openid_register_desc=O URI do OpenID escolhido é desconhecido. Associe-o a uma nova conta aqui.
openid_signin_desc=Insira o seu URI OpenID. Por exemplo: alice.openid.exemplo.org or https://openid.exemplo.org/alice.
+disable_forgot_password_mail=A recuperação de conta está desabilitada porque não foi definido um endereço de email. Entre em contacto com o administrador do sítio.
+disable_forgot_password_mail_admin=A recuperação de conta só está disponível quando está configurado um endereço de email.
email_domain_blacklisted=Não pode fazer um registo com o seu endereço de email.
authorize_application=Autorizar aplicação
authorize_redirect_notice=Irá ser reencaminhado para %s se autorizar esta aplicação.
authorize_application_created_by=Esta aplicação foi criada por %s.
+authorize_application_description=Se conceder o acesso, a aplicação terá privilégios para aceder e alterar toda a informação da sua conta, incluindo organizações e repositórios privados.
authorize_application_with_scopes=Com âmbitos: %s
authorize_title=Autorizar o acesso de "%s" à sua conta?
authorization_failed=A autorização falhou
+authorization_failed_desc=A autorização falhou porque encontrámos um pedido inválido. Entre em contacto com o responsável pela aplicação que tentou autorizar.
sspi_auth_failed=Falhou a autenticação SSPI
password_pwned=A senha que escolheu está numa <a target="_blank" rel="noopener noreferrer" href="%s">lista de senhas roubadas</a> anteriormente expostas em fugas de dados públicas. Tente novamente com uma senha diferente e considere também mudar esta senha nos outros sítios.
password_pwned_err=Não foi possível completar o pedido ao HaveIBeenPwned
@@ -513,6 +545,7 @@ release.download.targz=Código fonte (TAR.GZ)
repo.transfer.subject_to=%s gostaria de transferir "%s" para %s
repo.transfer.subject_to_you=%s gostaria de transferir "%s" para si
repo.transfer.to_you=você
+repo.transfer.body=Para o aceitar ou rejeitar, visite %s ou ignore-o, simplesmente.
repo.collaborator.added.subject=%s adicionou você a %s
repo.collaborator.added.text=Foi adicionado(a) como colaborador(a) do repositório:
@@ -564,6 +597,7 @@ url_error=`"%s" não é um URL válido.`
include_error=` tem que conter o texto "%s".`
glob_pattern_error=` o padrão glob é inválido: %s.`
regex_pattern_error=` o padrão regex é inválido: %s.`
+username_error=` só pode conter caracteres alfanuméricos ('0-9','a-z','A-Z'), hífen ('-'), sublinhado ('_') e ponto ('.') Não pode começar nem terminar com caracteres não alfanuméricos e caracteres não alfanuméricos consecutivos também são proibidos.`
invalid_group_team_map_error=` o mapeamento é inválido: %s`
unknown_error=Erro desconhecido:
captcha_incorrect=O código CAPTCHA está errado.
@@ -578,14 +612,17 @@ username_has_not_been_changed=O nome de utilizador não foi modificado
repo_name_been_taken=O nome do repositório já foi usado.
repository_force_private=Forçar Privado está habilitado: repositórios privados não podem ser tornados públicos.
repository_files_already_exist=Já existem ficheiros neste repositório. Contacte o administrador do sistema.
+repository_files_already_exist.adopt=Já existem ficheiros neste repositório e só podem ser adoptados.
repository_files_already_exist.delete=Já existem ficheiros neste repositório. Tem que os eliminar.
repository_files_already_exist.adopt_or_delete=Já existem ficheiros neste repositório. Adopte-os ou elimine-os.
visit_rate_limit=Limitação da taxa de visita remota.
+2fa_auth_required=A visita remota requer autenticação em dois passos.
org_name_been_taken=O nome da organização já foi tomado.
team_name_been_taken=O nome da equipa já foi tomado.
team_no_units_error=Permitir acesso a pelo menos uma secção do repositório.
email_been_used=O endereço de email já está em uso.
email_invalid=O endereço de email é inválido.
+email_domain_is_not_allowed=O domínio do endereço de email do utilizador <b>%s</b> entra en conflito com o EMAIL_DOMAIN_ALLOWLIST ou com o EMAIL_DOMAIN_BLOCKLIST. Verifique se a operação estava prevista.
openid_been_used=O endereço OpenID "%s" já está em uso.
username_password_incorrect=O nome de utilizador ou a senha estão errados.
password_complexity=A senha não passa nos requisitos de complexidade:
@@ -610,8 +647,14 @@ invalid_ssh_key=Não é possível validar a sua chave SSH: %s
invalid_gpg_key=Não é possível validar a sua chave GPG: %s
invalid_ssh_principal=Protagonista inválido: %s
must_use_public_key=A chave que você forneceu é privada. Não carregue a sua chave em lugar nenhum, em vez disso use a sua chave pública.
+unable_verify_ssh_key=Não é possível validar a chave SSH. Verifique se tem erros.
auth_failed=Falhou a autenticação: %v
+still_own_repo=A sua conta possui um ou mais repositórios. Elimine-os ou transfira-os primeiro.
+still_has_org=A sua conta é membro de uma ou mais organizações. Saia delas primeiro.
+still_own_packages=A sua conta possui um ou mais pacotes. Elimine-os primeiro.
+org_still_own_repo=Esta organização ainda possui um ou mais repositórios. Elimine-os ou transfira-os primeiro.
+org_still_own_packages=Esta organização ainda possui um ou mais pacotes. Elimine-os primeiro.
target_branch_not_exist=O ramo de destino não existe.
target_ref_not_exist=A referência de destino não existe %s
@@ -642,6 +685,7 @@ settings=Configurações do utilizador
form.name_reserved=O nome de utilizador "%s" está reservado.
form.name_pattern_not_allowed=O padrão "%s" não é permitido no nome de utilizador.
+form.name_chars_not_allowed=O nome de utilizador "%s" contém caracteres inválidos.
block.block=Bloquear
block.block.user=Bloquear utilizador
@@ -658,6 +702,7 @@ block.info_3=enviar-lhe notificações ao @mencionar o seu nome de utilizador
block.info_4=convidá-lo/a para ser colaborador/a nos repositórios dele/dela
block.info_5=juntar aos favoritos, derivar ou vigiar repositórios
block.info_6=abrir e comentar questões ou pedidos de integração
+block.info_7=reagir aos seus comentários em questões ou pedidos de integração
block.user_to_block=Utilizador a bloquear
block.note=Nota
block.note.title=Nota opcional:
@@ -708,6 +753,7 @@ cancel=Cancelar
language=Idioma
ui=Tema
hidden_comment_types=Tipos de comentários ocultos
+hidden_comment_types_description=Os tipos de comentário marcados aqui não serão mostrados nas páginas das questões. Marcar "Rótulo", por exemplo, remove todos os comentários "{utilizador} adicionou/removeu {rótulo}".
hidden_comment_types.ref_tooltip=Comentários onde esta questão foi referenciada a partir de outra questão/cometimento/…
hidden_comment_types.issue_ref_tooltip=Comentários onde o utilizador altera o ramo/etiqueta associado à questão
comment_type_group_reference=Referência
@@ -755,12 +801,15 @@ manage_themes=Escolher o tema padrão
manage_openid=Gerir endereços OpenID
email_desc=O seu endereço de email principal irá ser usado para notificações, recuperação de senha e, desde que não esteja oculto, operações Git baseados na web.
theme_desc=Este será o seu tema padrão em todo o sítio.
+theme_colorblindness_help=Suporte a temas para daltónicos
+theme_colorblindness_prompt=O Gitea apenas tem alguns temas com suporte básico para daltónicos que têm apenas algumas cores definidas. O trabalho ainda está em andamento. Poderiam ser feitos mais melhoramentos se fossem definidas mais cores nos ficheiros CSS do tema.
primary=Principal
activated=Em uso
requires_activation=Tem que ser habilitado
primary_email=Tornar no principal
activate_email=Enviar pedido de verificação
activations_pending=Habilitações pendentes
+can_not_add_email_activations_pending=Existe uma validação pendente. Tente de novo dentro de alguns minutos, se quiser adicionar um novo endereço de email.
delete_email=Remover
email_deletion=Remover endereço de email
email_deletion_desc=Este endereço de email e informações relacionadas serão removidos da sua conta. Os cometimentos feitos no Git com este endereço de email permanecerão inalterados. Quer continuar?
@@ -806,6 +855,7 @@ gpg_key_matched_identities_long=As identidades incorporadas nesta chave correspo
gpg_key_verified=Chave validada
gpg_key_verified_long=A chave foi validada com um código e pode ser usada para validar cometimentos que correspondam a qualquer dos endereços de email em uso por parte deste utilizador, para além das identidades correspondentes a esta chave.
gpg_key_verify=Validar
+gpg_invalid_token_signature=A chave GPG, assinatura ou código fornecidos não correspondem, ou então o código expirou.
gpg_token_required=Tem que fornecer uma assinatura para o código abaixo
gpg_token=Código
gpg_token_help=Pode gerar uma assinatura usando o seguinte comando:
@@ -815,6 +865,7 @@ verify_gpg_key_success=A chave GPG "%s" foi validada.
ssh_key_verified=Chave validada
ssh_key_verified_long=A chave foi validada com um código e pode ser usada para validar cometimentos que correspondam a qualquer dos endereços de email em uso por parte deste utilizador.
ssh_key_verify=Validar
+ssh_invalid_token_signature=A chave SSH, assinatura ou código fornecidos não correspondem, ou então o código expirou.
ssh_token_required=Tem que fornecer uma assinatura para o código abaixo
ssh_token=Código
ssh_token_help=Pode gerar uma assinatura usando o seguinte comando:
@@ -835,6 +886,7 @@ gpg_key_deletion=Remover chave GPG
ssh_principal_deletion=Remover Protagonista de Certificado SSH
ssh_key_deletion_desc=Remover uma chave SSH revoga o acesso dessa chave à sua conta. Quer continuar?
gpg_key_deletion_desc=Remover uma chave GPG retira as validações feitas sobre os cometimentos assinados com ela. Quer continuar?
+ssh_principal_deletion_desc=Remover um Protagonista de Certificado SSH revoga o acesso dele à sua conta. Quer continuar?
ssh_key_deletion_success=A chave SSH foi removida.
gpg_key_deletion_success=A chave GPG foi removida.
ssh_principal_deletion_success=O protagonista foi removido.
@@ -896,6 +948,7 @@ create_oauth2_application_button=Criar aplicação
create_oauth2_application_success=Criou com sucesso uma nova aplicação OAuth2.
update_oauth2_application_success=Modificou com sucesso a aplicação OAuth2.
oauth2_application_name=Nome da aplicação
+oauth2_confidential_client=Cliente confidencial. Escolha esta opção para aplicações que mantêm o segredo confidencial, tais como aplicações web. Não escolha esta opção para aplicações nativas, incluindo aplicações para computador e aplicações móveis.
oauth2_skip_secondary_authorization=Saltar a autorização para clientes públicos depois de lhes ceder acesso uma vez. <strong>Pode representar um risco de segurança.</strong>
oauth2_redirect_uris=URIs de reencaminhamento. Use uma linha por URI.
save_application=Guardar
@@ -910,8 +963,10 @@ oauth2_application_remove_description=A remoção de uma aplicação OAuth2 impe
oauth2_application_locked=O Gitea pré-regista algumas aplicações OAuth2 no arranque, se forem habilitadas na configuração. Para evitar comportamentos inesperados, estas não podem ser editadas nem removidas. Consulte a documentação sobre o OAuth2 para obter mais informações.
authorized_oauth2_applications=Aplicações OAuth2 autorizadas
+authorized_oauth2_applications_description=Concedeu acesso à sua conta pessoal do Gitea a estas aplicações de terceiros. Revogue o acesso às aplicações que já não precisa.
revoke_key=Revogar
revoke_oauth2_grant=Revogar acesso
+revoke_oauth2_grant_description=Revogar o acesso desta aplicação de terceiros impedi-la-á de aceder aos seus dados. Tem a certeza?
revoke_oauth2_grant_success=Acesso revogado com sucesso.
twofa_desc=Para proteger a sua conta contra o roubo de senhas, pode usar um telemóvel ou outro dispositivo para recerber um código de utilização única baseado no tempo ("TOTP").
@@ -921,6 +976,7 @@ twofa_not_enrolled=A autenticação em dois passos não está neste momento habi
twofa_disable=Desabilitar autenticação em dois passos
twofa_scratch_token_regenerate=Voltar a gerar o código de recuperação de utilização única
twofa_scratch_token_regenerated=O seu código de recuperação de utilização única agora é %s. Guarde-o num lugar seguro, uma vez que nunca mais vai ser mostrado.
+twofa_enroll=Habilitar autenticação em dois passos
twofa_disable_note=Pode desabilitar a autenticação em dois passos, se for necessário.
twofa_disable_desc=Desabilitar a autenticação em dois passos tornará a sua conta menos segura. Quer continuar?
regenerate_scratch_token_desc=Se perdeu o seu código de recuperação ou já o usou para iniciar uma sessão, pode restaurá-lo aqui.
@@ -936,6 +992,7 @@ webauthn_desc=Chaves de segurança são dispositivos de hardware contendo chaves
webauthn_register_key=Adicionar chave de segurança
webauthn_nickname=Apelido
webauthn_delete_key=Remover chave de segurança
+webauthn_delete_key_desc=Se remover uma chave de segurança, deixará de poder usá-la para iniciar a sessão. Quer continuar?
webauthn_key_loss_warning=Se perder as suas chaves de segurança, perderá acesso à sua conta.
webauthn_alternative_tip=Poderá querer configurar um método de autenticação adicional.
@@ -1052,6 +1109,7 @@ mirror_address_protocol_invalid=O URL fornecido é inválido. Só se pode replic
mirror_lfs=Armazenamento de Ficheiros Grandes (LFS)
mirror_lfs_desc=Habilitar a réplica de dados LFS.
mirror_lfs_endpoint=Destino LFS
+mirror_lfs_endpoint_desc=A sincronização irá tentar usar o URL de clonagem para <a target="_blank" rel="noopener noreferrer" href="%s">determinar o servidor LFS</a>. Também pode especificar um destino personalizado se os dados do repositório LFS forem armazenados noutro lugar.
mirror_last_synced=Última sincronização
mirror_password_placeholder=(inalterada)
mirror_password_blank_placeholder=(não definida)
@@ -1064,6 +1122,7 @@ stars=Favoritos
reactions_more=e mais %d
unit_disabled=O administrador desabilitou esta secção do repositório.
language_other=Outros
+adopt_search=Insira o nome de utilizador para procurar repositórios adoptados… (deixe em branco para encontrar todos)
adopt_preexisting_label=Adoptar ficheiros
adopt_preexisting=Adoptar ficheiros pré-existentes
adopt_preexisting_content=Criar repositório a partir de %s
@@ -1105,6 +1164,8 @@ template.issue_labels=Rótulos das questões
template.one_item=Tem que escolher pelo menos um item do modelo
template.invalid=Tem que escolher um repositório modelo
+archive.title=Este repositório está arquivado. Pode ver os seus ficheiros e cloná-lo. Não pode lançar questões nem fazer pedidos de integração nem fazer envios.
+archive.title_date=Este repositório foi arquivado em %s. Pode ver os ficheiros e cloná-lo. Não pode abrir questões nem fazer pedidos de integração nem enviar cometimentos.
archive.issue.nocomment=Este repositório está arquivado. Não pode comentar nas questões.
archive.pull.nocomment=Este repositório está arquivado. Não pode comentar nos pedidos de integração.
@@ -1121,6 +1182,7 @@ migrate_options_lfs=Migrar ficheiros LFS
migrate_options_lfs_endpoint.label=Destino LFS
migrate_options_lfs_endpoint.description=A migração irá tentar usar o seu controlo remoto do Git para <a target="_blank" rel="noopener noreferrer" href="%s">determinar o servidor LFS</a>. Também pode especificar um destino personalizado se os dados do repositório LFS forem armazenados noutro lugar.
migrate_options_lfs_endpoint.description.local=Uma localização de servidor local também é suportada.
+migrate_options_lfs_endpoint.placeholder=Se for deixado em branco, o destino será determinado a partir do URL do clone.
migrate_items=Itens da migração
migrate_items_wiki=Wiki
migrate_items_milestones=Etapas
@@ -1132,8 +1194,10 @@ migrate_items_releases=Lançamentos
migrate_repo=Migrar o repositório
migrate.clone_address=Migrar / clonar a partir do URL
migrate.clone_address_desc=O URL de clonagem HTTP(S) ou Git de um repositório existente
+migrate.github_token_desc=Pode colocar aqui um ou mais códigos, separados por vírgulas, para tornar mais rápida a migração, para compensar a limitação de velocidade da API do GitHub. AVISO: O abuso desta funcionalidade poderá violar a política do seu fornecedor de serviço e levar ao bloqueio da(s) sua(a) conta(s).
migrate.clone_local_path=ou uma localização no servidor local
migrate.permission_denied=Não está autorizado a importar repositórios locais.
+migrate.permission_denied_blocked=Não pode importar de servidores não permitidos. Peça ao administrador para verificar as configurações ALLOWED_DOMAINS/ALLOW_LOCALNETWORKS/BLOCKED_DOMAINS.
migrate.invalid_local_path=A localização local é inválida. Não existe ou não é uma pasta.
migrate.invalid_lfs_endpoint=O destino LFS não é válido.
migrate.failed=A migração falhou: %v
@@ -1141,6 +1205,7 @@ migrate.migrate_items_options=É necessário um código de acesso para migrar it
migrated_from=Migrado de <a href="%[1]s">%[2]s</a>
migrated_from_fake=Migrado de %[1]s
migrate.migrate=Migrar de %s
+migrate.migrating=Migrando a partir de <b>%s</b>…
migrate.migrating_failed=A migração de <b>%s</b> falhou.
migrate.migrating_failed.error=Falhou a migração: %s
migrate.migrating_failed_no_addr=A migração falhou.
@@ -1189,6 +1254,7 @@ clone_this_repo=Clonar este repositório
cite_this_repo=Citar este repositório
create_new_repo_command=Criando um novo repositório na linha de comandos
push_exist_repo=Enviando, pela linha de comandos, um repositório existente
+empty_message=Este repositório não tem qualquer conteúdo.
broken_message=Os dados Git subjacentes a este repositório não podem ser lidos. Contacte o administrador desta instância ou elimine este repositório.
no_branch=Este repositório não tem quaisquer ramos.
@@ -1207,6 +1273,7 @@ projects=Planeamentos
packages=Pacotes
actions=Operações
labels=Rótulos
+org_labels_desc=Rótulos ao nível da organização que podem ser usados em <strong>todos os repositórios</strong> desta organização
org_labels_desc_manage=gerir
milestone=Etapa
@@ -1255,6 +1322,7 @@ commit_graph.color=Colorido
commit.contained_in=Este cometimento está contido em:
commit.contained_in_default_branch=Este cometimento é parte do ramo principal
commit.load_referencing_branches_and_tags=Carregar ramos e etiquetas que referenciem este cometimento
+commit.merged_in_pr=Este cometimento foi integrado dentro do pedido de integração %s.
blame=Responsabilidade
download_file=Descarregar ficheiro
normal_view=Vista normal
@@ -1303,13 +1371,17 @@ editor.new_branch_name_desc=Nome do novo ramo…
editor.cancel=Cancelar
editor.filename_cannot_be_empty=O nome do ficheiro não pode estar em branco.
editor.filename_is_invalid=O nome do ficheiro é inválido: "%s".
+editor.commit_email=Endereço de email do cometimento
+editor.invalid_commit_email=O endereço de email do comentimento é inválido.
editor.branch_does_not_exist=O ramo "%s" não existe neste repositório.
editor.branch_already_exists=O ramo "%s" já existe neste repositório.
editor.directory_is_a_file=O nome da pasta "%s" já é usado como um nome de ficheiro neste repositório.
+editor.file_is_a_symlink=`"%s" é uma ligação simbólica. Ligações simbólicas não podem ser editadas no editor web.`
editor.filename_is_a_directory=O nome de ficheiro "%s" já está a ser usado como um nome de pasta neste repositório.
editor.file_modifying_no_longer_exists=O ficheiro que está a ser modificado, "%s", já não existe neste repositório.
editor.file_changed_while_editing=O conteúdo do ficheiro mudou desde que começou a editar. <a target="_blank" rel="noopener noreferrer" href="%s">Clique aqui</a> para ver as modificações ou clique em <strong>Cometer novamente</strong> para escrever por cima.
editor.file_already_exists=Já existe um ficheiro com o nome "%s" neste repositório.
+editor.commit_id_not_matching=O ID do cometimento não corresponde ao ID de quando começou a editar. Faça o cometimento para um ramo de remendo (patch) e depois faça a integração.
editor.push_out_of_date=O envio parece estar obsoleto.
editor.commit_empty_file_header=Cometer um ficheiro vazio
editor.commit_empty_file_text=O ficheiro que está prestes a cometer está vazio. Quer continuar?
@@ -1335,6 +1407,7 @@ editor.fork_create_description=Não pode editar este repositório. Ao invés dis
editor.fork_edit_description=Não pode editar este repositório. As modificações irão ser escritas na sua derivação <b>%s</b>, para que possa criar um pedido de integração.
editor.fork_not_editable=Fez uma derivação deste repositório, mas a sua derivação não é editável.
editor.fork_failed_to_push_branch=Falhou ao enviar o ramo %s para o seu repositório.
+editor.fork_branch_exists=O ramo "%s" já existe na sua derivação. Escolha outro nome para o ramo.
commits.desc=Navegar pelo histórico de modificações no código fonte.
commits.commits=Cometimentos
@@ -1436,6 +1509,7 @@ issues.new.clear_assignees=Retirar todos os encarregados
issues.new.no_assignees=Sem encarregados
issues.new.no_reviewers=Sem revisores
issues.new.blocked_user=Não pode criar a questão porque foi bloqueado/a pelo/a proprietário/a do repositório.
+issues.edit.already_changed=Não foi possível guardar as modificações da questão. O conteúdo parece ter sido modificado por outro utilizador, entretanto. Refresque a página e tente editar de novo para evitar sobrepor as modificações dele.
issues.edit.blocked_user=Não pode editar o conteúdo porque foi bloqueado/a pelo/a remetente ou pelo/a proprietário/a do repositório.
issues.choose.get_started=Começar
issues.choose.open_external_link=Abrir
@@ -1507,6 +1581,7 @@ issues.filter_type.reviewed_by_you=Revistos por si
issues.filter_sort=Ordem
issues.filter_sort.latest=Mais recentes
issues.filter_sort.oldest=Mais antigas
+issues.filter_sort.recentupdate=Modificadas recentemente
issues.filter_sort.leastupdate=Modificadas há muito tempo
issues.filter_sort.mostcomment=Mais comentadas
issues.filter_sort.leastcomment=Menos comentadas
@@ -1706,7 +1781,9 @@ issues.dependency.pr_closing_blockedby=O encerramento deste pedido de integraç
issues.dependency.issue_closing_blockedby=O encerramento desta questão está bloqueado pelas seguintes questões
issues.dependency.issue_close_blocks=Esta questão bloqueia o encerramento das seguintes questões
issues.dependency.pr_close_blocks=Este pedido de integração bloqueia o encerramento das seguintes questões
+issues.dependency.issue_close_blocked=Tem que encerrar todas as questões que bloqueiam esta questão antes de a poder encerrar.
issues.dependency.issue_batch_close_blocked=Não é possível fechar em lote as questões que escolheu porque a questão #%d ainda tem dependências em aberto
+issues.dependency.pr_close_blocked=Tem que encerrar todas as questões que bloqueiam este pedido de integração antes de poder proceder à integração.
issues.dependency.blocks_short=Bloqueia
issues.dependency.blocked_by_short=Depende de
issues.dependency.remove_header=Remover dependência
@@ -1717,11 +1794,13 @@ issues.dependency.add_error_same_issue=Não pode fazer uma questão depender de
issues.dependency.add_error_dep_issue_not_exist=A questão dependente não existe.
issues.dependency.add_error_dep_not_exist=A dependência não existe.
issues.dependency.add_error_dep_exists=A dependência já existe.
+issues.dependency.add_error_cannot_create_circular=Não pode criar uma dependência com duas questões em que cada uma bloqueia a outra.
issues.dependency.add_error_dep_not_same_repo=Ambas as questões têm que estar no mesmo repositório.
issues.review.self.approval=Não pode aprovar o seu próprio pedido de integração.
issues.review.self.rejection=Não pode solicitar modificações sobre o seu próprio pedido de integração.
issues.review.approve=aprovou estas modificações %s
issues.review.comment=reviu %s
+issues.review.dismissed=descartou a revisão de %s %s
issues.review.dismissed_label=Descartada
issues.review.left_comment=deixou um comentário
issues.review.content.empty=Tem que deixar um comentário indicando a(s) modificação(ões) solicitada(s).
@@ -1729,6 +1808,7 @@ issues.review.reject=modificações solicitadas %s
issues.review.wait=foi solicitada para revisão %s
issues.review.add_review_request=solicitou revisão de %s %s
issues.review.remove_review_request=removeu a solicitação de revisão para %s %s
+issues.review.remove_review_request_self=recusou rever %s
issues.review.pending=Pendente
issues.review.pending.tooltip=Este comentário não está visível para os outros utilizadores, neste momento. Para submeter os seus comentários pendentes, escolha "%s" → "%s/%s/%s" no topo da página.
issues.review.review=Revisão
@@ -1750,6 +1830,7 @@ issues.review.requested=Revisão pendente
issues.review.rejected=Modificações solicitadas
issues.review.stale=Modificada depois da aprovação
issues.review.unofficial=Aprovação não oficial
+issues.assignee.error=Nem todos os encarregados foram adicionados, devido a um erro inesperado.
issues.reference_issue.body=Conteúdo
issues.content_history.deleted=eliminado
issues.content_history.edited=editado
@@ -1766,6 +1847,7 @@ pulls.desc=Habilitar pedidos de integração e revisão de código-fonte.
pulls.new=Novo pedido de integração
pulls.new.blocked_user=Não pode criar o pedido de integração porque foi bloqueado/a pelo/a proprietário/a do repositório.
pulls.new.must_collaborator=Tem de ser um/a colaborador/a para criar um pedido de integração.
+pulls.edit.already_changed=Não foi possível guardar as modificações do pedido de integração. O conteúdo parece ter sido modificado por outro utilizador, entretanto. Refresque a página e tente editar de novo para evitar sobrepor as modificações dele.
pulls.view=Ver pedido de integração
pulls.compare_changes=Novo pedido de integração
pulls.allow_edits_from_maintainers=Permitir edições por parte dos responsáveis
@@ -1786,6 +1868,7 @@ pulls.show_all_commits=Mostrar todos os cometimentos
pulls.show_changes_since_your_last_review=Mostrar modificações desde a sua última revisão
pulls.showing_only_single_commit=Mostrando apenas as modificações do comentimento %[1]s
pulls.showing_specified_commit_range=Mostrando apenas as modificações entre %[1]s..%[2]s
+pulls.select_commit_hold_shift_for_range=Escolha o comentimento. Para escolher um intervalo, mantenha premido o shift enquanto clica.
pulls.review_only_possible_for_full_diff=A revisão só é possível ao visualizar o diff completo
pulls.filter_changes_by_commit=Filtrar por cometimento
pulls.nothing_to_compare=Estes ramos são iguais. Não há necessidade de criar um pedido de integração.
@@ -1814,6 +1897,7 @@ pulls.add_prefix=Adicione o prefixo <strong>%s</strong>
pulls.remove_prefix=Remover o prefixo <strong>%s</strong>
pulls.data_broken=Este pedido de integração está danificado devido à falta de informação da derivação.
pulls.files_conflicted=Este pedido de integração contém modificações que entram em conflito com o ramo de destino.
+pulls.is_checking=Verificando se existem conflitos na integração…
pulls.is_ancestor=Este ramo já está incluído no ramo de destino. Não há nada a integrar.
pulls.is_empty=As modificações feitas neste ramo já existem no ramo de destino. Este cometimento ficará vazio.
pulls.required_status_check_failed=Algumas das verificações obrigatórias não foram bem sucedidas.
@@ -1837,12 +1921,16 @@ pulls.reject_count_1=%d pedido de modificação
pulls.reject_count_n=%d pedidos de modificação
pulls.waiting_count_1=%d revisão pendente
pulls.waiting_count_n=%d revisões pendentes
+pulls.wrong_commit_id=ID do cometimento tem que ser um ID de cometimento no ramo de destino
pulls.no_merge_desc=A integração constante neste pedido não pode ser executada porque todas as opções de integração do repositório estão desabilitadas.
pulls.no_merge_helper=Habilite as opções de integração nas configurações do repositório ou faça a integração manualmente.
pulls.no_merge_wip=A integração constante neste pedido não pode ser executada porque está marcada como sendo trabalho em andamento.
+pulls.no_merge_not_ready=A integração constante neste pedido não pode ser executada. Verifique o estado da revisão e as verificações de estado.
pulls.no_merge_access=Não tem autorização para executar a integração constante neste pedido.
pulls.merge_pull_request=Criar um cometimento de integração
+pulls.rebase_merge_pull_request=Mudar a base e avançar rapidamente
+pulls.rebase_merge_commit_pull_request=Mudar a base e criar um cometimento de integração
pulls.squash_merge_pull_request=Criar cometimento de compactação
pulls.fast_forward_only_merge_pull_request=Avançar rapidamente apenas
pulls.merge_manually=Integrar manualmente
@@ -1850,10 +1938,17 @@ pulls.merge_commit_id=O ID de cometimento da integração
pulls.require_signed_wont_sign=O ramo requer que os cometimentos sejam assinados mas esta integração não vai ser assinada
pulls.invalid_merge_option=Não pode usar esta opção de integração neste pedido de integração.
+pulls.merge_conflict=A integração falhou: Houve um conflito durante a integração. Dica: Tente uma estratégia diferente.
pulls.merge_conflict_summary=Mensagem de erro
+pulls.rebase_conflict=A integração falhou: Houve um conflito durante a mudança de base do cometimento %[1]s. Dica: Tente uma estratégia diferente.
pulls.rebase_conflict_summary=Mensagem de erro
+pulls.unrelated_histories=A integração falhou: O topo da integração e a base não partilham um histórico comum. Dica: Tente uma estratégia diferente.
+pulls.merge_out_of_date=Falhou a integração: Enquanto gerava a integração, a base foi modificada. Dica: Tente de novo.
+pulls.head_out_of_date=Falhou a integração: Enquanto gerava a integração, o topo foi modificado. Dica: Tente de novo.
+pulls.has_merged=Falhou: A integração constante do pedido foi executada. Não pode integrar novamente nem modificar o ramo alvo.
pulls.push_rejected=O envio falhou: O envio foi rejeitado. Reveja os Automatismos do Git neste repositório.
pulls.push_rejected_summary=Mensagem completa de rejeição
+pulls.push_rejected_no_message=O envio falhou: O envio foi rejeitado mas não houve qualquer mensagem remota. Reveja os Automatismos do Git para este repositório.
pulls.open_unmerged_pull_exists=`Não pode executar uma operação de reabertura porque há um pedido de integração pendente (#%d) com propriedades idênticas.`
pulls.status_checking=Algumas verificações estão pendentes
pulls.status_checks_success=Todas as verificações foram bem sucedidas
@@ -1879,6 +1974,7 @@ pulls.cmd_instruction_merge_title=Integrar
pulls.cmd_instruction_merge_desc=Integrar as modificações e enviar para o Gitea.
pulls.cmd_instruction_merge_warning=Aviso: Esta operação não pode executar pedidos de integração porque a opção "auto-identificar integração manual" não está habilitada.
pulls.clear_merge_message=Apagar mensagem de integração
+pulls.clear_merge_message_hint=Apagar a mensagem de integração apenas remove o conteúdo da mensagem de cometimento e mantém os rodapés gerados pelo git, tais como "Co-Autorado-Por…".
pulls.auto_merge_button_when_succeed=(quando as verificações forem bem-sucedidas)
pulls.auto_merge_when_succeed=Integrar automaticamente quando todas as verificações forem bem-sucedidas
@@ -1944,6 +2040,7 @@ signing.wont_sign.nokey=Não existe qualquer chave disponível para assinar este
signing.wont_sign.never=Os cometimentos nunca são assinados.
signing.wont_sign.always=Os cometimentos são sempre assinados.
signing.wont_sign.pubkey=O cometimento não será assinado porque não tem uma chave pública associada à sua conta.
+signing.wont_sign.twofa=Tem que ter a autenticação em dois passos habilitada para ter cometimentos assinados.
signing.wont_sign.parentsigned=O cometimento não pode ser assinado, uma vez que o anterior também não está.
signing.wont_sign.basesigned=A integração não irá ser assinada, uma vez que o cometimento base não foi assinado.
signing.wont_sign.headsigned=A integração não irá ser assinada, uma vez que o cometimento de topo não foi assinado.
@@ -2057,11 +2154,13 @@ contributors.contribution_type.additions=Adições
contributors.contribution_type.deletions=Eliminações
settings=Configurações
+settings.desc=Configurações é onde pode gerir as configurações do repositório.
settings.options=Repositório
settings.public_access=Acesso público
settings.public_access_desc=Configurar as permissões de acesso público do visitante para substituir os valores predefinidos deste repositório.
settings.public_access.docs.not_set=Não definido: nenhuma permissão extra de acesso público. As permissões do visitante seguem a visibilidade e as permissões de membro do repositório.
settings.public_access.docs.anonymous_read=Leitura anónima: utilizadores sem sessão iniciada podem consultar a unidade.
+settings.public_access.docs.everyone_read=Leitura pública: todos os utilizadores com sessão iniciada podem aceder à unidade com permissão de leitura. Permissão de leitura das unidades de questões / pedidos de integração também significa que os utilizadores podem criar novas questões / pedidos de integração.
settings.public_access.docs.everyone_write=Escrita pública: Todos os utilizadores com sessão iniciada têm permissão de escrita na unidade. Apenas a unidade Wiki suporta esta permissão.
settings.collaboration=Colaboradores
settings.collaboration.admin=Administrador
@@ -2079,6 +2178,7 @@ settings.mirror_settings.docs.disabled_pull_mirror.instructions=Configure o seu
settings.mirror_settings.docs.disabled_push_mirror.instructions=Configure os seu planeamento para puxar, automaticamente, cometimentos, etiquetas e ramos a partir de outro repositório.
settings.mirror_settings.docs.disabled_push_mirror.pull_mirror_warning=Neste momento isto só pode ser feito no menu "Nova migração". Para obter mais informação, consulte:
settings.mirror_settings.docs.disabled_push_mirror.info=As réplicas foram desabilitadas pelo administrador deste sítio.
+settings.mirror_settings.docs.no_new_mirrors=O seu repositório está a replicar modificações para, ou a partir de, outro repositório. Tenha em mente que neste momento não pode criar novas réplicas.
settings.mirror_settings.docs.can_still_use=Embora não possa modificar réplicas existentes ou criar novas, ainda pode usar a sua réplica existente.
settings.mirror_settings.docs.pull_mirror_instructions=Para configurar uma réplica de outro repositório, consulte
settings.mirror_settings.docs.more_information_if_disabled=Pode aprender mais sobre réplicas de envios e de puxadas aqui:
@@ -2153,6 +2253,7 @@ settings.admin_indexer_commit_sha=Último SHA indexado
settings.admin_indexer_unindexed=Não indexado
settings.reindex_button=Adicionar à fila de reindexação
settings.reindex_requested=Reindexação solicitada
+settings.admin_enable_close_issues_via_commit_in_any_branch=Fechar uma questão através de um cometimento feito num ramo que não seja o principal
settings.danger_zone=Zona de perigo
settings.new_owner_has_same_repo=O novo dono já tem um repositório com o mesmo nome. Por favor, escolha outro nome.
settings.convert=Converter para um repositório normal
@@ -2174,6 +2275,7 @@ settings.transfer_abort_invalid=Não pode cancelar a transferência de um reposi
settings.transfer_abort_success=A transferência de repositório para %s foi cancelada com sucesso.
settings.transfer_desc=Transferir este repositório para um utilizador ou para uma organização na qual você tenha direitos de administrador.
settings.transfer_form_title=Insira o nome do repositório para confirmar:
+settings.transfer_in_progress=Está a ser feita uma transferência. Cancele-a, por favor, se quiser transferir este repositório para outro utilizador.
settings.transfer_notices_1=- Você perderá o acesso ao repositório se o transferir para um utilizador individual.
settings.transfer_notices_2=- Você manterá o acesso ao repositório se o transferir para uma organização da qual você é (co-)proprietário(a).
settings.transfer_notices_3=- Se o repositório for privado e for transferido para um utilizador individual, esta operação certifica que o utilizador tem pelo menos a permissão de leitura (e altera as permissões se for necessário).
@@ -2188,9 +2290,13 @@ settings.trust_model.default=Modelo de confiança padrão
settings.trust_model.default.desc=Usar o modelo de confiança padrão do repositório para esta instalação.
settings.trust_model.collaborator=Colaborador
settings.trust_model.collaborator.long=Colaborador: Confiar nas assinaturas dos colaboradores
+settings.trust_model.collaborator.desc=Assinaturas válidas dos colaboradores deste repositório serão marcadas como "fiável", independentemente de corresponderem, ou não, ao autor do cometimento. Caso contrário, assinaturas válidas serão marcadas como "não fiável" se a assinatura corresponder ao autor do cometimento e "não corresponde", se não corresponder.
settings.trust_model.committer=Autor do cometimento
+settings.trust_model.committer.long=Autor do cometimento: Confiar nas assinaturas que correspondam aos autores dos cometimentos. Isto corresponde ao comportamento do GitHub e força a que os cometimentos assinados do Gitea tenham o Gitea como autor do cometimento.
+settings.trust_model.committer.desc=Assinaturas válidas apenas serão marcadas como "fiável" se corresponderem ao autor do cometimento, caso contrário serão marcadas como "não corresponde". Isto irá forçar o Gitea a ser o autor do cometimento nos cometimentos assinados, ficando o autor real marcado como "Co-autorado-por:" e "Co-cometido-por:" no rodapé do cometimento. A chave padrão do Gitea tem que corresponder a um utilizador na base de dados.
settings.trust_model.collaboratorcommitter=Colaborador + Autor do cometimento
settings.trust_model.collaboratorcommitter.long=Colaborador + Autor do cometimento: Confiar nas assinaturas dos colaboradores que correspondam ao autor do cometimento
+settings.trust_model.collaboratorcommitter.desc=Assinaturas válidas feitas por colaboradores deste repositório serão marcadas como "fiável" se corresponderem ao autor do cometimento. Caso contrário, assinaturas válidas serão marcadas como "não fiável" se a assinatura corresponder ao autor do cometimento e "não corresponde" se não corresponder. Isto irá forçar a que o Gitea seja marcado como sendo o autor do cometimento nos cometimentos assinados, ficando o autor real marcado como "Co-autorado-por:" e "Co-cometido-por:" no rodapé do cometimento. A chave padrão do Gitea tem que corresponder a um utilizador na base de dados.
settings.wiki_delete=Eliminar dados do wiki
settings.wiki_delete_desc=Eliminar os dados do repositório do wiki é permanente e não pode ser revertido.
settings.wiki_delete_notices_1=- Isso excluirá e desabilitará permanentemente o wiki do repositório para %s.
@@ -2199,6 +2305,7 @@ settings.wiki_deletion_success=Os dados do repositório do wiki foram eliminados
settings.delete=Eliminar este repositório
settings.delete_desc=Eliminar um repositório é permanente e não pode ser revertido.
settings.delete_notices_1=- Esta operação <strong>NÃO PODERÁ</strong> ser revertida.
+settings.delete_notices_2=- Esta operação eliminará permanentemente o repositório <strong>%s</strong>, incluindo código-fonte, questões, comentários, dados do wiki e configurações dos colaboradores.
settings.delete_notices_fork_1=- Derivações deste repositório tornar-se-ão independentes, após a eliminação.
settings.deletion_success=O repositório foi eliminado.
settings.update_settings_success=As configurações do repositório foram modificadas.
@@ -2220,6 +2327,8 @@ settings.team_not_in_organization=A equipa não está na mesma organização que
settings.teams=Equipas
settings.add_team=Adicionar equipa
settings.add_team_duplicate=A equipa já tem o repositório
+settings.add_team_success=A equipa agora tem acesso ao repositório.
+settings.change_team_permission_tip=A permissão da equipa é definida na página de configurações da equipa e não pode ter modificações específicas de cada repositório
settings.delete_team_tip=Esta equipa tem acesso a todos os repositórios e não pode ser removida
settings.remove_team_success=O acesso da equipa ao repositório foi removido.
settings.add_webhook=Adicionar automatismo web
@@ -2484,6 +2593,7 @@ settings.archive.tagsettings_unavailable=As configurações sobre etiquetas não
settings.archive.mirrors_unavailable=As réplicas não estão disponíveis se o repositório estiver arquivado.
settings.unarchive.button=Desarquivar repositório
settings.unarchive.header=Desarquivar este repositório
+settings.unarchive.text=Desarquivar o repositório irá restaurar a capacidade de receber cometimentos e envios, assim como novas questões e pedidos de integração.
settings.unarchive.success=O repositório foi desarquivado com sucesso.
settings.unarchive.error=Ocorreu um erro enquanto decorria o processo de desarquivar o repositório. Veja os registos para obter mais detalhes.
settings.update_avatar_success=O avatar do repositório foi modificado.
@@ -2501,9 +2611,11 @@ settings.lfs_invalid_locking_path=Localização inválida: %s
settings.lfs_invalid_lock_directory=Não foi possível bloquear a pasta: %s
settings.lfs_lock_already_exists=Já existe um bloqueio: %s
settings.lfs_lock=Bloquear
+settings.lfs_lock_path=Localização do ficheiro a bloquear…
settings.lfs_locks_no_locks=Sem bloqueios
settings.lfs_lock_file_no_exist=O ficheiro bloqueado não existe no ramo principal
settings.lfs_force_unlock=Forçar desbloqueio
+settings.lfs_pointers.found=Encontrado(s) %d ponteiro(s) de blob — %d associado(a), %d desassociado(a) (%d ausente do armazenamento)
settings.lfs_pointers.sha=SHA do blob
settings.lfs_pointers.oid=OID
settings.lfs_pointers.inRepo=No repositório
@@ -2661,6 +2773,7 @@ branch.new_branch_from=`Criar um novo ramo a partir do ramo "%s"`
branch.renamed=O ramo %s foi renomeado para %s.
branch.rename_default_or_protected_branch_error=Só os administradores é que podem renomear o ramo principal ou ramos protegidos.
branch.rename_protected_branch_failed=Este ramo está protegido por regras de salvaguarda baseadas em padrões glob.
+branch.commits_divergence_from=Divergência nos cometimentos: %[1]d atrás e %[2]d à frente de %[3]s
branch.commits_no_divergence=Idêntico ao ramo %[1]s
tag.create_tag=Criar etiqueta %s
@@ -2685,6 +2798,7 @@ error.csv.invalid_field_count=Não é possível apresentar este ficheiro porque
error.broken_git_hook=Os automatismos git deste repositório parecem estar danificados. Consulte a <a target="_blank" rel="noreferrer" href="%s">documentação</a> sobre como os consertar e depois envie alguns cometimentos para refrescar o estado.
[graphs]
+component_loading=A carregar %s…
component_loading_failed=Não foi possível carregar %s
component_loading_info=Isto pode demorar um pouco…
component_failed_to_load=Ocorreu um erro inesperado.
@@ -2723,6 +2837,7 @@ form.create_org_not_allowed=Não tem permissão para criar uma organização.
settings=Configurações
settings.options=Organização
settings.full_name=Nome completo
+settings.email=Endereço de email de contacto
settings.website=Sítio web
settings.location=Localização
settings.permission=Permissões
@@ -2739,7 +2854,10 @@ settings.update_setting_success=As configurações da organização foram modifi
settings.rename=Renomear organização
settings.rename_desc=Mudar o nome da organização também irá mudar o URL da organização e libertar o nome antigo.
+settings.rename_success=A organização %[1]s foi renomeada para %[2]s com sucesso.
+settings.rename_no_change=O nome da organização não foi alterado.
settings.rename_new_org_name=Novo nome da organização
+settings.rename_failed=A renomeação da organização falhou por causa de um erro interno
settings.rename_notices_1=Esta operação <strong>NÃO PODERÁ</strong> ser revertida.
settings.rename_notices_2=O antigo nome, enquanto não for reivindicado, irá reencaminhar para o novo.
@@ -2749,9 +2867,11 @@ settings.delete_account=Eliminar esta organização
settings.delete_prompt=A organização será removida permanentemente. Essa operação <strong>NÃO PODERÁ</strong> ser revertida!
settings.name_confirm=Insira o nome da organização para confirmar:
settings.delete_notices_1=Esta operação <strong>NÃO PODERÁ</strong> ser revertida.
+settings.delete_notices_2=Esta operação irá eliminar de forma permanente todos os <strong>repositórios</strong> de <strong>%s</strong>, incluindo código-fonte, questões, comentários, dados do wiki e configurações dos colaboradores.
settings.delete_notices_3=Esta operação irá eliminar de forma permanente todos os <strong>pacotes</strong> de <strong>%s</strong>.
settings.delete_notices_4=Esta operação irá eliminar de forma permanente todos os <strong>planeamentos</strong> de <strong>%s</strong>.
settings.confirm_delete_account=Confirme a eliminação
+settings.delete_failed=A eliminação da organização falhou por causa de um erro interno
settings.delete_successful=A organização <b>%s</b> foi eliminada com sucesso.
settings.hooks_desc=Adicionar automatismos web que serão despoletados para <strong>todos os repositórios</strong> desta organização.
@@ -2808,6 +2928,7 @@ teams.remove_all_repos_title=Remover todos os repositórios da equipa
teams.remove_all_repos_desc=Isto irá remover todos os repositórios da equipa.
teams.add_all_repos_title=Adicionar todos os repositórios
teams.add_all_repos_desc=Isto irá adicionar todos os repositórios da organização à equipa.
+teams.add_nonexistent_repo=O repositório que está a tentar adicionar não existe. Crie-o primeiro.
teams.add_duplicate_users=O utilizador já é um membro da equipa.
teams.repos.none=Não há repositórios que possam ser acedidos por esta equipa.
teams.members.none=Não há membros nesta equipa.
@@ -2848,6 +2969,7 @@ repositories=Repositórios
hooks=Automatismos web
integrations=Integrações
authentication=Fontes de autenticação
+emails=Endereços de email do utilizador
config=Configuração
config_summary=Resumo
config_settings=Configurações
@@ -2879,8 +3001,11 @@ dashboard.cron.cancelled=Cron: %[1]s cancelado: %[3]s
dashboard.cron.error=Erro no cron: %s: %[3]s
dashboard.cron.finished=Cron: %[1]s concluído
dashboard.delete_inactive_accounts=Eliminar todas as contas que não tenham sido habilitadas
+dashboard.delete_inactive_accounts.started=Foi iniciada a eliminação de todas as contas que não foram habilitadas.
dashboard.delete_repo_archives=Eliminar todos os arquivos dos repositórios (ZIP, TAR.GZ, etc)
+dashboard.delete_repo_archives.started=Foi iniciada a tarefa de eliminação de todos os repositórios arquivados.
dashboard.delete_missing_repos=Eliminar todos os repositórios que não tenham os seus ficheiros Git
+dashboard.delete_missing_repos.started=Foi iniciada a tarefa de eliminação de todos os repositórios que não têm ficheiros git.
dashboard.delete_generated_repository_avatars=Eliminar avatares gerados do repositório
dashboard.sync_repo_branches=Sincronizar ramos perdidos de dados do git para bases de dados
dashboard.sync_repo_tags=Sincronizar etiquetas dos dados do git para a base de dados
@@ -2888,7 +3013,12 @@ dashboard.update_mirrors=Sincronizar réplicas
dashboard.repo_health_check=Verificar a saúde de todos os repositórios
dashboard.check_repo_stats=Verificar as estatísticas de todos os repositórios
dashboard.archive_cleanup=Eliminar arquivos de repositórios antigos
+dashboard.deleted_branches_cleanup=Limpar ramos eliminados
dashboard.update_migration_poster_id=Sincronizar os IDs do remetente da migração
+dashboard.git_gc_repos=Fazer a recolha do lixo em todos os repositórios
+dashboard.resync_all_sshkeys=Sincronizar o ficheiro '.ssh/authorized_keys' com as chaves SSH do Gitea
+dashboard.resync_all_sshprincipals=Modificar o ficheiro '.ssh/authorized_principals' com os protagonistas SSH do Gitea
+dashboard.resync_all_hooks=Voltar a sincronizar automatismos de pré-acolhimento, modificação e pós-acolhimento de todos os repositórios
dashboard.reinit_missing_repos=Reinicializar todos os repositórios Git em falta para os quais existam registos
dashboard.sync_external_users=Sincronizar dados externos do utilizador
dashboard.cleanup_hook_task_table=Limpar a tabela hook_task
@@ -2924,8 +3054,10 @@ dashboard.total_gc_pause=Pausa total da recolha de lixo
dashboard.last_gc_pause=Última pausa da recolha de lixo
dashboard.gc_times=N.º de recolhas de lixo
dashboard.delete_old_actions=Eliminar todo o trabalho antigo da base de dados
+dashboard.delete_old_actions.started=Foi iniciado o processo de eliminação de todo o trabalho antigo da base de dados
dashboard.update_checker=Verificador de novas versões
dashboard.delete_old_system_notices=Eliminar todas as notificações do sistema antigas da base de dados
+dashboard.gc_lfs=Recolher lixo dos meta-elementos LFS
dashboard.stop_zombie_tasks=Parar tarefas zombie das operações
dashboard.stop_endless_tasks=Parar tarefas intermináveis das operações
dashboard.cancel_abandoned_jobs=Cancelar trabalhos abandonados das operações
@@ -2949,6 +3081,7 @@ users.2fa=Autenticação em dois passos
users.repos=Repos.
users.created=Criada
users.last_login=Último acesso
+users.never_login=Nunca acedeu
users.send_register_notify=Enviar notificação de registo de utilizador
users.new_success=A conta de utilizador "%s" foi criada.
users.edit=Editar
@@ -2975,6 +3108,7 @@ users.still_own_repo=Este utilizador ainda possui um ou mais repositórios. Elim
users.still_has_org=Este utilizador é membro de uma organização. Remova, primeiro, o utilizador de todas as organizações.
users.purge=Eliminar utilizador
users.purge_help=Eliminar o utilizador à força, juntamente com todos os seus repositórios, organizações e pacotes. Também serão eliminados todos os seus comentários.
+users.still_own_packages=Este utilizador ainda possui um ou mais pacotes. Elimine esses pacotes primeiro.
users.deletion_success=A conta de utilizador foi eliminada.
users.reset_2fa=Reinicializar a autenticação em dois passos
users.list_status_filter.menu_text=Filtro
@@ -2994,7 +3128,11 @@ users.details=Detalhes do utilizador
emails.email_manage_panel=Gestão de endereços de email do utilizador
emails.primary=Principal
emails.activated=Em uso
+emails.filter_sort.email=Endereço de email
+emails.filter_sort.email_reverse=Endereço de email (inverso)
emails.filter_sort.name=Nome de utilizador
+emails.filter_sort.name_reverse=Nome de utilizador (inverso)
+emails.updated=Endereço de email modificado
emails.not_updated=Falhou a modificação do endereço de email solicitado: %v
emails.duplicate_active=Este endereço de email já está a ser usado por outro utilizador.
emails.change_email_header=Modificar propriedades do email
@@ -3002,6 +3140,7 @@ emails.change_email_text=Tem a certeza que quer modificar este endereço de emai
emails.delete=Eliminar email
emails.delete_desc=Tem a certeza que quer eliminar este endereço de email?
emails.deletion_success=O endereço de email foi eliminado.
+emails.delete_primary_email_error=Não pode eliminar o endereço de email principal.
orgs.org_manage_panel=Gestão das organizações
orgs.name=Nome
@@ -3115,20 +3254,29 @@ auths.oauth2_required_claim_name_helper=Defina este nome para restringir o iníc
auths.oauth2_required_claim_value=Valor de Reivindicação obrigatório
auths.oauth2_required_claim_value_helper=Defina este valor para restringir o início de sessão desta fonte a utilizadores que tenham uma reivindicação com este nome e este valor
auths.oauth2_group_claim_name=Reivindicar nome que fornece nomes de grupo para esta fonte. (Opcional)
+auths.oauth2_full_name_claim_name=Nome completo reivindicado. (Opcional — se for definido, o nome completo do utilizador será sempre sincronizado com este reivindicado)
auths.oauth2_ssh_public_key_claim_name=Nome reivindicado da chave pública SSH
+auths.oauth2_admin_group=Valor da Reivindicação de Grupo para utilizadores administradores. (Opcional — exige a reivindicação de nome acima)
+auths.oauth2_restricted_group=Valor da Reivindicação de Grupo para utilizadores restritos. (Opcional — exige a reivindicação de nome acima)
+auths.oauth2_map_group_to_team=Mapear grupos reclamados em equipas da organização. (Opcional — exige a reivindicação de nome acima)
auths.oauth2_map_group_to_team_removal=Remover utilizadores das equipas sincronizadas se esses utilizadores não pertencerem ao grupo correspondente.
auths.enable_auto_register=Habilitar o registo automático
auths.sspi_auto_create_users=Criar utilizadores automaticamente
+auths.sspi_auto_create_users_helper=Permitir que o método de autenticação SSPI crie, automaticamente, novas contas para utilizadores que iniciam a sessão pela primeira vez
auths.sspi_auto_activate_users=Habilitar utilizadores automaticamente
auths.sspi_auto_activate_users_helper=Permitir que o método de autenticação SSPI habilite automaticamente os novos utilizadores
auths.sspi_strip_domain_names=Remover nomes de domínio dos nomes de utilizador
+auths.sspi_strip_domain_names_helper=Se esta opção estiver marcada, os nomes de domínio serão removidos dos nomes do início de sessão (ex.: "DOMÍNIO\utilizador" e "utilizador@exemplo.org" tornar-se-ão "utilizador", simplesmente).
auths.sspi_separator_replacement=Separador a usar em vez de \, / e @
+auths.sspi_separator_replacement_helper=O caractere a ser usado para substituir os separadores de nomes de início de sessão de nível inferior (ex.: o \ em "DOMÍNIO\utilizador") e os nomes principais do utilizador (ex.: o @ em "utilizador@exemplo.org").
auths.sspi_default_language=Idioma predefinido do utilizador
+auths.sspi_default_language_helper=Idioma predefinido para utilizadores criados automaticamente pelo método de autenticação SSPI. Deixe em branco se preferir que o idioma seja determinado automaticamente.
auths.tips=Dicas
auths.tips.oauth2.general=Autenticação OAuth2
auths.tips.oauth2.general.tip=Ao registar uma nova autenticação OAuth2, o URL da ligação de retorno ou do reencaminhamento deve ser:
auths.tip.oauth2_provider=Fornecedor OAuth2
auths.tip.bitbucket=Registe um novo consumidor de OAuth em %s e adicione a permissão 'Account' - 'Read'
+auths.tip.nextcloud=`Registe um novo consumidor OAuth na sua instância usando o seguinte menu "Configurações → Segurança → Cliente OAuth 2.0"`
auths.tip.dropbox=Crie uma nova aplicação em %s
auths.tip.facebook=`Registe uma nova aplicação em %s e adicione o produto "Facebook Login"`
auths.tip.github=Registe uma nova aplicação OAuth em %s
@@ -3238,6 +3386,7 @@ config.mailer_sendmail_path=Localização do sendmail
config.mailer_sendmail_args=Argumentos extras para o sendmail
config.mailer_sendmail_timeout=Tempo limite do Sendmail
config.mailer_use_dummy=Fictício
+config.test_email_placeholder=Endereço de email (ex.: teste@exemplo.com)
config.send_test_mail=Enviar email de teste
config.send_test_mail_submit=Enviar
config.test_mail_failed=Falhou o envio de um email de teste para "%s": %v
@@ -3326,6 +3475,7 @@ monitor.queue.numberinqueue=N.º na fila
monitor.queue.review_add=Rever / Adicionar trabalhadores
monitor.queue.settings.title=Configurações do agregado
monitor.queue.settings.desc=Agregados crescem dinamicamente em resposta aos bloqueios da sua fila de trabalhadores.
+monitor.queue.settings.maxnumberworkers=N.º máximo de trabalhadores
monitor.queue.settings.maxnumberworkers.placeholder=De momento %[1]d
monitor.queue.settings.maxnumberworkers.error=O número máximo de trabalhadores tem que ser um número
monitor.queue.settings.submit=Modificar configurações
@@ -3351,6 +3501,10 @@ notices.delete_success=As notificações do sistema foram eliminadas.
self_check.no_problem_found=Nenhum problema encontrado até agora.
self_check.startup_warnings=Alertas do arranque:
self_check.database_collation_mismatch=Supor que a base de dados usa a colação: %s
+self_check.database_collation_case_insensitive=A base de dados está a usar a colação %s, que é insensível à diferença entre maiúsculas e minúsculas. Embora o Gitea possa trabalhar com ela, pode haver alguns casos raros que não funcionem como esperado.
+self_check.database_inconsistent_collation_columns=A base de dados está a usar a colação %s, mas estas colunas estão a usar colações diferentes. Isso poderá causar alguns problemas inesperados.
+self_check.database_fix_mysql=Para utilizadores do MySQL/MariaDB, pode usar o comando "gitea doctor convert" para resolver os problemas de colação. Também pode resolver o problema manualmente com comandos SQL "ALTER ... COLLATE ...".
+self_check.database_fix_mssql=Para utilizadores do MSSQL só pode resolver o problema manualmente com comandos SQL "ALTER ... COLLATE ...", por enquanto.
self_check.location_origin_mismatch=O URL corrente (%[1]s) não corresponde ao URL visto pelo Gitea (%[2]s). Se estiver a usar um reverse proxy, certifique-se que os cabeçalhos "Host" e "X-Forwarded-Proto" estão bem definidos.
[action]
@@ -3434,6 +3588,8 @@ error.no_committer_account=Não existe qualquer conta ligada ao endereço de ema
error.no_gpg_keys_found=Não foi encontrada uma chave conhecida para esta assinatura, na base de dados
error.not_signed_commit=Não é um cometimento assinado
error.failed_retrieval_gpg_keys=Falhou ao obter uma chave ligada à conta de quem cometeu
+error.probable_bad_signature=AVISO! Embora exista uma chave com este ID na base de dados, ela não valida este cometimento! Este cometimento é SUSPEITO.
+error.probable_bad_default_signature=AVISO! Embora a chave padrão tenha este ID, ela não valida este cometimento! Este cometimento é SUSPEITO.
[units]
unit=Unidade
@@ -3472,6 +3628,7 @@ versions.view_all=Ver todas
dependency.id=ID
dependency.version=Versão
search_in_external_registry=Procurar em %s
+alpine.registry=Configure este registo adicionando o URL no seu ficheiro <code>/etc/apk/repositories</code>:
alpine.registry.key=Descarregue a chave RSA pública do registo para dentro da pasta <code>/etc/apk/keys/</code> para verificar a assinatura do índice:
alpine.registry.info=Escolha $branch e $repository da lista abaixo.
alpine.install=Para instalar o pacote, execute o seguinte comando:
@@ -3484,13 +3641,18 @@ arch.install=Sincronizar pacote com pacman:
arch.repository=Informação do repositório
arch.repository.repositories=Repositórios
arch.repository.architectures=Arquitecturas
+cargo.registry=Configure este registo no ficheiro de configuração do Cargo (por exemplo: <code>~/.cargo/config.toml</code>):
cargo.install=Para instalar o pacote usando o Cargo, execute o seguinte comando:
+chef.registry=Configure este registo no seu ficheiro <code>~/.chef/config.rb</code>:
chef.install=Para instalar o pacote, execute o seguinte comando:
+composer.registry=Configure este registo no seu ficheiro <code>~/.composer/config.json</code>:
composer.install=Para instalar o pacote usando o Composer, execute o seguinte comando:
composer.dependencies=Dependências
composer.dependencies.development=Dependências de desenvolvimento
conan.details.repository=Repositório
+conan.registry=Configure este registo usando a linha de comandos:
conan.install=Para instalar o pacote usando o Conan, execute o seguinte comando:
+conda.registry=Configure este registo como um repositório Conda no seu ficheiro <code>.condarc</code>:
conda.install=Para instalar o pacote usando o Conda, execute o seguinte comando:
container.details.type=Tipo de imagem
container.details.platform=Plataforma
@@ -3502,7 +3664,9 @@ container.layers=Camadas de imagem
container.labels=Rótulos
container.labels.key=Chave
container.labels.value=Valor
+cran.registry=Configure este registo no seu ficheiro <code>Rprofile.site</code>:
cran.install=Para instalar o pacote, execute o seguinte comando:
+debian.registry=Configure este registo usando a linha de comandos:
debian.registry.info=Escolha $distribution e $component da lista abaixo.
debian.install=Para instalar o pacote, execute o seguinte comando:
debian.repository=Informação do repositório
@@ -3511,11 +3675,16 @@ debian.repository.components=Componentes
debian.repository.architectures=Arquitecturas
generic.download=Descarregar pacote usando a linha de comandos:
go.install=Instale o pacote a partir da linha de comandos:
+helm.registry=Configure este registo usando a linha de comandos:
helm.install=Para instalar o pacote, execute o seguinte comando:
+maven.registry=Configure este registo no seu ficheiro <code>pom.xml</code> do projecto:
+maven.install=Para usar este pacote, inclua no bloco <code>dependencies</code> do ficheiro <code>pom.xml</code> o seguinte:
maven.install2=Executar usando a linha de comandos:
maven.download=Para descarregar a dependência, execute na linha de comandos:
+nuget.registry=Configure este registo usando a linha de comandos:
nuget.install=Para instalar o pacote usando NuGet, execute o seguinte comando:
nuget.dependency.framework=Estrutura alvo
+npm.registry=Configure este registo no seu ficheiro <code>.npmrc</code> do projecto:
npm.install=Para instalar o pacote usando o npm, execute o seguinte comando:
npm.install2=ou adicione-o ao ficheiro <code>package.json</code>:
npm.dependencies=Dependências
@@ -3527,6 +3696,7 @@ npm.details.tag=Etiqueta
pub.install=Para instalar o pacote usando o Dart, execute o seguinte comando:
pypi.requires=Requer Python
pypi.install=Para instalar o pacote usando o pip, execute o seguinte comando:
+rpm.registry=Configure este registo usando a linha de comandos:
rpm.distros.redhat=em distribuições baseadas no RedHat
rpm.distros.suse=em distribuições baseadas no SUSE
rpm.install=Para instalar o pacote, execute o seguinte comando:
@@ -3539,6 +3709,7 @@ rubygems.dependencies.runtime=Dependências do tempo de execução (runtime)
rubygems.dependencies.development=Dependências de desenvolvimento
rubygems.required.ruby=Requer a versão do Ruby
rubygems.required.rubygems=Requer a versão do RubyGem
+swift.registry=Configure este registo usando a linha de comandos:
swift.install=Adicione o pacote no seu ficheiro <code>Package.swift</code>:
swift.install2=e execute o seguinte comando:
vagrant.install=Para adicionar uma máquina virtual Vagrant, execute o seguinte comando:
diff --git a/routers/api/v1/repo/action.go b/routers/api/v1/repo/action.go
index 99eef2f53b..25aabe6dd2 100644
--- a/routers/api/v1/repo/action.go
+++ b/routers/api/v1/repo/action.go
@@ -1132,18 +1132,23 @@ func GetWorkflowRun(ctx *context.APIContext) {
// "$ref": "#/responses/notFound"
runID := ctx.PathParamInt64("run")
- job, _, err := db.GetByID[actions_model.ActionRun](ctx, runID)
+ job, has, err := db.GetByID[actions_model.ActionRun](ctx, runID)
+ if err != nil {
+ ctx.APIErrorInternal(err)
+ return
+ }
- if err != nil || job.RepoID != ctx.Repo.Repository.ID {
- ctx.APIError(http.StatusNotFound, util.ErrNotExist)
+ if !has || job.RepoID != ctx.Repo.Repository.ID {
+ ctx.APIErrorNotFound(util.ErrNotExist)
+ return
}
- convertedArtifact, err := convert.ToActionWorkflowRun(ctx, ctx.Repo.Repository, job)
+ convertedRun, err := convert.ToActionWorkflowRun(ctx, ctx.Repo.Repository, job)
if err != nil {
ctx.APIErrorInternal(err)
return
}
- ctx.JSON(http.StatusOK, convertedArtifact)
+ ctx.JSON(http.StatusOK, convertedRun)
}
// ListWorkflowRunJobs Lists all jobs for a workflow run.
@@ -1237,10 +1242,15 @@ func GetWorkflowJob(ctx *context.APIContext) {
// "$ref": "#/responses/notFound"
jobID := ctx.PathParamInt64("job_id")
- job, _, err := db.GetByID[actions_model.ActionRunJob](ctx, jobID)
+ job, has, err := db.GetByID[actions_model.ActionRunJob](ctx, jobID)
+ if err != nil {
+ ctx.APIErrorInternal(err)
+ return
+ }
- if err != nil || job.RepoID != ctx.Repo.Repository.ID {
- ctx.APIError(http.StatusNotFound, util.ErrNotExist)
+ if !has || job.RepoID != ctx.Repo.Repository.ID {
+ ctx.APIErrorNotFound(util.ErrNotExist)
+ return
}
convertedWorkflowJob, err := convert.ToActionWorkflowJob(ctx, ctx.Repo.Repository, nil, job)
@@ -1251,7 +1261,7 @@ func GetWorkflowJob(ctx *context.APIContext) {
ctx.JSON(http.StatusOK, convertedWorkflowJob)
}
-// GetArtifacts Lists all artifacts for a repository.
+// GetArtifactsOfRun Lists all artifacts for a repository.
func GetArtifactsOfRun(ctx *context.APIContext) {
// swagger:operation GET /repos/{owner}/{repo}/actions/runs/{run}/artifacts repository getArtifactsOfRun
// ---
@@ -1354,7 +1364,7 @@ func DeleteActionRun(ctx *context.APIContext) {
runID := ctx.PathParamInt64("run")
run, err := actions_model.GetRunByRepoAndID(ctx, ctx.Repo.Repository.ID, runID)
if errors.Is(err, util.ErrNotExist) {
- ctx.APIError(http.StatusNotFound, err)
+ ctx.APIErrorNotFound(err)
return
} else if err != nil {
ctx.APIErrorInternal(err)
diff --git a/templates/repo/issue/view_content/conversation.tmpl b/templates/repo/issue/view_content/conversation.tmpl
index 07051d5ec0..189b9d6259 100644
--- a/templates/repo/issue/view_content/conversation.tmpl
+++ b/templates/repo/issue/view_content/conversation.tmpl
@@ -15,7 +15,7 @@
</span>
{{end}}
</div>
- <div>
+ <div class="tw-flex tw-items-center">
{{if or $invalid $resolved}}
<button id="show-outdated-{{$comment.ID}}" data-comment="{{$comment.ID}}" class="{{if not $resolved}}tw-hidden{{end}} btn tiny show-outdated">
{{svg "octicon-unfold" 16 "tw-mr-2"}}
diff --git a/tests/integration/api_actions_delete_run_test.go b/tests/integration/api_actions_run_test.go
index 5b41702c57..a0292f8f8b 100644
--- a/tests/integration/api_actions_delete_run_test.go
+++ b/tests/integration/api_actions_run_test.go
@@ -18,6 +18,44 @@ import (
"github.com/stretchr/testify/assert"
)
+func TestAPIActionsGetWorkflowRun(t *testing.T) {
+ defer prepareTestEnvActionsArtifacts(t)()
+
+ repo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 2})
+ user := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: repo.OwnerID})
+ session := loginUser(t, user.Name)
+ token := getTokenForLoggedInUser(t, session, auth_model.AccessTokenScopeWriteRepository)
+
+ req := NewRequest(t, "GET", fmt.Sprintf("/api/v1/repos/%s/actions/runs/802802", repo.FullName())).
+ AddTokenAuth(token)
+ MakeRequest(t, req, http.StatusNotFound)
+ req = NewRequest(t, "GET", fmt.Sprintf("/api/v1/repos/%s/actions/runs/802", repo.FullName())).
+ AddTokenAuth(token)
+ MakeRequest(t, req, http.StatusNotFound)
+ req = NewRequest(t, "GET", fmt.Sprintf("/api/v1/repos/%s/actions/runs/803", repo.FullName())).
+ AddTokenAuth(token)
+ MakeRequest(t, req, http.StatusOK)
+}
+
+func TestAPIActionsGetWorkflowJob(t *testing.T) {
+ defer prepareTestEnvActionsArtifacts(t)()
+
+ repo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 2})
+ user := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: repo.OwnerID})
+ session := loginUser(t, user.Name)
+ token := getTokenForLoggedInUser(t, session, auth_model.AccessTokenScopeWriteRepository)
+
+ req := NewRequest(t, "GET", fmt.Sprintf("/api/v1/repos/%s/actions/jobs/198198", repo.FullName())).
+ AddTokenAuth(token)
+ MakeRequest(t, req, http.StatusNotFound)
+ req = NewRequest(t, "GET", fmt.Sprintf("/api/v1/repos/%s/actions/jobs/198", repo.FullName())).
+ AddTokenAuth(token)
+ MakeRequest(t, req, http.StatusOK)
+ req = NewRequest(t, "GET", fmt.Sprintf("/api/v1/repos/%s/actions/jobs/196", repo.FullName())).
+ AddTokenAuth(token)
+ MakeRequest(t, req, http.StatusNotFound)
+}
+
func TestAPIActionsDeleteRunCheckPermission(t *testing.T) {
defer prepareTestEnvActionsArtifacts(t)()