Skip to content

Commit

Permalink
Merge remote-tracking branch 'giteaofficial/main'
Browse files Browse the repository at this point in the history
* giteaofficial/main:
  [skip ci] Updated translations via Crowdin
  Import `sortablejs` only once (go-gitea#25936)
  Make environment-to-ini work with INSTALL_LOCK=true (go-gitea#25926)
  Ignore `runs-on` with expressions when warning no matched runners (go-gitea#25917)
  Skip unuseful error message in dev mode when watching local filesystem (go-gitea#25919)
  Add shutting down notice (go-gitea#25920)
  Downgrading Snap to build with node/18 instead of node/20
  Fix margin on the new/edit project page. (go-gitea#25885)
  Add 1.20.0 changelog (go-gitea#25901)
  Fix incorrect milestone count when provide a keyword (go-gitea#25880)
  Avoid opening/closing PRs which are already merged (go-gitea#25883)
  Make `add line comment` buttons focusable (go-gitea#25894)
  Fix "Flash" message usage (go-gitea#25895)
  [skip ci] Updated translations via Crowdin
  Add support for different Maven POM encoding (go-gitea#25873)
  • Loading branch information
zjjhot committed Jul 18, 2023
2 parents 21d25b9 + 24b49bc commit 1880269
Show file tree
Hide file tree
Showing 23 changed files with 856 additions and 91 deletions.
615 changes: 615 additions & 0 deletions CHANGELOG.md

Large diffs are not rendered by default.

4 changes: 3 additions & 1 deletion contrib/environment-to-ini/environment-to-ini.go
Original file line number Diff line number Diff line change
Expand Up @@ -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"),
Expand All @@ -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")
Expand Down
2 changes: 1 addition & 1 deletion modules/assetfs/layered.go
Original file line number Diff line number Diff line change
Expand Up @@ -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)
}
}
Expand Down
7 changes: 6 additions & 1 deletion modules/packages/maven/metadata.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ import (
"io"

"code.gitea.io/gitea/modules/validation"

"golang.org/x/net/html/charset"
)

// Metadata represents the metadata of a Maven package
Expand Down Expand Up @@ -52,7 +54,10 @@ type pomStruct struct {
// ParsePackageMetaData parses the metadata of a pom file
func ParsePackageMetaData(r io.Reader) (*Metadata, error) {
var pom pomStruct
if err := xml.NewDecoder(r).Decode(&pom); err != nil {

dec := xml.NewDecoder(r)
dec.CharsetReader = charset.NewReaderLabel
if err := dec.Decode(&pom); err != nil {
return nil, err
}

Expand Down
17 changes: 17 additions & 0 deletions modules/packages/maven/metadata_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import (
"testing"

"github.com/stretchr/testify/assert"
"golang.org/x/text/encoding/charmap"
)

const (
Expand Down Expand Up @@ -69,4 +70,20 @@ func TestParsePackageMetaData(t *testing.T) {
assert.Equal(t, dependencyArtifactID, m.Dependencies[0].ArtifactID)
assert.Equal(t, dependencyVersion, m.Dependencies[0].Version)
})

t.Run("Encoding", func(t *testing.T) {
// UTF-8 is default but the metadata could be encoded differently
pomContent8859_1, err := charmap.ISO8859_1.NewEncoder().String(
strings.ReplaceAll(
pomContent,
`<?xml version="1.0"?>`,
`<?xml version="1.0" encoding="ISO-8859-1"?>`,
),
)
assert.NoError(t, err)

m, err := ParsePackageMetaData(strings.NewReader(pomContent8859_1))
assert.NoError(t, err)
assert.NotNil(t, m)
})
}
2 changes: 1 addition & 1 deletion modules/setting/config_provider.go
Original file line number Diff line number Diff line change
Expand Up @@ -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)
}
}

Expand Down
22 changes: 4 additions & 18 deletions modules/web/middleware/flash.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,17 +5,6 @@ package middleware

import "net/url"

// flashes enumerates all the flash types
const (
SuccessFlash = "SuccessMsg"
ErrorFlash = "ErrorMsg"
WarnFlash = "WarningMsg"
InfoFlash = "InfoMsg"
)

// FlashNow FIXME:
var FlashNow bool

// Flash represents a one time data transfer between two requests.
type Flash struct {
DataStore ContextDataStore
Expand All @@ -27,15 +16,12 @@ func (f *Flash) set(name, msg string, current ...bool) {
if f.Values == nil {
f.Values = make(map[string][]string)
}
isShow := false
if (len(current) == 0 && FlashNow) ||
(len(current) > 0 && current[0]) {
isShow = true
}

if isShow {
showInCurrentPage := len(current) > 0 && current[0]
if showInCurrentPage {
// assign it to the context data, then the template can use ".Flash.XxxMsg" to render the message
f.DataStore.GetData()["Flash"] = f
} else {
// the message map will be saved into the cookie and be shown in next response (a new page response which decodes the cookie)
f.Set(name, msg)
}
}
Expand Down
121 changes: 118 additions & 3 deletions options/locale/locale_de-DE.ini

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions options/locale/locale_en-US.ini
Original file line number Diff line number Diff line change
Expand Up @@ -2375,6 +2375,7 @@ diff.show_more = Show More
diff.load = Load Diff
diff.generated = generated
diff.vendored = vendored
diff.comment.add_line_comment = Add line comment
diff.comment.placeholder = Leave a comment
diff.comment.markdown_info = Styling with markdown is supported.
diff.comment.add_single_comment = Add single comment
Expand Down
58 changes: 29 additions & 29 deletions options/locale/locale_lv-LV.ini
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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.
Expand Down Expand Up @@ -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
Expand All @@ -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.
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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.
Expand All @@ -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.
Expand Down Expand Up @@ -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
Expand All @@ -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?
Expand Down Expand Up @@ -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.
Expand Down Expand Up @@ -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
Expand All @@ -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
Expand All @@ -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:
Expand All @@ -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
Expand All @@ -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
Expand Down Expand Up @@ -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:
Expand Down
8 changes: 7 additions & 1 deletion routers/api/packages/maven/maven.go
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,11 @@ var (

func apiError(ctx *context.Context, status int, obj any) {
helper.LogAndProcessError(ctx, status, obj, func(message string) {
// The maven client does not present the error message to the user. Log it for users with access to server logs.
if status == http.StatusBadRequest || status == http.StatusInternalServerError {
log.Error(message)
}

ctx.PlainText(status, message)
})
}
Expand Down Expand Up @@ -320,7 +325,8 @@ func UploadPackageFile(ctx *context.Context) {
var err error
pvci.Metadata, err = maven_module.ParsePackageMetaData(buf)
if err != nil {
log.Error("Error parsing package metadata: %v", err)
apiError(ctx, http.StatusBadRequest, err)
return
}

if pvci.Metadata != nil {
Expand Down
7 changes: 7 additions & 0 deletions routers/web/repo/actions/actions.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import (
"bytes"
"fmt"
"net/http"
"strings"

actions_model "code.gitea.io/gitea/models/actions"
"code.gitea.io/gitea/models/db"
Expand Down Expand Up @@ -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
Expand Down
8 changes: 8 additions & 0 deletions routers/web/repo/issue.go
Original file line number Diff line number Diff line change
Expand Up @@ -2762,7 +2762,15 @@ func UpdateIssueStatus(ctx *context.Context) {
ctx.ServerError("LoadRepositories", err)
return
}
if err := issues.LoadPullRequests(ctx); err != nil {
ctx.ServerError("LoadPullRequests", err)
return
}

for _, issue := range issues {
if issue.IsPull && issue.PullRequest.HasMerged {
continue
}
if issue.IsClosed != isClosed {
if err := issue_service.ChangeStatus(issue, ctx.Doer, "", isClosed); err != nil {
if issues_model.IsErrDependenciesLeft(err) {
Expand Down
Loading

0 comments on commit 1880269

Please sign in to comment.