1
0
Fork 0
mirror of https://codeberg.org/forgejo/forgejo.git synced 2025-01-07 00:53:10 +00:00

Compare commits

...

13 commits

Author SHA1 Message Date
tacaly
6a0d853144
i18n: translated using Weblate (Danish)
Currently translated at 39.3% (1449 of 3681 strings)

Translation: Forgejo/forgejo
Translate-URL: https://translate.codeberg.org/projects/forgejo/forgejo/da/
2025-01-03 00:22:54 +00:00
tacaly
188815c3b4
i18n: translated using Weblate (Danish)
Currently translated at 39.0% (1439 of 3681 strings)

Translation: Forgejo/forgejo
Translate-URL: https://translate.codeberg.org/projects/forgejo/forgejo/da/
2025-01-03 00:22:54 +00:00
Salif Mehmed
2bf7648ea1
i18n: translated using Weblate (Bulgarian)
Currently translated at 46.9% (1728 of 3681 strings)

Translation: Forgejo/forgejo
Translate-URL: https://translate.codeberg.org/projects/forgejo/forgejo/bg/
2025-01-03 00:22:54 +00:00
Outbreak2096
5a5ed4fd6e
i18n: translated using Weblate (Chinese (Simplified Han script))
Currently translated at 100.0% (3681 of 3681 strings)

Translation: Forgejo/forgejo
Translate-URL: https://translate.codeberg.org/projects/forgejo/forgejo/zh_Hans/
2025-01-03 00:22:54 +00:00
div72
ae4eeef54c
i18n: translated using Weblate (Turkish)
Currently translated at 65.2% (2403 of 3681 strings)

Translation: Forgejo/forgejo
Translate-URL: https://translate.codeberg.org/projects/forgejo/forgejo/tr/
2025-01-03 00:22:53 +00:00
0ko
96e908964d
i18n: translated using Weblate (Russian)
Currently translated at 100.0% (3681 of 3681 strings)

Translation: Forgejo/forgejo
Translate-URL: https://translate.codeberg.org/projects/forgejo/forgejo/ru/
2025-01-03 00:22:53 +00:00
Edgarsons
5805b55cce
i18n: translated using Weblate (Latvian)
Currently translated at 95.1% (3501 of 3681 strings)

Translation: Forgejo/forgejo
Translate-URL: https://translate.codeberg.org/projects/forgejo/forgejo/lv/
2025-01-03 00:22:53 +00:00
earl-warren
2be8d899ca
i18n: translated using Weblate (French)
Currently translated at 99.5% (3666 of 3681 strings)

Translation: Forgejo/forgejo
Translate-URL: https://translate.codeberg.org/projects/forgejo/forgejo/fr/
2025-01-03 00:22:53 +00:00
Gusted
cfb18e2b6c Merge pull request 'feat(webhook): sourcehut: submit SSH URL for private repository (or when pre-filled)' (#6445) from oliverpool/forgejo:sourcehut-refactor into forgejo
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6445
Reviewed-by: Gusted <gusted@noreply.codeberg.org>
2025-01-03 00:22:33 +00:00
oliverpool
e1cdaf1f28 add release notes 2025-01-01 19:50:39 +01:00
oliverpool
3bea06f906 sourcehut: use ssh sources URL when appropriate
Co-authored-by: Jordan Anderson <jordan@jba.io>
2025-01-01 19:46:05 +01:00
oliverpool
6e13ac4d5f add manifest tests 2025-01-01 11:31:49 +01:00
oliverpool
faf1c836eb refactor sourcehut manifest building 2025-01-01 11:01:51 +01:00
10 changed files with 288 additions and 37 deletions

View file

@ -1285,6 +1285,11 @@ settings.event_issue_assign_desc = Задача е възложена или о
settings.event_pull_request_review_request_desc = Рецензия на заявка за сливане е поискана или е премахната.
generate_repo = Генериране на хранилище
default_branch_helper = Стандартният клон е основния клон за заявки за сливане и подавания на код.
issues.reaction.add = Добавяне на реакция
issues.reaction.alt_few = %[1]s реагира с %[2]s.
issues.reaction.alt_many = %[1]s и още %[2]d реагираха с %[3]s.
issues.reaction.alt_add = Добавяне на реакция %[1]s към коментара.
issues.reaction.alt_remove = Премахване на реакция %[1]s от коментара.
[modal]
confirm = Потвърждаване

View file

@ -1467,6 +1467,22 @@ issues.context.edit = Redigere
issues.context.delete = Slet
issues.no_content = Ingen beskrivelse angivet.
issues.close = Luk problem
summary_card_alt = Oversigtskort for depot %s
issues.choose.invalid_config = Problemkonfigurationen indeholder fejl:
issues.no_ref = Ingen gren/tag angivet
issues.create = Opret problem
issues.new_label = Ny etiket
issues.choose.invalid_templates = %v ugyldig(e) skabelon(er) fundet
issues.new_label_placeholder = Etiketnavn
issues.new_label_desc_placeholder = Beskrivelse
issues.create_label = Opret etiket
issues.label_templates.title = Indlæs en etiketforudindstilling
issues.label_templates.info = Der findes endnu ingen etiketter. Opret en etiket med "Ny etiket", eller brug en etiketforudindstilling:
issues.label_templates.helper = Vælg en etiketforudindstilling
issues.label_templates.use = Brug etiketforudindstilling
issues.label_templates.fail_to_load_file = Kunne ikke indlæse etiketskabelonfilen "%s": %v
issues.add_label = tilføjede %s etiketten %s
issues.add_labels = tilføjede %s etiketterne %s
[notification]
watching = Overvåger

View file

@ -747,7 +747,7 @@ webauthn=Clés de sécurité à deux facteurs
public_profile=Profil public
biography_placeholder=Parlez-nous un peu de vous! (Markdown est interprété)
location_placeholder=Partagez votre position approximative avec d'autres personnes
profile_desc=Contrôlez comment votre profil est affiché aux autres utilisateurs. Votre adresse courriel principale sera utilisée pour les notifications, la récupération de mot de passe et les opérations Git basées sur le Web.
profile_desc=À propos de vous
password_username_disabled=Les utilisateurs externes ne sont pas autorisés à modifier leur nom d'utilisateur. Veuillez contacter l'administrateur de votre site pour plus de détails.
full_name=Nom complet
website=Site Web
@ -838,7 +838,7 @@ add_email_success=La nouvelle adresse e-mail a été ajoutée.
email_preference_set_success=L'e-mail de préférence a été défini avec succès.
add_openid_success=La nouvelle adresse OpenID a été ajoutée.
keep_email_private=Cacher l'adresse courriel
keep_email_private_popup=Ceci masquera votre adresse courriel de votre profil. Elle ne sera plus la valeur par défaut pour les commits créés par l'interface web, tel que des ajouts de fichiers ou des éditions, et ne sera pas utilisée pour fusionner les commits. Un courriel special %s peut être utilisé pour établir la relation entre des commits et votre compte. Notez que changer cette option n'aura pas d'effet sur les commits existants.
keep_email_private_popup=Ceci masquera votre adresse courriel de votre profil. Elle ne sera plus la valeur par défaut pour les commits créés par l'interface web, tel que des ajouts de fichiers ou des éditions, et ne sera pas utilisée pour fusionner les commits. Un courriel special %s peut être utilisé pour établir la relation entre des commits et votre compte. Cette option n'aura pas d'effet sur les commits existants.
openid_desc=OpenID vous permet de confier l'authentification à une tierce partie.
manage_ssh_keys=Gérer les clés SSH
@ -1101,7 +1101,7 @@ license_helper_desc=Une licence réglemente ce que les autres peuvent ou ne peuv
readme=LISEZMOI
readme_helper=Choisissez un modèle de fichier LISEZMOI
readme_helper_desc=Le README est l'endroit idéal pour décrire votre projet et accueillir des contributeurs.
auto_init=Initialiser le dépôt (avec un .gitignore, une Licence et un README.md)
auto_init=Initialiser le dépôt
trust_model_helper=Choisissez, parmi les éléments suivants, les règles de confiance des signatures paraphant les révisions :
trust_model_helper_collaborator=Collaborateur : ne se fier qu'aux signatures des collaborateurs du dépôt
trust_model_helper_committer=Auteur : ne se fier qu'aux signatures des auteurs de révisions
@ -3699,7 +3699,7 @@ cran.install=Pour installer le paquet, exécutez la commande suivante :
debian.registry=Configurez ce registre à partir d'un terminal :
debian.registry.info=Choisissez $distribution et $component dans la liste ci-dessous.
debian.install=Pour installer le paquet, exécutez la commande suivante :
debian.repository=Infos sur le Dépôt
debian.repository=Infos sur le dépôt
debian.repository.distributions=Distributions
debian.repository.components=Composants
debian.repository.architectures=Architectures

View file

@ -938,9 +938,9 @@ permissions_public_only=Tikai publiskie
permissions_access_all=Visi (publiskie, privātie un ierobežotie)
select_permissions=Atlasīt atļaujas
permission_no_access=Nav piekļuves
permission_read=Skatīšanās
permission_read=Lasīt
permission_write=Lasīt un rakstīt
access_token_desc=Atzīmētie pilnvaras apgabali ierobežo autentifikāciju tikai atbilstošiem <a href="%[1]s" target="_blank">>API</a> izsaukumiem. Sīkāka informācija pieejama <a href="%[2]s" target="_blank">>dokumentācijā</a>.
access_token_desc=Atlasītās pilnvaru atļaujas ierobežo pilnvarošanu tikai atbilstošiem <a href="%[1]s" target="_blank">API</a> maršrutiem. Vairāk ir lasāms<a href="%[2]s" target="_blank">dokumentācijā</a>.
at_least_one_permission=Nepieciešams norādīt vismaz vienu tiesību, lai izveidotu pilnvaru
permissions_list=Tiesības:
@ -948,8 +948,8 @@ manage_oauth2_applications=Pārvaldīt OAuth2 lietotnes
edit_oauth2_application=Labot OAuth2 lietotni
oauth2_applications_desc=OAuth2 lietotnes ļauj trešo pušu lietotnēm droša veidā autentificēt lietotajus šajā Forgejo instancē.
remove_oauth2_application=Noņemt OAuth2 lietotni
remove_oauth2_application_desc=Noņemot OAuth2 lietotni, tiks noņemta piekļuve visām parakstītajām piekļuves pilnvarām. Vai turpināt?
remove_oauth2_application_success=Lietotne tika dzēsta.
remove_oauth2_application_desc=OAuth2 lietotnes noņemšana atsauks piekļuvi visām parakstītajām piekļuves pilnvarām. Turpināt?
remove_oauth2_application_success=Lietotne tika izdzēsta.
create_oauth2_application=Izveidot jaunu OAuth2 lietotni
create_oauth2_application_button=Izveidot lietotni
create_oauth2_application_success=Ir sekmīgi izveidota jauna OAuth2 lietotne.
@ -965,7 +965,7 @@ oauth2_regenerate_secret_hint=Pazaudēts noslēpums?
oauth2_client_secret_hint=Pēc šīs lapas pamešanas vai atsvaidzināšanas noslēpums vairs netiks parādīts. Lūgums pārliecināties, ka tas ir saglabāts.
oauth2_application_edit=Labot
oauth2_application_create_description=OAuth2 lietotnes ļauj trešas puses lietotnēm piekļūt lietotāja kontiem šajā instancē.
oauth2_application_remove_description=OAuth2 lietotnes noņemšana liegs tai piekļūt pilnvarotiem lietotāju kontiem šajā instancē. Vai turpināt?
oauth2_application_remove_description=OAuth2 lietotnes noņemšana liegs tai piekļūt pilnvarotiem lietotāju kontiem šajā serverī. Turpināt?
oauth2_application_locked=Forgejo sāknēšanas brīdī reģistrē dažas OAuth2 lietotnes, ja tas ir iespējots konfigurācijā. Lai novērstu negaidītu uzvedību, tās nevar ne labot, ne noņemt. Lūgums vērsties OAuth2 dokumentācijā pēc vairāk informācijas.
authorized_oauth2_applications=Pilnvarotās OAuth2 lietotnes
@ -976,7 +976,7 @@ revoke_oauth2_grant_description=Šīs trešās puses lietotnes piekļuves atsauk
revoke_oauth2_grant_success=Piekļuve sekmīgi atsaukta.
twofa_desc=Divfaktoru autentifikācija uzlabo konta drošību.
twofa_recovery_tip=Ja ierīce tiek pazaudēta, iespējams izmantot vienreiz izmantojamo atkopšanas atslēgu, lai atgūtu piekļuvi savam kontam.
twofa_recovery_tip=Ja ierīce tiks pazaudēta, būs iespējams izmantot vienreizējas izmantošanas atkopšanas atslēgu, lai atgūtu piekļuvi savam kontam.
twofa_is_enrolled=Kontam ir <strong>ieslēgta</strong> divfaktoru autentifikācija.
twofa_not_enrolled=Kontam šobrīd nav ieslēgta divfaktoru autentifikācija.
twofa_disable=Atspējot divpakāpju pieteikšanos
@ -2856,6 +2856,14 @@ new_from_template_description = Var atlasīt šajā serverī esošu glabātavas
new_advanced = Papildu iestatījumi
new_advanced_expand = Klikšķināt, lai izvērstu
auto_init_description = Sākt ar README Git vēsturē, pēc izvēles pievienojot licences un .gitignore datnes.
issues.reaction.add = Pievienot reakciju
issues.reaction.alt_few = %[1]s atsaucās ar %[2]s.
issues.reaction.alt_many = %[1]s un vēl %[2]d atsaucās ar %[3]s.
issues.reaction.alt_remove = Noņemt no piebildes %[1] reakciju.
issues.reaction.alt_add = Pievienot piebildei %[1] reakcijas.
issues.context.menu = Piebildes izvēlne
summary_card_alt = Glabātavas %s apkopojuma kartīte
release.summary_card_alt = Laidiena "%s" apkopojuma kartīte glabātavā %s
[graphs]
component_loading=Ielādē %s...
@ -3073,33 +3081,33 @@ dashboard.bootstrap_stack_usage=Sākumielādētāja viengala rindas lietojums
dashboard.stack_memory_obtained=Iegūtā viengala rindas atmiņa
dashboard.mspan_structures_usage=MSpan struktūru lietojums
dashboard.mspan_structures_obtained=Iegūtās MSpan struktūras
dashboard.mcache_structures_usage=Izmantotās MCache struktūras
dashboard.mcache_structures_usage=MCache struktūru lietojums
dashboard.mcache_structures_obtained=Iegūtās MCache struktūras
dashboard.profiling_bucket_hash_table_obtained=Iegūtā profilēšanas kausa jaucējtabula
dashboard.profiling_bucket_hash_table_obtained=Iegūtā profilēšanas groza jaucējtabula
dashboard.gc_metadata_obtained=Iegūtie GC metadati
dashboard.other_system_allocation_obtained=Iegūtās citas sistēmas sadales
dashboard.next_gc_recycle=Nākā GC atkritne
dashboard.other_system_allocation_obtained=Citas iegūtās sistēmas sadales
dashboard.next_gc_recycle=Nākamā GC atkritne
dashboard.last_gc_time=Laiks kopš pēdējās GC
dashboard.total_gc_time=Kopējais GC izpildes laiks
dashboard.total_gc_pause=Kopējais GC izpildes laiks
dashboard.last_gc_pause=Pedējās GC izpildes laiks
dashboard.total_gc_pause=Kopējais GC pārtraukums
dashboard.last_gc_pause=Pedējais GC pārtraukums
dashboard.gc_times=GC reizes
dashboard.delete_old_actions=Dzēst visas darbības no datu bāzes
dashboard.delete_old_actions.started=Uzsākta visu novecojušo darbību dzēšana no datu bāzes.
dashboard.delete_old_actions=Izdzēst visas novecojušās darbības no datubāzes
dashboard.delete_old_actions.started=Uzsākta visu novecojušo darbību izdzēšana no datubāzes.
dashboard.update_checker=Atjauninājumu pārbaudītājs
dashboard.delete_old_system_notices=Dzēst vecos sistēmas paziņojumus no datubāzes
dashboard.gc_lfs=Veikt atkritumu uzkopšanas darbus LFS meta objektiem
dashboard.stop_zombie_tasks=Apturēt zombija uzdevumus
dashboard.stop_endless_tasks=Apturēt nepārtrauktus uzdevumus
dashboard.cancel_abandoned_jobs=Atcelt pamestus darbus
dashboard.start_schedule_tasks=Sākt plānotos uzdevumus
dashboard.stop_zombie_tasks=Apturēt darbību zombijuzdevumus
dashboard.stop_endless_tasks=Apturēt bezgalīgus darbību uzdevumus
dashboard.cancel_abandoned_jobs=Atcelt pamestus darbību darbus
dashboard.start_schedule_tasks=Uzsākt paredzētos darbību uzdevumus
dashboard.sync_branch.started=Uzsākta zaru sinhronizēšana
dashboard.rebuild_issue_indexer=Pārbūvēt pieteikumu indeksētāju
users.user_manage_panel=Lietotāju kontu pārvaldība
users.user_manage_panel=Pārvaldīt lietotāju kontus
users.new_account=Izveidot lietotāja kontu
users.name=Lietotājvārds
users.full_name=Vārds, uzvārds
users.full_name=Pilns vārds
users.activated=Aktivēts
users.admin=Pārvaldītājs
users.restricted=Ierobežots
@ -3110,7 +3118,7 @@ users.2fa=2FA
users.repos=Glabātavas
users.created=Izveidots
users.last_login=Pēdējā pieteikšanās
users.never_login=Pieteikšanās nekad nav veikta
users.never_login=Pieteikšanās nekad nav notikusi
users.send_register_notify=Nosūtīt lietotājam reģistrācijas paziņojumu
users.new_success=Lietotāja konts "%s" tika izveidots.
users.edit=Labot
@ -3469,7 +3477,7 @@ monitor.stats=Statistika
monitor.cron=Cron uzdevumi
monitor.name=Nosaukums
monitor.schedule=Grafiks
monitor.next=Nākošās izpildes laiks
monitor.next=Nākamā reize
monitor.previous=Pēdējās izpildes laiks
monitor.execute_times=Izpildes
monitor.process=Darbojošies procesi
@ -3536,6 +3544,19 @@ self_check.database_fix_mysql = MySQL/MariaDB lietotāji var izmantot komandu "f
config.app_slogan = Servera sauklis
config.allow_dots_in_usernames = Ļaut lietotājiem izmantot punktus savā lietotājvārdā. Neietekmē esošos kontus.
users.restricted.description = Ļaut mijiedarbību tikai ar glabātavām un apvienībām, kurās šis lietotājs ir pievienots kā līdzdalībnieks. Tas neļauj piekļūt šī servera publiskajām glabātavām.
dashboard.sync_tag.started = Uzsākta birku sinhronizēšana
users.organization_creation.description = Ļaut jaunu apvienību izveidošanu.
users.block.description = Liegt šī lietotāja mijiedarbību ar šo serveri caur tā kontu un neļaut pieteikšanos.
users.admin.description = Nodrošināt šim lietotājam pilnu piekļuvi visām pārvaldīšanas iespējām ar tīmekļa saskarni un API.
users.local_import.description = Ļaut glabātavu ievietošanu no servera vietējās datņu sistēmas. Tā var būt drošības nepilnība.
emails.delete = Izdzēst e-pasta adresi
emails.delete_desc = Vai tiešām izdzēst šo e-pasta adresi?
emails.deletion_success = E-pasta adrese tika izdzēsta.
emails.delete_primary_email_error = Nevar izdzēst galveno e-pasta adresi.
auths.tips.gmail_settings = Gmail iestatījumi:
users.activated.description = E-pasta adreses apliecināšanas pabeigšana. Neaktivēta konta īpašnieks nevarēs pieteikties, kamēr e-pasta adreses apliecināšana nebūs pabeigta.
auths.default_domain_name = Noklusējuma domēna vārds, kas tiek izmantots e-pasta adresēs
dashboard.sync_repo_tags = Datubāzē sinhronizēt birkas no Git datiem
[action]
create_repo=izveidoja glabātavu <a href="%s">%s</a>
@ -3784,6 +3805,18 @@ arch.pacman.sync = Jāsinhronizē pakotne ar pacman:
arch.version.description = Apraksts
arch.version.provides = Nodrošina
arch.pacman.conf = <code>/etc/pacman.conf</code> jāpievieno serveris ar atbilstošu distribūciju un arhitektūru:
arch.version.groups = Kopa
arch.version.replaces = Aizvieto
arch.version.checkdepends = Pārbaudīt atkarības
arch.version.conflicts = Nesaderības
npm.dependencies.bundle = Iekļautās atkarības
container.images.title = Attēli
arch.version.optdepends = Izvēles atkarības
arch.version.makedepends = Izveidot atkarības
arch.version.backup = Rezerves kopija
arch.version.depends = Atkarības
rpm.repository.multiple_groups = Šī pakotne ir pieejama vairākās kopās.
owner.settings.cargo.rebuild.no_index = Nevar pārbūvēt, nav sāknēts neviens indekss.
[secrets]
secrets=Noslēpumi
@ -3889,11 +3922,25 @@ variables.creation.failed=Neizdevās pievienot mainīgo.
variables.creation.success=Mainīgais "%s" tika pievienots.
variables.update.failed=Neizdevās labot mainīgo.
variables.update.success=Mainīgais tika labots.
workflow.dispatch.invalid_input_type = Nederīgs ievades mainīgā veids "%s".
workflow.dispatch.run = Izpildīt darbplūsmu
workflow.dispatch.success = Darbplūsmas izpildīšana tika sekmīgi pieprasīta.
workflow.dispatch.use_from = Izmantot darbplūsmu no
runs.workflow = Darbplūsma
runs.no_job_without_needs = Darbplūsmā ir jābūt vismaz vienam darbam bez atkarībām.
workflow.dispatch.input_required = Nepieciešama vērtība ievades mainīgajam "%s".
runs.expire_log_message = Žurnāli tika iztīrīti, jo tie bija pārāk veci.
runs.no_workflows.help_no_write_access = Lai uzzinātu par Forgejo Acties, jāieskatās <a target="_blank" rel="noopener noreferrer" href="%s">dokumentācijā</a>.
runs.no_job = Darbplūsmā ir jābūt vismaz vienam darbam
runs.no_workflows.help_write_access = Nav skaidrs, kā sākt izmantot Forgejo Actions? Jāieskatās <a target="_blank" rel="noopener noreferrer" href="%s">ātro ievadu lietotāja dokumentācijā</a>, lai uzrakstītu savu pirmo darbplūsmu, tad <a target="_blank" rel="noopener noreferrer" href="%s">jāiestata Forgejo izpildītājs</a>, lai izpildītu savus darbus.
workflow.dispatch.warn_input_limit = Attēlo tikai pirmos %d ievades mainīgos.
workflow.dispatch.trigger_found = Šai darbplūsmai ir <c>workflow_dispatch</c> notikuma izraisītājs.
[projects]
type-1.display_name=Individuālais projekts
type-2.display_name=Glabātavas projekts
type-3.display_name=Apvienības projekts
deleted.display_name = Izdzēsts projekts
[git.filemode]
changed_filemode=%[1]s → %[2]s
@ -3946,6 +3993,13 @@ pulls.read = <b>Lasīt:</b> lasīšana un izveidot izmaiņu pieprasījumus.
code.read = <b>Lasīt</b>: piekļūt glabātavas kodam un klonēt to.
issues.read = <b>Lasīt</b>: lasīt un izveidot pieteikumus un piebildes.
issues.write = <b>Rakstīt</b>: aizvērt pieteikums un pārvaldīt tādus metadatus kā iezīmes, atskaites punktus, atbildīgos, beigu datumus un atkarības.
wiki.read = <b>Lasīt</b>: lasīt iebūvēto vikivietni un tās vēsturi.
projects.write = <b>Rakstīt</b>: izveidot projektus un slejas un labot tās.
packages.read = <b>Lasīt</b>: apskatīt un lejupielādēt glabātavai piesaistītās pakotnes.
releases.read = <b>Lasīt</b>: apskatīt un lejupielādēt laidienus.
releases.write = <b>Rakstīt</b>: laist klajā, labot un izdzēst laidienus un to līdzekļus.
wiki.write = <b>Rakstīt</b>: izveidot, atjaunināt un izdzēst iebūvētās vikivietnes lapas.
projects.read = <b>Lasīt</b>: piekļūt glabātavas projektu dēļiem.
[munits.data]
@ -3955,4 +4009,12 @@ gib = GiB
tib = TiB
kib = KiB
eib = EiB
b = B
b = B
[markup]
filepreview.line = %[1]d. rinda %[2]s
filepreview.lines = %[1]d. līdz %[2]d. rinda %[3]s
filepreview.truncated = Priekšskatījums tika saīsināts
[translation_meta]
test = Šī ir pārbaudes virkne. Tā netiek attēlota Forgejo saskarnē, bet tiek izmantota pārbaudes nolūkiem. Droši var ievadīt "ok", lai ietaupītu laiku (vai kādu jautru faktu pēc izvēles), lai sasniegtu to saldo 100% pabeigšanas atzīmi.

View file

@ -1171,8 +1171,8 @@ template.issue_labels=Метки задач
template.one_item=Необходимо выбрать хотя бы один элемент шаблона
template.invalid=Необходимо выбрать шаблон репозитория
archive.issue.nocomment=Этот репозиторий в архиве. Вы не можете комментировать задачи.
archive.pull.nocomment=Это репозиторий в архиве. Вы не можете комментировать запросы на слияние.
archive.issue.nocomment=Этот репозиторий архивирован. Комментирование в задачах невозможно.
archive.pull.nocomment=Этот репозиторий архивирован. Комментирование в запросах слияний невозможно.
form.reach_limit_of_creation_1=Достигнуто ограничение на количество репозиториев: %d.
form.reach_limit_of_creation_n=Достигнуто ограничение на количество репозиториев: %d.
@ -2859,6 +2859,14 @@ new_from_template_description = Вы можете выбрать любой ша
new_advanced = Расширенные настройки
new_advanced_expand = Нажмите, чтобы раскрыть
auto_init_description = Начать историю коммитов с добавления README и, если надо, лицензии и .gitignore.
summary_card_alt = Карточка со сводкой о репозитории %s
issues.reaction.add = Добавить реакцию
issues.reaction.alt_few = Реакция %[2]s от %[1]s.
issues.reaction.alt_many = Реакция %[3]s от %[1]s и %[2]d других.
issues.reaction.alt_remove = Убрать реакцию %[1]s с этого комментария.
issues.reaction.alt_add = Добавить реакцию %[1]s к этому комментарию.
issues.context.menu = Меню комментария
release.summary_card_alt = Карточка со сводкой о выпуске «%s» в репозитории %s
[graphs]
component_loading_failed = Не удалось загрузить %s

View file

@ -165,6 +165,7 @@ error413 = Kotanızı doldurdunuz.
toggle_menu = Menüyü aç-kapa
new_migrate.title = Yeni geçiş
new_migrate.link = Yeni geçiş
copy_path = Dizini kopyala
[aria]
navbar=Gezinti Çubuğu
@ -195,6 +196,12 @@ buttons.ref.tooltip=Bir konuya veya değişiklik isteğine değin
buttons.switch_to_legacy.tooltip=Eski düzenleyiciyi kullan
buttons.enable_monospace_font=Eşaralıklı yazıtipini etkinleştir
buttons.disable_monospace_font=Eşaralıklı yazıtipini devre dışı bırak
buttons.new_table.tooltip = Tablo ekle
table_modal.header = Tablo ekle
table_modal.placeholder.header = Başlık
table_modal.placeholder.content = İçerik
table_modal.label.rows = Satırlar
table_modal.label.columns = Sütunlar
[filter]
string.asc=A - Z
@ -466,6 +473,7 @@ sign_up_button = Hemen kaydol.
hint_register = Hesaba ihtiyacın var mı? <a href="%s">Hemen kaydol.</a>
sign_in_openid = OpenID ile giriş yap
hint_login = Mevcut hesabın var mı? <a href="%s">Hemen giriş yap!</a>
use_onetime_code = Tek kullanımlık kod kullan
[mail]
view_it_on=%s üzerinde görüntüle
@ -543,6 +551,7 @@ account_security_caution.text_1 = Eğer bu sizseniz bu e-postayı görmezden gel
password_change.subject = Parolanız değişti
admin.new_user.user_info = Kullanıcı bilgisi
admin.new_user.text = Lütfen bu kullanıcıyı admin panelinden yönetmek için <a href="%s">buraya tıklayın</a>.
password_change.text_1 = Hesabınızın parolası değişti.
[modal]
yes=Evet
@ -650,6 +659,8 @@ Biography = Biyografi
AccessToken = Erişim jetonu
Location = Konum
Website = Websitesi
admin_cannot_delete_self = Yöneticiyken kullanıcınızı silemezsiniz. Lütfen önce yönetici yetkilerinizi kaldırın.
username_error_no_dots = ` sadece alfanumerik karakterler ("0-9","a-z","A-Z"), tire ("-") ve alt tire ("-") içerebilir. Alfanumerik olmayan karakterlerle başlayamaz ve bitemez, ayrıca ardışık alfanumerik olmayan karakterler de kullanılamaz.`
[user]
@ -690,6 +701,9 @@ followers.title.one = Takipçi
block = Engelle
public_activity.visibility_hint.self_private = Aktiviteniz sadece size ve oluşum yöneticilerine açıktır. <a href="%s">Değiştir</a>.
followers_one = %d takipçi
block_user.detail_2 = Bu kullanıcı sahip olduğunuz depolar, açtığınız sorunlar ve yaptığınız yorumlar ile etkileşime geçemeyecek.
block_user.detail_1 = Birbirinizden takipten çıkacak ve birbirinizi takip edemeyeceksiniz.
block_user.detail = Bu kullanıcıyı engellediğinizde:
[settings]
profile=Profil
@ -3683,6 +3697,7 @@ runs.no_workflows.quick_start = Gitea İşlem'i nasıl başlatacağınızı bilm
type-1.display_name=Kişisel Proje
type-2.display_name=Depo Projesi
type-3.display_name=Organizasyon Projesi
deleted.display_name = Silinmiş proje
[git.filemode]
changed_filemode=%[1]s → %[2]s

View file

@ -2864,6 +2864,8 @@ issues.reaction.alt_many = %[1]s 和另外 %[2]d 人回应了 %[3]s。
issues.reaction.alt_remove = 从评论中移除 %[1] 回应。
issues.context.menu = 评论菜单
issues.reaction.alt_add = 对评论添加 %[1]s 回应。
release.summary_card_alt = 仓库 %[2]s 中标题为 %[1]s 的版本发布的摘要卡片
summary_card_alt = 仓库 %s 的摘要卡片
[graphs]
component_loading=正在加载 %s...

1
release-notes/6445.md Normal file
View file

@ -0,0 +1 @@
feat: webhook: sourcehut: submit SSH URL for private repository or when pre-filled

View file

@ -8,6 +8,7 @@ import (
"context"
"fmt"
"html/template"
"io"
"io/fs"
"net/http"
"strings"
@ -189,11 +190,11 @@ func (pc sourcehutConvertor) Package(_ *api.PackagePayload) (graphqlPayload[buil
return graphqlPayload[buildsVariables]{}, shared.ErrPayloadTypeNotSupported
}
// mustBuildManifest adjusts the manifest to submit to the builds service
// newPayload opens and adjusts the manifest to submit to the builds service
//
// in case of an error the Error field will be set, to be visible by the end-user under recent deliveries
func (pc sourcehutConvertor) newPayload(repo *api.Repository, commitID, ref, note string, trusted bool) (graphqlPayload[buildsVariables], error) {
manifest, err := pc.buildManifest(repo, commitID, ref)
manifest, err := pc.constructManifest(repo, commitID, ref)
if err != nil {
if len(manifest) == 0 {
return graphqlPayload[buildsVariables]{}, err
@ -238,9 +239,9 @@ func (pc sourcehutConvertor) newPayload(repo *api.Repository, commitID, ref, not
}, nil
}
// buildManifest adjusts the manifest to submit to the builds service
// constructManifest opens and adjusts the manifest to submit to the builds service
// in case of an error the []byte might contain an error that can be displayed to the user
func (pc sourcehutConvertor) buildManifest(repo *api.Repository, commitID, gitRef string) ([]byte, error) {
func (pc sourcehutConvertor) constructManifest(repo *api.Repository, commitID, gitRef string) ([]byte, error) {
gitRepo, err := gitrepo.OpenRepository(pc.ctx, repo)
if err != nil {
msg := "could not open repository"
@ -265,6 +266,10 @@ func (pc sourcehutConvertor) buildManifest(repo *api.Repository, commitID, gitRe
}
defer r.Close()
return adjustManifest(repo, commitID, gitRef, r, pc.meta.ManifestPath)
}
func adjustManifest(repo *api.Repository, commitID, gitRef string, r io.Reader, path string) ([]byte, error) {
// reference: https://man.sr.ht/builds.sr.ht/manifest.md
var manifest struct {
Sources []string `yaml:"sources"`
@ -273,7 +278,7 @@ func (pc sourcehutConvertor) buildManifest(repo *api.Repository, commitID, gitRe
Rest map[string]yaml.Node `yaml:",inline"`
}
if err := yaml.NewDecoder(r).Decode(&manifest); err != nil {
msg := fmt.Sprintf("could not decode manifest %q", pc.meta.ManifestPath)
msg := fmt.Sprintf("could not decode manifest %q", path)
return []byte(msg), fmt.Errorf(msg+": %w", err)
}
@ -284,16 +289,21 @@ func (pc sourcehutConvertor) buildManifest(repo *api.Repository, commitID, gitRe
manifest.Environment["BUILD_SUBMITTER_URL"] = setting.AppURL
manifest.Environment["GIT_REF"] = gitRef
source := repo.CloneURL + "#" + commitID
found := false
for i, s := range manifest.Sources {
if s == repo.CloneURL {
manifest.Sources[i] = source
if s == repo.CloneURL || s == repo.SSHURL {
manifest.Sources[i] = s + "#" + commitID
found = true
break
}
}
if !found {
source := repo.CloneURL
if repo.Private || setting.Repository.DisableHTTPGit {
// default to ssh for private repos or when git clone is disabled over http
source = repo.SSHURL
}
source += "#" + commitID
manifest.Sources = append(manifest.Sources, source)
}

View file

@ -5,6 +5,7 @@ package sourcehut
import (
"context"
"strings"
"testing"
webhook_model "code.gitea.io/gitea/models/webhook"
@ -384,3 +385,134 @@ func TestSourcehutJSONPayload(t *testing.T) {
require.NoError(t, err)
assert.Equal(t, "json test", body.Variables.Note)
}
func TestSourcehutAdjustManifest(t *testing.T) {
defer test.MockVariableValue(&setting.AppURL, "https://example.forgejo.org/")()
t.Run("without sources", func(t *testing.T) {
repo := &api.Repository{
CloneURL: "http://localhost:3000/testdata/repo.git",
}
manifest, err := adjustManifest(repo, "58771003157b81abc6bf41df0c5db4147a3e3c83", "refs/heads/main", strings.NewReader(`image: alpine/edge
tasks:
- say-hello: |
echo hello
- say-world: echo world`), ".build.yml")
require.NoError(t, err)
assert.Equal(t, `sources:
- http://localhost:3000/testdata/repo.git#58771003157b81abc6bf41df0c5db4147a3e3c83
environment:
BUILD_SUBMITTER: forgejo
BUILD_SUBMITTER_URL: https://example.forgejo.org/
GIT_REF: refs/heads/main
image: alpine/edge
tasks:
- say-hello: |
echo hello
- say-world: echo world
`, string(manifest))
})
t.Run("with other sources", func(t *testing.T) {
repo := &api.Repository{
CloneURL: "http://localhost:3000/testdata/repo.git",
}
manifest, err := adjustManifest(repo, "58771003157b81abc6bf41df0c5db4147a3e3c83", "refs/heads/main", strings.NewReader(`image: alpine/edge
sources:
- http://other.example.conm/repo.git
tasks:
- hello: echo world`), ".build.yml")
require.NoError(t, err)
assert.Equal(t, `sources:
- http://other.example.conm/repo.git
- http://localhost:3000/testdata/repo.git#58771003157b81abc6bf41df0c5db4147a3e3c83
environment:
BUILD_SUBMITTER: forgejo
BUILD_SUBMITTER_URL: https://example.forgejo.org/
GIT_REF: refs/heads/main
image: alpine/edge
tasks:
- hello: echo world
`, string(manifest))
})
t.Run("with same source", func(t *testing.T) {
repo := &api.Repository{
CloneURL: "http://localhost:3000/testdata/repo.git",
}
manifest, err := adjustManifest(repo, "58771003157b81abc6bf41df0c5db4147a3e3c83", "refs/heads/main", strings.NewReader(`image: alpine/edge
sources:
- http://localhost:3000/testdata/repo.git
- http://other.example.conm/repo.git
tasks:
- hello: echo world`), ".build.yml")
require.NoError(t, err)
assert.Equal(t, `sources:
- http://localhost:3000/testdata/repo.git#58771003157b81abc6bf41df0c5db4147a3e3c83
- http://other.example.conm/repo.git
environment:
BUILD_SUBMITTER: forgejo
BUILD_SUBMITTER_URL: https://example.forgejo.org/
GIT_REF: refs/heads/main
image: alpine/edge
tasks:
- hello: echo world
`, string(manifest))
})
t.Run("with ssh source", func(t *testing.T) {
repo := &api.Repository{
CloneURL: "http://localhost:3000/testdata/repo.git",
SSHURL: "git@localhost:testdata/repo.git",
}
manifest, err := adjustManifest(repo, "58771003157b81abc6bf41df0c5db4147a3e3c83", "refs/heads/main", strings.NewReader(`image: alpine/edge
sources:
- git@localhost:testdata/repo.git
- http://other.example.conm/repo.git
tasks:
- hello: echo world`), ".build.yml")
require.NoError(t, err)
assert.Equal(t, `sources:
- git@localhost:testdata/repo.git#58771003157b81abc6bf41df0c5db4147a3e3c83
- http://other.example.conm/repo.git
environment:
BUILD_SUBMITTER: forgejo
BUILD_SUBMITTER_URL: https://example.forgejo.org/
GIT_REF: refs/heads/main
image: alpine/edge
tasks:
- hello: echo world
`, string(manifest))
})
t.Run("private without source", func(t *testing.T) {
repo := &api.Repository{
CloneURL: "http://localhost:3000/testdata/repo.git",
SSHURL: "git@localhost:testdata/repo.git",
Private: true,
}
manifest, err := adjustManifest(repo, "58771003157b81abc6bf41df0c5db4147a3e3c83", "refs/heads/main", strings.NewReader(`image: alpine/edge
tasks:
- hello: echo world`), ".build.yml")
require.NoError(t, err)
assert.Equal(t, `sources:
- git@localhost:testdata/repo.git#58771003157b81abc6bf41df0c5db4147a3e3c83
environment:
BUILD_SUBMITTER: forgejo
BUILD_SUBMITTER_URL: https://example.forgejo.org/
GIT_REF: refs/heads/main
image: alpine/edge
tasks:
- hello: echo world
`, string(manifest))
})
}