Compare commits

...

6 Commits

Author SHA1 Message Date
GiteaBot
24b49bcf66 [skip ci] Updated translations via Crowdin 2023-07-18 00:43:46 +00:00
silverwind
8bb0a03eaa
Import sortablejs only once (#25936)
Previously, `sortablejs` was imported twice, once synchronously and once
asynchronously, leading to webpack creating duplicate output code (once
in the index bundle, and once in a separate chunk). Fix this by always
asynchronously importing it. This was one of the build warnings observed
when trying to build with vite.
2023-07-17 18:06:37 +00:00
wxiaoguang
d0a9456c4f
Make environment-to-ini work with INSTALL_LOCK=true (#25926)
Regression of #25648, fix #25924

Test:

```bash
rm -f /tmp/example.ini /tmp/out.ini && \
echo "[security]" > /tmp/example.ini && \
echo "INSTALL_LOCK = true" >> /tmp/example.ini && \
GITEA__foo__bar=1 go run contrib/environment-to-ini/environment-to-ini.go --config=/tmp/example.ini --out=/tmp/out.ini && \
echo "==== example:" && \
cat /tmp/example.ini && \
echo "==== out:" && \
cat /tmp/out.ini
```

Output:

```
2023/07/17 17:40:51 ...nvironment-to-ini.go:99:runEnvironmentToIni() [I] Settings saved to: "/tmp/out.ini"
==== example:
[security]
INSTALL_LOCK = true
==== out:
[security]
INSTALL_LOCK = true

[foo]
bar = 1

```
2023-07-17 17:56:06 +00:00
Jason Song
29e959fd00
Ignore runs-on with expressions when warning no matched runners (#25917)
Fix #25905

Co-authored-by: Giteabot <teabot@gitea.io>
2023-07-17 18:19:53 +02:00
wxiaoguang
ff9a7afe99
Skip unuseful error message in dev mode when watching local filesystem (#25919)
Before, in dev mode, there might be some error logs like:

```
2023/07/17 13:54:51 ...s/assetfs/layered.go:221:WatchLocalChanges() [E] Unable to watch directory .: lstat /data/work/gitea/custom/templates: no such file or directory

```

Because there is no "custom/templates" directory.

After: ignore such error, no such error message anymore.
2023-07-17 09:47:55 +00:00
KN4CK3R
81a8120bc3
Add shutting down notice (#25920)
Got the same problem as #25915 when updating an instance. The
`log.Fatal` should have been marked as breaking in #23911.

This PR adds a notice that the system is shutting down because of the
deprecated setting.
2023-07-17 10:58:47 +02:00
8 changed files with 51 additions and 39 deletions

View File

@ -75,6 +75,8 @@ func main() {
}
func runEnvironmentToIni(c *cli.Context) error {
// the config system may change the environment variables, so get a copy first, to be used later
env := append([]string{}, os.Environ()...)
setting.InitWorkPathAndCfgProvider(os.Getenv, setting.ArgWorkPathAndCustomConf{
WorkPath: c.String("work-path"),
CustomPath: c.String("custom-path"),
@ -86,7 +88,7 @@ func runEnvironmentToIni(c *cli.Context) error {
log.Fatal("Failed to load custom conf '%s': %v", setting.CustomConf, err)
}
changed := setting.EnvironmentToConfig(cfg, os.Environ())
changed := setting.EnvironmentToConfig(cfg, env)
// try to save the config file
destination := c.String("out")

View File

@ -217,7 +217,7 @@ func (l *LayeredFS) WatchLocalChanges(ctx context.Context, callback func()) {
}
layerDirs = append(layerDirs, ".")
for _, dir := range layerDirs {
if err = watcher.Add(util.FilePathJoinAbs(layer.localPath, dir)); err != nil {
if err = watcher.Add(util.FilePathJoinAbs(layer.localPath, dir)); err != nil && !os.IsNotExist(err) {
log.Error("Unable to watch directory %s: %v", dir, err)
}
}

View File

@ -324,7 +324,7 @@ func deprecatedSetting(rootCfg ConfigProvider, oldSection, oldKey, newSection, n
func deprecatedSettingFatal(rootCfg ConfigProvider, oldSection, oldKey, newSection, newKey, version string) {
if rootCfg.Section(oldSection).HasKey(oldKey) {
log.Fatal("Deprecated fallback `[%s]` `%s` present. Use `[%s]` `%s` instead. This fallback will be/has been removed in %s", oldSection, oldKey, newSection, newKey, version)
log.Fatal("Deprecated fallback `[%s]` `%s` present. Use `[%s]` `%s` instead. This fallback will be/has been removed in %s. Shutting down", oldSection, oldKey, newSection, newKey, version)
}
}

View File

@ -7,7 +7,7 @@ sign_in=Pierakstīties
sign_in_with=Pierakstīties izmantojot
sign_out=Izrakstīties
sign_up=Reģistrēties
link_account=Saistītie konti
link_account=Sasaistīt kontu
register=Reģistrēties
version=Versija
powered_by=Darbina %s
@ -30,14 +30,14 @@ password=Parole
access_token=Piekļuves talons
re_type=Atkārtoti ievadiet paroli
captcha=Cilvēktests
twofa=Divu faktoru autentifikācija
twofa_scratch=Divu faktoru vienreizējais kods
twofa=Divfaktoru autentifikācija
twofa_scratch=Divfaktoru vienreizējais kods
passcode=Kods
webauthn_insert_key=Ievietojiet Jūsu drošības atslēgu
webauthn_sign_in=Nospiediet pogu uz drošības atslēgas. Ja tai nav pogas, izņemiet un ievietojiet to atkārtoti.
webauthn_press_button=Nospiediet drošības atslēgas pogu…
webauthn_use_twofa=Izmantot divu faktoru kodu no tālruņa
webauthn_use_twofa=Izmantot divfaktoru kodu no tālruņa
webauthn_error=Nevar nolasīt drošības atslēgu.
webauthn_unsupported_browser=Jūsu pārlūkprogramma neatbalsta WebAuthn standartu.
webauthn_error_unknown=Notikusi nezināma kļūda. Atkārtojiet darbību vēlreiz.
@ -377,7 +377,7 @@ non_local_account=Ārējie konti nevar mainīt paroli, izmantojot, Gitea saskarn
verify=Pārbaudīt
scratch_code=Vienreizējais kods
use_scratch_code=Izmantot vienreizējo kodu
twofa_scratch_used=Jūs esat izmantojis vienreizējo kodu. Jūs tikāt pārsūtīts uz divu faktoru iestatījumu lapu, lai varētu piesaistīto ierīci vai lai uzģenerētu jaunu vienreizējo kodu.
twofa_scratch_used=Vienreizējais kods tika izmantots. Notika pārvirzīšana uz divfaktoru iestatījumu lapu, lai varētu pārsaistīt jaunu ierīci vai uzģenerēt jaunu vienreizējo kodu.
twofa_passcode_incorrect=Jūsu kods nav pareizs. Ja esat pazaudējis ierīci, izmantojiet vienreizējo kodu, lai autorizētos.
twofa_scratch_token_incorrect=Ievadīts nepareizs vienreizējais kods.
login_userpass=Pierakstīties
@ -387,7 +387,7 @@ oauth_signup_title=Pabeigt konta veidošanu
oauth_signup_submit=Pabeigt reģistrāciju
oauth_signin_tab=Savienot ar esošu kontu
oauth_signin_title=Pierakstīties, lai autorizētu saistīto kontu
oauth_signin_submit=Saistītie konti
oauth_signin_submit=Sasaistīt kontu
oauth.signin.error=Radās kļūda apstrādājot autorizācijas pieprasījumu. Ja šī kļūda atkārtojas, sazinieties ar lapas administratoru.
oauth.signin.error.access_denied=Autorizācijas pieprasījums tika noraidīts.
oauth.signin.error.temporarily_unavailable=Autorizācija neizdevās, jo autentifikācijas serveris ir īslaicīgi nepieejams. Mēģiniet autorizēties vēlāk.
@ -612,7 +612,7 @@ applications=Lietotnes
orgs=Pārvaldīt organizācijas
repos=Repozitoriji
delete=Dzēst kontu
twofa=Divu faktoru autentifikācija
twofa=Divfaktoru autentifikācija
account_link=Saistītie konti
organization=Organizācijas
uid=Lietotāja ID
@ -844,22 +844,22 @@ revoke_oauth2_grant=Atsaukt piekļuvi
revoke_oauth2_grant_description=Atsaucot piekļuvi šai trešas puses lietotnei tiks liegta piekļuve Jūsu datiem. Vai turpināt?
revoke_oauth2_grant_success=Piekļuve veiksmīgi atsaukta.
twofa_desc=Divu faktoru autentifikācija uzlabo Jūsu konta drošību.
twofa_is_enrolled=Kontam ir <strong>ieslēgta</strong> divu faktoru autentifikācija.
twofa_not_enrolled=Jūsu kontam nav ieslēgta divu faktoru autentifikācija.
twofa_disable=Atslēgt divu faktoru autentifikāciju
twofa_desc=Divfaktoru autentifikācija uzlabo konta drošību.
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=Atslēgt divfaktoru autentifikāciju
twofa_scratch_token_regenerate=Ģenerēt jaunu vienreizējo kodu
twofa_scratch_token_regenerated=Tagad Jūsu vienreizējais kods ir %s. Saglabājiet to drošā vietā.
twofa_enroll=Ieslēgt divu faktoru autentifikāciju
twofa_disable_note=Nepieciešamības gadījumā divu faktoru autentifikāciju ir iespējams atslēgt.
twofa_disable_desc=Atslēdzot divu faktoru autentifikāciju Jūsu konts vairs nebūs tik drošs. Vai turpināt?
twofa_enroll=Ieslēgt divfaktoru autentifikāciju
twofa_disable_note=Nepieciešamības gadījumā divfaktoru autentifikāciju ir iespējams atslēgt.
twofa_disable_desc=Atslēdzot divfaktoru autentifikāciju, konts vairs nebūs tik drošs. Vai turpināt?
regenerate_scratch_token_desc=Ja esat aizmirsis vienreizējo kodu vai jau esat to izmantojis, lai autorizētos, atjaunojiet to šeit.
twofa_disabled=Divu faktoru autentifikācija ir atslēgta.
twofa_disabled=Divfaktoru autentifikācija tika atslēgta.
scan_this_image=Noskenējiet šo attēlu ar autentifikācijas lietojumprogrammu:
or_enter_secret=Vai ievadiet šo noslēpumu: %s
then_enter_passcode=Ievadiet piekļuves kodu no lietojumprogrammas:
passcode_invalid=Nederīgs piekļuves kods. Mēģiniet ievadīt atkārtoti.
twofa_enrolled=Kontam tagad ir ieslēgta divu faktoru autentifikācija. Saglabājiet savu vienreizējo kodu (%s), jo tas vairāk netiks parādīts!
twofa_enrolled=Kontam tika ieslēgta divfaktoru autentifikācija. Saglabājiet vienreizējo kodu (%s) drošā vietā, jo to vairāk nebūs iespējams aplūkot!
twofa_failed_get_secret=Neizdevās ielādēt noslēpumu.
webauthn_desc=Drošības atslēgas ir fiziskas ierīces, kas satur kriptogrāfiskas atslēgas. Tās var tikt izmantotas divu faktoru autentifikācijai. Drošības atslēgām ir jāatbalsta <a rel="noreferrer" target="_blank" href="https://w3c.github.io/webauthn/#webauthn-authenticator">WebAuthn autentifikācijas</a> standarts.
@ -871,7 +871,7 @@ webauthn_delete_key_desc=Noņemot drošības atslēgu ar to vairs nebūs iespēj
manage_account_links=Pārvaldīt saistītos kontus
manage_account_links_desc=Šādi ārējie konti ir piesaistīti Jūsu Gitea kontam.
account_links_not_available=Pašlaik nav neviena ārējā konta piesaistīta šim kontam.
link_account=Savienot kontu
link_account=Sasaistīt kontu
remove_account_link=Noņemt saistīto kontu
remove_account_link_desc=Noņemot saistīto kontu, tam tiks liegta piekļuve Jūsu Gitea kontam. Vai turpināt?
remove_account_link_success=Saistītais konts tika noņemts.
@ -1789,7 +1789,7 @@ signing.wont_sign.nokey=Nav pieejama atslēga ar ko parakstīt šo revīziju
signing.wont_sign.never=Revīzijas nekad netiek parakstītas
signing.wont_sign.always=Revīzijas vienmēr tiek parakstītas
signing.wont_sign.pubkey=Revīzija netiks parakstīta, jo Jūsu kontam nav piesaistīta publiskā atslēga
signing.wont_sign.twofa=Jums jābūt ieslēgtai divu faktoru autentifikācijai, lai parakstītu revīzijas
signing.wont_sign.twofa=Jums jābūt ieslēgtai divfaktoru autentifikācijai, lai parakstītu revīzijas
signing.wont_sign.parentsigned=Revīzija netiks parakstīta, jo nav parakstīta vecākā revīzija
signing.wont_sign.basesigned=Sapludināšanas revīzija netiks parakstīta, jo bāzes revīzija nav parakstīta
signing.wont_sign.headsigned=Sapludināšanas revīzija netiks parakstīta, jo pamata revīzija nav parakstīta
@ -1815,8 +1815,8 @@ wiki.save_page=Saglabāt lapu
wiki.last_commit_info=%s laboja lapu %s
wiki.edit_page_button=Labot
wiki.new_page_button=Jauna lapa
wiki.file_revision=Labas revīzija
wiki.wiki_page_revisions=Vikivietnes lapas revīzijas
wiki.file_revision=Lapas rediģējums
wiki.wiki_page_revisions=Vikivietnes lapas rediģējumi
wiki.back_to_wiki=Atpakaļ uz vikivietnes lapu
wiki.delete_page_button=Dzēst lapu
wiki.delete_page_notice_1=Šī darbība izdzēsīs vikivietnes lapu "%s". Vai turpināt?
@ -2339,7 +2339,7 @@ diff.whitespace_show_everything=Rādīt visas izmaiņas
diff.whitespace_ignore_all_whitespace=Ignorēt atstarpes salīdzinot rindas
diff.whitespace_ignore_amount_changes=Ignorēt atstarpju daudzuma izmaiņas
diff.whitespace_ignore_at_eol=Ignorēt atstarpju izmaiņas rindu beigās
diff.stats_desc=<strong>%d mainītis faili</strong> ar <strong>%d papildinājumiem</strong> un <strong>%d dzēšanām</strong>
diff.stats_desc=<strong>%d mainīti faili</strong> ar <strong>%d papildinājumiem</strong> un <strong>%d dzēšanām</strong>
diff.stats_desc_file=%d izmaiņas: %d pievienotas un %d dzēstas
diff.bin=Binārs
diff.bin_not_shown=Bināro failu nav iespējams attēlot.
@ -3230,7 +3230,7 @@ keywords=Atslēgvārdi
details=Papildu informācija
details.author=Autors
details.project_site=Projekta lapa
details.repository_site=Repozitorija lapa
details.repository_site=Repozitorija vietne
details.documentation_site=Dokumentācijas lapa
details.license=Licence
assets=Resursi
@ -3241,7 +3241,7 @@ dependency.version=Versija
alpine.registry=Iestaties šo reģistru pievienojot tā URL <code>/etc/apk/repositories</code> failā:
alpine.registry.key=Lejupielādējiet reģistra publisko RSA atslēgu direktorijā <code>/etc/apk/keys/</code>, lai pārbaudītu indeksa parakstu:
alpine.registry.info=Izvēlieties $branch un $repository no saraksta zemāk.
alpine.install=Lai instalētu pakotni, nepieciešams izpildīt sekojošu komandu:
alpine.install=Lai uzstādītu pakotni, ir jāizpilda šī komanda:
alpine.documentation=Papildus informācija par Alpine reģistru pieejama <a target="_blank" rel="noopener noreferrer" href="%s">dokumentācijā</a>.
alpine.repository=Repozitorija informācija
alpine.repository.branches=Atzari
@ -3250,10 +3250,10 @@ alpine.repository.architectures=Arhitektūras
cargo.registry=Uzstādiet šo reģistru Cargo konfigurācijas failā, piemēram, <code>~/.cargo/config.toml</code>:
cargo.install=Lai instalētu Cargo pakotni, izpildiet sekojošu komandu:
cargo.documentation=Papildus informācija par Cargo reģistru pieejama <a target="_blank" rel="noopener noreferrer" href="https://docs.gitea.io/en-us/packages/cargo/">dokumentācijā</a>.
cargo.details.repository_site=Repozitorija lapa
cargo.details.repository_site=Repozitorija vietne
cargo.details.documentation_site=Dokumentācijas lapa
chef.registry=Uzstādiet šo reģistru failā <code>~/.chef/config.rb</code>:
chef.install=Lai instalētu pakotni, nepieciešams izpildīt sekojošu komandu:
chef.install=Lai uzstādītu pakotni, ir jāizpilda šī komanda:
chef.documentation=Papildus informācija par Chef reģistru pieejama <a target="_blank" rel="noopener noreferrer" href="https://docs.gitea.io/en-us/packages/chef/">dokumentācijā</a>.
composer.registry=Pievienojiet šo reģistru savā <code>~/.composer/config.json</code> failā:
composer.install=Lai instalētu Composer pakotni, izpildiet sekojošu komandu:
@ -3267,7 +3267,7 @@ conan.documentation=Papildus informācija par Conan reģistru pieejama <a target
conda.registry=Uzstādiet šo reģistru kā Conda repozitoriju failā <code>.condarc</code>:
conda.install=Lai instalētu Conda pakotni, izpildiet sekojošu komandu:
conda.documentation=Papildus informācija par Conda reģistru pieejama <a target="_blank" rel="noopener noreferrer" href="https://docs.gitea.io/en-us/packages/conda/">dokumentācijā</a>.
conda.details.repository_site=Repozitorija lapa
conda.details.repository_site=Repozitorija vietne
conda.details.documentation_site=Dokumentācijas lapa
container.details.type=Attēla formāts
container.details.platform=Platforma
@ -3280,11 +3280,11 @@ container.labels=Etiķetes
container.labels.key=Atslēga
container.labels.value=Vērtība
cran.registry=Iestaties šo reģistru savā <code>Rprofile.site</code> failā:
cran.install=Lai instalētu pakotni, nepieciešams izpildīt sekojošu komandu:
cran.install=Lai uzstādītu pakotni, ir jāizpilda šī komanda:
cran.documentation=Papildus informācija par CRAN reģistru pieejama <a target="_blank" rel="noopener noreferrer" href="https://docs.gitea.io/en-us/packages/cran/">dokumentācijā</a>.
debian.registry=Konfigurējiet šo reģistru no komandrindas:
debian.registry.info=Izvēlieties $distribution un $component no saraksta zemāk.
debian.install=Lai instalētu pakotni, nepieciešams izpildīt sekojošu komandu:
debian.install=Lai uzstādītu pakotni, ir jāizpilda šī komanda:
debian.documentation=Papildus informācija par Debian reģistru pieejama <a target="_blank" rel="noopener noreferrer" href="%s">dokumentācijā</a>.
debian.repository=Repozitorija informācija
debian.repository.distributions=Distribūcijas
@ -3321,7 +3321,7 @@ pypi.requires=Nepieciešams Python
pypi.install=Lai instalētu pip pakotni, izpildiet sekojošu komandu:
pypi.documentation=Papildus informācija par PyPI reģistru pieejama <a target="_blank" rel="noopener noreferrer" href="https://docs.gitea.io/en-us/packages/pypi/">dokumentācijā</a>.
rpm.registry=Konfigurējiet šo reģistru no komandrindas:
rpm.install=Lai instalētu pakotni, nepieciešams izpildīt sekojošu komandu:
rpm.install=Lai uzstādītu pakotni, ir jāizpilda šī komanda:
rpm.documentation=Papildus informācija par RPM reģistru pieejama <a target="_blank" rel="noopener noreferrer" href="%s">dokumentācijā</a>.
rubygems.install=Lai instalētu gem pakotni, izpildiet sekojošu komandu:
rubygems.install2=vai pievienojiet Gemfile:

View File

@ -7,6 +7,7 @@ import (
"bytes"
"fmt"
"net/http"
"strings"
actions_model "code.gitea.io/gitea/models/actions"
"code.gitea.io/gitea/models/db"
@ -106,6 +107,12 @@ func List(ctx *context.Context) {
for _, j := range wf.Jobs {
runsOnList := j.RunsOn()
for _, ro := range runsOnList {
if strings.Contains(ro, "${{") {
// Skip if it contains expressions.
// The expressions could be very complex and could not be evaluated here,
// so just skip it, it's OK since it's just a tooltip message.
continue
}
if !allRunnerLabels.Contains(ro) {
workflow.ErrMsg = ctx.Locale.Tr("actions.runs.no_matching_runner_helper", ro)
break

View File

@ -2,9 +2,9 @@ import $ from 'jquery';
import {updateIssuesMeta} from './repo-issue.js';
import {toggleElem} from '../utils/dom.js';
import {htmlEscape} from 'escape-goat';
import {Sortable} from 'sortablejs';
import {confirmModal} from './comp/ConfirmModal.js';
import {showErrorToast} from '../modules/toast.js';
import {createSortable} from '../modules/sortable.js';
function initRepoIssueListCheckboxes() {
const $issueSelectAll = $('.issue-checkbox-all');
@ -176,7 +176,7 @@ async function pinMoveEnd(e) {
});
}
function initIssuePinSort() {
async function initIssuePinSort() {
const pinDiv = document.getElementById('issue-pins');
if (pinDiv === null) return;
@ -189,7 +189,7 @@ function initIssuePinSort() {
// If only one issue pinned, we don't need to make this Sortable
if (pinDiv.children.length < 2) return;
new Sortable(pinDiv, {
createSortable(pinDiv, {
group: 'shared',
animation: 150,
ghostClass: 'card-ghost',

View File

@ -1,6 +1,7 @@
import $ from 'jquery';
import {useLightTextOnBackground} from '../utils/color.js';
import tinycolor from 'tinycolor2';
import {createSortable} from '../modules/sortable.js';
const {csrfToken} = window.config;
@ -55,12 +56,10 @@ async function initRepoProjectSortable() {
const els = document.querySelectorAll('#project-board > .board.sortable');
if (!els.length) return;
const {Sortable} = await import(/* webpackChunkName: "sortable" */'sortablejs');
// the HTML layout is: #project-board > .board > .board-column .board.cards > .board-card.card .content
const mainBoard = els[0];
let boardColumns = mainBoard.getElementsByClassName('board-column');
new Sortable(mainBoard, {
createSortable(mainBoard, {
group: 'board-column',
draggable: '.board-column',
filter: '[data-id="0"]',
@ -89,7 +88,7 @@ async function initRepoProjectSortable() {
for (const boardColumn of boardColumns) {
const boardCardList = boardColumn.getElementsByClassName('board')[0];
new Sortable(boardCardList, {
createSortable(boardCardList, {
group: 'shared',
animation: 150,
ghostClass: 'card-ghost',

View File

@ -0,0 +1,4 @@
export async function createSortable(...args) {
const {Sortable} = await import(/* webpackChunkName: "sortablejs" */'sortablejs');
return new Sortable(...args);
}