mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2025-01-26 15:19:47 +01:00
Merge branch 'forgejo' into repocard
This commit is contained in:
commit
df570a1d71
29 changed files with 782 additions and 1947 deletions
|
@ -28,7 +28,7 @@ jobs:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
- id: forgejo
|
- id: forgejo
|
||||||
uses: https://code.forgejo.org/actions/setup-forgejo@v1.0.1
|
uses: https://code.forgejo.org/actions/setup-forgejo@v2.0.4
|
||||||
with:
|
with:
|
||||||
user: root
|
user: root
|
||||||
password: admin1234
|
password: admin1234
|
||||||
|
|
|
@ -158,7 +158,7 @@ jobs:
|
||||||
|
|
||||||
- name: build container & release
|
- name: build container & release
|
||||||
if: ${{ secrets.TOKEN != '' }}
|
if: ${{ secrets.TOKEN != '' }}
|
||||||
uses: https://code.forgejo.org/forgejo/forgejo-build-publish/build@v5.1.1
|
uses: https://code.forgejo.org/forgejo/forgejo-build-publish/build@v5.2.1
|
||||||
with:
|
with:
|
||||||
forgejo: "${{ env.GITHUB_SERVER_URL }}"
|
forgejo: "${{ env.GITHUB_SERVER_URL }}"
|
||||||
owner: "${{ env.GITHUB_REPOSITORY_OWNER }}"
|
owner: "${{ env.GITHUB_REPOSITORY_OWNER }}"
|
||||||
|
@ -177,7 +177,7 @@ jobs:
|
||||||
|
|
||||||
- name: build rootless container
|
- name: build rootless container
|
||||||
if: ${{ secrets.TOKEN != '' }}
|
if: ${{ secrets.TOKEN != '' }}
|
||||||
uses: https://code.forgejo.org/forgejo/forgejo-build-publish/build@v5.1.1
|
uses: https://code.forgejo.org/forgejo/forgejo-build-publish/build@v5.2.1
|
||||||
with:
|
with:
|
||||||
forgejo: "${{ env.GITHUB_SERVER_URL }}"
|
forgejo: "${{ env.GITHUB_SERVER_URL }}"
|
||||||
owner: "${{ env.GITHUB_REPOSITORY_OWNER }}"
|
owner: "${{ env.GITHUB_REPOSITORY_OWNER }}"
|
||||||
|
@ -195,7 +195,7 @@ jobs:
|
||||||
|
|
||||||
- name: end-to-end tests
|
- name: end-to-end tests
|
||||||
if: ${{ secrets.TOKEN != '' && vars.ROLE == 'forgejo-integration' && vars.SKIP_END_TO_END != 'true' }}
|
if: ${{ secrets.TOKEN != '' && vars.ROLE == 'forgejo-integration' && vars.SKIP_END_TO_END != 'true' }}
|
||||||
uses: https://code.forgejo.org/actions/cascading-pr@v2
|
uses: https://code.forgejo.org/actions/cascading-pr@v2.2.0
|
||||||
with:
|
with:
|
||||||
origin-url: ${{ env.GITHUB_SERVER_URL }}
|
origin-url: ${{ env.GITHUB_SERVER_URL }}
|
||||||
origin-repo: ${{ github.repository }}
|
origin-repo: ${{ github.repository }}
|
||||||
|
|
|
@ -41,7 +41,7 @@ jobs:
|
||||||
with:
|
with:
|
||||||
fetch-depth: '0'
|
fetch-depth: '0'
|
||||||
show-progress: 'false'
|
show-progress: 'false'
|
||||||
- uses: actions/cascading-pr@v2
|
- uses: https://code.forgejo.org/actions/cascading-pr@v2.1.1
|
||||||
with:
|
with:
|
||||||
origin-url: ${{ env.GITHUB_SERVER_URL }}
|
origin-url: ${{ env.GITHUB_SERVER_URL }}
|
||||||
origin-repo: ${{ github.repository }}
|
origin-repo: ${{ github.repository }}
|
||||||
|
|
|
@ -25,7 +25,7 @@ jobs:
|
||||||
|
|
||||||
runs-on: docker
|
runs-on: docker
|
||||||
container:
|
container:
|
||||||
image: code.forgejo.org/forgejo-contrib/renovate:39.57.4
|
image: code.forgejo.org/forgejo-contrib/renovate:39.69.2
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Load renovate repo cache
|
- name: Load renovate repo cache
|
||||||
|
|
4
Makefile
4
Makefile
|
@ -39,7 +39,7 @@ XGO_VERSION := go-1.21.x
|
||||||
AIR_PACKAGE ?= github.com/air-verse/air@v1 # renovate: datasource=go
|
AIR_PACKAGE ?= github.com/air-verse/air@v1 # renovate: datasource=go
|
||||||
EDITORCONFIG_CHECKER_PACKAGE ?= github.com/editorconfig-checker/editorconfig-checker/v3/cmd/editorconfig-checker@v3.0.3 # renovate: datasource=go
|
EDITORCONFIG_CHECKER_PACKAGE ?= github.com/editorconfig-checker/editorconfig-checker/v3/cmd/editorconfig-checker@v3.0.3 # renovate: datasource=go
|
||||||
GOFUMPT_PACKAGE ?= mvdan.cc/gofumpt@v0.7.0 # renovate: datasource=go
|
GOFUMPT_PACKAGE ?= mvdan.cc/gofumpt@v0.7.0 # renovate: datasource=go
|
||||||
GOLANGCI_LINT_PACKAGE ?= github.com/golangci/golangci-lint/cmd/golangci-lint@v1.62.0 # renovate: datasource=go
|
GOLANGCI_LINT_PACKAGE ?= github.com/golangci/golangci-lint/cmd/golangci-lint@v1.62.2 # renovate: datasource=go
|
||||||
GXZ_PACKAGE ?= github.com/ulikunitz/xz/cmd/gxz@v0.5.11 # renovate: datasource=go
|
GXZ_PACKAGE ?= github.com/ulikunitz/xz/cmd/gxz@v0.5.11 # renovate: datasource=go
|
||||||
MISSPELL_PACKAGE ?= github.com/golangci/misspell/cmd/misspell@v0.6.0 # renovate: datasource=go
|
MISSPELL_PACKAGE ?= github.com/golangci/misspell/cmd/misspell@v0.6.0 # renovate: datasource=go
|
||||||
SWAGGER_PACKAGE ?= github.com/go-swagger/go-swagger/cmd/swagger@v0.31.0 # renovate: datasource=go
|
SWAGGER_PACKAGE ?= github.com/go-swagger/go-swagger/cmd/swagger@v0.31.0 # renovate: datasource=go
|
||||||
|
@ -49,7 +49,7 @@ GOVULNCHECK_PACKAGE ?= golang.org/x/vuln/cmd/govulncheck@v1 # renovate: datasour
|
||||||
DEADCODE_PACKAGE ?= golang.org/x/tools/cmd/deadcode@v0.28.0 # renovate: datasource=go
|
DEADCODE_PACKAGE ?= golang.org/x/tools/cmd/deadcode@v0.28.0 # renovate: datasource=go
|
||||||
GOMOCK_PACKAGE ?= go.uber.org/mock/mockgen@v0.4.0 # renovate: datasource=go
|
GOMOCK_PACKAGE ?= go.uber.org/mock/mockgen@v0.4.0 # renovate: datasource=go
|
||||||
GOPLS_PACKAGE ?= golang.org/x/tools/gopls@v0.17.0 # renovate: datasource=go
|
GOPLS_PACKAGE ?= golang.org/x/tools/gopls@v0.17.0 # renovate: datasource=go
|
||||||
RENOVATE_NPM_PACKAGE ?= renovate@39.57.4 # renovate: datasource=docker packageName=code.forgejo.org/forgejo-contrib/renovate
|
RENOVATE_NPM_PACKAGE ?= renovate@39.69.2 # renovate: datasource=docker packageName=code.forgejo.org/forgejo-contrib/renovate
|
||||||
|
|
||||||
# https://github.com/disposable-email-domains/disposable-email-domains/commits/main/
|
# https://github.com/disposable-email-domains/disposable-email-domains/commits/main/
|
||||||
DISPOSABLE_EMAILS_SHA ?= 0c27e671231d27cf66370034d7f6818037416989 # renovate: ...
|
DISPOSABLE_EMAILS_SHA ?= 0c27e671231d27cf66370034d7f6818037416989 # renovate: ...
|
||||||
|
|
10
go.mod
10
go.mod
|
@ -25,7 +25,7 @@ require (
|
||||||
github.com/SaveTheRbtz/zstd-seekable-format-go/pkg v0.7.2
|
github.com/SaveTheRbtz/zstd-seekable-format-go/pkg v0.7.2
|
||||||
github.com/alecthomas/chroma/v2 v2.14.0
|
github.com/alecthomas/chroma/v2 v2.14.0
|
||||||
github.com/blakesmith/ar v0.0.0-20190502131153-809d4375e1fb
|
github.com/blakesmith/ar v0.0.0-20190502131153-809d4375e1fb
|
||||||
github.com/blevesearch/bleve/v2 v2.4.3
|
github.com/blevesearch/bleve/v2 v2.4.4
|
||||||
github.com/buildkite/terminal-to-html/v3 v3.16.4
|
github.com/buildkite/terminal-to-html/v3 v3.16.4
|
||||||
github.com/caddyserver/certmagic v0.21.4
|
github.com/caddyserver/certmagic v0.21.4
|
||||||
github.com/chi-middleware/proxy v1.1.1
|
github.com/chi-middleware/proxy v1.1.1
|
||||||
|
@ -40,7 +40,7 @@ require (
|
||||||
github.com/gliderlabs/ssh v0.3.8
|
github.com/gliderlabs/ssh v0.3.8
|
||||||
github.com/go-ap/activitypub v0.0.0-20231114162308-e219254dc5c9
|
github.com/go-ap/activitypub v0.0.0-20231114162308-e219254dc5c9
|
||||||
github.com/go-ap/jsonld v0.0.0-20221030091449-f2a191312c73
|
github.com/go-ap/jsonld v0.0.0-20221030091449-f2a191312c73
|
||||||
github.com/go-chi/chi/v5 v5.1.0
|
github.com/go-chi/chi/v5 v5.2.0
|
||||||
github.com/go-chi/cors v1.2.1
|
github.com/go-chi/cors v1.2.1
|
||||||
github.com/go-co-op/gocron v1.37.0
|
github.com/go-co-op/gocron v1.37.0
|
||||||
github.com/go-enry/go-enry/v2 v2.9.1
|
github.com/go-enry/go-enry/v2 v2.9.1
|
||||||
|
@ -113,7 +113,7 @@ require (
|
||||||
golang.org/x/text v0.21.0
|
golang.org/x/text v0.21.0
|
||||||
golang.org/x/tools v0.28.0
|
golang.org/x/tools v0.28.0
|
||||||
google.golang.org/grpc v1.68.0
|
google.golang.org/grpc v1.68.0
|
||||||
google.golang.org/protobuf v1.35.1
|
google.golang.org/protobuf v1.36.0
|
||||||
gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df
|
gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df
|
||||||
gopkg.in/ini.v1 v1.67.0
|
gopkg.in/ini.v1 v1.67.0
|
||||||
gopkg.in/yaml.v3 v3.0.1
|
gopkg.in/yaml.v3 v3.0.1
|
||||||
|
@ -144,7 +144,7 @@ require (
|
||||||
github.com/bits-and-blooms/bitset v1.13.0 // indirect
|
github.com/bits-and-blooms/bitset v1.13.0 // indirect
|
||||||
github.com/blevesearch/bleve_index_api v1.1.12 // indirect
|
github.com/blevesearch/bleve_index_api v1.1.12 // indirect
|
||||||
github.com/blevesearch/geo v0.1.20 // indirect
|
github.com/blevesearch/geo v0.1.20 // indirect
|
||||||
github.com/blevesearch/go-faiss v1.0.23 // indirect
|
github.com/blevesearch/go-faiss v1.0.24 // indirect
|
||||||
github.com/blevesearch/go-porterstemmer v1.0.3 // indirect
|
github.com/blevesearch/go-porterstemmer v1.0.3 // indirect
|
||||||
github.com/blevesearch/gtreap v0.1.1 // indirect
|
github.com/blevesearch/gtreap v0.1.1 // indirect
|
||||||
github.com/blevesearch/mmap-go v1.0.4 // indirect
|
github.com/blevesearch/mmap-go v1.0.4 // indirect
|
||||||
|
@ -158,7 +158,7 @@ require (
|
||||||
github.com/blevesearch/zapx/v13 v13.3.10 // indirect
|
github.com/blevesearch/zapx/v13 v13.3.10 // indirect
|
||||||
github.com/blevesearch/zapx/v14 v14.3.10 // indirect
|
github.com/blevesearch/zapx/v14 v14.3.10 // indirect
|
||||||
github.com/blevesearch/zapx/v15 v15.3.16 // indirect
|
github.com/blevesearch/zapx/v15 v15.3.16 // indirect
|
||||||
github.com/blevesearch/zapx/v16 v16.1.8 // indirect
|
github.com/blevesearch/zapx/v16 v16.1.9-0.20241217210638-a0519e7caf3b // indirect
|
||||||
github.com/boombuler/barcode v1.0.1 // indirect
|
github.com/boombuler/barcode v1.0.1 // indirect
|
||||||
github.com/bradfitz/gomemcache v0.0.0-20230905024940-24af94b03874 // indirect
|
github.com/bradfitz/gomemcache v0.0.0-20230905024940-24af94b03874 // indirect
|
||||||
github.com/caddyserver/zerossl v0.1.3 // indirect
|
github.com/caddyserver/zerossl v0.1.3 // indirect
|
||||||
|
|
20
go.sum
20
go.sum
|
@ -100,14 +100,14 @@ github.com/bits-and-blooms/bitset v1.13.0 h1:bAQ9OPNFYbGHV6Nez0tmNI0RiEu7/hxlYJR
|
||||||
github.com/bits-and-blooms/bitset v1.13.0/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6a/7QIWpPxHddWR8=
|
github.com/bits-and-blooms/bitset v1.13.0/go.mod h1:7hO7Gc7Pp1vODcmWvKMRA9BNmbv6a/7QIWpPxHddWR8=
|
||||||
github.com/blakesmith/ar v0.0.0-20190502131153-809d4375e1fb h1:m935MPodAbYS46DG4pJSv7WO+VECIWUQ7OJYSoTrMh4=
|
github.com/blakesmith/ar v0.0.0-20190502131153-809d4375e1fb h1:m935MPodAbYS46DG4pJSv7WO+VECIWUQ7OJYSoTrMh4=
|
||||||
github.com/blakesmith/ar v0.0.0-20190502131153-809d4375e1fb/go.mod h1:PkYb9DJNAwrSvRx5DYA+gUcOIgTGVMNkfSCbZM8cWpI=
|
github.com/blakesmith/ar v0.0.0-20190502131153-809d4375e1fb/go.mod h1:PkYb9DJNAwrSvRx5DYA+gUcOIgTGVMNkfSCbZM8cWpI=
|
||||||
github.com/blevesearch/bleve/v2 v2.4.3 h1:XDYj+1prgX84L2Cf+V3ojrOPqXxy0qxyd2uLMmeuD+4=
|
github.com/blevesearch/bleve/v2 v2.4.4 h1:RwwLGjUm54SwyyykbrZs4vc1qjzYic4ZnAnY9TwNl60=
|
||||||
github.com/blevesearch/bleve/v2 v2.4.3/go.mod h1:hEPDPrbYw3vyrm5VOa36GyS4bHWuIf4Fflp7460QQXY=
|
github.com/blevesearch/bleve/v2 v2.4.4/go.mod h1:fa2Eo6DP7JR+dMFpQe+WiZXINKSunh7WBtlDGbolKXk=
|
||||||
github.com/blevesearch/bleve_index_api v1.1.12 h1:P4bw9/G/5rulOF7SJ9l4FsDoo7UFJ+5kexNy1RXfegY=
|
github.com/blevesearch/bleve_index_api v1.1.12 h1:P4bw9/G/5rulOF7SJ9l4FsDoo7UFJ+5kexNy1RXfegY=
|
||||||
github.com/blevesearch/bleve_index_api v1.1.12/go.mod h1:PbcwjIcRmjhGbkS/lJCpfgVSMROV6TRubGGAODaK1W8=
|
github.com/blevesearch/bleve_index_api v1.1.12/go.mod h1:PbcwjIcRmjhGbkS/lJCpfgVSMROV6TRubGGAODaK1W8=
|
||||||
github.com/blevesearch/geo v0.1.20 h1:paaSpu2Ewh/tn5DKn/FB5SzvH0EWupxHEIwbCk/QPqM=
|
github.com/blevesearch/geo v0.1.20 h1:paaSpu2Ewh/tn5DKn/FB5SzvH0EWupxHEIwbCk/QPqM=
|
||||||
github.com/blevesearch/geo v0.1.20/go.mod h1:DVG2QjwHNMFmjo+ZgzrIq2sfCh6rIHzy9d9d0B59I6w=
|
github.com/blevesearch/geo v0.1.20/go.mod h1:DVG2QjwHNMFmjo+ZgzrIq2sfCh6rIHzy9d9d0B59I6w=
|
||||||
github.com/blevesearch/go-faiss v1.0.23 h1:Wmc5AFwDLKGl2L6mjLX1Da3vCL0EKa2uHHSorcIS1Uc=
|
github.com/blevesearch/go-faiss v1.0.24 h1:K79IvKjoKHdi7FdiXEsAhxpMuns0x4fM0BO93bW5jLI=
|
||||||
github.com/blevesearch/go-faiss v1.0.23/go.mod h1:OMGQwOaRRYxrmeNdMrXJPvVx8gBnvE5RYrr0BahNnkk=
|
github.com/blevesearch/go-faiss v1.0.24/go.mod h1:OMGQwOaRRYxrmeNdMrXJPvVx8gBnvE5RYrr0BahNnkk=
|
||||||
github.com/blevesearch/go-porterstemmer v1.0.3 h1:GtmsqID0aZdCSNiY8SkuPJ12pD4jI+DdXTAn4YRcHCo=
|
github.com/blevesearch/go-porterstemmer v1.0.3 h1:GtmsqID0aZdCSNiY8SkuPJ12pD4jI+DdXTAn4YRcHCo=
|
||||||
github.com/blevesearch/go-porterstemmer v1.0.3/go.mod h1:angGc5Ht+k2xhJdZi511LtmxuEf0OVpvUUNrwmM1P7M=
|
github.com/blevesearch/go-porterstemmer v1.0.3/go.mod h1:angGc5Ht+k2xhJdZi511LtmxuEf0OVpvUUNrwmM1P7M=
|
||||||
github.com/blevesearch/gtreap v0.1.1 h1:2JWigFrzDMR+42WGIN/V2p0cUvn4UP3C4Q5nmaZGW8Y=
|
github.com/blevesearch/gtreap v0.1.1 h1:2JWigFrzDMR+42WGIN/V2p0cUvn4UP3C4Q5nmaZGW8Y=
|
||||||
|
@ -134,8 +134,8 @@ github.com/blevesearch/zapx/v14 v14.3.10 h1:SG6xlsL+W6YjhX5N3aEiL/2tcWh3DO75Bnz7
|
||||||
github.com/blevesearch/zapx/v14 v14.3.10/go.mod h1:qqyuR0u230jN1yMmE4FIAuCxmahRQEOehF78m6oTgns=
|
github.com/blevesearch/zapx/v14 v14.3.10/go.mod h1:qqyuR0u230jN1yMmE4FIAuCxmahRQEOehF78m6oTgns=
|
||||||
github.com/blevesearch/zapx/v15 v15.3.16 h1:Ct3rv7FUJPfPk99TI/OofdC+Kpb4IdyfdMH48sb+FmE=
|
github.com/blevesearch/zapx/v15 v15.3.16 h1:Ct3rv7FUJPfPk99TI/OofdC+Kpb4IdyfdMH48sb+FmE=
|
||||||
github.com/blevesearch/zapx/v15 v15.3.16/go.mod h1:Turk/TNRKj9es7ZpKK95PS7f6D44Y7fAFy8F4LXQtGg=
|
github.com/blevesearch/zapx/v15 v15.3.16/go.mod h1:Turk/TNRKj9es7ZpKK95PS7f6D44Y7fAFy8F4LXQtGg=
|
||||||
github.com/blevesearch/zapx/v16 v16.1.8 h1:Bxzpw6YQpFs7UjoCV1+RvDw6fmAT2GZxldwX8b3wVBM=
|
github.com/blevesearch/zapx/v16 v16.1.9-0.20241217210638-a0519e7caf3b h1:ju9Az5YgrzCeK3M1QwvZIpxYhChkXp7/L0RhDYsxXoE=
|
||||||
github.com/blevesearch/zapx/v16 v16.1.8/go.mod h1:JqQlOqlRVaYDkpLIl3JnKql8u4zKTNlVEa3nLsi0Gn8=
|
github.com/blevesearch/zapx/v16 v16.1.9-0.20241217210638-a0519e7caf3b/go.mod h1:BlrYNpOu4BvVRslmIG+rLtKhmjIaRhIbG8sb9scGTwI=
|
||||||
github.com/boombuler/barcode v1.0.1-0.20190219062509-6c824513bacc/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8=
|
github.com/boombuler/barcode v1.0.1-0.20190219062509-6c824513bacc/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8=
|
||||||
github.com/boombuler/barcode v1.0.1 h1:NDBbPmhS+EqABEs5Kg3n/5ZNjy73Pz7SIV+KCeqyXcs=
|
github.com/boombuler/barcode v1.0.1 h1:NDBbPmhS+EqABEs5Kg3n/5ZNjy73Pz7SIV+KCeqyXcs=
|
||||||
github.com/boombuler/barcode v1.0.1/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8=
|
github.com/boombuler/barcode v1.0.1/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8=
|
||||||
|
@ -236,8 +236,8 @@ github.com/go-ap/jsonld v0.0.0-20221030091449-f2a191312c73/go.mod h1:jyveZeGw5La
|
||||||
github.com/go-asn1-ber/asn1-ber v1.5.5 h1:MNHlNMBDgEKD4TcKr36vQN68BA00aDfjIt3/bD50WnA=
|
github.com/go-asn1-ber/asn1-ber v1.5.5 h1:MNHlNMBDgEKD4TcKr36vQN68BA00aDfjIt3/bD50WnA=
|
||||||
github.com/go-asn1-ber/asn1-ber v1.5.5/go.mod h1:hEBeB/ic+5LoWskz+yKT7vGhhPYkProFKoKdwZRWMe0=
|
github.com/go-asn1-ber/asn1-ber v1.5.5/go.mod h1:hEBeB/ic+5LoWskz+yKT7vGhhPYkProFKoKdwZRWMe0=
|
||||||
github.com/go-chi/chi/v5 v5.0.1/go.mod h1:DslCQbL2OYiznFReuXYUmQ2hGd1aDpCnlMNITLSKoi8=
|
github.com/go-chi/chi/v5 v5.0.1/go.mod h1:DslCQbL2OYiznFReuXYUmQ2hGd1aDpCnlMNITLSKoi8=
|
||||||
github.com/go-chi/chi/v5 v5.1.0 h1:acVI1TYaD+hhedDJ3r54HyA6sExp3HfXq7QWEEY/xMw=
|
github.com/go-chi/chi/v5 v5.2.0 h1:Aj1EtB0qR2Rdo2dG4O94RIU35w2lvQSj6BRA4+qwFL0=
|
||||||
github.com/go-chi/chi/v5 v5.1.0/go.mod h1:DslCQbL2OYiznFReuXYUmQ2hGd1aDpCnlMNITLSKoi8=
|
github.com/go-chi/chi/v5 v5.2.0/go.mod h1:DslCQbL2OYiznFReuXYUmQ2hGd1aDpCnlMNITLSKoi8=
|
||||||
github.com/go-chi/cors v1.2.1 h1:xEC8UT3Rlp2QuWNEr4Fs/c2EAGVKBwy/1vHx3bppil4=
|
github.com/go-chi/cors v1.2.1 h1:xEC8UT3Rlp2QuWNEr4Fs/c2EAGVKBwy/1vHx3bppil4=
|
||||||
github.com/go-chi/cors v1.2.1/go.mod h1:sSbTewc+6wYHBBCW7ytsFSn836hqM7JxpglAy2Vzc58=
|
github.com/go-chi/cors v1.2.1/go.mod h1:sSbTewc+6wYHBBCW7ytsFSn836hqM7JxpglAy2Vzc58=
|
||||||
github.com/go-co-op/gocron v1.37.0 h1:ZYDJGtQ4OMhTLKOKMIch+/CY70Brbb1dGdooLEhh7b0=
|
github.com/go-co-op/gocron v1.37.0 h1:ZYDJGtQ4OMhTLKOKMIch+/CY70Brbb1dGdooLEhh7b0=
|
||||||
|
@ -857,8 +857,8 @@ google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzi
|
||||||
google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
|
google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
|
||||||
google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
|
google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
|
||||||
google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
|
google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
|
||||||
google.golang.org/protobuf v1.35.1 h1:m3LfL6/Ca+fqnjnlqQXNpFPABW1UD7mjh8KO2mKFytA=
|
google.golang.org/protobuf v1.36.0 h1:mjIs9gYtt56AzC4ZaffQuh88TZurBGhIJMBZGSxNerQ=
|
||||||
google.golang.org/protobuf v1.35.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE=
|
google.golang.org/protobuf v1.36.0/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE=
|
||||||
gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc h1:2gGKlE2+asNV9m7xrywl36YYNnBG5ZQ0r/BOOxqPpmk=
|
gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc h1:2gGKlE2+asNV9m7xrywl36YYNnBG5ZQ0r/BOOxqPpmk=
|
||||||
gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc/go.mod h1:m7x9LTH6d71AHyAX77c9yqWCCa3UKHcVEj9y7hAtKDk=
|
gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc/go.mod h1:m7x9LTH6d71AHyAX77c9yqWCCa3UKHcVEj9y7hAtKDk=
|
||||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||||
|
|
|
@ -36,6 +36,7 @@
|
||||||
repo_admin_change_team_access: false
|
repo_admin_change_team_access: false
|
||||||
theme: ""
|
theme: ""
|
||||||
keep_activity_private: false
|
keep_activity_private: false
|
||||||
|
created_unix: 1672578000
|
||||||
|
|
||||||
-
|
-
|
||||||
id: 2
|
id: 2
|
||||||
|
@ -74,6 +75,7 @@
|
||||||
repo_admin_change_team_access: false
|
repo_admin_change_team_access: false
|
||||||
theme: ""
|
theme: ""
|
||||||
keep_activity_private: false
|
keep_activity_private: false
|
||||||
|
created_unix: 1672578010
|
||||||
|
|
||||||
-
|
-
|
||||||
id: 3
|
id: 3
|
||||||
|
@ -111,6 +113,7 @@
|
||||||
repo_admin_change_team_access: false
|
repo_admin_change_team_access: false
|
||||||
theme: ""
|
theme: ""
|
||||||
keep_activity_private: false
|
keep_activity_private: false
|
||||||
|
created_unix: 1672578020
|
||||||
|
|
||||||
-
|
-
|
||||||
id: 4
|
id: 4
|
||||||
|
@ -148,6 +151,7 @@
|
||||||
repo_admin_change_team_access: false
|
repo_admin_change_team_access: false
|
||||||
theme: ""
|
theme: ""
|
||||||
keep_activity_private: false
|
keep_activity_private: false
|
||||||
|
created_unix: 1672578030
|
||||||
|
|
||||||
-
|
-
|
||||||
id: 5
|
id: 5
|
||||||
|
@ -185,6 +189,7 @@
|
||||||
repo_admin_change_team_access: false
|
repo_admin_change_team_access: false
|
||||||
theme: ""
|
theme: ""
|
||||||
keep_activity_private: false
|
keep_activity_private: false
|
||||||
|
created_unix: 1672578040
|
||||||
|
|
||||||
-
|
-
|
||||||
id: 6
|
id: 6
|
||||||
|
@ -222,6 +227,7 @@
|
||||||
repo_admin_change_team_access: false
|
repo_admin_change_team_access: false
|
||||||
theme: ""
|
theme: ""
|
||||||
keep_activity_private: false
|
keep_activity_private: false
|
||||||
|
created_unix: 1672578050
|
||||||
|
|
||||||
-
|
-
|
||||||
id: 7
|
id: 7
|
||||||
|
@ -259,6 +265,7 @@
|
||||||
repo_admin_change_team_access: false
|
repo_admin_change_team_access: false
|
||||||
theme: ""
|
theme: ""
|
||||||
keep_activity_private: false
|
keep_activity_private: false
|
||||||
|
created_unix: 1672578060
|
||||||
|
|
||||||
-
|
-
|
||||||
id: 8
|
id: 8
|
||||||
|
@ -296,6 +303,7 @@
|
||||||
repo_admin_change_team_access: false
|
repo_admin_change_team_access: false
|
||||||
theme: ""
|
theme: ""
|
||||||
keep_activity_private: false
|
keep_activity_private: false
|
||||||
|
created_unix: 1672578070
|
||||||
|
|
||||||
-
|
-
|
||||||
id: 9
|
id: 9
|
||||||
|
@ -333,7 +341,7 @@
|
||||||
repo_admin_change_team_access: false
|
repo_admin_change_team_access: false
|
||||||
theme: ""
|
theme: ""
|
||||||
keep_activity_private: false
|
keep_activity_private: false
|
||||||
created_unix: 1730468968
|
created_unix: 1672578080
|
||||||
|
|
||||||
-
|
-
|
||||||
id: 10
|
id: 10
|
||||||
|
@ -371,6 +379,7 @@
|
||||||
repo_admin_change_team_access: false
|
repo_admin_change_team_access: false
|
||||||
theme: ""
|
theme: ""
|
||||||
keep_activity_private: false
|
keep_activity_private: false
|
||||||
|
created_unix: 1672578090
|
||||||
|
|
||||||
-
|
-
|
||||||
id: 11
|
id: 11
|
||||||
|
@ -408,6 +417,7 @@
|
||||||
repo_admin_change_team_access: false
|
repo_admin_change_team_access: false
|
||||||
theme: ""
|
theme: ""
|
||||||
keep_activity_private: false
|
keep_activity_private: false
|
||||||
|
created_unix: 1672578100
|
||||||
|
|
||||||
-
|
-
|
||||||
id: 12
|
id: 12
|
||||||
|
@ -445,6 +455,7 @@
|
||||||
repo_admin_change_team_access: false
|
repo_admin_change_team_access: false
|
||||||
theme: ""
|
theme: ""
|
||||||
keep_activity_private: false
|
keep_activity_private: false
|
||||||
|
created_unix: 1672578110
|
||||||
|
|
||||||
-
|
-
|
||||||
id: 13
|
id: 13
|
||||||
|
@ -482,6 +493,7 @@
|
||||||
repo_admin_change_team_access: false
|
repo_admin_change_team_access: false
|
||||||
theme: ""
|
theme: ""
|
||||||
keep_activity_private: false
|
keep_activity_private: false
|
||||||
|
created_unix: 1672578120
|
||||||
|
|
||||||
-
|
-
|
||||||
id: 14
|
id: 14
|
||||||
|
@ -519,6 +531,7 @@
|
||||||
repo_admin_change_team_access: false
|
repo_admin_change_team_access: false
|
||||||
theme: ""
|
theme: ""
|
||||||
keep_activity_private: false
|
keep_activity_private: false
|
||||||
|
created_unix: 1672578130
|
||||||
|
|
||||||
-
|
-
|
||||||
id: 15
|
id: 15
|
||||||
|
@ -556,6 +569,7 @@
|
||||||
repo_admin_change_team_access: false
|
repo_admin_change_team_access: false
|
||||||
theme: ""
|
theme: ""
|
||||||
keep_activity_private: false
|
keep_activity_private: false
|
||||||
|
created_unix: 1672578140
|
||||||
|
|
||||||
-
|
-
|
||||||
id: 16
|
id: 16
|
||||||
|
@ -593,6 +607,7 @@
|
||||||
repo_admin_change_team_access: false
|
repo_admin_change_team_access: false
|
||||||
theme: ""
|
theme: ""
|
||||||
keep_activity_private: false
|
keep_activity_private: false
|
||||||
|
created_unix: 1672578150
|
||||||
|
|
||||||
-
|
-
|
||||||
id: 17
|
id: 17
|
||||||
|
@ -630,6 +645,7 @@
|
||||||
repo_admin_change_team_access: false
|
repo_admin_change_team_access: false
|
||||||
theme: ""
|
theme: ""
|
||||||
keep_activity_private: false
|
keep_activity_private: false
|
||||||
|
created_unix: 1672578160
|
||||||
|
|
||||||
-
|
-
|
||||||
id: 18
|
id: 18
|
||||||
|
@ -667,6 +683,7 @@
|
||||||
repo_admin_change_team_access: false
|
repo_admin_change_team_access: false
|
||||||
theme: ""
|
theme: ""
|
||||||
keep_activity_private: false
|
keep_activity_private: false
|
||||||
|
created_unix: 1672578170
|
||||||
|
|
||||||
-
|
-
|
||||||
id: 19
|
id: 19
|
||||||
|
@ -704,6 +721,7 @@
|
||||||
repo_admin_change_team_access: false
|
repo_admin_change_team_access: false
|
||||||
theme: ""
|
theme: ""
|
||||||
keep_activity_private: false
|
keep_activity_private: false
|
||||||
|
created_unix: 1672578180
|
||||||
|
|
||||||
-
|
-
|
||||||
id: 20
|
id: 20
|
||||||
|
@ -741,6 +759,7 @@
|
||||||
repo_admin_change_team_access: false
|
repo_admin_change_team_access: false
|
||||||
theme: ""
|
theme: ""
|
||||||
keep_activity_private: false
|
keep_activity_private: false
|
||||||
|
created_unix: 1672578190
|
||||||
|
|
||||||
-
|
-
|
||||||
id: 21
|
id: 21
|
||||||
|
@ -778,6 +797,7 @@
|
||||||
repo_admin_change_team_access: false
|
repo_admin_change_team_access: false
|
||||||
theme: ""
|
theme: ""
|
||||||
keep_activity_private: false
|
keep_activity_private: false
|
||||||
|
created_unix: 1672578200
|
||||||
|
|
||||||
-
|
-
|
||||||
id: 22
|
id: 22
|
||||||
|
@ -815,6 +835,7 @@
|
||||||
repo_admin_change_team_access: false
|
repo_admin_change_team_access: false
|
||||||
theme: ""
|
theme: ""
|
||||||
keep_activity_private: false
|
keep_activity_private: false
|
||||||
|
created_unix: 1672578210
|
||||||
|
|
||||||
-
|
-
|
||||||
id: 23
|
id: 23
|
||||||
|
@ -852,6 +873,7 @@
|
||||||
repo_admin_change_team_access: false
|
repo_admin_change_team_access: false
|
||||||
theme: ""
|
theme: ""
|
||||||
keep_activity_private: false
|
keep_activity_private: false
|
||||||
|
created_unix: 1672578220
|
||||||
|
|
||||||
-
|
-
|
||||||
id: 24
|
id: 24
|
||||||
|
@ -889,6 +911,7 @@
|
||||||
repo_admin_change_team_access: false
|
repo_admin_change_team_access: false
|
||||||
theme: ""
|
theme: ""
|
||||||
keep_activity_private: false
|
keep_activity_private: false
|
||||||
|
created_unix: 1672578230
|
||||||
|
|
||||||
-
|
-
|
||||||
id: 25
|
id: 25
|
||||||
|
@ -926,6 +949,7 @@
|
||||||
repo_admin_change_team_access: false
|
repo_admin_change_team_access: false
|
||||||
theme: ""
|
theme: ""
|
||||||
keep_activity_private: false
|
keep_activity_private: false
|
||||||
|
created_unix: 1672578240
|
||||||
|
|
||||||
-
|
-
|
||||||
id: 26
|
id: 26
|
||||||
|
@ -963,6 +987,7 @@
|
||||||
repo_admin_change_team_access: true
|
repo_admin_change_team_access: true
|
||||||
theme: ""
|
theme: ""
|
||||||
keep_activity_private: false
|
keep_activity_private: false
|
||||||
|
created_unix: 1672578250
|
||||||
|
|
||||||
-
|
-
|
||||||
id: 27
|
id: 27
|
||||||
|
@ -1000,6 +1025,7 @@
|
||||||
repo_admin_change_team_access: false
|
repo_admin_change_team_access: false
|
||||||
theme: ""
|
theme: ""
|
||||||
keep_activity_private: false
|
keep_activity_private: false
|
||||||
|
created_unix: 1672578260
|
||||||
|
|
||||||
-
|
-
|
||||||
id: 28
|
id: 28
|
||||||
|
@ -1037,6 +1063,7 @@
|
||||||
repo_admin_change_team_access: false
|
repo_admin_change_team_access: false
|
||||||
theme: ""
|
theme: ""
|
||||||
keep_activity_private: false
|
keep_activity_private: false
|
||||||
|
created_unix: 1672578270
|
||||||
|
|
||||||
-
|
-
|
||||||
id: 29
|
id: 29
|
||||||
|
@ -1074,6 +1101,7 @@
|
||||||
repo_admin_change_team_access: false
|
repo_admin_change_team_access: false
|
||||||
theme: ""
|
theme: ""
|
||||||
keep_activity_private: false
|
keep_activity_private: false
|
||||||
|
created_unix: 1672578280
|
||||||
|
|
||||||
-
|
-
|
||||||
id: 30
|
id: 30
|
||||||
|
@ -1111,6 +1139,7 @@
|
||||||
repo_admin_change_team_access: false
|
repo_admin_change_team_access: false
|
||||||
theme: ""
|
theme: ""
|
||||||
keep_activity_private: false
|
keep_activity_private: false
|
||||||
|
created_unix: 1672578290
|
||||||
|
|
||||||
-
|
-
|
||||||
id: 31
|
id: 31
|
||||||
|
@ -1148,6 +1177,7 @@
|
||||||
repo_admin_change_team_access: false
|
repo_admin_change_team_access: false
|
||||||
theme: ""
|
theme: ""
|
||||||
keep_activity_private: false
|
keep_activity_private: false
|
||||||
|
created_unix: 1672578300
|
||||||
|
|
||||||
-
|
-
|
||||||
id: 32
|
id: 32
|
||||||
|
@ -1185,6 +1215,7 @@
|
||||||
repo_admin_change_team_access: false
|
repo_admin_change_team_access: false
|
||||||
theme: ""
|
theme: ""
|
||||||
keep_activity_private: false
|
keep_activity_private: false
|
||||||
|
created_unix: 1672578310
|
||||||
|
|
||||||
-
|
-
|
||||||
id: 33
|
id: 33
|
||||||
|
@ -1222,6 +1253,7 @@
|
||||||
repo_admin_change_team_access: false
|
repo_admin_change_team_access: false
|
||||||
theme: ""
|
theme: ""
|
||||||
keep_activity_private: false
|
keep_activity_private: false
|
||||||
|
created_unix: 1672578320
|
||||||
|
|
||||||
-
|
-
|
||||||
id: 34
|
id: 34
|
||||||
|
@ -1260,6 +1292,7 @@
|
||||||
repo_admin_change_team_access: false
|
repo_admin_change_team_access: false
|
||||||
theme: ""
|
theme: ""
|
||||||
keep_activity_private: false
|
keep_activity_private: false
|
||||||
|
created_unix: 1672578330
|
||||||
|
|
||||||
-
|
-
|
||||||
id: 35
|
id: 35
|
||||||
|
@ -1297,6 +1330,7 @@
|
||||||
repo_admin_change_team_access: false
|
repo_admin_change_team_access: false
|
||||||
theme: ""
|
theme: ""
|
||||||
keep_activity_private: false
|
keep_activity_private: false
|
||||||
|
created_unix: 1672578340
|
||||||
|
|
||||||
-
|
-
|
||||||
id: 36
|
id: 36
|
||||||
|
@ -1334,6 +1368,7 @@
|
||||||
repo_admin_change_team_access: false
|
repo_admin_change_team_access: false
|
||||||
theme: ""
|
theme: ""
|
||||||
keep_activity_private: false
|
keep_activity_private: false
|
||||||
|
created_unix: 1672578350
|
||||||
|
|
||||||
-
|
-
|
||||||
id: 37
|
id: 37
|
||||||
|
@ -1371,6 +1406,7 @@
|
||||||
repo_admin_change_team_access: false
|
repo_admin_change_team_access: false
|
||||||
theme: ""
|
theme: ""
|
||||||
keep_activity_private: false
|
keep_activity_private: false
|
||||||
|
created_unix: 1672578360
|
||||||
|
|
||||||
-
|
-
|
||||||
id: 38
|
id: 38
|
||||||
|
@ -1408,6 +1444,7 @@
|
||||||
repo_admin_change_team_access: false
|
repo_admin_change_team_access: false
|
||||||
theme: ""
|
theme: ""
|
||||||
keep_activity_private: false
|
keep_activity_private: false
|
||||||
|
created_unix: 1672578370
|
||||||
|
|
||||||
-
|
-
|
||||||
id: 39
|
id: 39
|
||||||
|
@ -1445,6 +1482,7 @@
|
||||||
repo_admin_change_team_access: false
|
repo_admin_change_team_access: false
|
||||||
theme: ""
|
theme: ""
|
||||||
keep_activity_private: false
|
keep_activity_private: false
|
||||||
|
created_unix: 1672578380
|
||||||
|
|
||||||
-
|
-
|
||||||
id: 40
|
id: 40
|
||||||
|
@ -1482,6 +1520,7 @@
|
||||||
repo_admin_change_team_access: false
|
repo_admin_change_team_access: false
|
||||||
theme: ""
|
theme: ""
|
||||||
keep_activity_private: false
|
keep_activity_private: false
|
||||||
|
created_unix: 1672578390
|
||||||
|
|
||||||
-
|
-
|
||||||
id: 41
|
id: 41
|
||||||
|
@ -1519,3 +1558,4 @@
|
||||||
repo_admin_change_team_access: false
|
repo_admin_change_team_access: false
|
||||||
theme: ""
|
theme: ""
|
||||||
keep_activity_private: false
|
keep_activity_private: false
|
||||||
|
created_unix: 1672578400
|
||||||
|
|
|
@ -771,11 +771,11 @@ func TestGetInactiveUsers(t *testing.T) {
|
||||||
require.NoError(t, unittest.PrepareTestDatabase())
|
require.NoError(t, unittest.PrepareTestDatabase())
|
||||||
|
|
||||||
// all inactive users
|
// all inactive users
|
||||||
// user1's createdunix is 1730468968
|
// user1's createdunix is 1672578000
|
||||||
users, err := user_model.GetInactiveUsers(db.DefaultContext, 0)
|
users, err := user_model.GetInactiveUsers(db.DefaultContext, 0)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
assert.Len(t, users, 1)
|
assert.Len(t, users, 1)
|
||||||
interval := time.Now().Unix() - 1730468968 + 3600*24
|
interval := time.Now().Unix() - 1672578000 + 3600*24
|
||||||
users, err = user_model.GetInactiveUsers(db.DefaultContext, time.Duration(interval*int64(time.Second)))
|
users, err = user_model.GetInactiveUsers(db.DefaultContext, time.Duration(interval*int64(time.Second)))
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
require.Empty(t, users)
|
require.Empty(t, users)
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
//go:build !go1.24
|
||||||
|
|
||||||
// Copyright 2022 The Gitea Authors. All rights reserved.
|
// Copyright 2022 The Gitea Authors. All rights reserved.
|
||||||
// SPDX-License-Identifier: MIT
|
// SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
|
|
38
modules/log/groutinelabel_go1.24.go
Normal file
38
modules/log/groutinelabel_go1.24.go
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
//go:build go1.24
|
||||||
|
|
||||||
|
// Copyright 2024 The Forgejo Authors. All rights reserved.
|
||||||
|
// SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
|
package log
|
||||||
|
|
||||||
|
import "unsafe"
|
||||||
|
|
||||||
|
//go:linkname runtime_getProfLabel runtime/pprof.runtime_getProfLabel
|
||||||
|
func runtime_getProfLabel() unsafe.Pointer //nolint
|
||||||
|
|
||||||
|
// Struct definitions copied from: https://github.com/golang/go/blob/ca63101df47a4467bc80faa654fc19d68e583952/src/runtime/pprof/label.go
|
||||||
|
type label struct {
|
||||||
|
key string
|
||||||
|
value string
|
||||||
|
}
|
||||||
|
|
||||||
|
type LabelSet struct {
|
||||||
|
list []label
|
||||||
|
}
|
||||||
|
|
||||||
|
type labelMap struct {
|
||||||
|
LabelSet
|
||||||
|
}
|
||||||
|
|
||||||
|
func getGoroutineLabels() map[string]string {
|
||||||
|
l := (*labelMap)(runtime_getProfLabel())
|
||||||
|
if l == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
m := make(map[string]string, len(l.list))
|
||||||
|
for _, label := range l.list {
|
||||||
|
m[label.key] = label.value
|
||||||
|
}
|
||||||
|
return m
|
||||||
|
}
|
|
@ -823,7 +823,7 @@ manage_emails = Manage email addresses
|
||||||
manage_themes = Default theme
|
manage_themes = Default theme
|
||||||
manage_openid = OpenID addresses
|
manage_openid = OpenID addresses
|
||||||
email_desc = Your primary email address will be used for notifications, password recovery and, provided that it is not hidden, web-based Git operations.
|
email_desc = Your primary email address will be used for notifications, password recovery and, provided that it is not hidden, web-based Git operations.
|
||||||
theme_desc = This will be your default theme across the site.
|
theme_desc = This theme will be used for the web interface when you are logged in.
|
||||||
primary = Primary
|
primary = Primary
|
||||||
activated = Activated
|
activated = Activated
|
||||||
requires_activation = Requires activation
|
requires_activation = Requires activation
|
||||||
|
@ -1052,7 +1052,7 @@ admin.update_flags = Update flags
|
||||||
admin.failed_to_replace_flags = Failed to replace repository flags
|
admin.failed_to_replace_flags = Failed to replace repository flags
|
||||||
admin.flags_replaced = Repository flags replaced
|
admin.flags_replaced = Repository flags replaced
|
||||||
|
|
||||||
new_repo_helper = A repository contains all project files, including revision history. Already hosting one elsewhere? <a href="%s">Migrate repository.</a>
|
new_repo_helper = A repository contains all project files, including revision history. Already hosting one elsewhere? <a href="%s">Migrate repository</a>.
|
||||||
owner = Owner
|
owner = Owner
|
||||||
owner_helper = Some organizations may not show up in the dropdown due to a maximum repository count limit.
|
owner_helper = Some organizations may not show up in the dropdown due to a maximum repository count limit.
|
||||||
repo_name = Repository name
|
repo_name = Repository name
|
||||||
|
@ -1093,7 +1093,7 @@ issue_labels = Labels
|
||||||
issue_labels_helper = Select a label set
|
issue_labels_helper = Select a label set
|
||||||
license = License
|
license = License
|
||||||
license_helper = Select a license file
|
license_helper = Select a license file
|
||||||
license_helper_desc = A license governs what others can and can't do with your code. Not sure which one is right for your project? See <a target="_blank" rel="noopener noreferrer" href="%s">Choose a license.</a>
|
license_helper_desc = A license governs what others can and can't do with your code. Not sure which one is right for your project? See <a target="_blank" rel="noopener noreferrer" href="%s">Choose a license</a>.
|
||||||
object_format = Object format
|
object_format = Object format
|
||||||
object_format_helper = Object format of the repository. Cannot be changed later. SHA1 is the most compatible.
|
object_format_helper = Object format of the repository. Cannot be changed later. SHA1 is the most compatible.
|
||||||
readme = README
|
readme = README
|
||||||
|
@ -2584,12 +2584,12 @@ settings.archive.text = Archiving the repo will make it entirely read-only. It w
|
||||||
settings.archive.success = The repo was successfully archived.
|
settings.archive.success = The repo was successfully archived.
|
||||||
settings.archive.error = An error occurred while trying to archive the repo. See the log for more details.
|
settings.archive.error = An error occurred while trying to archive the repo. See the log for more details.
|
||||||
settings.archive.error_ismirror = You cannot archive a mirrored repo.
|
settings.archive.error_ismirror = You cannot archive a mirrored repo.
|
||||||
settings.archive.branchsettings_unavailable = Branch settings are not available if the repo is archived.
|
settings.archive.branchsettings_unavailable = Branch settings are not available in archived repos.
|
||||||
settings.archive.tagsettings_unavailable = Tag settings are not available if the repo is archived.
|
settings.archive.tagsettings_unavailable = Tag settings are not available in archived repos.
|
||||||
settings.archive.mirrors_unavailable = Mirrors are not available if the repo is archived.
|
settings.archive.mirrors_unavailable = Mirrors are not available in archived repos.
|
||||||
settings.unarchive.button = Unarchive repo
|
settings.unarchive.button = Unarchive repo
|
||||||
settings.unarchive.header = Unarchive this repo
|
settings.unarchive.header = Unarchive this repo
|
||||||
settings.unarchive.text = Unarchiving the repo will restore its ability to receive commits and pushes, as well as new issues and pull-requests.
|
settings.unarchive.text = Unarchiving the repo will restore its ability to receive commits and pushes, as well as new issues and pull requests.
|
||||||
settings.unarchive.success = The repo was successfully unarchived.
|
settings.unarchive.success = The repo was successfully unarchived.
|
||||||
settings.unarchive.error = An error occurred while trying to unarchive the repo. See the log for more details.
|
settings.unarchive.error = An error occurred while trying to unarchive the repo. See the log for more details.
|
||||||
settings.update_avatar_success = The repository avatar has been updated.
|
settings.update_avatar_success = The repository avatar has been updated.
|
||||||
|
@ -3631,7 +3631,7 @@ alpine.registry = Setup this registry by adding the url in your <code>/etc/apk/r
|
||||||
alpine.registry.key = Download the registry public RSA key into the <code>/etc/apk/keys/</code> folder to verify the index signature:
|
alpine.registry.key = Download the registry public RSA key into the <code>/etc/apk/keys/</code> folder to verify the index signature:
|
||||||
alpine.registry.info = Choose $branch and $repository from the list below.
|
alpine.registry.info = Choose $branch and $repository from the list below.
|
||||||
alpine.install = To install the package, run the following command:
|
alpine.install = To install the package, run the following command:
|
||||||
alpine.repository = Repository Info
|
alpine.repository = Repository info
|
||||||
alpine.repository.branches = Branches
|
alpine.repository.branches = Branches
|
||||||
alpine.repository.repositories = Repositories
|
alpine.repository.repositories = Repositories
|
||||||
alpine.repository.architectures = Architectures
|
alpine.repository.architectures = Architectures
|
||||||
|
@ -3640,7 +3640,7 @@ arch.pacman.repo.multi = %s has the same version in different distributions.
|
||||||
arch.pacman.repo.multi.item = Configuration for %s
|
arch.pacman.repo.multi.item = Configuration for %s
|
||||||
arch.pacman.conf = Add server with related distribution and architecture to <code>/etc/pacman.conf</code> :
|
arch.pacman.conf = Add server with related distribution and architecture to <code>/etc/pacman.conf</code> :
|
||||||
arch.pacman.sync = Sync package with pacman:
|
arch.pacman.sync = Sync package with pacman:
|
||||||
arch.version.properties = Version Properties
|
arch.version.properties = Version properties
|
||||||
arch.version.description = Description
|
arch.version.description = Description
|
||||||
arch.version.provides = Provides
|
arch.version.provides = Provides
|
||||||
arch.version.groups = Group
|
arch.version.groups = Group
|
||||||
|
@ -3658,19 +3658,19 @@ chef.install = To install the package, run the following command:
|
||||||
composer.registry = Setup this registry in your <code>~/.composer/config.json</code> file:
|
composer.registry = Setup this registry in your <code>~/.composer/config.json</code> file:
|
||||||
composer.install = To install the package using Composer, run the following command:
|
composer.install = To install the package using Composer, run the following command:
|
||||||
composer.dependencies = Dependencies
|
composer.dependencies = Dependencies
|
||||||
composer.dependencies.development = Development Dependencies
|
composer.dependencies.development = Development dependencies
|
||||||
conan.details.repository = Repository
|
conan.details.repository = Repository
|
||||||
conan.registry = Setup this registry from the command line:
|
conan.registry = Setup this registry from the command line:
|
||||||
conan.install = To install the package using Conan, run the following command:
|
conan.install = To install the package using Conan, run the following command:
|
||||||
conda.registry = Setup this registry as a Conda repository in your <code>.condarc</code> file:
|
conda.registry = Setup this registry as a Conda repository in your <code>.condarc</code> file:
|
||||||
conda.install = To install the package using Conda, run the following command:
|
conda.install = To install the package using Conda, run the following command:
|
||||||
container.images.title = Images
|
container.images.title = Images
|
||||||
container.details.type = Image Type
|
container.details.type = Image type
|
||||||
container.details.platform = Platform
|
container.details.platform = Platform
|
||||||
container.pull = Pull the image from the command line:
|
container.pull = Pull the image from the command line:
|
||||||
container.digest = Digest
|
container.digest = Digest
|
||||||
container.multi_arch = OS / Arch
|
container.multi_arch = OS / Arch
|
||||||
container.layers = Image Layers
|
container.layers = Image layers
|
||||||
container.labels = Labels
|
container.labels = Labels
|
||||||
container.labels.key = Key
|
container.labels.key = Key
|
||||||
container.labels.value = Value
|
container.labels.value = Value
|
||||||
|
@ -3698,10 +3698,10 @@ npm.registry = Setup this registry in your project <code>.npmrc</code> file:
|
||||||
npm.install = To install the package using npm, run the following command:
|
npm.install = To install the package using npm, run the following command:
|
||||||
npm.install2 = or add it to the package.json file:
|
npm.install2 = or add it to the package.json file:
|
||||||
npm.dependencies = Dependencies
|
npm.dependencies = Dependencies
|
||||||
npm.dependencies.development = Development Dependencies
|
npm.dependencies.development = Development dependencies
|
||||||
npm.dependencies.bundle = Bundled Dependencies
|
npm.dependencies.bundle = Bundled dependencies
|
||||||
npm.dependencies.peer = Peer Dependencies
|
npm.dependencies.peer = Peer dependencies
|
||||||
npm.dependencies.optional = Optional Dependencies
|
npm.dependencies.optional = Optional dependencies
|
||||||
npm.details.tag = Tag
|
npm.details.tag = Tag
|
||||||
pub.install = To install the package using Dart, run the following command:
|
pub.install = To install the package using Dart, run the following command:
|
||||||
pypi.requires = Requires Python
|
pypi.requires = Requires Python
|
||||||
|
@ -3715,8 +3715,8 @@ rpm.repository.architectures = Architectures
|
||||||
rpm.repository.multiple_groups = This package is available in multiple groups.
|
rpm.repository.multiple_groups = This package is available in multiple groups.
|
||||||
rubygems.install = To install the package using gem, run the following command:
|
rubygems.install = To install the package using gem, run the following command:
|
||||||
rubygems.install2 = or add it to the Gemfile:
|
rubygems.install2 = or add it to the Gemfile:
|
||||||
rubygems.dependencies.runtime = Runtime Dependencies
|
rubygems.dependencies.runtime = Runtime dependencies
|
||||||
rubygems.dependencies.development = Development Dependencies
|
rubygems.dependencies.development = Development dependencies
|
||||||
rubygems.required.ruby = Requires Ruby version
|
rubygems.required.ruby = Requires Ruby version
|
||||||
rubygems.required.rubygems = Requires RubyGem version
|
rubygems.required.rubygems = Requires RubyGem version
|
||||||
swift.registry = Setup this registry from the command line:
|
swift.registry = Setup this registry from the command line:
|
||||||
|
|
26
options/locale/readme.md
Normal file
26
options/locale/readme.md
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
# Forgejo translations
|
||||||
|
|
||||||
|
This directory contains all .INI translations.
|
||||||
|
|
||||||
|
## Working on base language
|
||||||
|
|
||||||
|
When you work on Forgejo features, you should only modify `locale_en-US.ini`.
|
||||||
|
|
||||||
|
* consult https://forgejo.org/docs/next/contributor/localization-english/
|
||||||
|
* add strings when your change requires doing so
|
||||||
|
* remove strings when your change renders them unused
|
||||||
|
|
||||||
|
## Working on other languages
|
||||||
|
|
||||||
|
Translations are done on Codeberg Translate and not via individual pull requests.
|
||||||
|
|
||||||
|
* consult https://forgejo.org/docs/next/contributor/localization/
|
||||||
|
* see the project: https://translate.codeberg.org/projects/forgejo/forgejo/
|
||||||
|
|
||||||
|
## Attribution
|
||||||
|
|
||||||
|
Forgejo translators are attributed in commit messages and in monthly updates on the website.
|
||||||
|
|
||||||
|
Gitea translators are mostly not attributed in this repository because Gitea translation commits are lacking attribution, but it may be preserved on Crowdin.
|
||||||
|
|
||||||
|
This directory contains a legacy `TRANSLATORS` file from the Gogs era. It is opt-in and is not actively maintained.
|
2288
package-lock.json
generated
2288
package-lock.json
generated
File diff suppressed because it is too large
Load diff
42
package.json
42
package.json
|
@ -12,7 +12,7 @@
|
||||||
"@github/relative-time-element": "4.4.4",
|
"@github/relative-time-element": "4.4.4",
|
||||||
"@github/text-expander-element": "2.8.0",
|
"@github/text-expander-element": "2.8.0",
|
||||||
"@mcaptcha/vanilla-glue": "0.1.0-alpha-3",
|
"@mcaptcha/vanilla-glue": "0.1.0-alpha-3",
|
||||||
"@primer/octicons": "19.13.0",
|
"@primer/octicons": "19.14.0",
|
||||||
"ansi_up": "6.0.2",
|
"ansi_up": "6.0.2",
|
||||||
"asciinema-player": "3.8.0",
|
"asciinema-player": "3.8.0",
|
||||||
"chart.js": "4.4.5",
|
"chart.js": "4.4.5",
|
||||||
|
@ -29,7 +29,7 @@
|
||||||
"htmx.org": "1.9.12",
|
"htmx.org": "1.9.12",
|
||||||
"idiomorph": "0.3.0",
|
"idiomorph": "0.3.0",
|
||||||
"jquery": "3.7.1",
|
"jquery": "3.7.1",
|
||||||
"katex": "0.16.15",
|
"katex": "0.16.17",
|
||||||
"mermaid": "11.4.1",
|
"mermaid": "11.4.1",
|
||||||
"mini-css-extract-plugin": "2.9.2",
|
"mini-css-extract-plugin": "2.9.2",
|
||||||
"minimatch": "10.0.1",
|
"minimatch": "10.0.1",
|
||||||
|
@ -42,7 +42,7 @@
|
||||||
"pretty-ms": "9.0.0",
|
"pretty-ms": "9.0.0",
|
||||||
"sortablejs": "1.15.6",
|
"sortablejs": "1.15.6",
|
||||||
"swagger-ui-dist": "5.17.14",
|
"swagger-ui-dist": "5.17.14",
|
||||||
"tailwindcss": "3.4.16",
|
"tailwindcss": "3.4.17",
|
||||||
"throttle-debounce": "5.0.0",
|
"throttle-debounce": "5.0.0",
|
||||||
"tinycolor2": "1.6.0",
|
"tinycolor2": "1.6.0",
|
||||||
"tippy.js": "6.3.7",
|
"tippy.js": "6.3.7",
|
||||||
|
@ -63,41 +63,41 @@
|
||||||
"@eslint-community/eslint-plugin-eslint-comments": "4.4.1",
|
"@eslint-community/eslint-plugin-eslint-comments": "4.4.1",
|
||||||
"@playwright/test": "1.48.2",
|
"@playwright/test": "1.48.2",
|
||||||
"@stoplight/spectral-cli": "6.14.2",
|
"@stoplight/spectral-cli": "6.14.2",
|
||||||
"@stylistic/eslint-plugin-js": "2.10.1",
|
"@stylistic/eslint-plugin-js": "2.12.1",
|
||||||
"@stylistic/stylelint-plugin": "3.1.1",
|
"@stylistic/stylelint-plugin": "3.1.1",
|
||||||
"@typescript-eslint/parser": "8.14.0",
|
"@typescript-eslint/parser": "8.18.1",
|
||||||
"@vitejs/plugin-vue": "5.1.5",
|
"@vitejs/plugin-vue": "5.1.5",
|
||||||
"@vitest/coverage-v8": "2.1.4",
|
"@vitest/coverage-v8": "2.1.8",
|
||||||
"@vitest/eslint-plugin": "1.1.13",
|
"@vitest/eslint-plugin": "1.1.16",
|
||||||
"@vue/test-utils": "2.4.6",
|
"@vue/test-utils": "2.4.6",
|
||||||
"eslint": "9.14.0",
|
"eslint": "9.17.0",
|
||||||
"eslint-import-resolver-typescript": "3.6.3",
|
"eslint-import-resolver-typescript": "3.7.0",
|
||||||
"eslint-plugin-array-func": "5.0.2",
|
"eslint-plugin-array-func": "5.0.2",
|
||||||
"eslint-plugin-import-x": "4.4.2",
|
"eslint-plugin-import-x": "4.5.1",
|
||||||
"eslint-plugin-no-jquery": "3.0.2",
|
"eslint-plugin-no-jquery": "3.1.0",
|
||||||
"eslint-plugin-no-use-extend-native": "0.7.2",
|
"eslint-plugin-no-use-extend-native": "0.7.2",
|
||||||
"eslint-plugin-playwright": "2.0.1",
|
"eslint-plugin-playwright": "2.1.0",
|
||||||
"eslint-plugin-regexp": "2.6.0",
|
"eslint-plugin-regexp": "2.7.0",
|
||||||
"eslint-plugin-sonarjs": "2.0.4",
|
"eslint-plugin-sonarjs": "3.0.1",
|
||||||
"eslint-plugin-unicorn": "56.0.0",
|
"eslint-plugin-unicorn": "56.0.1",
|
||||||
"eslint-plugin-vitest-globals": "1.5.0",
|
"eslint-plugin-vitest-globals": "1.5.0",
|
||||||
"eslint-plugin-vue": "9.31.0",
|
"eslint-plugin-vue": "9.32.0",
|
||||||
"eslint-plugin-vue-scoped-css": "2.8.1",
|
"eslint-plugin-vue-scoped-css": "2.9.0",
|
||||||
"eslint-plugin-wc": "2.2.0",
|
"eslint-plugin-wc": "2.2.0",
|
||||||
"globals": "15.13.0",
|
"globals": "15.13.0",
|
||||||
"happy-dom": "15.11.7",
|
"happy-dom": "15.11.7",
|
||||||
"license-checker-rseidelsohn": "4.4.2",
|
"license-checker-rseidelsohn": "4.4.2",
|
||||||
"markdownlint-cli": "0.42.0",
|
"markdownlint-cli": "0.43.0",
|
||||||
"postcss-html": "1.7.0",
|
"postcss-html": "1.7.0",
|
||||||
"stylelint": "16.10.0",
|
"stylelint": "16.12.0",
|
||||||
"stylelint-declaration-block-no-ignored-properties": "2.8.0",
|
"stylelint-declaration-block-no-ignored-properties": "2.8.0",
|
||||||
"stylelint-declaration-strict-value": "1.10.6",
|
"stylelint-declaration-strict-value": "1.10.6",
|
||||||
"stylelint-value-no-unknown-custom-properties": "6.0.1",
|
"stylelint-value-no-unknown-custom-properties": "6.0.1",
|
||||||
"svgo": "3.2.0",
|
"svgo": "3.2.0",
|
||||||
"typescript": "5.7.2",
|
"typescript": "5.7.2",
|
||||||
"typescript-eslint": "8.14.0",
|
"typescript-eslint": "8.18.1",
|
||||||
"vite-string-plugin": "1.3.4",
|
"vite-string-plugin": "1.3.4",
|
||||||
"vitest": "2.1.4"
|
"vitest": "2.1.8"
|
||||||
},
|
},
|
||||||
"browserslist": [
|
"browserslist": [
|
||||||
"defaults"
|
"defaults"
|
||||||
|
|
|
@ -416,6 +416,11 @@ func SearchUsers(ctx *context.APIContext) {
|
||||||
// in: query
|
// in: query
|
||||||
// description: user's login name to search for
|
// description: user's login name to search for
|
||||||
// type: string
|
// type: string
|
||||||
|
// - name: sort
|
||||||
|
// in: query
|
||||||
|
// description: sort order of results
|
||||||
|
// type: string
|
||||||
|
// enum: [oldest, newest, alphabetically, reversealphabetically, recentupdate, leastupdate]
|
||||||
// - name: page
|
// - name: page
|
||||||
// in: query
|
// in: query
|
||||||
// description: page number of results to return (1-based)
|
// description: page number of results to return (1-based)
|
||||||
|
@ -431,6 +436,27 @@ func SearchUsers(ctx *context.APIContext) {
|
||||||
// "$ref": "#/responses/forbidden"
|
// "$ref": "#/responses/forbidden"
|
||||||
|
|
||||||
listOptions := utils.GetListOptions(ctx)
|
listOptions := utils.GetListOptions(ctx)
|
||||||
|
|
||||||
|
sort := ctx.FormString("sort")
|
||||||
|
var orderBy db.SearchOrderBy
|
||||||
|
|
||||||
|
switch sort {
|
||||||
|
case "oldest":
|
||||||
|
orderBy = db.SearchOrderByOldest
|
||||||
|
case "newest":
|
||||||
|
orderBy = db.SearchOrderByNewest
|
||||||
|
case "alphabetically":
|
||||||
|
orderBy = db.SearchOrderByAlphabetically
|
||||||
|
case "reversealphabetically":
|
||||||
|
orderBy = db.SearchOrderByAlphabeticallyReverse
|
||||||
|
case "recentupdate":
|
||||||
|
orderBy = db.SearchOrderByRecentUpdated
|
||||||
|
case "leastupdate":
|
||||||
|
orderBy = db.SearchOrderByLeastUpdated
|
||||||
|
default:
|
||||||
|
orderBy = db.SearchOrderByAlphabetically
|
||||||
|
}
|
||||||
|
|
||||||
intSource, err := strconv.ParseInt(ctx.FormString("source_id"), 10, 64)
|
intSource, err := strconv.ParseInt(ctx.FormString("source_id"), 10, 64)
|
||||||
var sourceID optional.Option[int64]
|
var sourceID optional.Option[int64]
|
||||||
if ctx.FormString("source_id") == "" || err != nil {
|
if ctx.FormString("source_id") == "" || err != nil {
|
||||||
|
@ -444,7 +470,7 @@ func SearchUsers(ctx *context.APIContext) {
|
||||||
Type: user_model.UserTypeIndividual,
|
Type: user_model.UserTypeIndividual,
|
||||||
LoginName: ctx.FormTrim("login_name"),
|
LoginName: ctx.FormTrim("login_name"),
|
||||||
SourceID: sourceID,
|
SourceID: sourceID,
|
||||||
OrderBy: db.SearchOrderByAlphabetically,
|
OrderBy: orderBy,
|
||||||
ListOptions: listOptions,
|
ListOptions: listOptions,
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
{{if .Permission.CanRead $.UnitTypeCode}}
|
{{if .Permission.CanRead $.UnitTypeCode}}
|
||||||
<div id="repo-contributors-chart"
|
<div id="repo-contributors-chart"
|
||||||
data-repo-link="{{.RepoLink}}"
|
data-repo-link="{{.RepoLink}}"
|
||||||
|
data-repo-default-branch-name="{{.Repository.DefaultBranch}}"
|
||||||
data-locale-filter-label="{{ctx.Locale.Tr "repo.contributors.contribution_type.filter_label"}}"
|
data-locale-filter-label="{{ctx.Locale.Tr "repo.contributors.contribution_type.filter_label"}}"
|
||||||
data-locale-contribution-type-commits="{{ctx.Locale.Tr "repo.contributors.contribution_type.commits"}}"
|
data-locale-contribution-type-commits="{{ctx.Locale.Tr "repo.contributors.contribution_type.commits"}}"
|
||||||
data-locale-contribution-type-additions="{{ctx.Locale.Tr "repo.contributors.contribution_type.additions"}}"
|
data-locale-contribution-type-additions="{{ctx.Locale.Tr "repo.contributors.contribution_type.additions"}}"
|
||||||
|
|
|
@ -90,7 +90,7 @@
|
||||||
{{template "repo/issue/comment_tab" .}}
|
{{template "repo/issue/comment_tab" .}}
|
||||||
{{.CsrfTokenHtml}}
|
{{.CsrfTokenHtml}}
|
||||||
<div class="field footer">
|
<div class="field footer">
|
||||||
<div class="text right">
|
<div class="right button-sequence">
|
||||||
{{if and (or .HasIssuesOrPullsWritePermission .IsIssuePoster) (not .DisableStatusChange)}}
|
{{if and (or .HasIssuesOrPullsWritePermission .IsIssuePoster) (not .DisableStatusChange)}}
|
||||||
{{if .Issue.IsClosed}}
|
{{if .Issue.IsClosed}}
|
||||||
<button id="status-button" class="ui primary basic button" data-status="{{ctx.Locale.Tr "repo.issues.reopen_issue"}}" data-status-and-comment="{{ctx.Locale.Tr "repo.issues.reopen_comment_issue"}}" name="status" value="reopen">
|
<button id="status-button" class="ui primary basic button" data-status="{{ctx.Locale.Tr "repo.issues.reopen_issue"}}" data-status-and-comment="{{ctx.Locale.Tr "repo.issues.reopen_comment_issue"}}" name="status" value="reopen">
|
||||||
|
|
|
@ -106,7 +106,7 @@
|
||||||
</div>
|
</div>
|
||||||
{{end}}
|
{{end}}
|
||||||
</div>
|
</div>
|
||||||
<div class="code-comment-buttons tw-flex tw-items-center tw-flex-wrap tw-mt-2 tw-mb-1 tw-mx-2">
|
<div class="tw-flex tw-items-center tw-flex-wrap tw-mt-2 tw-mb-1 tw-mx-2">
|
||||||
<div class="tw-flex-1">
|
<div class="tw-flex-1">
|
||||||
{{if $resolved}}
|
{{if $resolved}}
|
||||||
<div class="ui grey text">
|
<div class="ui grey text">
|
||||||
|
@ -115,7 +115,7 @@
|
||||||
</div>
|
</div>
|
||||||
{{end}}
|
{{end}}
|
||||||
</div>
|
</div>
|
||||||
<div class="code-comment-buttons-buttons button-row">
|
<div class="right button-sequence">
|
||||||
{{if and $.CanMarkConversation $isNotPending}}
|
{{if and $.CanMarkConversation $isNotPending}}
|
||||||
<button class="ui tiny basic button resolve-conversation" data-origin="timeline" data-action="{{if not $resolved}}Resolve{{else}}UnResolve{{end}}" data-comment-id="{{(index .comments 0).ID}}" data-update-url="{{$.RepoLink}}/issues/resolve_conversation">
|
<button class="ui tiny basic button resolve-conversation" data-origin="timeline" data-action="{{if not $resolved}}Resolve{{else}}UnResolve{{end}}" data-comment-id="{{(index .comments 0).ID}}" data-update-url="{{$.RepoLink}}/issues/resolve_conversation">
|
||||||
{{if $resolved}}
|
{{if $resolved}}
|
||||||
|
|
14
templates/swagger/v1_json.tmpl
generated
14
templates/swagger/v1_json.tmpl
generated
|
@ -1146,6 +1146,20 @@
|
||||||
"name": "login_name",
|
"name": "login_name",
|
||||||
"in": "query"
|
"in": "query"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"enum": [
|
||||||
|
"oldest",
|
||||||
|
"newest",
|
||||||
|
"alphabetically",
|
||||||
|
"reversealphabetically",
|
||||||
|
"recentupdate",
|
||||||
|
"leastupdate"
|
||||||
|
],
|
||||||
|
"type": "string",
|
||||||
|
"description": "sort order of results",
|
||||||
|
"name": "sort",
|
||||||
|
"in": "query"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"type": "integer",
|
"type": "integer",
|
||||||
"description": "page number of results to return (1-based)",
|
"description": "page number of results to return (1-based)",
|
||||||
|
|
17
tests/e2e/repo-activity-contributors.test.e2e.ts
Normal file
17
tests/e2e/repo-activity-contributors.test.e2e.ts
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
// Copyright 2024 The Forgejo Authors. All rights reserved.
|
||||||
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
|
// @watch start
|
||||||
|
// web_src/js/features/contributors.js
|
||||||
|
// web_src/js/components/RepoContributors.vue
|
||||||
|
// templates/repo/*
|
||||||
|
// @watch end
|
||||||
|
|
||||||
|
import {expect} from '@playwright/test';
|
||||||
|
import {test} from './utils_e2e.ts';
|
||||||
|
|
||||||
|
test('Contributor graph', async ({page}) => {
|
||||||
|
await page.goto('/user2/commits_search_test/activity/contributors');
|
||||||
|
await page.getByRole('link', {name: '2 Commits'}).click();
|
||||||
|
await expect(page.getByRole('cell', {name: 'Bob'})).toHaveCount(2);
|
||||||
|
});
|
|
@ -9,12 +9,15 @@ import (
|
||||||
"net/http"
|
"net/http"
|
||||||
"strconv"
|
"strconv"
|
||||||
"testing"
|
"testing"
|
||||||
|
"time"
|
||||||
|
|
||||||
auth_model "code.gitea.io/gitea/models/auth"
|
auth_model "code.gitea.io/gitea/models/auth"
|
||||||
|
"code.gitea.io/gitea/models/db"
|
||||||
issues_model "code.gitea.io/gitea/models/issues"
|
issues_model "code.gitea.io/gitea/models/issues"
|
||||||
"code.gitea.io/gitea/models/unittest"
|
"code.gitea.io/gitea/models/unittest"
|
||||||
user_model "code.gitea.io/gitea/models/user"
|
user_model "code.gitea.io/gitea/models/user"
|
||||||
api "code.gitea.io/gitea/modules/structs"
|
api "code.gitea.io/gitea/modules/structs"
|
||||||
|
"code.gitea.io/gitea/modules/timeutil"
|
||||||
"code.gitea.io/gitea/tests"
|
"code.gitea.io/gitea/tests"
|
||||||
|
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
|
@ -132,3 +135,64 @@ func TestSourceId(t *testing.T) {
|
||||||
assert.Len(t, users, 1)
|
assert.Len(t, users, 1)
|
||||||
assert.Equal(t, "ausersourceid23", users[0].UserName)
|
assert.Equal(t, "ausersourceid23", users[0].UserName)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestAdminViewUsersSorted(t *testing.T) {
|
||||||
|
defer tests.PrepareTestEnv(t)()
|
||||||
|
createTimestamp := time.Now().Unix() - 1000
|
||||||
|
updateTimestamp := time.Now().Unix() - 500
|
||||||
|
sess := db.GetEngine(context.Background())
|
||||||
|
|
||||||
|
// Create 10 users with login source 44
|
||||||
|
for i := int64(1); i <= 10; i++ {
|
||||||
|
name := "sorttest" + strconv.Itoa(int(i))
|
||||||
|
user := &user_model.User{
|
||||||
|
Name: name,
|
||||||
|
LowerName: name,
|
||||||
|
LoginName: name,
|
||||||
|
Email: name + "@example.com",
|
||||||
|
Passwd: name + ".password",
|
||||||
|
Type: user_model.UserTypeIndividual,
|
||||||
|
LoginType: auth_model.OAuth2,
|
||||||
|
LoginSource: 44,
|
||||||
|
CreatedUnix: timeutil.TimeStamp(createTimestamp - i),
|
||||||
|
UpdatedUnix: timeutil.TimeStamp(updateTimestamp - i),
|
||||||
|
}
|
||||||
|
if _, err := sess.NoAutoTime().Insert(user); err != nil {
|
||||||
|
t.Fatalf("Failed to create user: %v", err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
session := loginUser(t, "user1")
|
||||||
|
token := getTokenForLoggedInUser(t, session, auth_model.AccessTokenScopeReadAdmin)
|
||||||
|
|
||||||
|
testCases := []struct {
|
||||||
|
loginSource int64
|
||||||
|
sortType string
|
||||||
|
expectedUsers []string
|
||||||
|
}{
|
||||||
|
{0, "alphabetically", []string{"the_34-user.with.all.allowedChars", "user1", "user10", "user11"}},
|
||||||
|
{0, "reversealphabetically", []string{"user9", "user8", "user5", "user40"}},
|
||||||
|
{0, "newest", []string{"user40", "user39", "user38", "user37"}},
|
||||||
|
{0, "oldest", []string{"user1", "user2", "user4", "user5"}},
|
||||||
|
{44, "recentupdate", []string{"sorttest1", "sorttest2", "sorttest3", "sorttest4"}},
|
||||||
|
{44, "leastupdate", []string{"sorttest10", "sorttest9", "sorttest8", "sorttest7"}},
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, testCase := range testCases {
|
||||||
|
req := NewRequest(
|
||||||
|
t,
|
||||||
|
"GET",
|
||||||
|
fmt.Sprintf("/api/v1/admin/users?sort=%s&limit=4&source_id=%d",
|
||||||
|
testCase.sortType,
|
||||||
|
testCase.loginSource),
|
||||||
|
).AddTokenAuth(token)
|
||||||
|
resp := session.MakeRequest(t, req, http.StatusOK)
|
||||||
|
|
||||||
|
var users []api.User
|
||||||
|
DecodeJSON(t, resp, &users)
|
||||||
|
assert.Len(t, users, 4)
|
||||||
|
for i, user := range users {
|
||||||
|
assert.Equalf(t, testCase.expectedUsers[i], user.UserName, "Sort type: %s, index %d", testCase.sortType, i)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -902,7 +902,7 @@ func TestRepoFollowSymlink(t *testing.T) {
|
||||||
symlinkURL, ok := htmlDoc.Find(".file-actions .button[data-kind='follow-symlink']").Attr("href")
|
symlinkURL, ok := htmlDoc.Find(".file-actions .button[data-kind='follow-symlink']").Attr("href")
|
||||||
if shouldExist {
|
if shouldExist {
|
||||||
assert.True(t, ok)
|
assert.True(t, ok)
|
||||||
assert.Equal(t, expectedSymlinkURL, symlinkURL) //nolint:testifylint // false positive https://github.com/Antonboom/testifylint/issues/72#issuecomment-2467548358
|
assert.Equal(t, expectedSymlinkURL, symlinkURL)
|
||||||
} else {
|
} else {
|
||||||
assert.False(t, ok)
|
assert.False(t, ok)
|
||||||
}
|
}
|
||||||
|
|
|
@ -250,6 +250,20 @@ h1.error-code {
|
||||||
gap: 0.5rem;
|
gap: 0.5rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.button-sequence {
|
||||||
|
display: flex;
|
||||||
|
flex-flow: wrap;
|
||||||
|
gap: 0.5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.button-sequence.right {
|
||||||
|
justify-content: end;
|
||||||
|
}
|
||||||
|
|
||||||
|
.button-sequence .ui.button {
|
||||||
|
margin: 0 !important;
|
||||||
|
}
|
||||||
|
|
||||||
.button-row .ui.button {
|
.button-row .ui.button {
|
||||||
margin-right: 0;
|
margin-right: 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -925,16 +925,6 @@ td .commit-summary {
|
||||||
border-radius: var(--border-radius);
|
border-radius: var(--border-radius);
|
||||||
}
|
}
|
||||||
|
|
||||||
@media (max-width: 767.98px) {
|
|
||||||
.repository.view.issue .comment-list .comment .content .form .button {
|
|
||||||
width: 100%;
|
|
||||||
margin: 0;
|
|
||||||
}
|
|
||||||
.repository.view.issue .comment-list .comment .content .form .button:not(:last-child) {
|
|
||||||
margin-bottom: 1rem;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.repository.view.issue .comment-list .comment .merge-section {
|
.repository.view.issue .comment-list .comment .merge-section {
|
||||||
background-color: var(--color-box-body);
|
background-color: var(--color-box-body);
|
||||||
}
|
}
|
||||||
|
|
|
@ -76,19 +76,6 @@
|
||||||
max-width: none;
|
max-width: none;
|
||||||
padding: 0.75rem !important;
|
padding: 0.75rem !important;
|
||||||
}
|
}
|
||||||
.comment-code-cloud .code-comment-buttons {
|
|
||||||
margin: 0.5rem 0 0.25rem !important;
|
|
||||||
}
|
|
||||||
.comment-code-cloud .code-comment-buttons .code-comment-buttons-buttons {
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
.comment-code-cloud .ui.buttons {
|
|
||||||
width: 100%;
|
|
||||||
margin: 0 !important;
|
|
||||||
}
|
|
||||||
.comment-code-cloud .ui.buttons .button {
|
|
||||||
flex: 1;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.comment-code-cloud .comments .comment {
|
.comment-code-cloud .comments .comment {
|
||||||
|
@ -183,14 +170,6 @@
|
||||||
display: block;
|
display: block;
|
||||||
}
|
}
|
||||||
|
|
||||||
@media (max-width: 767.98px) {
|
|
||||||
.comment-code-cloud .button {
|
|
||||||
width: 100%;
|
|
||||||
margin: 0 !important;
|
|
||||||
margin-bottom: 0.75rem !important;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.diff-file-body .comment-form {
|
.diff-file-body .comment-form {
|
||||||
margin: 0 0 0 3em;
|
margin: 0 0 0 3em;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
<script>
|
<script>
|
||||||
import {SvgIcon} from '../svg.js';
|
import {SvgIcon} from '../svg.js';
|
||||||
|
import dayjs from 'dayjs';
|
||||||
import {
|
import {
|
||||||
Chart,
|
Chart,
|
||||||
Title,
|
Title,
|
||||||
|
@ -22,6 +23,7 @@ import {chartJsColors} from '../utils/color.js';
|
||||||
import {sleep} from '../utils.js';
|
import {sleep} from '../utils.js';
|
||||||
import 'chartjs-adapter-dayjs-4/dist/chartjs-adapter-dayjs-4.esm';
|
import 'chartjs-adapter-dayjs-4/dist/chartjs-adapter-dayjs-4.esm';
|
||||||
import $ from 'jquery';
|
import $ from 'jquery';
|
||||||
|
import {pathEscapeSegments} from '../utils/url.js';
|
||||||
|
|
||||||
const customEventListener = {
|
const customEventListener = {
|
||||||
id: 'customEventListener',
|
id: 'customEventListener',
|
||||||
|
@ -61,6 +63,10 @@ export default {
|
||||||
type: String,
|
type: String,
|
||||||
required: true,
|
required: true,
|
||||||
},
|
},
|
||||||
|
repoDefaultBranchName: {
|
||||||
|
type: String,
|
||||||
|
required: true,
|
||||||
|
},
|
||||||
},
|
},
|
||||||
data: () => ({
|
data: () => ({
|
||||||
isLoading: false,
|
isLoading: false,
|
||||||
|
@ -96,6 +102,15 @@ export default {
|
||||||
.slice(0, 100);
|
.slice(0, 100);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
getContributorSearchQuery(contributorEmail) {
|
||||||
|
const min = dayjs(this.xAxisMin).format('YYYY-MM-DD');
|
||||||
|
const max = dayjs(this.xAxisMax).format('YYYY-MM-DD');
|
||||||
|
const params = new URLSearchParams({
|
||||||
|
'q': `after:${min}, before:${max}, author:${contributorEmail}`,
|
||||||
|
});
|
||||||
|
return `${this.repoLink}/commits/branch/${pathEscapeSegments(this.repoDefaultBranchName)}/search?${params.toString()}`;
|
||||||
|
},
|
||||||
|
|
||||||
async fetchGraphData() {
|
async fetchGraphData() {
|
||||||
this.isLoading = true;
|
this.isLoading = true;
|
||||||
try {
|
try {
|
||||||
|
@ -163,7 +178,7 @@ export default {
|
||||||
// for details.
|
// for details.
|
||||||
user.max_contribution_type += 1;
|
user.max_contribution_type += 1;
|
||||||
|
|
||||||
filteredData[key] = {...user, weeks: filteredWeeks};
|
filteredData[key] = {...user, weeks: filteredWeeks, email: key};
|
||||||
}
|
}
|
||||||
|
|
||||||
return filteredData;
|
return filteredData;
|
||||||
|
@ -376,7 +391,7 @@ export default {
|
||||||
<div class="ui top attached header tw-flex tw-flex-1">
|
<div class="ui top attached header tw-flex tw-flex-1">
|
||||||
<b class="ui right">#{{ index + 1 }}</b>
|
<b class="ui right">#{{ index + 1 }}</b>
|
||||||
<a :href="contributor.home_link">
|
<a :href="contributor.home_link">
|
||||||
<img class="ui avatar tw-align-middle" height="40" width="40" :src="contributor.avatar_link">
|
<img class="ui avatar tw-align-middle" height="40" width="40" :src="contributor.avatar_link" alt="">
|
||||||
</a>
|
</a>
|
||||||
<div class="tw-ml-2">
|
<div class="tw-ml-2">
|
||||||
<a v-if="contributor.home_link !== ''" :href="contributor.home_link"><h4>{{ contributor.name }}</h4></a>
|
<a v-if="contributor.home_link !== ''" :href="contributor.home_link"><h4>{{ contributor.name }}</h4></a>
|
||||||
|
@ -384,7 +399,11 @@ export default {
|
||||||
{{ contributor.name }}
|
{{ contributor.name }}
|
||||||
</h4>
|
</h4>
|
||||||
<p class="tw-text-12 tw-flex tw-gap-1">
|
<p class="tw-text-12 tw-flex tw-gap-1">
|
||||||
<strong v-if="contributor.total_commits">{{ contributor.total_commits.toLocaleString() }} {{ locale.contributionType.commits }}</strong>
|
<strong v-if="contributor.total_commits">
|
||||||
|
<a class="silenced" :href="getContributorSearchQuery(contributor.email)">
|
||||||
|
{{ contributor.total_commits.toLocaleString() }} {{ locale.contributionType.commits }}
|
||||||
|
</a>
|
||||||
|
</strong>
|
||||||
<strong v-if="contributor.total_additions" class="text green">{{ contributor.total_additions.toLocaleString() }}++ </strong>
|
<strong v-if="contributor.total_additions" class="text green">{{ contributor.total_additions.toLocaleString() }}++ </strong>
|
||||||
<strong v-if="contributor.total_deletions" class="text red">
|
<strong v-if="contributor.total_deletions" class="text red">
|
||||||
{{ contributor.total_deletions.toLocaleString() }}--</strong>
|
{{ contributor.total_deletions.toLocaleString() }}--</strong>
|
||||||
|
|
|
@ -8,6 +8,7 @@ export async function initRepoContributors() {
|
||||||
try {
|
try {
|
||||||
const View = createApp(RepoContributors, {
|
const View = createApp(RepoContributors, {
|
||||||
repoLink: el.getAttribute('data-repo-link'),
|
repoLink: el.getAttribute('data-repo-link'),
|
||||||
|
repoDefaultBranchName: el.getAttribute('data-repo-default-branch-name'),
|
||||||
locale: {
|
locale: {
|
||||||
filterLabel: el.getAttribute('data-locale-filter-label'),
|
filterLabel: el.getAttribute('data-locale-filter-label'),
|
||||||
contributionType: {
|
contributionType: {
|
||||||
|
|
|
@ -11,7 +11,7 @@ export async function renderMath() {
|
||||||
if (!els.length) return;
|
if (!els.length) return;
|
||||||
|
|
||||||
const [{default: katex}] = await Promise.all([
|
const [{default: katex}] = await Promise.all([
|
||||||
import(/* webpackChunkName: "katex" */'katex'),
|
import(/* webpackChunkName: "katex" */'katex/dist/katex.js'),
|
||||||
import(/* webpackChunkName: "katex" */'katex/dist/katex.css'),
|
import(/* webpackChunkName: "katex" */'katex/dist/katex.css'),
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue