mirror of
https://codeberg.org/forgejo-aneksajo/forgejo-aneksajo.git
synced 2025-07-08 14:00:03 +02:00
Compare commits
150 commits
forgejo
...
v10.0.1-gi
Author | SHA1 | Date | |
---|---|---|---|
![]() |
6c61f80d21 | ||
![]() |
1298a315bd | ||
![]() |
c5b3812553 | ||
![]() |
0ee62840ff | ||
![]() |
efe77599e6 | ||
![]() |
22855c6238 | ||
![]() |
aa683cb1e2 | ||
![]() |
99d2de8956 | ||
![]() |
4b75d40853 | ||
![]() |
aa6674de6e | ||
![]() |
971f6f7bab | ||
![]() |
1dd3a341a7 | ||
![]() |
592b23f5cd | ||
![]() |
4d65d593ad | ||
![]() |
3cf2111dbf | ||
![]() |
cdc80b9fe6 | ||
![]() |
8065657151 | ||
![]() |
78ff09f63d | ||
![]() |
4c60dfb6f0 | ||
![]() |
5b2ae61a12 | ||
![]() |
e83f575da5 | ||
![]() |
246131cc69 | ||
![]() |
e97e20427d | ||
![]() |
5ff7951560 | ||
![]() |
56a9ea1fc3 | ||
![]() |
82c9a86e83 | ||
![]() |
2845a75cbe | ||
![]() |
2c0cb04776 | ||
![]() |
635770f8a4 | ||
![]() |
0831aeccd1 | ||
![]() |
0c81519d4e | ||
![]() |
3c11eb1e26 | ||
![]() |
24264cb45f | ||
![]() |
f0da2f268a | ||
![]() |
d8bf745749 | ||
![]() |
f42432a9e4 | ||
![]() |
cc193ec4ef | ||
![]() |
3d7458b8cc | ||
![]() |
37a8fa9b5c | ||
![]() |
d13faeccaa | ||
![]() |
57de00e5b9 | ||
![]() |
52485edf64 | ||
![]() |
1d01b58227 | ||
![]() |
2771c2e591 | ||
![]() |
3c7f598230 | ||
![]() |
6ef900899e | ||
![]() |
a9f0bb9f68 | ||
![]() |
3b4f1b3469 | ||
![]() |
77fc232e5b | ||
![]() |
5a7d70658d | ||
![]() |
5046a10aec | ||
![]() |
77db7655e0 | ||
![]() |
c324910c31 | ||
![]() |
57ad0b868d | ||
![]() |
34d2a8531c | ||
![]() |
d260013a51 | ||
![]() |
3168330425 | ||
![]() |
2491bbfa69 | ||
![]() |
ac01c7a384 | ||
![]() |
b615d41457 | ||
![]() |
184bdef340 | ||
![]() |
27276ff26e | ||
![]() |
1b00bf2d26 | ||
![]() |
69bc17ea35 | ||
![]() |
0db9a24a4b | ||
![]() |
4016f2890d | ||
![]() |
c198cb6e65 | ||
![]() |
114d8975b5 | ||
![]() |
7ee19b4c6c | ||
![]() |
faa263d54a | ||
![]() |
0ecf28f37f | ||
![]() |
d10034f4d8 | ||
![]() |
553fc3cc42 | ||
![]() |
6d7bf7369d | ||
![]() |
eb83b05430 | ||
![]() |
61e345cd36 | ||
![]() |
5c5e1c87ba | ||
![]() |
7546c4acf3 | ||
![]() |
25e81d05f0 | ||
![]() |
054537989f | ||
![]() |
348e0e1fac | ||
![]() |
627634a76e | ||
![]() |
28db11f2e7 | ||
![]() |
6d0bf55f05 | ||
![]() |
2d1e163913 | ||
![]() |
26b7c6b86a | ||
![]() |
05056b8aa2 | ||
![]() |
39843ee2b3 | ||
![]() |
3b7ed0cda2 | ||
![]() |
2b1e74a76f | ||
![]() |
c439e26c33 | ||
![]() |
317559fdd9 | ||
![]() |
b88cd0c111 | ||
![]() |
5326183693 | ||
![]() |
5b6e0ca99c | ||
![]() |
90730e83ba | ||
![]() |
775770ad81 | ||
![]() |
4eb7e0fe08 | ||
![]() |
597d806753 | ||
![]() |
2b6a4137d5 | ||
![]() |
35266133d8 | ||
![]() |
dab3121c65 | ||
![]() |
3ce1a6562d | ||
![]() |
3b5f162fe6 | ||
![]() |
f63e5a1cff | ||
![]() |
25640f201e | ||
![]() |
ef205915cc | ||
![]() |
81d351ce5f | ||
![]() |
cd08097bbb | ||
![]() |
13496203bc | ||
![]() |
8f47560bf7 | ||
![]() |
9e6c3f226c | ||
![]() |
c7c7f69f82 | ||
![]() |
86a09562fd | ||
![]() |
ce5c3e32c1 | ||
![]() |
fa9f6e0cdd | ||
![]() |
172a48be8a | ||
![]() |
4a25a3e154 | ||
![]() |
6266715486 | ||
![]() |
3496c819da | ||
![]() |
4f8d96a6de | ||
![]() |
8d353ad258 | ||
![]() |
865d4f538b | ||
![]() |
ecbbaabfc8 | ||
![]() |
38f058a5f0 | ||
![]() |
1a64ae1dc4 | ||
![]() |
a8cc73fe87 | ||
![]() |
7a84081755 | ||
![]() |
2ac9b16297 | ||
![]() |
2bcbfbc5d4 | ||
![]() |
4999de50c3 | ||
![]() |
eb00a80efc | ||
![]() |
c7c22aae8c | ||
![]() |
0eab84d02e | ||
![]() |
e71fd7d28d | ||
![]() |
055348430e | ||
![]() |
440be42baf | ||
![]() |
f1b98d16c7 | ||
![]() |
662b385596 | ||
![]() |
023aaef2b9 | ||
![]() |
cb745a771a | ||
![]() |
38d2933cc1 | ||
![]() |
5a0c79e6b4 | ||
![]() |
424f85304e | ||
![]() |
382db9e8de | ||
![]() |
0ff66fa3bb | ||
![]() |
d5c5724f44 | ||
![]() |
1da56f0eb8 | ||
![]() |
6a78a71172 | ||
![]() |
f6c442c2fe |
275 changed files with 14581 additions and 3261 deletions
|
@ -13,6 +13,8 @@ runs:
|
||||||
run: |
|
run: |
|
||||||
export DEBIAN_FRONTEND=noninteractive
|
export DEBIAN_FRONTEND=noninteractive
|
||||||
echo "deb http://deb.debian.org/debian/ ${RELEASE} main" > "/etc/apt/sources.list.d/${RELEASE}.list"
|
echo "deb http://deb.debian.org/debian/ ${RELEASE} main" > "/etc/apt/sources.list.d/${RELEASE}.list"
|
||||||
|
wget -O- http://neuro.debian.net/lists/bookworm.de-fzj.libre | tee /etc/apt/sources.list.d/neurodebian.sources.list
|
||||||
|
apt-key adv --recv-keys --keyserver hkps://keyserver.ubuntu.com 0xA5D32F012649A5A9
|
||||||
env:
|
env:
|
||||||
RELEASE: ${{inputs.release}}
|
RELEASE: ${{inputs.release}}
|
||||||
- name: install packages
|
- name: install packages
|
||||||
|
@ -24,6 +26,7 @@ runs:
|
||||||
- name: remove temporary package list to prevent using it in other steps
|
- name: remove temporary package list to prevent using it in other steps
|
||||||
run: |
|
run: |
|
||||||
rm "/etc/apt/sources.list.d/${RELEASE}.list"
|
rm "/etc/apt/sources.list.d/${RELEASE}.list"
|
||||||
|
rm "/etc/apt/sources.list.d/neurodebian.sources.list"
|
||||||
apt-get update -qq
|
apt-get update -qq
|
||||||
env:
|
env:
|
||||||
RELEASE: ${{inputs.release}}
|
RELEASE: ${{inputs.release}}
|
||||||
|
|
|
@ -3,7 +3,7 @@ runs:
|
||||||
steps:
|
steps:
|
||||||
- run: |
|
- run: |
|
||||||
su forgejo -c 'make deps-backend'
|
su forgejo -c 'make deps-backend'
|
||||||
- uses: actions/cache@v4
|
- uses: https://data.forgejo.org/actions/cache@v4
|
||||||
id: cache-backend
|
id: cache-backend
|
||||||
with:
|
with:
|
||||||
path: ${{github.workspace}}/gitea
|
path: ${{github.workspace}}/gitea
|
||||||
|
|
|
@ -48,7 +48,7 @@ runs:
|
||||||
|
|
||||||
- name: "Restore Go dependencies from cache or mark for later caching"
|
- name: "Restore Go dependencies from cache or mark for later caching"
|
||||||
id: cache-deps
|
id: cache-deps
|
||||||
uses: actions/cache@v4
|
uses: https://data.forgejo.org/actions/cache@v4
|
||||||
with:
|
with:
|
||||||
key: setup-cache-go-deps-${{ runner.os }}-${{ inputs.username }}-${{ steps.go-version.outputs.go_version }}-${{ hashFiles('go.sum', 'go.mod') }}
|
key: setup-cache-go-deps-${{ runner.os }}-${{ inputs.username }}-${{ steps.go-version.outputs.go_version }}-${{ hashFiles('go.sum', 'go.mod') }}
|
||||||
restore-keys: |
|
restore-keys: |
|
||||||
|
|
|
@ -19,7 +19,7 @@ runs:
|
||||||
set -ex
|
set -ex
|
||||||
toolchain=$(grep -oP '(?<=toolchain ).+' go.mod)
|
toolchain=$(grep -oP '(?<=toolchain ).+' go.mod)
|
||||||
version=$(go version | cut -d' ' -f3)
|
version=$(go version | cut -d' ' -f3)
|
||||||
if [ "$toolchain" != "$version" ]; then
|
if dpkg --compare-versions ${version#go} lt ${toolchain#go}; then
|
||||||
echo "go version mismatch: $toolchain <> $version"
|
echo "go version too low: $toolchain >= $version"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
41
.forgejo/workflows/build-oci-image.yml
Normal file
41
.forgejo/workflows/build-oci-image.yml
Normal file
|
@ -0,0 +1,41 @@
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- 'forgejo'
|
||||||
|
tags:
|
||||||
|
- '*-git-annex*'
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build-oci-image:
|
||||||
|
runs-on: docker
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
type: ["rootful", "rootless"]
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
fetch-depth: 0 # fetch the full history so that the Forgejo version is determined properly
|
||||||
|
- name: Determine registry and username
|
||||||
|
id: determine-registry-and-username
|
||||||
|
run: |
|
||||||
|
echo "registry=${GITHUB_SERVER_URL#https://}" >> "$GITHUB_OUTPUT"
|
||||||
|
echo "username=${GITHUB_REPOSITORY%/*}" >> "$GITHUB_OUTPUT"
|
||||||
|
- name: Install Docker
|
||||||
|
run: curl -fsSL https://get.docker.com | sh
|
||||||
|
- name: Set up QEMU
|
||||||
|
uses: docker/setup-qemu-action@v3
|
||||||
|
- name: Set up Docker Buildx
|
||||||
|
uses: docker/setup-buildx-action@v3
|
||||||
|
- name: Login to Docker Hub
|
||||||
|
uses: docker/login-action@v3
|
||||||
|
with:
|
||||||
|
registry: ${{ steps.determine-registry-and-username.outputs.registry }}
|
||||||
|
username: ${{ steps.determine-registry-and-username.outputs.username }}
|
||||||
|
password: ${{ secrets.REGISTRY_TOKEN }}
|
||||||
|
- name: Build and push
|
||||||
|
uses: docker/build-push-action@v6
|
||||||
|
with:
|
||||||
|
context: .
|
||||||
|
file: ${{ (matrix.type == 'rootful' && 'Dockerfile') || (matrix.type == 'rootless' && 'Dockerfile.rootless') }}
|
||||||
|
push: true
|
||||||
|
tags: ${{ steps.determine-registry-and-username.outputs.registry }}/${{ github.repository }}:${{ github.ref_name }}${{ (matrix.type == 'rootful' && ' ') || (matrix.type == 'rootless' && '-rootless') }}
|
|
@ -25,7 +25,7 @@ jobs:
|
||||||
if: vars.ROLE == 'forgejo-coding'
|
if: vars.ROLE == 'forgejo-coding'
|
||||||
runs-on: lxc-bookworm
|
runs-on: lxc-bookworm
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: https://data.forgejo.org/actions/checkout@v4
|
||||||
|
|
||||||
- id: forgejo
|
- id: forgejo
|
||||||
uses: https://data.forgejo.org/actions/setup-forgejo@v2.0.4
|
uses: https://data.forgejo.org/actions/setup-forgejo@v2.0.4
|
||||||
|
|
|
@ -33,7 +33,7 @@ jobs:
|
||||||
# root is used for testing, allow it
|
# root is used for testing, allow it
|
||||||
if: vars.ROLE == 'forgejo-integration' || github.repository_owner == 'root'
|
if: vars.ROLE == 'forgejo-integration' || github.repository_owner == 'root'
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: https://data.forgejo.org/actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
|
|
||||||
|
@ -164,7 +164,7 @@ jobs:
|
||||||
|
|
||||||
- name: build container & release
|
- name: build container & release
|
||||||
if: ${{ secrets.TOKEN != '' }}
|
if: ${{ secrets.TOKEN != '' }}
|
||||||
uses: https://data.forgejo.org/forgejo/forgejo-build-publish/build@v5.2.1
|
uses: https://data.forgejo.org/forgejo/forgejo-build-publish/build@v5.3.1
|
||||||
with:
|
with:
|
||||||
forgejo: "${{ env.GITHUB_SERVER_URL }}"
|
forgejo: "${{ env.GITHUB_SERVER_URL }}"
|
||||||
owner: "${{ env.GITHUB_REPOSITORY_OWNER }}"
|
owner: "${{ env.GITHUB_REPOSITORY_OWNER }}"
|
||||||
|
@ -183,7 +183,7 @@ jobs:
|
||||||
|
|
||||||
- name: build rootless container
|
- name: build rootless container
|
||||||
if: ${{ secrets.TOKEN != '' }}
|
if: ${{ secrets.TOKEN != '' }}
|
||||||
uses: https://data.forgejo.org/forgejo/forgejo-build-publish/build@v5.2.1
|
uses: https://data.forgejo.org/forgejo/forgejo-build-publish/build@v5.3.1
|
||||||
with:
|
with:
|
||||||
forgejo: "${{ env.GITHUB_SERVER_URL }}"
|
forgejo: "${{ env.GITHUB_SERVER_URL }}"
|
||||||
owner: "${{ env.GITHUB_REPOSITORY_OWNER }}"
|
owner: "${{ env.GITHUB_REPOSITORY_OWNER }}"
|
||||||
|
|
|
@ -37,11 +37,11 @@ jobs:
|
||||||
container:
|
container:
|
||||||
image: data.forgejo.org/oci/node:20-bookworm
|
image: data.forgejo.org/oci/node:20-bookworm
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: https://data.forgejo.org/actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
fetch-depth: '0'
|
fetch-depth: '0'
|
||||||
show-progress: 'false'
|
show-progress: 'false'
|
||||||
- uses: https://code.forgejo.org/actions/cascading-pr@v2.2.0
|
- uses: https://data.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 }}
|
||||||
|
|
|
@ -39,10 +39,10 @@ jobs:
|
||||||
runs-on: lxc-bookworm
|
runs-on: lxc-bookworm
|
||||||
if: vars.DOER != '' && vars.FORGEJO != '' && vars.TO_OWNER != '' && vars.FROM_OWNER != '' && secrets.TOKEN != ''
|
if: vars.DOER != '' && vars.FORGEJO != '' && vars.TO_OWNER != '' && vars.FROM_OWNER != '' && secrets.TOKEN != ''
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: https://data.forgejo.org/actions/checkout@v4
|
||||||
|
|
||||||
- name: copy & sign
|
- name: copy & sign
|
||||||
uses: https://data.forgejo.org/forgejo/forgejo-build-publish/publish@v5.2.1
|
uses: https://data.forgejo.org/forgejo/forgejo-build-publish/publish@v5.3.1
|
||||||
with:
|
with:
|
||||||
from-forgejo: ${{ vars.FORGEJO }}
|
from-forgejo: ${{ vars.FORGEJO }}
|
||||||
to-forgejo: ${{ vars.FORGEJO }}
|
to-forgejo: ${{ vars.FORGEJO }}
|
||||||
|
|
|
@ -10,7 +10,6 @@ on:
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
backend-checks:
|
backend-checks:
|
||||||
if: vars.ROLE == 'forgejo-coding' || vars.ROLE == 'forgejo-testing'
|
|
||||||
runs-on: docker
|
runs-on: docker
|
||||||
container:
|
container:
|
||||||
image: 'data.forgejo.org/oci/node:20-bookworm'
|
image: 'data.forgejo.org/oci/node:20-bookworm'
|
||||||
|
@ -27,7 +26,6 @@ jobs:
|
||||||
- run: su forgejo -c 'make --always-make -j$(nproc) lint-backend tidy-check swagger-check fmt-check swagger-validate' # ensure the "go-licenses" make target runs
|
- run: su forgejo -c 'make --always-make -j$(nproc) lint-backend tidy-check swagger-check fmt-check swagger-validate' # ensure the "go-licenses" make target runs
|
||||||
- uses: ./.forgejo/workflows-composite/build-backend
|
- uses: ./.forgejo/workflows-composite/build-backend
|
||||||
frontend-checks:
|
frontend-checks:
|
||||||
if: vars.ROLE == 'forgejo-coding' || vars.ROLE == 'forgejo-testing'
|
|
||||||
runs-on: docker
|
runs-on: docker
|
||||||
container:
|
container:
|
||||||
image: 'data.forgejo.org/oci/node:20-bookworm'
|
image: 'data.forgejo.org/oci/node:20-bookworm'
|
||||||
|
@ -46,7 +44,7 @@ jobs:
|
||||||
apt-get update -qq
|
apt-get update -qq
|
||||||
apt-get -q install -qq -y zstd
|
apt-get -q install -qq -y zstd
|
||||||
- name: "Cache frontend build for playwright testing"
|
- name: "Cache frontend build for playwright testing"
|
||||||
uses: actions/cache/save@v4
|
uses: https://data.forgejo.org/actions/cache/save@v4
|
||||||
with:
|
with:
|
||||||
path: ${{github.workspace}}/public/assets
|
path: ${{github.workspace}}/public/assets
|
||||||
key: frontend-build-${{ github.sha }}
|
key: frontend-build-${{ github.sha }}
|
||||||
|
@ -104,7 +102,7 @@ jobs:
|
||||||
fetch-depth: 20
|
fetch-depth: 20
|
||||||
- uses: ./.forgejo/workflows-composite/setup-env
|
- uses: ./.forgejo/workflows-composite/setup-env
|
||||||
- name: "Restore frontend build"
|
- name: "Restore frontend build"
|
||||||
uses: actions/cache/restore@v4
|
uses: https://data.forgejo.org/actions/cache/restore@v4
|
||||||
id: cache-frontend
|
id: cache-frontend
|
||||||
with:
|
with:
|
||||||
path: ${{github.workspace}}/public/assets
|
path: ${{github.workspace}}/public/assets
|
||||||
|
@ -176,7 +174,6 @@ jobs:
|
||||||
TAGS: bindata
|
TAGS: bindata
|
||||||
TEST_REDIS_SERVER: cacher:${{ matrix.cacher.port }}
|
TEST_REDIS_SERVER: cacher:${{ matrix.cacher.port }}
|
||||||
test-mysql:
|
test-mysql:
|
||||||
if: vars.ROLE == 'forgejo-coding' || vars.ROLE == 'forgejo-testing'
|
|
||||||
runs-on: docker
|
runs-on: docker
|
||||||
needs: [backend-checks, frontend-checks]
|
needs: [backend-checks, frontend-checks]
|
||||||
container:
|
container:
|
||||||
|
@ -199,15 +196,13 @@ jobs:
|
||||||
- name: install dependencies & git >= 2.42
|
- name: install dependencies & git >= 2.42
|
||||||
uses: ./.forgejo/workflows-composite/apt-install-from
|
uses: ./.forgejo/workflows-composite/apt-install-from
|
||||||
with:
|
with:
|
||||||
packages: git git-lfs
|
packages: git git-annex-standalone git-lfs
|
||||||
- uses: ./.forgejo/workflows-composite/build-backend
|
- uses: ./.forgejo/workflows-composite/build-backend
|
||||||
- run: |
|
- run: |
|
||||||
su forgejo -c 'make test-mysql-migration test-mysql'
|
su forgejo -c 'make test-mysql-migration test-mysql'
|
||||||
timeout-minutes: 120
|
|
||||||
env:
|
env:
|
||||||
USE_REPO_TEST_DIR: 1
|
USE_REPO_TEST_DIR: 1
|
||||||
test-pgsql:
|
test-pgsql:
|
||||||
if: vars.ROLE == 'forgejo-coding' || vars.ROLE == 'forgejo-testing'
|
|
||||||
runs-on: docker
|
runs-on: docker
|
||||||
needs: [backend-checks, frontend-checks]
|
needs: [backend-checks, frontend-checks]
|
||||||
container:
|
container:
|
||||||
|
@ -236,17 +231,15 @@ jobs:
|
||||||
- name: install dependencies & git >= 2.42
|
- name: install dependencies & git >= 2.42
|
||||||
uses: ./.forgejo/workflows-composite/apt-install-from
|
uses: ./.forgejo/workflows-composite/apt-install-from
|
||||||
with:
|
with:
|
||||||
packages: git git-lfs
|
packages: git git-annex-standalone git-lfs
|
||||||
- uses: ./.forgejo/workflows-composite/build-backend
|
- uses: ./.forgejo/workflows-composite/build-backend
|
||||||
- run: |
|
- run: |
|
||||||
su forgejo -c 'make test-pgsql-migration test-pgsql'
|
su forgejo -c 'make test-pgsql-migration test-pgsql'
|
||||||
timeout-minutes: 120
|
|
||||||
env:
|
env:
|
||||||
RACE_ENABLED: true
|
RACE_ENABLED: true
|
||||||
USE_REPO_TEST_DIR: 1
|
USE_REPO_TEST_DIR: 1
|
||||||
TEST_LDAP: 1
|
TEST_LDAP: 1
|
||||||
test-sqlite:
|
test-sqlite:
|
||||||
if: vars.ROLE == 'forgejo-coding' || vars.ROLE == 'forgejo-testing'
|
|
||||||
runs-on: docker
|
runs-on: docker
|
||||||
needs: [backend-checks, frontend-checks]
|
needs: [backend-checks, frontend-checks]
|
||||||
container:
|
container:
|
||||||
|
@ -258,25 +251,21 @@ jobs:
|
||||||
- name: install dependencies & git >= 2.42
|
- name: install dependencies & git >= 2.42
|
||||||
uses: ./.forgejo/workflows-composite/apt-install-from
|
uses: ./.forgejo/workflows-composite/apt-install-from
|
||||||
with:
|
with:
|
||||||
packages: git git-lfs
|
packages: git git-annex-standalone git-lfs
|
||||||
- uses: ./.forgejo/workflows-composite/build-backend
|
- uses: ./.forgejo/workflows-composite/build-backend
|
||||||
- run: |
|
- run: |
|
||||||
su forgejo -c 'make test-sqlite-migration test-sqlite'
|
su forgejo -c 'make test-sqlite-migration test-sqlite'
|
||||||
timeout-minutes: 120
|
|
||||||
env:
|
env:
|
||||||
TAGS: sqlite sqlite_unlock_notify
|
TAGS: sqlite sqlite_unlock_notify
|
||||||
RACE_ENABLED: true
|
RACE_ENABLED: true
|
||||||
TEST_TAGS: sqlite sqlite_unlock_notify
|
TEST_TAGS: sqlite sqlite_unlock_notify
|
||||||
USE_REPO_TEST_DIR: 1
|
USE_REPO_TEST_DIR: 1
|
||||||
security-check:
|
security-check:
|
||||||
if: vars.ROLE == 'forgejo-coding' || vars.ROLE == 'forgejo-testing'
|
|
||||||
runs-on: docker
|
runs-on: docker
|
||||||
needs:
|
needs:
|
||||||
- test-sqlite
|
- test-sqlite
|
||||||
- test-pgsql
|
- test-pgsql
|
||||||
- test-mysql
|
- test-mysql
|
||||||
- test-remote-cacher
|
|
||||||
- test-unit
|
|
||||||
container:
|
container:
|
||||||
image: 'data.forgejo.org/oci/node:20-bookworm'
|
image: 'data.forgejo.org/oci/node:20-bookworm'
|
||||||
options: --tmpfs /tmp:exec,noatime
|
options: --tmpfs /tmp:exec,noatime
|
||||||
|
|
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -72,6 +72,7 @@ cpu.out
|
||||||
/tests/e2e/reports
|
/tests/e2e/reports
|
||||||
/tests/e2e/test-artifacts
|
/tests/e2e/test-artifacts
|
||||||
/tests/e2e/test-snapshots
|
/tests/e2e/test-snapshots
|
||||||
|
/tests/e2e/.auth
|
||||||
/tests/*.ini
|
/tests/*.ini
|
||||||
/tests/**/*.git/**/*.sample
|
/tests/**/*.git/**/*.sample
|
||||||
/node_modules
|
/node_modules
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
FROM --platform=$BUILDPLATFORM code.forgejo.org/oci/xx AS xx
|
FROM --platform=$BUILDPLATFORM data.forgejo.org/oci/xx AS xx
|
||||||
|
|
||||||
FROM --platform=$BUILDPLATFORM code.forgejo.org/oci/golang:1.23-alpine3.20 as build-env
|
FROM --platform=$BUILDPLATFORM data.forgejo.org/oci/golang:1.23-alpine3.20 as build-env
|
||||||
|
|
||||||
ARG GOPROXY
|
ARG GOPROXY
|
||||||
ENV GOPROXY=${GOPROXY:-direct}
|
ENV GOPROXY=${GOPROXY:-direct}
|
||||||
|
@ -51,7 +51,7 @@ RUN chmod 755 /tmp/local/usr/bin/entrypoint \
|
||||||
/go/src/code.gitea.io/gitea/environment-to-ini
|
/go/src/code.gitea.io/gitea/environment-to-ini
|
||||||
RUN chmod 644 /go/src/code.gitea.io/gitea/contrib/autocompletion/bash_autocomplete
|
RUN chmod 644 /go/src/code.gitea.io/gitea/contrib/autocompletion/bash_autocomplete
|
||||||
|
|
||||||
FROM code.forgejo.org/oci/alpine:3.20
|
FROM data.forgejo.org/oci/alpine:3.20
|
||||||
ARG RELEASE_VERSION
|
ARG RELEASE_VERSION
|
||||||
LABEL maintainer="contact@forgejo.org" \
|
LABEL maintainer="contact@forgejo.org" \
|
||||||
org.opencontainers.image.authors="Forgejo" \
|
org.opencontainers.image.authors="Forgejo" \
|
||||||
|
@ -78,6 +78,7 @@ RUN apk --no-cache add \
|
||||||
sqlite \
|
sqlite \
|
||||||
su-exec \
|
su-exec \
|
||||||
gnupg \
|
gnupg \
|
||||||
|
git-annex \
|
||||||
&& rm -rf /var/cache/apk/*
|
&& rm -rf /var/cache/apk/*
|
||||||
|
|
||||||
RUN addgroup \
|
RUN addgroup \
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
FROM --platform=$BUILDPLATFORM code.forgejo.org/oci/xx AS xx
|
FROM --platform=$BUILDPLATFORM data.forgejo.org/oci/xx AS xx
|
||||||
|
|
||||||
FROM --platform=$BUILDPLATFORM code.forgejo.org/oci/golang:1.23-alpine3.20 as build-env
|
FROM --platform=$BUILDPLATFORM data.forgejo.org/oci/golang:1.23-alpine3.20 as build-env
|
||||||
|
|
||||||
ARG GOPROXY
|
ARG GOPROXY
|
||||||
ENV GOPROXY=${GOPROXY:-direct}
|
ENV GOPROXY=${GOPROXY:-direct}
|
||||||
|
@ -49,7 +49,7 @@ RUN chmod 755 /tmp/local/usr/local/bin/docker-entrypoint.sh \
|
||||||
/go/src/code.gitea.io/gitea/environment-to-ini
|
/go/src/code.gitea.io/gitea/environment-to-ini
|
||||||
RUN chmod 644 /go/src/code.gitea.io/gitea/contrib/autocompletion/bash_autocomplete
|
RUN chmod 644 /go/src/code.gitea.io/gitea/contrib/autocompletion/bash_autocomplete
|
||||||
|
|
||||||
FROM code.forgejo.org/oci/alpine:3.20
|
FROM data.forgejo.org/oci/alpine:3.20
|
||||||
LABEL maintainer="contact@forgejo.org" \
|
LABEL maintainer="contact@forgejo.org" \
|
||||||
org.opencontainers.image.authors="Forgejo" \
|
org.opencontainers.image.authors="Forgejo" \
|
||||||
org.opencontainers.image.url="https://forgejo.org" \
|
org.opencontainers.image.url="https://forgejo.org" \
|
||||||
|
@ -71,6 +71,7 @@ RUN apk --no-cache add \
|
||||||
git \
|
git \
|
||||||
curl \
|
curl \
|
||||||
gnupg \
|
gnupg \
|
||||||
|
git-annex \
|
||||||
&& rm -rf /var/cache/apk/*
|
&& rm -rf /var/cache/apk/*
|
||||||
|
|
||||||
RUN addgroup \
|
RUN addgroup \
|
||||||
|
|
4
Makefile
4
Makefile
|
@ -8,7 +8,7 @@ self := $(location)
|
||||||
@tmpdir=`mktemp --tmpdir -d` ; \
|
@tmpdir=`mktemp --tmpdir -d` ; \
|
||||||
echo Using temporary directory $$tmpdir for test repositories ; \
|
echo Using temporary directory $$tmpdir for test repositories ; \
|
||||||
USE_REPO_TEST_DIR= $(MAKE) -f $(self) --no-print-directory REPO_TEST_DIR=$$tmpdir/ $@ ; \
|
USE_REPO_TEST_DIR= $(MAKE) -f $(self) --no-print-directory REPO_TEST_DIR=$$tmpdir/ $@ ; \
|
||||||
STATUS=$$? ; rm -r "$$tmpdir" ; exit $$STATUS
|
STATUS=$$? ; chmod -R +w "$$tmpdir" && rm -r "$$tmpdir" ; exit $$STATUS
|
||||||
|
|
||||||
else
|
else
|
||||||
|
|
||||||
|
@ -104,7 +104,7 @@ else
|
||||||
FORGEJO_VERSION_API ?= $(GITEA_VERSION)+${GITEA_COMPATIBILITY}
|
FORGEJO_VERSION_API ?= $(GITEA_VERSION)+${GITEA_COMPATIBILITY}
|
||||||
else
|
else
|
||||||
# drop the "g" prefix prepended by git describe to the commit hash
|
# drop the "g" prefix prepended by git describe to the commit hash
|
||||||
FORGEJO_VERSION ?= $(shell git describe --exclude '*-test' --tags --always | sed 's/^v//' | sed 's/\-g/-/')+${GITEA_COMPATIBILITY}
|
FORGEJO_VERSION ?= $(shell git describe --exclude '*-test' --tags --always | sed 's/^v//' | sed 's/\-g/-/2')+${GITEA_COMPATIBILITY}
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
FORGEJO_VERSION_MAJOR=$(shell echo $(FORGEJO_VERSION) | sed -e 's/\..*//')
|
FORGEJO_VERSION_MAJOR=$(shell echo $(FORGEJO_VERSION) | sed -e 's/\..*//')
|
||||||
|
|
7
assets/go-licenses.json
generated
7
assets/go-licenses.json
generated
|
@ -84,6 +84,11 @@
|
||||||
"path": "gitea.com/lunny/levelqueue/LICENSE",
|
"path": "gitea.com/lunny/levelqueue/LICENSE",
|
||||||
"licenseText": "Copyright (c) 2019 Lunny Xiao\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n"
|
"licenseText": "Copyright (c) 2019 Lunny Xiao\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "github.com/42wim/httpsig",
|
||||||
|
"path": "github.com/42wim/httpsig/LICENSE",
|
||||||
|
"licenseText": "BSD 3-Clause License\n\nCopyright (c) 2018, go-fed\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n* Redistributions of source code must retain the above copyright notice, this\n list of conditions and the following disclaimer.\n\n* Redistributions in binary form must reproduce the above copyright notice,\n this list of conditions and the following disclaimer in the documentation\n and/or other materials provided with the distribution.\n\n* Neither the name of the copyright holder nor the names of its\n contributors may be used to endorse or promote products derived from\n this software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\"\nAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\nFOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\nDAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\nSERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\nCAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\nOR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "github.com/42wim/sshsig",
|
"name": "github.com/42wim/sshsig",
|
||||||
"path": "github.com/42wim/sshsig/LICENSE",
|
"path": "github.com/42wim/sshsig/LICENSE",
|
||||||
|
@ -292,7 +297,7 @@
|
||||||
{
|
{
|
||||||
"name": "github.com/cyphar/filepath-securejoin",
|
"name": "github.com/cyphar/filepath-securejoin",
|
||||||
"path": "github.com/cyphar/filepath-securejoin/LICENSE",
|
"path": "github.com/cyphar/filepath-securejoin/LICENSE",
|
||||||
"licenseText": "Copyright (C) 2014-2015 Docker Inc \u0026 Go Authors. All rights reserved.\nCopyright (C) 2017 SUSE LLC. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n * Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n * Redistributions in binary form must reproduce the above\ncopyright notice, this list of conditions and the following disclaimer\nin the documentation and/or other materials provided with the\ndistribution.\n * Neither the name of Google Inc. nor the names of its\ncontributors may be used to endorse or promote products derived from\nthis software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nOWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n"
|
"licenseText": "Copyright (C) 2014-2015 Docker Inc \u0026 Go Authors. All rights reserved.\nCopyright (C) 2017-2024 SUSE LLC. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n * Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n * Redistributions in binary form must reproduce the above\ncopyright notice, this list of conditions and the following disclaimer\nin the documentation and/or other materials provided with the\ndistribution.\n * Neither the name of Google Inc. nor the names of its\ncontributors may be used to endorse or promote products derived from\nthis software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n\"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\nLIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\nA PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nOWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\nLIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\nTHEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "github.com/davecgh/go-spew/spew",
|
"name": "github.com/davecgh/go-spew/spew",
|
||||||
|
|
|
@ -59,9 +59,9 @@ func initRemoveTags() {
|
||||||
oldnew := []string{}
|
oldnew := []string{}
|
||||||
for _, el := range []string{
|
for _, el := range []string{
|
||||||
"email@example.com", "correu@example.com", "epasts@domens.lv", "email@exemplo.com", "eposta@ornek.com", "email@példa.hu", "email@esempio.it",
|
"email@example.com", "correu@example.com", "epasts@domens.lv", "email@exemplo.com", "eposta@ornek.com", "email@példa.hu", "email@esempio.it",
|
||||||
"user", "utente", "lietotājs", "gebruiker", "usuário", "Benutzer", "Bruker",
|
"user", "utente", "lietotājs", "gebruiker", "usuário", "Benutzer", "Bruker", "bruger", "użytkownik",
|
||||||
"server", "servidor", "kiszolgáló", "serveris",
|
"server", "servidor", "kiszolgáló", "serveris",
|
||||||
"label", "etichetta", "etiķete", "rótulo", "Label", "utilizador",
|
"label", "etichetta", "etiķete", "rótulo", "Label", "utilizador", "etiket", "iezīme", "etykieta",
|
||||||
} {
|
} {
|
||||||
oldnew = append(oldnew, "<"+el+">", "REPLACED-TAG")
|
oldnew = append(oldnew, "<"+el+">", "REPLACED-TAG")
|
||||||
}
|
}
|
||||||
|
|
76
cmd/serv.go
76
cmd/serv.go
|
@ -38,6 +38,7 @@ import (
|
||||||
|
|
||||||
const (
|
const (
|
||||||
lfsAuthenticateVerb = "git-lfs-authenticate"
|
lfsAuthenticateVerb = "git-lfs-authenticate"
|
||||||
|
gitAnnexShellVerb = "git-annex-shell"
|
||||||
)
|
)
|
||||||
|
|
||||||
// CmdServ represents the available serv sub-command.
|
// CmdServ represents the available serv sub-command.
|
||||||
|
@ -79,6 +80,7 @@ var (
|
||||||
"git-upload-archive": perm.AccessModeRead,
|
"git-upload-archive": perm.AccessModeRead,
|
||||||
"git-receive-pack": perm.AccessModeWrite,
|
"git-receive-pack": perm.AccessModeWrite,
|
||||||
lfsAuthenticateVerb: perm.AccessModeNone,
|
lfsAuthenticateVerb: perm.AccessModeNone,
|
||||||
|
gitAnnexShellVerb: perm.AccessModeNone, // annex permissions are enforced by GIT_ANNEX_SHELL_READONLY, rather than the Gitea API
|
||||||
}
|
}
|
||||||
alphaDashDotPattern = regexp.MustCompile(`[^\w-\.]`)
|
alphaDashDotPattern = regexp.MustCompile(`[^\w-\.]`)
|
||||||
)
|
)
|
||||||
|
@ -212,6 +214,28 @@ func runServ(c *cli.Context) error {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if verb == gitAnnexShellVerb {
|
||||||
|
if !setting.Annex.Enabled {
|
||||||
|
return fail(ctx, "Unknown git command", "git-annex request over SSH denied, git-annex support is disabled")
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(words) < 3 {
|
||||||
|
return fail(ctx, "Too few arguments", "Too few arguments in cmd: %s", cmd)
|
||||||
|
}
|
||||||
|
|
||||||
|
// git-annex always puts the repo in words[2], unlike most other
|
||||||
|
// git subcommands; and it sometimes names repos like /~/, as if
|
||||||
|
// $HOME should get expanded while also being rooted. e.g.:
|
||||||
|
// git-annex-shell 'configlist' '/~/user/repo'
|
||||||
|
// git-annex-shell 'sendkey' '/user/repo 'key'
|
||||||
|
repoPath = words[2]
|
||||||
|
repoPath = strings.TrimPrefix(repoPath, "/")
|
||||||
|
repoPath = strings.TrimPrefix(repoPath, "~/")
|
||||||
|
}
|
||||||
|
|
||||||
|
// prevent directory traversal attacks
|
||||||
|
repoPath = filepath.Clean("/" + repoPath)[1:]
|
||||||
|
|
||||||
rr := strings.SplitN(repoPath, "/", 2)
|
rr := strings.SplitN(repoPath, "/", 2)
|
||||||
if len(rr) != 2 {
|
if len(rr) != 2 {
|
||||||
return fail(ctx, "Invalid repository path", "Invalid repository path: %v", repoPath)
|
return fail(ctx, "Invalid repository path", "Invalid repository path: %v", repoPath)
|
||||||
|
@ -225,6 +249,18 @@ func runServ(c *cli.Context) error {
|
||||||
// so that username and reponame are not affected.
|
// so that username and reponame are not affected.
|
||||||
repoPath = strings.ToLower(strings.TrimSpace(repoPath))
|
repoPath = strings.ToLower(strings.TrimSpace(repoPath))
|
||||||
|
|
||||||
|
// put the sanitized repoPath back into the argument list for later
|
||||||
|
if verb == gitAnnexShellVerb {
|
||||||
|
// git-annex-shell demands an absolute path
|
||||||
|
absRepoPath, err := filepath.Abs(filepath.Join(setting.RepoRootPath, repoPath))
|
||||||
|
if err != nil {
|
||||||
|
return fail(ctx, "Error locating repoPath", "%v", err)
|
||||||
|
}
|
||||||
|
words[2] = absRepoPath
|
||||||
|
} else {
|
||||||
|
words[1] = repoPath
|
||||||
|
}
|
||||||
|
|
||||||
if alphaDashDotPattern.MatchString(reponame) {
|
if alphaDashDotPattern.MatchString(reponame) {
|
||||||
return fail(ctx, "Invalid repo name", "Invalid repo name: %s", reponame)
|
return fail(ctx, "Invalid repo name", "Invalid repo name: %s", reponame)
|
||||||
}
|
}
|
||||||
|
@ -303,21 +339,45 @@ func runServ(c *cli.Context) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
var gitcmd *exec.Cmd
|
gitBinVerb, err := exec.LookPath(verb)
|
||||||
gitBinPath := filepath.Dir(git.GitExecutable) // e.g. /usr/bin
|
if err != nil {
|
||||||
gitBinVerb := filepath.Join(gitBinPath, verb) // e.g. /usr/bin/git-upload-pack
|
|
||||||
if _, err := os.Stat(gitBinVerb); err != nil {
|
|
||||||
// if the command "git-upload-pack" doesn't exist, try to split "git-upload-pack" to use the sub-command with git
|
// if the command "git-upload-pack" doesn't exist, try to split "git-upload-pack" to use the sub-command with git
|
||||||
// ps: Windows only has "git.exe" in the bin path, so Windows always uses this way
|
// ps: Windows only has "git.exe" in the bin path, so Windows always uses this way
|
||||||
|
// ps: git-annex-shell and other extensions may not necessarily be in gitBinPath,
|
||||||
|
// but '{gitBinPath}/git annex-shell' should be able to find them on $PATH.
|
||||||
verbFields := strings.SplitN(verb, "-", 2)
|
verbFields := strings.SplitN(verb, "-", 2)
|
||||||
if len(verbFields) == 2 {
|
if len(verbFields) == 2 {
|
||||||
// use git binary with the sub-command part: "C:\...\bin\git.exe", "upload-pack", ...
|
// use git binary with the sub-command part: "C:\...\bin\git.exe", "upload-pack", ...
|
||||||
gitcmd = exec.CommandContext(ctx, git.GitExecutable, verbFields[1], repoPath)
|
gitBinVerb = git.GitExecutable
|
||||||
|
words = append([]string{verbFields[1]}, words...)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if gitcmd == nil {
|
|
||||||
// by default, use the verb (it has been checked above by allowedCommands)
|
// by default, use the verb (it has been checked above by allowedCommands)
|
||||||
gitcmd = exec.CommandContext(ctx, gitBinVerb, repoPath)
|
gitcmd := exec.CommandContext(ctx, gitBinVerb, words[1:]...)
|
||||||
|
|
||||||
|
if verb == gitAnnexShellVerb {
|
||||||
|
// This doesn't get its own isolated section like LFS does, because LFS
|
||||||
|
// is handled by internal Gitea routines, but git-annex has to be shelled out
|
||||||
|
// to like other git subcommands, so we need to build up gitcmd.
|
||||||
|
|
||||||
|
// TODO: does this work on Windows?
|
||||||
|
gitcmd.Env = append(gitcmd.Env,
|
||||||
|
// "If set, disallows running git-shell to handle unknown commands."
|
||||||
|
// - git-annex-shell(1)
|
||||||
|
"GIT_ANNEX_SHELL_LIMITED=True",
|
||||||
|
// "If set, git-annex-shell will refuse to run commands
|
||||||
|
// that do not operate on the specified directory."
|
||||||
|
// - git-annex-shell(1)
|
||||||
|
fmt.Sprintf("GIT_ANNEX_SHELL_DIRECTORY=%s", words[2]),
|
||||||
|
)
|
||||||
|
if results.UserMode < perm.AccessModeWrite {
|
||||||
|
// "If set, disallows any action that could modify the git-annex repository."
|
||||||
|
// - git-annex-shell(1)
|
||||||
|
// We set this when the backend API has told us that we don't have write permission to this repo.
|
||||||
|
log.Debug("Setting GIT_ANNEX_SHELL_READONLY=True")
|
||||||
|
gitcmd.Env = append(gitcmd.Env, "GIT_ANNEX_SHELL_READONLY=True")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
process.SetSysProcAttribute(gitcmd)
|
process.SetSysProcAttribute(gitcmd)
|
||||||
|
|
11
cmd/web.go
11
cmd/web.go
|
@ -9,6 +9,7 @@ import (
|
||||||
"net"
|
"net"
|
||||||
"net/http"
|
"net/http"
|
||||||
"os"
|
"os"
|
||||||
|
"os/exec"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
|
@ -247,6 +248,12 @@ func runWeb(ctx *cli.Context) error {
|
||||||
createPIDFile(ctx.String("pid"))
|
createPIDFile(ctx.String("pid"))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if setting.Annex.Enabled {
|
||||||
|
if _, err := exec.LookPath("git-annex"); err != nil {
|
||||||
|
log.Fatal("You have enabled git-annex support but git-annex is not installed. Please make sure that Forgejo's PATH contains the git-annex executable.")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if !setting.InstallLock {
|
if !setting.InstallLock {
|
||||||
if err := serveInstall(ctx); err != nil {
|
if err := serveInstall(ctx); err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -311,6 +318,10 @@ func listen(m http.Handler, handleRedirector bool) error {
|
||||||
log.Info("LFS server enabled")
|
log.Info("LFS server enabled")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if setting.Annex.Enabled {
|
||||||
|
log.Info("git-annex enabled")
|
||||||
|
}
|
||||||
|
|
||||||
var err error
|
var err error
|
||||||
switch setting.Protocol {
|
switch setting.Protocol {
|
||||||
case setting.HTTP:
|
case setting.HTTP:
|
||||||
|
|
|
@ -2678,6 +2678,17 @@ LEVEL = Info
|
||||||
;; Limit the number of concurrent upload/download operations within a batch
|
;; Limit the number of concurrent upload/download operations within a batch
|
||||||
;BATCH_OPERATION_CONCURRENCY = 8
|
;BATCH_OPERATION_CONCURRENCY = 8
|
||||||
|
|
||||||
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
;[annex]
|
||||||
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
;;
|
||||||
|
;; Whether git-annex is enabled; defaults to false
|
||||||
|
;ENABLED = false
|
||||||
|
;; Whether to disable p2phttp support; default is the same as repository.DISABLE_HTTP_GIT
|
||||||
|
;DISABLE_P2PHTTP = false
|
||||||
|
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
;; settings for packages, will override storage setting
|
;; settings for packages, will override storage setting
|
||||||
|
|
22
go.mod
22
go.mod
|
@ -2,10 +2,10 @@ module code.gitea.io/gitea
|
||||||
|
|
||||||
go 1.23
|
go 1.23
|
||||||
|
|
||||||
toolchain go1.23.4
|
toolchain go1.23.5
|
||||||
|
|
||||||
require (
|
require (
|
||||||
code.forgejo.org/f3/gof3/v3 v3.7.0
|
code.forgejo.org/f3/gof3/v3 v3.10.2
|
||||||
code.forgejo.org/forgejo-contrib/go-libravatar v0.0.0-20191008002943-06d1c002b251
|
code.forgejo.org/forgejo-contrib/go-libravatar v0.0.0-20191008002943-06d1c002b251
|
||||||
code.forgejo.org/forgejo/reply v1.0.2
|
code.forgejo.org/forgejo/reply v1.0.2
|
||||||
code.forgejo.org/go-chi/binding v1.0.0
|
code.forgejo.org/go-chi/binding v1.0.0
|
||||||
|
@ -19,10 +19,10 @@ require (
|
||||||
gitea.com/lunny/levelqueue v0.4.2-0.20230414023320-3c0159fe0fe4
|
gitea.com/lunny/levelqueue v0.4.2-0.20230414023320-3c0159fe0fe4
|
||||||
github.com/42wim/sshsig v0.0.0-20211121163825-841cf5bbc121
|
github.com/42wim/sshsig v0.0.0-20211121163825-841cf5bbc121
|
||||||
github.com/Azure/go-ntlmssp v0.0.0-20221128193559-754e69321358
|
github.com/Azure/go-ntlmssp v0.0.0-20221128193559-754e69321358
|
||||||
github.com/ProtonMail/go-crypto v1.0.0
|
github.com/ProtonMail/go-crypto v1.1.3
|
||||||
github.com/PuerkitoBio/goquery v1.10.0
|
github.com/PuerkitoBio/goquery v1.10.0
|
||||||
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.15.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.4
|
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
|
||||||
|
@ -44,7 +44,7 @@ require (
|
||||||
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
|
||||||
github.com/go-fed/httpsig v1.1.1-0.20201223112313-55836744818e
|
github.com/go-fed/httpsig v1.1.1-0.20201223112313-55836744818e
|
||||||
github.com/go-git/go-git/v5 v5.11.0
|
github.com/go-git/go-git/v5 v5.13.1
|
||||||
github.com/go-ldap/ldap/v3 v3.4.6
|
github.com/go-ldap/ldap/v3 v3.4.6
|
||||||
github.com/go-openapi/spec v0.20.14
|
github.com/go-openapi/spec v0.20.14
|
||||||
github.com/go-sql-driver/mysql v1.8.1
|
github.com/go-sql-driver/mysql v1.8.1
|
||||||
|
@ -89,7 +89,7 @@ require (
|
||||||
github.com/robfig/cron/v3 v3.0.1
|
github.com/robfig/cron/v3 v3.0.1
|
||||||
github.com/santhosh-tekuri/jsonschema/v6 v6.0.1
|
github.com/santhosh-tekuri/jsonschema/v6 v6.0.1
|
||||||
github.com/sassoftware/go-rpmutils v0.4.0
|
github.com/sassoftware/go-rpmutils v0.4.0
|
||||||
github.com/sergi/go-diff v1.3.1
|
github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3
|
||||||
github.com/shurcooL/vfsgen v0.0.0-20230704071429-0000e147ea92
|
github.com/shurcooL/vfsgen v0.0.0-20230704071429-0000e147ea92
|
||||||
github.com/stretchr/testify v1.10.0
|
github.com/stretchr/testify v1.10.0
|
||||||
github.com/syndtr/goleveldb v1.0.0
|
github.com/syndtr/goleveldb v1.0.0
|
||||||
|
@ -131,6 +131,7 @@ require (
|
||||||
dario.cat/mergo v1.0.0 // indirect
|
dario.cat/mergo v1.0.0 // indirect
|
||||||
filippo.io/edwards25519 v1.1.0 // indirect
|
filippo.io/edwards25519 v1.1.0 // indirect
|
||||||
git.sr.ht/~mariusor/go-xsd-duration v0.0.0-20220703122237-02e73435a078 // indirect
|
git.sr.ht/~mariusor/go-xsd-duration v0.0.0-20220703122237-02e73435a078 // indirect
|
||||||
|
github.com/42wim/httpsig v1.2.2 // indirect
|
||||||
github.com/DataDog/zstd v1.5.5 // indirect
|
github.com/DataDog/zstd v1.5.5 // indirect
|
||||||
github.com/GoogleCloudPlatform/grpc-gcp-go/grpcgcp v1.5.0 // indirect
|
github.com/GoogleCloudPlatform/grpc-gcp-go/grpcgcp v1.5.0 // indirect
|
||||||
github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.24.2 // indirect
|
github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.24.2 // indirect
|
||||||
|
@ -168,11 +169,11 @@ require (
|
||||||
github.com/cloudflare/circl v1.3.8 // indirect
|
github.com/cloudflare/circl v1.3.8 // indirect
|
||||||
github.com/cncf/xds/go v0.0.0-20240905190251-b4127c9b8d78 // indirect
|
github.com/cncf/xds/go v0.0.0-20240905190251-b4127c9b8d78 // indirect
|
||||||
github.com/cpuguy83/go-md2man/v2 v2.0.5 // indirect
|
github.com/cpuguy83/go-md2man/v2 v2.0.5 // indirect
|
||||||
github.com/cyphar/filepath-securejoin v0.2.4 // indirect
|
github.com/cyphar/filepath-securejoin v0.3.6 // indirect
|
||||||
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
|
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
|
||||||
github.com/davidmz/go-pageant v1.0.2 // indirect
|
github.com/davidmz/go-pageant v1.0.2 // indirect
|
||||||
github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect
|
github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect
|
||||||
github.com/dlclark/regexp2 v1.11.0 // indirect
|
github.com/dlclark/regexp2 v1.11.4 // indirect
|
||||||
github.com/emersion/go-sasl v0.0.0-20231106173351-e73c9f7bad43 // indirect
|
github.com/emersion/go-sasl v0.0.0-20231106173351-e73c9f7bad43 // indirect
|
||||||
github.com/emirpasic/gods v1.18.1 // indirect
|
github.com/emirpasic/gods v1.18.1 // indirect
|
||||||
github.com/envoyproxy/go-control-plane v0.13.1 // indirect
|
github.com/envoyproxy/go-control-plane v0.13.1 // indirect
|
||||||
|
@ -184,7 +185,7 @@ require (
|
||||||
github.com/go-asn1-ber/asn1-ber v1.5.5 // indirect
|
github.com/go-asn1-ber/asn1-ber v1.5.5 // indirect
|
||||||
github.com/go-enry/go-oniguruma v1.2.1 // indirect
|
github.com/go-enry/go-oniguruma v1.2.1 // indirect
|
||||||
github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect
|
github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect
|
||||||
github.com/go-git/go-billy/v5 v5.5.0 // indirect
|
github.com/go-git/go-billy/v5 v5.6.1 // indirect
|
||||||
github.com/go-ini/ini v1.67.0 // indirect
|
github.com/go-ini/ini v1.67.0 // indirect
|
||||||
github.com/go-logr/logr v1.4.2 // indirect
|
github.com/go-logr/logr v1.4.2 // indirect
|
||||||
github.com/go-logr/stdr v1.2.2 // indirect
|
github.com/go-logr/stdr v1.2.2 // indirect
|
||||||
|
@ -246,13 +247,14 @@ require (
|
||||||
github.com/russross/blackfriday/v2 v2.1.0 // indirect
|
github.com/russross/blackfriday/v2 v2.1.0 // indirect
|
||||||
github.com/shurcooL/httpfs v0.0.0-20230704072500-f1e31cf0ba5c // indirect
|
github.com/shurcooL/httpfs v0.0.0-20230704072500-f1e31cf0ba5c // indirect
|
||||||
github.com/sirupsen/logrus v1.9.3 // indirect
|
github.com/sirupsen/logrus v1.9.3 // indirect
|
||||||
github.com/skeema/knownhosts v1.2.1 // indirect
|
github.com/skeema/knownhosts v1.3.0 // indirect
|
||||||
github.com/ssor/bom v0.0.0-20170718123548-6386211fdfcf // indirect
|
github.com/ssor/bom v0.0.0-20170718123548-6386211fdfcf // indirect
|
||||||
github.com/x448/float16 v0.8.4 // indirect
|
github.com/x448/float16 v0.8.4 // indirect
|
||||||
github.com/xanzy/ssh-agent v0.3.3 // indirect
|
github.com/xanzy/ssh-agent v0.3.3 // indirect
|
||||||
github.com/xi2/xz v0.0.0-20171230120015-48954b6210f8 // indirect
|
github.com/xi2/xz v0.0.0-20171230120015-48954b6210f8 // indirect
|
||||||
github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1 // indirect
|
github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1 // indirect
|
||||||
github.com/zeebo/blake3 v0.2.4 // indirect
|
github.com/zeebo/blake3 v0.2.4 // indirect
|
||||||
|
gitlab.com/gitlab-org/api/client-go v0.116.0 // indirect
|
||||||
go.etcd.io/bbolt v1.3.9 // indirect
|
go.etcd.io/bbolt v1.3.9 // indirect
|
||||||
go.opencensus.io v0.24.0 // indirect
|
go.opencensus.io v0.24.0 // indirect
|
||||||
go.opentelemetry.io/contrib/detectors/gcp v1.31.0 // indirect
|
go.opentelemetry.io/contrib/detectors/gcp v1.31.0 // indirect
|
||||||
|
|
58
go.sum
58
go.sum
|
@ -610,8 +610,8 @@ cloud.google.com/go/workflows v1.7.0/go.mod h1:JhSrZuVZWuiDfKEFxU0/F1PQjmpnpcoIS
|
||||||
cloud.google.com/go/workflows v1.8.0/go.mod h1:ysGhmEajwZxGn1OhGOGKsTXc5PyxOc0vfKf5Af+to4M=
|
cloud.google.com/go/workflows v1.8.0/go.mod h1:ysGhmEajwZxGn1OhGOGKsTXc5PyxOc0vfKf5Af+to4M=
|
||||||
cloud.google.com/go/workflows v1.9.0/go.mod h1:ZGkj1aFIOd9c8Gerkjjq7OW7I5+l6cSvT3ujaO/WwSA=
|
cloud.google.com/go/workflows v1.9.0/go.mod h1:ZGkj1aFIOd9c8Gerkjjq7OW7I5+l6cSvT3ujaO/WwSA=
|
||||||
cloud.google.com/go/workflows v1.10.0/go.mod h1:fZ8LmRmZQWacon9UCX1r/g/DfAXx5VcPALq2CxzdePw=
|
cloud.google.com/go/workflows v1.10.0/go.mod h1:fZ8LmRmZQWacon9UCX1r/g/DfAXx5VcPALq2CxzdePw=
|
||||||
code.forgejo.org/f3/gof3/v3 v3.7.0 h1:ZfuCP8CGm8ZJbWmL+V0pUu3E0X4FCAA7GfRDy/y5/K4=
|
code.forgejo.org/f3/gof3/v3 v3.10.2 h1:EOlv9d8GR7l0BmvZF101O3LUuabb4g5Hw5fKYPiPZlI=
|
||||||
code.forgejo.org/f3/gof3/v3 v3.7.0/go.mod h1:oNhOeqD4DZYjVcNjQXIOdDX9b/1tqxi9ITLS8H9/Csw=
|
code.forgejo.org/f3/gof3/v3 v3.10.2/go.mod h1:qApIHumpBkFkeBEokviO28+HK2WM11IsmMOhmjvCjFQ=
|
||||||
code.forgejo.org/forgejo-contrib/go-libravatar v0.0.0-20191008002943-06d1c002b251 h1:HTZl3CBk3ABNYtFI6TPLvJgGKFIhKT5CBk0sbOtkDKU=
|
code.forgejo.org/forgejo-contrib/go-libravatar v0.0.0-20191008002943-06d1c002b251 h1:HTZl3CBk3ABNYtFI6TPLvJgGKFIhKT5CBk0sbOtkDKU=
|
||||||
code.forgejo.org/forgejo-contrib/go-libravatar v0.0.0-20191008002943-06d1c002b251/go.mod h1:PphB88CPbx601QrWPMZATeorACeVmQlyv3u+uUMbSaM=
|
code.forgejo.org/forgejo-contrib/go-libravatar v0.0.0-20191008002943-06d1c002b251/go.mod h1:PphB88CPbx601QrWPMZATeorACeVmQlyv3u+uUMbSaM=
|
||||||
code.forgejo.org/forgejo/act v1.22.0 h1:NbUf0+vQ48+ddwe4zVkINqnxKYl/to+NUvW7iisPA60=
|
code.forgejo.org/forgejo/act v1.22.0 h1:NbUf0+vQ48+ddwe4zVkINqnxKYl/to+NUvW7iisPA60=
|
||||||
|
@ -651,6 +651,8 @@ gitea.com/lunny/levelqueue v0.4.2-0.20230414023320-3c0159fe0fe4 h1:IFT+hup2xejHq
|
||||||
gitea.com/lunny/levelqueue v0.4.2-0.20230414023320-3c0159fe0fe4/go.mod h1:HBqmLbz56JWpfEGG0prskAV97ATNRoj5LDmPicD22hU=
|
gitea.com/lunny/levelqueue v0.4.2-0.20230414023320-3c0159fe0fe4/go.mod h1:HBqmLbz56JWpfEGG0prskAV97ATNRoj5LDmPicD22hU=
|
||||||
gitea.com/xorm/sqlfiddle v0.0.0-20180821085327-62ce714f951a h1:lSA0F4e9A2NcQSqGqTOXqu2aRi/XEQxDCBwM8yJtE6s=
|
gitea.com/xorm/sqlfiddle v0.0.0-20180821085327-62ce714f951a h1:lSA0F4e9A2NcQSqGqTOXqu2aRi/XEQxDCBwM8yJtE6s=
|
||||||
gitea.com/xorm/sqlfiddle v0.0.0-20180821085327-62ce714f951a/go.mod h1:EXuID2Zs0pAQhH8yz+DNjUbjppKQzKFAn28TMYPB6IU=
|
gitea.com/xorm/sqlfiddle v0.0.0-20180821085327-62ce714f951a/go.mod h1:EXuID2Zs0pAQhH8yz+DNjUbjppKQzKFAn28TMYPB6IU=
|
||||||
|
github.com/42wim/httpsig v1.2.2 h1:ofAYoHUNs/MJOLqQ8hIxeyz2QxOz8qdSVvp3PX/oPgA=
|
||||||
|
github.com/42wim/httpsig v1.2.2/go.mod h1:P/UYo7ytNBFwc+dg35IubuAUIs8zj5zzFIgUCEl55WY=
|
||||||
github.com/42wim/sshsig v0.0.0-20211121163825-841cf5bbc121 h1:r3qt8PCHnfjOv9PN3H+XXKmDA1dfFMIN1AislhlA/ps=
|
github.com/42wim/sshsig v0.0.0-20211121163825-841cf5bbc121 h1:r3qt8PCHnfjOv9PN3H+XXKmDA1dfFMIN1AislhlA/ps=
|
||||||
github.com/42wim/sshsig v0.0.0-20211121163825-841cf5bbc121/go.mod h1:Ock8XgA7pvULhIaHGAk/cDnRfNrF9Jey81nPcc403iU=
|
github.com/42wim/sshsig v0.0.0-20211121163825-841cf5bbc121/go.mod h1:Ock8XgA7pvULhIaHGAk/cDnRfNrF9Jey81nPcc403iU=
|
||||||
github.com/6543/go-version v1.3.1 h1:HvOp+Telns7HWJ2Xo/05YXQSB2bE0WmVgbHqwMPZT4U=
|
github.com/6543/go-version v1.3.1 h1:HvOp+Telns7HWJ2Xo/05YXQSB2bE0WmVgbHqwMPZT4U=
|
||||||
|
@ -674,8 +676,8 @@ github.com/Microsoft/go-winio v0.5.2/go.mod h1:WpS1mjBmmwHBEWmogvA2mj8546UReBk4v
|
||||||
github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY=
|
github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY=
|
||||||
github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU=
|
github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU=
|
||||||
github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU=
|
github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU=
|
||||||
github.com/ProtonMail/go-crypto v1.0.0 h1:LRuvITjQWX+WIfr930YHG2HNfjR1uOfyf5vE0kC2U78=
|
github.com/ProtonMail/go-crypto v1.1.3 h1:nRBOetoydLeUb4nHajyO2bKqMLfWQ/ZPwkXqXxPxCFk=
|
||||||
github.com/ProtonMail/go-crypto v1.0.0/go.mod h1:EjAoLdwvbIOoOQr3ihjnSoLZRtE8azugULFRteWMNc0=
|
github.com/ProtonMail/go-crypto v1.1.3/go.mod h1:rA3QumHc/FZ8pAHreoekgiAbzpNsfQAosU5td4SnOrE=
|
||||||
github.com/PuerkitoBio/goquery v1.10.0 h1:6fiXdLuUvYs2OJSvNRqlNPoBm6YABE226xrbavY5Wv4=
|
github.com/PuerkitoBio/goquery v1.10.0 h1:6fiXdLuUvYs2OJSvNRqlNPoBm6YABE226xrbavY5Wv4=
|
||||||
github.com/PuerkitoBio/goquery v1.10.0/go.mod h1:TjZZl68Q3eGHNBA8CWaxAN7rOU1EbDz3CWuolcO5Yu4=
|
github.com/PuerkitoBio/goquery v1.10.0/go.mod h1:TjZZl68Q3eGHNBA8CWaxAN7rOU1EbDz3CWuolcO5Yu4=
|
||||||
github.com/RoaringBitmap/roaring v1.9.3 h1:t4EbC5qQwnisr5PrP9nt0IRhRTb9gMUgQF4t4S2OByM=
|
github.com/RoaringBitmap/roaring v1.9.3 h1:t4EbC5qQwnisr5PrP9nt0IRhRTb9gMUgQF4t4S2OByM=
|
||||||
|
@ -686,11 +688,11 @@ github.com/ajstarks/deck v0.0.0-20200831202436-30c9fc6549a9/go.mod h1:JynElWSGnm
|
||||||
github.com/ajstarks/deck/generate v0.0.0-20210309230005-c3f852c02e19/go.mod h1:T13YZdzov6OU0A1+RfKZiZN9ca6VeKdBdyDV+BY97Tk=
|
github.com/ajstarks/deck/generate v0.0.0-20210309230005-c3f852c02e19/go.mod h1:T13YZdzov6OU0A1+RfKZiZN9ca6VeKdBdyDV+BY97Tk=
|
||||||
github.com/ajstarks/svgo v0.0.0-20180226025133-644b8db467af/go.mod h1:K08gAheRH3/J6wwsYMMT4xOr94bZjxIelGM0+d/wbFw=
|
github.com/ajstarks/svgo v0.0.0-20180226025133-644b8db467af/go.mod h1:K08gAheRH3/J6wwsYMMT4xOr94bZjxIelGM0+d/wbFw=
|
||||||
github.com/ajstarks/svgo v0.0.0-20211024235047-1546f124cd8b/go.mod h1:1KcenG0jGWcpt8ov532z81sp/kMMUG485J2InIOyADM=
|
github.com/ajstarks/svgo v0.0.0-20211024235047-1546f124cd8b/go.mod h1:1KcenG0jGWcpt8ov532z81sp/kMMUG485J2InIOyADM=
|
||||||
github.com/alecthomas/assert/v2 v2.7.0 h1:QtqSACNS3tF7oasA8CU6A6sXZSBDqnm7RfpLl9bZqbE=
|
github.com/alecthomas/assert/v2 v2.11.0 h1:2Q9r3ki8+JYXvGsDyBXwH3LcJ+WK5D0gc5E8vS6K3D0=
|
||||||
github.com/alecthomas/assert/v2 v2.7.0/go.mod h1:Bze95FyfUr7x34QZrjL+XP+0qgp/zg8yS+TtBj1WA3k=
|
github.com/alecthomas/assert/v2 v2.11.0/go.mod h1:Bze95FyfUr7x34QZrjL+XP+0qgp/zg8yS+TtBj1WA3k=
|
||||||
github.com/alecthomas/chroma/v2 v2.2.0/go.mod h1:vf4zrexSH54oEjJ7EdB65tGNHmH3pGZmVkgTP5RHvAs=
|
github.com/alecthomas/chroma/v2 v2.2.0/go.mod h1:vf4zrexSH54oEjJ7EdB65tGNHmH3pGZmVkgTP5RHvAs=
|
||||||
github.com/alecthomas/chroma/v2 v2.14.0 h1:R3+wzpnUArGcQz7fCETQBzO5n9IMNi13iIs46aU4V9E=
|
github.com/alecthomas/chroma/v2 v2.15.0 h1:LxXTQHFoYrstG2nnV9y2X5O94sOBzf0CIUpSTbpxvMc=
|
||||||
github.com/alecthomas/chroma/v2 v2.14.0/go.mod h1:QolEbTfmUHIMVpBqxeDnNBj2uoeI4EbYP4i6n68SG4I=
|
github.com/alecthomas/chroma/v2 v2.15.0/go.mod h1:gUhVLrPDXPtp/f+L1jo9xepo9gL4eLwRuGAunSZMkio=
|
||||||
github.com/alecthomas/repr v0.0.0-20220113201626-b1b626ac65ae/go.mod h1:2kn6fqh/zIyPLmm3ugklbEi5hg5wS435eygvNfaDQL8=
|
github.com/alecthomas/repr v0.0.0-20220113201626-b1b626ac65ae/go.mod h1:2kn6fqh/zIyPLmm3ugklbEi5hg5wS435eygvNfaDQL8=
|
||||||
github.com/alecthomas/repr v0.4.0 h1:GhI2A8MACjfegCPVq9f1FLvIBS+DrQ2KQBFZP1iFzXc=
|
github.com/alecthomas/repr v0.4.0 h1:GhI2A8MACjfegCPVq9f1FLvIBS+DrQ2KQBFZP1iFzXc=
|
||||||
github.com/alecthomas/repr v0.4.0/go.mod h1:Fr0507jx4eOXV7AlPV6AVZLYrLIuIeSOWtW57eE/O/4=
|
github.com/alecthomas/repr v0.4.0/go.mod h1:Fr0507jx4eOXV7AlPV6AVZLYrLIuIeSOWtW57eE/O/4=
|
||||||
|
@ -768,7 +770,6 @@ github.com/bsm/gomega v1.27.10 h1:yeMWxP2pV2fG3FgAODIY8EiRE3dy0aeFYt4l7wh6yKA=
|
||||||
github.com/bsm/gomega v1.27.10/go.mod h1:JyEr/xRbxbtgWNi8tIEVPUYZ5Dzef52k01W3YH0H+O0=
|
github.com/bsm/gomega v1.27.10/go.mod h1:JyEr/xRbxbtgWNi8tIEVPUYZ5Dzef52k01W3YH0H+O0=
|
||||||
github.com/buildkite/terminal-to-html/v3 v3.16.4 h1:QFYO8IGvRnp7tGgiQb8g9uFU8kY9wOzxsFFx17+yy6Q=
|
github.com/buildkite/terminal-to-html/v3 v3.16.4 h1:QFYO8IGvRnp7tGgiQb8g9uFU8kY9wOzxsFFx17+yy6Q=
|
||||||
github.com/buildkite/terminal-to-html/v3 v3.16.4/go.mod h1:r/J7cC9c3EzBzP3/wDz0RJLPwv5PUAMp+KF2w+ntMc0=
|
github.com/buildkite/terminal-to-html/v3 v3.16.4/go.mod h1:r/J7cC9c3EzBzP3/wDz0RJLPwv5PUAMp+KF2w+ntMc0=
|
||||||
github.com/bwesterb/go-ristretto v1.2.3/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0=
|
|
||||||
github.com/caddyserver/certmagic v0.21.4 h1:e7VobB8rffHv8ZZpSiZtEwnLDHUwLVYLWzWSa1FfKI0=
|
github.com/caddyserver/certmagic v0.21.4 h1:e7VobB8rffHv8ZZpSiZtEwnLDHUwLVYLWzWSa1FfKI0=
|
||||||
github.com/caddyserver/certmagic v0.21.4/go.mod h1:swUXjQ1T9ZtMv95qj7/InJvWLXURU85r+CfG0T+ZbDE=
|
github.com/caddyserver/certmagic v0.21.4/go.mod h1:swUXjQ1T9ZtMv95qj7/InJvWLXURU85r+CfG0T+ZbDE=
|
||||||
github.com/caddyserver/zerossl v0.1.3 h1:onS+pxp3M8HnHpN5MMbOMyNjmTheJyWRaZYwn+YTAyA=
|
github.com/caddyserver/zerossl v0.1.3 h1:onS+pxp3M8HnHpN5MMbOMyNjmTheJyWRaZYwn+YTAyA=
|
||||||
|
@ -796,7 +797,6 @@ github.com/chzyer/readline v1.5.1/go.mod h1:Eh+b79XXUwfKfcPLepksvw2tcLE/Ct21YObk
|
||||||
github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=
|
github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=
|
||||||
github.com/chzyer/test v1.0.0/go.mod h1:2JlltgoNkt4TW/z9V/IzDdFaMTM2JPIi26O1pF38GC8=
|
github.com/chzyer/test v1.0.0/go.mod h1:2JlltgoNkt4TW/z9V/IzDdFaMTM2JPIi26O1pF38GC8=
|
||||||
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
|
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
|
||||||
github.com/cloudflare/circl v1.3.3/go.mod h1:5XYMA4rFBvNIrhs50XuiBJ15vF2pZn4nnUKZrLbUZFA=
|
|
||||||
github.com/cloudflare/circl v1.3.8 h1:j+V8jJt09PoeMFIu2uh5JUyEaIHTXVOHslFoLNAKqwI=
|
github.com/cloudflare/circl v1.3.8 h1:j+V8jJt09PoeMFIu2uh5JUyEaIHTXVOHslFoLNAKqwI=
|
||||||
github.com/cloudflare/circl v1.3.8/go.mod h1:PDRU+oXvdD7KCtgKxW95M5Z8BpSCJXQORiZFnBQS5QU=
|
github.com/cloudflare/circl v1.3.8/go.mod h1:PDRU+oXvdD7KCtgKxW95M5Z8BpSCJXQORiZFnBQS5QU=
|
||||||
github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
|
github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
|
||||||
|
@ -817,8 +817,8 @@ github.com/cncf/xds/go v0.0.0-20240905190251-b4127c9b8d78/go.mod h1:W+zGtBO5Y1Ig
|
||||||
github.com/cpuguy83/go-md2man/v2 v2.0.5 h1:ZtcqGrnekaHpVLArFSe4HK5DoKx1T0rq2DwVB0alcyc=
|
github.com/cpuguy83/go-md2man/v2 v2.0.5 h1:ZtcqGrnekaHpVLArFSe4HK5DoKx1T0rq2DwVB0alcyc=
|
||||||
github.com/cpuguy83/go-md2man/v2 v2.0.5/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
|
github.com/cpuguy83/go-md2man/v2 v2.0.5/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
|
||||||
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
|
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
|
||||||
github.com/cyphar/filepath-securejoin v0.2.4 h1:Ugdm7cg7i6ZK6x3xDF1oEu1nfkyfH53EtKeQYTC3kyg=
|
github.com/cyphar/filepath-securejoin v0.3.6 h1:4d9N5ykBnSp5Xn2JkhocYDkOpURL/18CYMpo6xB9uWM=
|
||||||
github.com/cyphar/filepath-securejoin v0.2.4/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4=
|
github.com/cyphar/filepath-securejoin v0.3.6/go.mod h1:Sdj7gXlvMcPZsbhwhQ33GguGLDGQL7h7bg04C/+u9jI=
|
||||||
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||||
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||||
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM=
|
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM=
|
||||||
|
@ -837,8 +837,8 @@ github.com/djherbis/nio/v3 v3.0.1/go.mod h1:Ng4h80pbZFMla1yKzm61cF0tqqilXZYrogmW
|
||||||
github.com/dlclark/regexp2 v1.2.0/go.mod h1:2pZnwuY/m+8K6iRw6wQdMtk+rH5tNGR1i55kozfMjCc=
|
github.com/dlclark/regexp2 v1.2.0/go.mod h1:2pZnwuY/m+8K6iRw6wQdMtk+rH5tNGR1i55kozfMjCc=
|
||||||
github.com/dlclark/regexp2 v1.4.0/go.mod h1:2pZnwuY/m+8K6iRw6wQdMtk+rH5tNGR1i55kozfMjCc=
|
github.com/dlclark/regexp2 v1.4.0/go.mod h1:2pZnwuY/m+8K6iRw6wQdMtk+rH5tNGR1i55kozfMjCc=
|
||||||
github.com/dlclark/regexp2 v1.7.0/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8=
|
github.com/dlclark/regexp2 v1.7.0/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8=
|
||||||
github.com/dlclark/regexp2 v1.11.0 h1:G/nrcoOa7ZXlpoa/91N3X7mM3r8eIlMBBJZvsz/mxKI=
|
github.com/dlclark/regexp2 v1.11.4 h1:rPYF9/LECdNymJufQKmri9gV604RvvABwgOA8un7yAo=
|
||||||
github.com/dlclark/regexp2 v1.11.0/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8=
|
github.com/dlclark/regexp2 v1.11.4/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8=
|
||||||
github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE=
|
github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE=
|
||||||
github.com/dsnet/compress v0.0.2-0.20210315054119-f66993602bf5/go.mod h1:qssHWj60/X5sZFNxpG4HBPDHVqxNm4DfnCKgrbZOT+s=
|
github.com/dsnet/compress v0.0.2-0.20210315054119-f66993602bf5/go.mod h1:qssHWj60/X5sZFNxpG4HBPDHVqxNm4DfnCKgrbZOT+s=
|
||||||
github.com/dsnet/compress v0.0.2-0.20230904184137-39efe44ab707 h1:2tV76y6Q9BB+NEBasnqvs7e49aEBFI8ejC89PSnWH+4=
|
github.com/dsnet/compress v0.0.2-0.20230904184137-39efe44ab707 h1:2tV76y6Q9BB+NEBasnqvs7e49aEBFI8ejC89PSnWH+4=
|
||||||
|
@ -849,8 +849,8 @@ github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkp
|
||||||
github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto=
|
github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto=
|
||||||
github.com/editorconfig/editorconfig-core-go/v2 v2.6.2 h1:dKG8sc7n321deIVRcQtwlMNoBEra7j0qQ8RwxO8RN0w=
|
github.com/editorconfig/editorconfig-core-go/v2 v2.6.2 h1:dKG8sc7n321deIVRcQtwlMNoBEra7j0qQ8RwxO8RN0w=
|
||||||
github.com/editorconfig/editorconfig-core-go/v2 v2.6.2/go.mod h1:7dvD3GCm7eBw53xZ/lsiq72LqobdMg3ITbMBxnmJmqY=
|
github.com/editorconfig/editorconfig-core-go/v2 v2.6.2/go.mod h1:7dvD3GCm7eBw53xZ/lsiq72LqobdMg3ITbMBxnmJmqY=
|
||||||
github.com/elazarl/goproxy v0.0.0-20230808193330-2592e75ae04a h1:mATvB/9r/3gvcejNsXKSkQ6lcIaNec2nyfOdlTBR2lU=
|
github.com/elazarl/goproxy v1.2.3 h1:xwIyKHbaP5yfT6O9KIeYJR5549MXRQkoQMRXGztz8YQ=
|
||||||
github.com/elazarl/goproxy v0.0.0-20230808193330-2592e75ae04a/go.mod h1:Ro8st/ElPeALwNFlcTpWmkr6IoMFfkjXAvTHpevnDsM=
|
github.com/elazarl/goproxy v1.2.3/go.mod h1:YfEbZtqP4AetfO6d40vWchF3znWX7C7Vd6ZMfdL8z64=
|
||||||
github.com/emersion/go-imap v1.2.1 h1:+s9ZjMEjOB8NzZMVTM3cCenz2JrQIGGo5j1df19WjTA=
|
github.com/emersion/go-imap v1.2.1 h1:+s9ZjMEjOB8NzZMVTM3cCenz2JrQIGGo5j1df19WjTA=
|
||||||
github.com/emersion/go-imap v1.2.1/go.mod h1:Qlx1FSx2FTxjnjWpIlVNEuX+ylerZQNFE5NsmKFSejY=
|
github.com/emersion/go-imap v1.2.1/go.mod h1:Qlx1FSx2FTxjnjWpIlVNEuX+ylerZQNFE5NsmKFSejY=
|
||||||
github.com/emersion/go-message v0.15.0/go.mod h1:wQUEfE+38+7EW8p8aZ96ptg6bAb1iwdgej19uXASlE4=
|
github.com/emersion/go-message v0.15.0/go.mod h1:wQUEfE+38+7EW8p8aZ96ptg6bAb1iwdgej19uXASlE4=
|
||||||
|
@ -929,12 +929,12 @@ github.com/go-fonts/liberation v0.2.0/go.mod h1:K6qoJYypsmfVjWg8KOVDQhLc8UDgIK2H
|
||||||
github.com/go-fonts/stix v0.1.0/go.mod h1:w/c1f0ldAUlJmLBvlbkvVXLAD+tAMqobIIQpmnUIzUY=
|
github.com/go-fonts/stix v0.1.0/go.mod h1:w/c1f0ldAUlJmLBvlbkvVXLAD+tAMqobIIQpmnUIzUY=
|
||||||
github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 h1:+zs/tPmkDkHx3U66DAb0lQFJrpS6731Oaa12ikc+DiI=
|
github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 h1:+zs/tPmkDkHx3U66DAb0lQFJrpS6731Oaa12ikc+DiI=
|
||||||
github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376/go.mod h1:an3vInlBmSxCcxctByoQdvwPiA7DTK7jaaFDBTtu0ic=
|
github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376/go.mod h1:an3vInlBmSxCcxctByoQdvwPiA7DTK7jaaFDBTtu0ic=
|
||||||
github.com/go-git/go-billy/v5 v5.5.0 h1:yEY4yhzCDuMGSv83oGxiBotRzhwhNr8VZyphhiu+mTU=
|
github.com/go-git/go-billy/v5 v5.6.1 h1:u+dcrgaguSSkbjzHwelEjc0Yj300NUevrrPphk/SoRA=
|
||||||
github.com/go-git/go-billy/v5 v5.5.0/go.mod h1:hmexnoNsr2SJU1Ju67OaNz5ASJY3+sHgFRpCtpDCKow=
|
github.com/go-git/go-billy/v5 v5.6.1/go.mod h1:0AsLr1z2+Uksi4NlElmMblP5rPcDZNRCD8ujZCRR2BE=
|
||||||
github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399 h1:eMje31YglSBqCdIqdhKBW8lokaMrL3uTkpGYlE2OOT4=
|
github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399 h1:eMje31YglSBqCdIqdhKBW8lokaMrL3uTkpGYlE2OOT4=
|
||||||
github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399/go.mod h1:1OCfN199q1Jm3HZlxleg+Dw/mwps2Wbk9frAWm+4FII=
|
github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399/go.mod h1:1OCfN199q1Jm3HZlxleg+Dw/mwps2Wbk9frAWm+4FII=
|
||||||
github.com/go-git/go-git/v5 v5.11.0 h1:XIZc1p+8YzypNr34itUfSvYJcv+eYdTnTvOZ2vD3cA4=
|
github.com/go-git/go-git/v5 v5.13.1 h1:DAQ9APonnlvSWpvolXWIuV6Q6zXy2wHbN4cVlNR5Q+M=
|
||||||
github.com/go-git/go-git/v5 v5.11.0/go.mod h1:6GFcX2P3NM7FPBfpePbpLd21XxsgdAt+lKqXmCUiUCY=
|
github.com/go-git/go-git/v5 v5.13.1/go.mod h1:qryJB4cSBoq3FRoBRf5A77joojuBcmPJ0qu3XXXVixc=
|
||||||
github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU=
|
github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU=
|
||||||
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
|
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
|
||||||
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
|
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
|
||||||
|
@ -1300,8 +1300,8 @@ github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042
|
||||||
github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY=
|
github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY=
|
||||||
github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY=
|
github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY=
|
||||||
github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo=
|
github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo=
|
||||||
github.com/onsi/gomega v1.27.10 h1:naR28SdDFlqrG6kScpT8VWpu1xWY5nJRCF3XaYyBjhI=
|
github.com/onsi/gomega v1.34.1 h1:EUMJIKUjM8sKjYbtxQI9A4z2o+rruxnzNvpknOXie6k=
|
||||||
github.com/onsi/gomega v1.27.10/go.mod h1:RsS8tutOdbdgzbPtzzATp12yT7kM5I5aElG3evPbQ0M=
|
github.com/onsi/gomega v1.34.1/go.mod h1:kU1QgUvBDLXBJq618Xvm2LUX6rSAfRaFRTcdOeDLwwY=
|
||||||
github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U=
|
github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U=
|
||||||
github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM=
|
github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM=
|
||||||
github.com/opencontainers/image-spec v1.1.0 h1:8SG7/vwALn54lVB/0yZ/MMwhFrPYtpEHQb2IpWsCzug=
|
github.com/opencontainers/image-spec v1.1.0 h1:8SG7/vwALn54lVB/0yZ/MMwhFrPYtpEHQb2IpWsCzug=
|
||||||
|
@ -1373,8 +1373,8 @@ github.com/sassoftware/go-rpmutils v0.4.0/go.mod h1:3goNWi7PGAT3/dlql2lv3+MSN5jN
|
||||||
github.com/segmentio/asm v1.2.0 h1:9BQrFxC+YOHJlTlHGkTrFWf59nbL3XnCoFLTwDCI7ys=
|
github.com/segmentio/asm v1.2.0 h1:9BQrFxC+YOHJlTlHGkTrFWf59nbL3XnCoFLTwDCI7ys=
|
||||||
github.com/segmentio/asm v1.2.0/go.mod h1:BqMnlJP91P8d+4ibuonYZw9mfnzI9HfxselHZr5aAcs=
|
github.com/segmentio/asm v1.2.0/go.mod h1:BqMnlJP91P8d+4ibuonYZw9mfnzI9HfxselHZr5aAcs=
|
||||||
github.com/serenize/snaker v0.0.0-20171204205717-a683aaf2d516/go.mod h1:Yow6lPLSAXx2ifx470yD/nUe22Dv5vBvxK/UK9UUTVs=
|
github.com/serenize/snaker v0.0.0-20171204205717-a683aaf2d516/go.mod h1:Yow6lPLSAXx2ifx470yD/nUe22Dv5vBvxK/UK9UUTVs=
|
||||||
github.com/sergi/go-diff v1.3.1 h1:xkr+Oxo4BOQKmkn/B9eMK0g5Kg/983T9DqqPHwYqD+8=
|
github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 h1:n661drycOFuPLCN3Uc8sB6B/s6Z4t2xvBgU1htSHuq8=
|
||||||
github.com/sergi/go-diff v1.3.1/go.mod h1:aMJSSKb2lpPvRNec0+w3fl7LP9IOFzdc9Pa4NFbPK1I=
|
github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3/go.mod h1:A0bzQcvG0E7Rwjx0REVgAGH58e96+X0MeOfepqsbeW4=
|
||||||
github.com/shopspring/decimal v1.4.0 h1:bxl37RwXBklmTi0C79JfXCEBD1cqqHt0bbgBAGFp81k=
|
github.com/shopspring/decimal v1.4.0 h1:bxl37RwXBklmTi0C79JfXCEBD1cqqHt0bbgBAGFp81k=
|
||||||
github.com/shopspring/decimal v1.4.0/go.mod h1:gawqmDU56v4yIKSwfBSFip1HdCCXN8/+DMd9qYNcwME=
|
github.com/shopspring/decimal v1.4.0/go.mod h1:gawqmDU56v4yIKSwfBSFip1HdCCXN8/+DMd9qYNcwME=
|
||||||
github.com/shurcooL/httpfs v0.0.0-20230704072500-f1e31cf0ba5c h1:aqg5Vm5dwtvL+YgDpBcK1ITf3o96N/K7/wsRXQnUTEs=
|
github.com/shurcooL/httpfs v0.0.0-20230704072500-f1e31cf0ba5c h1:aqg5Vm5dwtvL+YgDpBcK1ITf3o96N/K7/wsRXQnUTEs=
|
||||||
|
@ -1382,8 +1382,8 @@ github.com/shurcooL/httpfs v0.0.0-20230704072500-f1e31cf0ba5c/go.mod h1:owqhoLW1
|
||||||
github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
|
github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
|
||||||
github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ=
|
github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ=
|
||||||
github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
|
github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
|
||||||
github.com/skeema/knownhosts v1.2.1 h1:SHWdIUa82uGZz+F+47k8SY4QhhI291cXCpopT1lK2AQ=
|
github.com/skeema/knownhosts v1.3.0 h1:AM+y0rI04VksttfwjkSTNQorvGqmwATnvnAHpSgc0LY=
|
||||||
github.com/skeema/knownhosts v1.2.1/go.mod h1:xYbVRSPxqBZFrdmDyMmsOs+uX1UZC3nTN3ThzgDxUwo=
|
github.com/skeema/knownhosts v1.3.0/go.mod h1:sPINvnADmT/qYH1kfv+ePMmOBTH6Tbl7b5LvTDjFK7M=
|
||||||
github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA=
|
github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA=
|
||||||
github.com/spf13/afero v1.3.3/go.mod h1:5KUK8ByomD5Ti5Artl0RtHeI5pTF7MIDuXL3yY520V4=
|
github.com/spf13/afero v1.3.3/go.mod h1:5KUK8ByomD5Ti5Artl0RtHeI5pTF7MIDuXL3yY520V4=
|
||||||
github.com/spf13/afero v1.6.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I=
|
github.com/spf13/afero v1.6.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I=
|
||||||
|
@ -1449,6 +1449,8 @@ github.com/zeebo/blake3 v0.2.4/go.mod h1:7eeQ6d2iXWRGF6npfaxl2CU+xy2Fjo2gxeyZGCR
|
||||||
github.com/zeebo/pcg v1.0.1 h1:lyqfGeWiv4ahac6ttHs+I5hwtH/+1mrhlCtVNQM2kHo=
|
github.com/zeebo/pcg v1.0.1 h1:lyqfGeWiv4ahac6ttHs+I5hwtH/+1mrhlCtVNQM2kHo=
|
||||||
github.com/zeebo/pcg v1.0.1/go.mod h1:09F0S9iiKrwn9rlI5yjLkmrug154/YRW6KnnXVDM/l4=
|
github.com/zeebo/pcg v1.0.1/go.mod h1:09F0S9iiKrwn9rlI5yjLkmrug154/YRW6KnnXVDM/l4=
|
||||||
github.com/zeebo/xxh3 v1.0.2/go.mod h1:5NWz9Sef7zIDm2JHfFlcQvNekmcEl9ekUZQQKCYaDcA=
|
github.com/zeebo/xxh3 v1.0.2/go.mod h1:5NWz9Sef7zIDm2JHfFlcQvNekmcEl9ekUZQQKCYaDcA=
|
||||||
|
gitlab.com/gitlab-org/api/client-go v0.116.0 h1:Dy534gtZPMrnm3fAcmQRMadrcoUyFO4FQ4rXlSAdHAw=
|
||||||
|
gitlab.com/gitlab-org/api/client-go v0.116.0/go.mod h1:B29OfnZklmaoiR7uHANh9jTyfWEgmXvZLVEnosw2Dx0=
|
||||||
go.etcd.io/bbolt v1.3.9 h1:8x7aARPEXiXbHmtUwAIv7eV2fQFHrLLavdiJ3uzJXoI=
|
go.etcd.io/bbolt v1.3.9 h1:8x7aARPEXiXbHmtUwAIv7eV2fQFHrLLavdiJ3uzJXoI=
|
||||||
go.etcd.io/bbolt v1.3.9/go.mod h1:zaO32+Ti0PK1ivdPtgMESzuzL2VPoIG1PCQNvOdo/dE=
|
go.etcd.io/bbolt v1.3.9/go.mod h1:zaO32+Ti0PK1ivdPtgMESzuzL2VPoIG1PCQNvOdo/dE=
|
||||||
go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU=
|
go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU=
|
||||||
|
@ -1501,8 +1503,6 @@ golang.org/x/crypto v0.0.0-20210513164829-c07d793c2f9a/go.mod h1:P+XmwS30IXTQdn5
|
||||||
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
|
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
|
||||||
golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
|
golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
|
||||||
golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
|
golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
|
||||||
golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4=
|
|
||||||
golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU=
|
|
||||||
golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc=
|
golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc=
|
||||||
golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4=
|
golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4=
|
||||||
golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U=
|
golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U=
|
||||||
|
@ -1522,6 +1522,8 @@ golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u0
|
||||||
golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM=
|
golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM=
|
||||||
golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU=
|
golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU=
|
||||||
golang.org/x/exp v0.0.0-20220827204233-334a2380cb91/go.mod h1:cyybsKvd6eL0RnXn6p/Grxp8F5bW7iYuBgsNCOHpMYE=
|
golang.org/x/exp v0.0.0-20220827204233-334a2380cb91/go.mod h1:cyybsKvd6eL0RnXn6p/Grxp8F5bW7iYuBgsNCOHpMYE=
|
||||||
|
golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 h1:2dVuKD2vS7b0QIHQbpyTISPd0LeHDbnYEryqj5Q1ug8=
|
||||||
|
golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56/go.mod h1:M4RDyNAINzryxdtnbRXRL/OHtkFuWGRjvuhBJpk2IlY=
|
||||||
golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs=
|
golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs=
|
||||||
golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js=
|
golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js=
|
||||||
golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
|
golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
|
||||||
|
|
|
@ -282,27 +282,22 @@ func UpdateRunner(ctx context.Context, r *ActionRunner, cols ...string) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeleteRunner deletes a runner by given ID.
|
// DeleteRunner deletes a runner by given ID.
|
||||||
func DeleteRunner(ctx context.Context, id int64) error {
|
func DeleteRunner(ctx context.Context, r *ActionRunner) error {
|
||||||
runner, err := GetRunnerByID(ctx, id)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
// Replace the UUID, which was either based on the secret's first 16 bytes or an UUIDv4,
|
// Replace the UUID, which was either based on the secret's first 16 bytes or an UUIDv4,
|
||||||
// with a sequence of 8 0xff bytes followed by the little-endian version of the record's
|
// with a sequence of 8 0xff bytes followed by the little-endian version of the record's
|
||||||
// identifier. This will prevent the deleted record's identifier from colliding with any
|
// identifier. This will prevent the deleted record's identifier from colliding with any
|
||||||
// new record.
|
// new record.
|
||||||
b := make([]byte, 8)
|
b := make([]byte, 8)
|
||||||
binary.LittleEndian.PutUint64(b, uint64(id))
|
binary.LittleEndian.PutUint64(b, uint64(r.ID))
|
||||||
runner.UUID = fmt.Sprintf("ffffffff-ffff-ffff-%.2x%.2x-%.2x%.2x%.2x%.2x%.2x%.2x",
|
r.UUID = fmt.Sprintf("ffffffff-ffff-ffff-%.2x%.2x-%.2x%.2x%.2x%.2x%.2x%.2x",
|
||||||
b[0], b[1], b[2], b[3], b[4], b[5], b[6], b[7])
|
b[0], b[1], b[2], b[3], b[4], b[5], b[6], b[7])
|
||||||
|
|
||||||
err = UpdateRunner(ctx, runner, "UUID")
|
err := UpdateRunner(ctx, r, "UUID")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
_, err = db.DeleteByID[ActionRunner](ctx, id)
|
_, err = db.DeleteByID[ActionRunner](ctx, r.ID)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -34,7 +34,7 @@ func TestDeleteRunner(t *testing.T) {
|
||||||
require.NoError(t, unittest.PrepareTestDatabase())
|
require.NoError(t, unittest.PrepareTestDatabase())
|
||||||
before := unittest.AssertExistsAndLoadBean(t, &ActionRunner{ID: recordID})
|
before := unittest.AssertExistsAndLoadBean(t, &ActionRunner{ID: recordID})
|
||||||
|
|
||||||
err := DeleteRunner(db.DefaultContext, recordID)
|
err := DeleteRunner(db.DefaultContext, &ActionRunner{ID: recordID})
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
|
|
||||||
var after ActionRunner
|
var after ActionRunner
|
||||||
|
|
|
@ -86,7 +86,7 @@ func FindVariables(ctx context.Context, opts FindVariablesOpts) ([]*ActionVariab
|
||||||
}
|
}
|
||||||
|
|
||||||
func UpdateVariable(ctx context.Context, variable *ActionVariable) (bool, error) {
|
func UpdateVariable(ctx context.Context, variable *ActionVariable) (bool, error) {
|
||||||
count, err := db.GetEngine(ctx).ID(variable.ID).Cols("name", "data").
|
count, err := db.GetEngine(ctx).ID(variable.ID).Where("owner_id = ? AND repo_id = ?", variable.OwnerID, variable.RepoID).Cols("name", "data").
|
||||||
Update(&ActionVariable{
|
Update(&ActionVariable{
|
||||||
Name: variable.Name,
|
Name: variable.Name,
|
||||||
Data: variable.Data,
|
Data: variable.Data,
|
||||||
|
@ -94,11 +94,9 @@ func UpdateVariable(ctx context.Context, variable *ActionVariable) (bool, error)
|
||||||
return count != 0, err
|
return count != 0, err
|
||||||
}
|
}
|
||||||
|
|
||||||
func DeleteVariable(ctx context.Context, id int64) error {
|
func DeleteVariable(ctx context.Context, variableID, ownerID, repoID int64) (bool, error) {
|
||||||
if _, err := db.DeleteByID[ActionVariable](ctx, id); err != nil {
|
count, err := db.GetEngine(ctx).Table("action_variable").Where("id = ? AND owner_id = ? AND repo_id = ?", variableID, ownerID, repoID).Delete()
|
||||||
return err
|
return count != 0, err
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetVariablesOfRun(ctx context.Context, run *ActionRun) (map[string]string, error) {
|
func GetVariablesOfRun(ctx context.Context, run *ActionRun) (map[string]string, error) {
|
||||||
|
|
|
@ -52,10 +52,10 @@ type WebAuthnCredential struct {
|
||||||
AAGUID []byte
|
AAGUID []byte
|
||||||
SignCount uint32 `xorm:"BIGINT"`
|
SignCount uint32 `xorm:"BIGINT"`
|
||||||
CloneWarning bool
|
CloneWarning bool
|
||||||
BackupEligible bool `XORM:"NOT NULL DEFAULT false"`
|
BackupEligible bool `xorm:"NOT NULL DEFAULT false"`
|
||||||
BackupState bool `XORM:"NOT NULL DEFAULT false"`
|
BackupState bool `xorm:"NOT NULL DEFAULT false"`
|
||||||
// If legacy is set to true, backup_eligible and backup_state isn't set.
|
// If legacy is set to true, backup_eligible and backup_state isn't set.
|
||||||
Legacy bool `XORM:"NOT NULL DEFAULT true"`
|
Legacy bool `xorm:"NOT NULL DEFAULT true"`
|
||||||
CreatedUnix timeutil.TimeStamp `xorm:"INDEX created"`
|
CreatedUnix timeutil.TimeStamp `xorm:"INDEX created"`
|
||||||
UpdatedUnix timeutil.TimeStamp `xorm:"INDEX updated"`
|
UpdatedUnix timeutil.TimeStamp `xorm:"INDEX updated"`
|
||||||
}
|
}
|
||||||
|
|
23
models/fixtures/PrivateIssueProjects/project.yml
Normal file
23
models/fixtures/PrivateIssueProjects/project.yml
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
-
|
||||||
|
id: 1001
|
||||||
|
title: Org project that contains private issues
|
||||||
|
owner_id: 3
|
||||||
|
repo_id: 0
|
||||||
|
is_closed: false
|
||||||
|
creator_id: 2
|
||||||
|
board_type: 1
|
||||||
|
type: 3
|
||||||
|
created_unix: 1738000000
|
||||||
|
updated_unix: 1738000000
|
||||||
|
|
||||||
|
-
|
||||||
|
id: 1002
|
||||||
|
title: User project that contains private issues
|
||||||
|
owner_id: 2
|
||||||
|
repo_id: 0
|
||||||
|
is_closed: false
|
||||||
|
creator_id: 2
|
||||||
|
board_type: 1
|
||||||
|
type: 1
|
||||||
|
created_unix: 1738000000
|
||||||
|
updated_unix: 1738000000
|
17
models/fixtures/PrivateIssueProjects/project_board.yml
Normal file
17
models/fixtures/PrivateIssueProjects/project_board.yml
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
-
|
||||||
|
id: 1001
|
||||||
|
project_id: 1001
|
||||||
|
title: Triage
|
||||||
|
creator_id: 2
|
||||||
|
default: true
|
||||||
|
created_unix: 1738000000
|
||||||
|
updated_unix: 1738000000
|
||||||
|
|
||||||
|
-
|
||||||
|
id: 1002
|
||||||
|
project_id: 1002
|
||||||
|
title: Triage
|
||||||
|
creator_id: 2
|
||||||
|
default: true
|
||||||
|
created_unix: 1738000000
|
||||||
|
updated_unix: 1738000000
|
11
models/fixtures/PrivateIssueProjects/project_issue.yml
Normal file
11
models/fixtures/PrivateIssueProjects/project_issue.yml
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
-
|
||||||
|
id: 1001
|
||||||
|
issue_id: 6
|
||||||
|
project_id: 1001
|
||||||
|
project_board_id: 1001
|
||||||
|
|
||||||
|
-
|
||||||
|
id: 1002
|
||||||
|
issue_id: 7
|
||||||
|
project_id: 1002
|
||||||
|
project_board_id: 1002
|
|
@ -96,3 +96,14 @@
|
||||||
num_issues: 0
|
num_issues: 0
|
||||||
num_closed_issues: 0
|
num_closed_issues: 0
|
||||||
archived_unix: 0
|
archived_unix: 0
|
||||||
|
|
||||||
|
-
|
||||||
|
id: 10
|
||||||
|
repo_id: 3
|
||||||
|
org_id: 0
|
||||||
|
name: repo3label1
|
||||||
|
color: '#112233'
|
||||||
|
exclusive: false
|
||||||
|
num_issues: 0
|
||||||
|
num_closed_issues: 0
|
||||||
|
archived_unix: 0
|
||||||
|
|
|
@ -1,42 +1,49 @@
|
||||||
-
|
-
|
||||||
id: 1
|
id: 1
|
||||||
team_id: 1
|
team_id: 1
|
||||||
|
org_id: 3
|
||||||
type: 1
|
type: 1
|
||||||
access_mode: 4
|
access_mode: 4
|
||||||
|
|
||||||
-
|
-
|
||||||
id: 2
|
id: 2
|
||||||
team_id: 1
|
team_id: 1
|
||||||
|
org_id: 3
|
||||||
type: 2
|
type: 2
|
||||||
access_mode: 4
|
access_mode: 4
|
||||||
|
|
||||||
-
|
-
|
||||||
id: 3
|
id: 3
|
||||||
team_id: 1
|
team_id: 1
|
||||||
|
org_id: 3
|
||||||
type: 3
|
type: 3
|
||||||
access_mode: 4
|
access_mode: 4
|
||||||
|
|
||||||
-
|
-
|
||||||
id: 4
|
id: 4
|
||||||
team_id: 1
|
team_id: 1
|
||||||
|
org_id: 3
|
||||||
type: 4
|
type: 4
|
||||||
access_mode: 4
|
access_mode: 4
|
||||||
|
|
||||||
-
|
-
|
||||||
id: 5
|
id: 5
|
||||||
team_id: 1
|
team_id: 1
|
||||||
|
org_id: 3
|
||||||
type: 5
|
type: 5
|
||||||
access_mode: 4
|
access_mode: 4
|
||||||
|
|
||||||
-
|
-
|
||||||
id: 6
|
id: 6
|
||||||
team_id: 1
|
team_id: 1
|
||||||
|
org_id: 3
|
||||||
type: 6
|
type: 6
|
||||||
access_mode: 4
|
access_mode: 4
|
||||||
|
|
||||||
-
|
-
|
||||||
id: 7
|
id: 7
|
||||||
team_id: 1
|
team_id: 1
|
||||||
|
org_id: 3
|
||||||
type: 7
|
type: 7
|
||||||
access_mode: 4
|
access_mode: 4
|
||||||
|
|
||||||
|
|
|
@ -416,20 +416,6 @@ func (issue *Issue) SummaryCardURL() string {
|
||||||
return fmt.Sprintf("%s/summary-card", issue.HTMLURL())
|
return fmt.Sprintf("%s/summary-card", issue.HTMLURL())
|
||||||
}
|
}
|
||||||
|
|
||||||
func (issue *Issue) SummaryCardSize() (int, int) {
|
|
||||||
return 1200, 600
|
|
||||||
}
|
|
||||||
|
|
||||||
func (issue *Issue) SummaryCardWidth() int {
|
|
||||||
width, _ := issue.SummaryCardSize()
|
|
||||||
return width
|
|
||||||
}
|
|
||||||
|
|
||||||
func (issue *Issue) SummaryCardHeight() int {
|
|
||||||
_, height := issue.SummaryCardSize()
|
|
||||||
return height
|
|
||||||
}
|
|
||||||
|
|
||||||
// Link returns the issue's relative URL.
|
// Link returns the issue's relative URL.
|
||||||
func (issue *Issue) Link() string {
|
func (issue *Issue) Link() string {
|
||||||
var path string
|
var path string
|
||||||
|
|
|
@ -7,8 +7,10 @@ import (
|
||||||
"context"
|
"context"
|
||||||
|
|
||||||
"code.gitea.io/gitea/models/db"
|
"code.gitea.io/gitea/models/db"
|
||||||
|
org_model "code.gitea.io/gitea/models/organization"
|
||||||
project_model "code.gitea.io/gitea/models/project"
|
project_model "code.gitea.io/gitea/models/project"
|
||||||
user_model "code.gitea.io/gitea/models/user"
|
user_model "code.gitea.io/gitea/models/user"
|
||||||
|
"code.gitea.io/gitea/modules/optional"
|
||||||
"code.gitea.io/gitea/modules/util"
|
"code.gitea.io/gitea/modules/util"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -48,22 +50,29 @@ func (issue *Issue) ProjectColumnID(ctx context.Context) int64 {
|
||||||
}
|
}
|
||||||
|
|
||||||
// LoadIssuesFromColumn load issues assigned to this column
|
// LoadIssuesFromColumn load issues assigned to this column
|
||||||
func LoadIssuesFromColumn(ctx context.Context, b *project_model.Column) (IssueList, error) {
|
func LoadIssuesFromColumn(ctx context.Context, b *project_model.Column, doer *user_model.User, org *org_model.Organization, isClosed optional.Option[bool]) (IssueList, error) {
|
||||||
issueList, err := Issues(ctx, &IssuesOptions{
|
issueOpts := &IssuesOptions{
|
||||||
ProjectColumnID: b.ID,
|
ProjectColumnID: b.ID,
|
||||||
ProjectID: b.ProjectID,
|
ProjectID: b.ProjectID,
|
||||||
SortType: "project-column-sorting",
|
SortType: "project-column-sorting",
|
||||||
})
|
IsClosed: isClosed,
|
||||||
|
}
|
||||||
|
if doer != nil {
|
||||||
|
issueOpts.User = doer
|
||||||
|
issueOpts.Org = org
|
||||||
|
} else {
|
||||||
|
issueOpts.AllPublic = true
|
||||||
|
}
|
||||||
|
|
||||||
|
issueList, err := Issues(ctx, issueOpts)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
if b.Default {
|
if b.Default {
|
||||||
issues, err := Issues(ctx, &IssuesOptions{
|
issueOpts.ProjectColumnID = db.NoConditionID
|
||||||
ProjectColumnID: db.NoConditionID,
|
|
||||||
ProjectID: b.ProjectID,
|
issues, err := Issues(ctx, issueOpts)
|
||||||
SortType: "project-column-sorting",
|
|
||||||
})
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -78,10 +87,10 @@ func LoadIssuesFromColumn(ctx context.Context, b *project_model.Column) (IssueLi
|
||||||
}
|
}
|
||||||
|
|
||||||
// LoadIssuesFromColumnList load issues assigned to the columns
|
// LoadIssuesFromColumnList load issues assigned to the columns
|
||||||
func LoadIssuesFromColumnList(ctx context.Context, bs project_model.ColumnList) (map[int64]IssueList, error) {
|
func LoadIssuesFromColumnList(ctx context.Context, bs project_model.ColumnList, doer *user_model.User, org *org_model.Organization, isClosed optional.Option[bool]) (map[int64]IssueList, error) {
|
||||||
issuesMap := make(map[int64]IssueList, len(bs))
|
issuesMap := make(map[int64]IssueList, len(bs))
|
||||||
for i := range bs {
|
for i := range bs {
|
||||||
il, err := LoadIssuesFromColumn(ctx, bs[i])
|
il, err := LoadIssuesFromColumn(ctx, bs[i], doer, org, isClosed)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -160,3 +169,36 @@ func IssueAssignOrRemoveProject(ctx context.Context, issue *Issue, doer *user_mo
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// NumIssuesInProjects returns the amount of issues assigned to one of the project
|
||||||
|
// in the list which the doer can access.
|
||||||
|
func NumIssuesInProjects(ctx context.Context, pl []*project_model.Project, doer *user_model.User, org *org_model.Organization, isClosed optional.Option[bool]) (map[int64]int, error) {
|
||||||
|
numMap := make(map[int64]int, len(pl))
|
||||||
|
for _, p := range pl {
|
||||||
|
num, err := NumIssuesInProject(ctx, p, doer, org, isClosed)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
numMap[p.ID] = num
|
||||||
|
}
|
||||||
|
|
||||||
|
return numMap, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// NumIssuesInProject returns the amount of issues assigned to the project which
|
||||||
|
// the doer can access.
|
||||||
|
func NumIssuesInProject(ctx context.Context, p *project_model.Project, doer *user_model.User, org *org_model.Organization, isClosed optional.Option[bool]) (int, error) {
|
||||||
|
numIssuesInProject := int(0)
|
||||||
|
bs, err := p.GetColumns(ctx)
|
||||||
|
if err != nil {
|
||||||
|
return 0, err
|
||||||
|
}
|
||||||
|
im, err := LoadIssuesFromColumnList(ctx, bs, doer, org, isClosed)
|
||||||
|
if err != nil {
|
||||||
|
return 0, err
|
||||||
|
}
|
||||||
|
for _, il := range im {
|
||||||
|
numIssuesInProject += len(il)
|
||||||
|
}
|
||||||
|
return numIssuesInProject, nil
|
||||||
|
}
|
||||||
|
|
100
models/issues/issue_project_test.go
Normal file
100
models/issues/issue_project_test.go
Normal file
|
@ -0,0 +1,100 @@
|
||||||
|
// Copyright 2025 The Forgejo Authors. All rights reserved.
|
||||||
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
|
package issues_test
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"code.gitea.io/gitea/models/db"
|
||||||
|
"code.gitea.io/gitea/models/issues"
|
||||||
|
"code.gitea.io/gitea/models/organization"
|
||||||
|
"code.gitea.io/gitea/models/project"
|
||||||
|
"code.gitea.io/gitea/models/unittest"
|
||||||
|
user_model "code.gitea.io/gitea/models/user"
|
||||||
|
"code.gitea.io/gitea/modules/optional"
|
||||||
|
"code.gitea.io/gitea/tests"
|
||||||
|
|
||||||
|
"github.com/stretchr/testify/assert"
|
||||||
|
"github.com/stretchr/testify/require"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestPrivateIssueProjects(t *testing.T) {
|
||||||
|
defer tests.AddFixtures("models/fixtures/PrivateIssueProjects/")()
|
||||||
|
require.NoError(t, unittest.PrepareTestDatabase())
|
||||||
|
|
||||||
|
user2 := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 2})
|
||||||
|
t.Run("Organization project", func(t *testing.T) {
|
||||||
|
org := unittest.AssertExistsAndLoadBean(t, &organization.Organization{ID: 3})
|
||||||
|
orgProject := unittest.AssertExistsAndLoadBean(t, &project.Project{ID: 1001, OwnerID: org.ID})
|
||||||
|
column := unittest.AssertExistsAndLoadBean(t, &project.Column{ID: 1001, ProjectID: orgProject.ID})
|
||||||
|
|
||||||
|
t.Run("Authenticated user", func(t *testing.T) {
|
||||||
|
defer tests.PrintCurrentTest(t)()
|
||||||
|
issueList, err := issues.LoadIssuesFromColumn(db.DefaultContext, column, user2, org, optional.None[bool]())
|
||||||
|
require.NoError(t, err)
|
||||||
|
assert.Len(t, issueList, 1)
|
||||||
|
assert.EqualValues(t, 6, issueList[0].ID)
|
||||||
|
|
||||||
|
issuesNum, err := issues.NumIssuesInProject(db.DefaultContext, orgProject, user2, org, optional.None[bool]())
|
||||||
|
require.NoError(t, err)
|
||||||
|
assert.EqualValues(t, 1, issuesNum)
|
||||||
|
|
||||||
|
issuesNum, err = issues.NumIssuesInProject(db.DefaultContext, orgProject, user2, org, optional.Some(true))
|
||||||
|
require.NoError(t, err)
|
||||||
|
assert.EqualValues(t, 0, issuesNum)
|
||||||
|
|
||||||
|
issuesNum, err = issues.NumIssuesInProject(db.DefaultContext, orgProject, user2, org, optional.Some(false))
|
||||||
|
require.NoError(t, err)
|
||||||
|
assert.EqualValues(t, 1, issuesNum)
|
||||||
|
})
|
||||||
|
|
||||||
|
t.Run("Anonymous user", func(t *testing.T) {
|
||||||
|
defer tests.PrintCurrentTest(t)()
|
||||||
|
issueList, err := issues.LoadIssuesFromColumn(db.DefaultContext, column, nil, org, optional.None[bool]())
|
||||||
|
require.NoError(t, err)
|
||||||
|
assert.Empty(t, issueList)
|
||||||
|
|
||||||
|
issuesNum, err := issues.NumIssuesInProject(db.DefaultContext, orgProject, nil, org, optional.None[bool]())
|
||||||
|
require.NoError(t, err)
|
||||||
|
assert.EqualValues(t, 0, issuesNum)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
t.Run("User project", func(t *testing.T) {
|
||||||
|
userProject := unittest.AssertExistsAndLoadBean(t, &project.Project{ID: 1002, OwnerID: user2.ID})
|
||||||
|
column := unittest.AssertExistsAndLoadBean(t, &project.Column{ID: 1002, ProjectID: userProject.ID})
|
||||||
|
|
||||||
|
t.Run("Authenticated user", func(t *testing.T) {
|
||||||
|
defer tests.PrintCurrentTest(t)()
|
||||||
|
issueList, err := issues.LoadIssuesFromColumn(db.DefaultContext, column, user2, nil, optional.None[bool]())
|
||||||
|
require.NoError(t, err)
|
||||||
|
assert.Len(t, issueList, 1)
|
||||||
|
assert.EqualValues(t, 7, issueList[0].ID)
|
||||||
|
|
||||||
|
issuesNum, err := issues.NumIssuesInProject(db.DefaultContext, userProject, user2, nil, optional.None[bool]())
|
||||||
|
require.NoError(t, err)
|
||||||
|
assert.EqualValues(t, 1, issuesNum)
|
||||||
|
|
||||||
|
issuesNum, err = issues.NumIssuesInProject(db.DefaultContext, userProject, user2, nil, optional.Some(true))
|
||||||
|
require.NoError(t, err)
|
||||||
|
assert.EqualValues(t, 0, issuesNum)
|
||||||
|
|
||||||
|
issuesNum, err = issues.NumIssuesInProject(db.DefaultContext, userProject, user2, nil, optional.Some(false))
|
||||||
|
require.NoError(t, err)
|
||||||
|
assert.EqualValues(t, 1, issuesNum)
|
||||||
|
})
|
||||||
|
|
||||||
|
t.Run("Anonymous user", func(t *testing.T) {
|
||||||
|
defer tests.PrintCurrentTest(t)()
|
||||||
|
|
||||||
|
issueList, err := issues.LoadIssuesFromColumn(db.DefaultContext, column, nil, nil, optional.None[bool]())
|
||||||
|
require.NoError(t, err)
|
||||||
|
assert.Empty(t, issueList)
|
||||||
|
|
||||||
|
issuesNum, err := issues.NumIssuesInProject(db.DefaultContext, userProject, nil, nil, optional.None[bool]())
|
||||||
|
require.NoError(t, err)
|
||||||
|
assert.EqualValues(t, 0, issuesNum)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
|
@ -353,6 +353,17 @@ func GetLabelIDsInRepoByNames(ctx context.Context, repoID int64, labelNames []st
|
||||||
Find(&labelIDs)
|
Find(&labelIDs)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GetLabelIDsInOrgByNames returns a list of labelIDs by names in a given org.
|
||||||
|
func GetLabelIDsInOrgByNames(ctx context.Context, orgID int64, labelNames []string) ([]int64, error) {
|
||||||
|
labelIDs := make([]int64, 0, len(labelNames))
|
||||||
|
return labelIDs, db.GetEngine(ctx).Table("label").
|
||||||
|
Where("org_id = ?", orgID).
|
||||||
|
In("name", labelNames).
|
||||||
|
Asc("name").
|
||||||
|
Cols("id").
|
||||||
|
Find(&labelIDs)
|
||||||
|
}
|
||||||
|
|
||||||
// BuildLabelNamesIssueIDsCondition returns a builder where get issue ids match label names
|
// BuildLabelNamesIssueIDsCondition returns a builder where get issue ids match label names
|
||||||
func BuildLabelNamesIssueIDsCondition(labelNames []string) *builder.Builder {
|
func BuildLabelNamesIssueIDsCondition(labelNames []string) *builder.Builder {
|
||||||
return builder.Select("issue_label.issue_id").
|
return builder.Select("issue_label.issue_id").
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
// Copyright 2024 The Forgejo Authors.
|
// Copyright 2025 The Forgejo Authors.
|
||||||
// SPDX-License-Identifier: MIT
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
package v1_23 //nolint
|
package v1_23 //nolint
|
||||||
|
|
||||||
|
@ -7,26 +7,53 @@ import (
|
||||||
"code.gitea.io/gitea/models/migrations/base"
|
"code.gitea.io/gitea/models/migrations/base"
|
||||||
|
|
||||||
"xorm.io/xorm"
|
"xorm.io/xorm"
|
||||||
|
"xorm.io/xorm/schemas"
|
||||||
)
|
)
|
||||||
|
|
||||||
func GiteaLastDrop(x *xorm.Engine) error {
|
func GiteaLastDrop(x *xorm.Engine) error {
|
||||||
|
tables, err := x.DBMetas()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
sess := x.NewSession()
|
sess := x.NewSession()
|
||||||
defer sess.Close()
|
defer sess.Close()
|
||||||
|
|
||||||
if err := base.DropTableColumns(sess, "badge", "slug"); err != nil {
|
for _, drop := range []struct {
|
||||||
return err
|
table string
|
||||||
}
|
column string
|
||||||
if err := base.DropTableColumns(sess, "oauth2_application", "skip_secondary_authorization"); err != nil {
|
}{
|
||||||
return err
|
{"badge", "slug"},
|
||||||
}
|
{"oauth2_application", "skip_secondary_authorization"},
|
||||||
if err := base.DropTableColumns(sess, "repository", "default_wiki_branch"); err != nil {
|
{"repository", "default_wiki_branch"},
|
||||||
return err
|
{"repo_unit", "everyone_access_mode"},
|
||||||
}
|
{"protected_branch", "can_force_push"},
|
||||||
// the migration v297.go that adds everyone_access_mode exists in Gitea >= v1.22 and the column must be dropped
|
{"protected_branch", "enable_force_push_allowlist"},
|
||||||
// but it does not exist in Forgejo and a failure to drop the column can be ignored
|
{"protected_branch", "force_push_allowlist_user_i_ds"},
|
||||||
base.DropTableColumns(sess, "repo_unit", "everyone_access_mode")
|
{"protected_branch", "force_push_allowlist_team_i_ds"},
|
||||||
if err := base.DropTableColumns(sess, "protected_branch", "can_force_push", "enable_force_push_allowlist", "force_push_allowlist_user_i_ds", "force_push_allowlist_team_i_ds", "force_push_allowlist_deploy_keys"); err != nil {
|
{"protected_branch", "force_push_allowlist_deploy_keys"},
|
||||||
return err
|
} {
|
||||||
|
var table *schemas.Table
|
||||||
|
found := false
|
||||||
|
|
||||||
|
for _, table = range tables {
|
||||||
|
if table.Name == drop.table {
|
||||||
|
found = true
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if !found {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
if table.GetColumn(drop.column) == nil {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := base.DropTableColumns(sess, drop.table, drop.column); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return sess.Commit()
|
return sess.Commit()
|
||||||
|
|
41
models/migrations/v1_23/v303_test.go
Normal file
41
models/migrations/v1_23/v303_test.go
Normal file
|
@ -0,0 +1,41 @@
|
||||||
|
// Copyright 2025 The Forgejo Authors.
|
||||||
|
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
|
||||||
|
package v1_23 //nolint
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
migration_tests "code.gitea.io/gitea/models/migrations/test"
|
||||||
|
|
||||||
|
"github.com/stretchr/testify/require"
|
||||||
|
"xorm.io/xorm/schemas"
|
||||||
|
)
|
||||||
|
|
||||||
|
func Test_GiteaLastDrop(t *testing.T) {
|
||||||
|
type Badge struct {
|
||||||
|
ID int64 `xorm:"pk autoincr"`
|
||||||
|
Slug string
|
||||||
|
}
|
||||||
|
|
||||||
|
x, deferable := migration_tests.PrepareTestEnv(t, 0, new(Badge))
|
||||||
|
defer deferable()
|
||||||
|
if x == nil || t.Failed() {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
getColumn := func() *schemas.Column {
|
||||||
|
tables, err := x.DBMetas()
|
||||||
|
require.NoError(t, err)
|
||||||
|
require.Len(t, tables, 1)
|
||||||
|
table := tables[0]
|
||||||
|
require.Equal(t, "badge", table.Name)
|
||||||
|
return table.GetColumn("slug")
|
||||||
|
}
|
||||||
|
|
||||||
|
require.NotNil(t, getColumn(), "slug column exists")
|
||||||
|
require.NoError(t, GiteaLastDrop(x))
|
||||||
|
require.Nil(t, getColumn(), "slug column was deleted")
|
||||||
|
// idempotent
|
||||||
|
require.NoError(t, GiteaLastDrop(x))
|
||||||
|
}
|
|
@ -57,20 +57,6 @@ func (Column) TableName() string {
|
||||||
return "project_board" // TODO: the legacy table name should be project_column
|
return "project_board" // TODO: the legacy table name should be project_column
|
||||||
}
|
}
|
||||||
|
|
||||||
// NumIssues return counter of all issues assigned to the column
|
|
||||||
func (c *Column) NumIssues(ctx context.Context) int {
|
|
||||||
total, err := db.GetEngine(ctx).Table("project_issue").
|
|
||||||
Where("project_id=?", c.ProjectID).
|
|
||||||
And("project_board_id=?", c.ID).
|
|
||||||
GroupBy("issue_id").
|
|
||||||
Cols("issue_id").
|
|
||||||
Count()
|
|
||||||
if err != nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
return int(total)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (c *Column) GetIssues(ctx context.Context) ([]*ProjectIssue, error) {
|
func (c *Column) GetIssues(ctx context.Context) ([]*ProjectIssue, error) {
|
||||||
issues := make([]*ProjectIssue, 0, 5)
|
issues := make([]*ProjectIssue, 0, 5)
|
||||||
if err := db.GetEngine(ctx).Where("project_id=?", c.ProjectID).
|
if err := db.GetEngine(ctx).Where("project_id=?", c.ProjectID).
|
||||||
|
|
|
@ -34,20 +34,6 @@ func deleteProjectIssuesByProjectID(ctx context.Context, projectID int64) error
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
// NumIssues return counter of all issues assigned to a project
|
|
||||||
func (p *Project) NumIssues(ctx context.Context) int {
|
|
||||||
c, err := db.GetEngine(ctx).Table("project_issue").
|
|
||||||
Where("project_id=?", p.ID).
|
|
||||||
GroupBy("issue_id").
|
|
||||||
Cols("issue_id").
|
|
||||||
Count()
|
|
||||||
if err != nil {
|
|
||||||
log.Error("NumIssues: %v", err)
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
return int(c)
|
|
||||||
}
|
|
||||||
|
|
||||||
// NumClosedIssues return counter of closed issues assigned to a project
|
// NumClosedIssues return counter of closed issues assigned to a project
|
||||||
func (p *Project) NumClosedIssues(ctx context.Context) int {
|
func (p *Project) NumClosedIssues(ctx context.Context) int {
|
||||||
c, err := db.GetEngine(ctx).Table("project_issue").
|
c, err := db.GetEngine(ctx).Table("project_issue").
|
||||||
|
|
|
@ -97,13 +97,11 @@ func init() {
|
||||||
|
|
||||||
// LoadAttributes load repo and publisher attributes for a release
|
// LoadAttributes load repo and publisher attributes for a release
|
||||||
func (r *Release) LoadAttributes(ctx context.Context) error {
|
func (r *Release) LoadAttributes(ctx context.Context) error {
|
||||||
var err error
|
err := r.LoadRepo(ctx)
|
||||||
if r.Repo == nil {
|
if err != nil {
|
||||||
r.Repo, err = GetRepositoryByID(ctx, r.RepoID)
|
return err
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if r.Publisher == nil {
|
if r.Publisher == nil {
|
||||||
r.Publisher, err = user_model.GetUserByID(ctx, r.PublisherID)
|
r.Publisher, err = user_model.GetUserByID(ctx, r.PublisherID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -123,6 +121,18 @@ func (r *Release) LoadAttributes(ctx context.Context) error {
|
||||||
return GetReleaseAttachments(ctx, r)
|
return GetReleaseAttachments(ctx, r)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// LoadRepo load repo attribute for release
|
||||||
|
func (r *Release) LoadRepo(ctx context.Context) error {
|
||||||
|
if r.Repo != nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
var err error
|
||||||
|
r.Repo, err = GetRepositoryByID(ctx, r.RepoID)
|
||||||
|
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
// LoadArchiveDownloadCount loads the download count for the source archives
|
// LoadArchiveDownloadCount loads the download count for the source archives
|
||||||
func (r *Release) LoadArchiveDownloadCount(ctx context.Context) error {
|
func (r *Release) LoadArchiveDownloadCount(ctx context.Context) error {
|
||||||
var err error
|
var err error
|
||||||
|
@ -130,6 +140,25 @@ func (r *Release) LoadArchiveDownloadCount(ctx context.Context) error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// GetTotalDownloadCount returns the summary of all dowload count of files attached to the release
|
||||||
|
func (r *Release) GetTotalDownloadCount(ctx context.Context) (int64, error) {
|
||||||
|
var archiveCount int64
|
||||||
|
if !r.HideArchiveLinks {
|
||||||
|
_, err := db.GetEngine(ctx).SQL("SELECT SUM(count) FROM repo_archive_download_count WHERE release_id = ?", r.ID).Get(&archiveCount)
|
||||||
|
if err != nil {
|
||||||
|
return 0, err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var attachmentCount int64
|
||||||
|
_, err := db.GetEngine(ctx).SQL("SELECT SUM(download_count) FROM attachment WHERE release_id = ?", r.ID).Get(&attachmentCount)
|
||||||
|
if err != nil {
|
||||||
|
return 0, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return archiveCount + attachmentCount, nil
|
||||||
|
}
|
||||||
|
|
||||||
// APIURL the api url for a release. release must have attributes loaded
|
// APIURL the api url for a release. release must have attributes loaded
|
||||||
func (r *Release) APIURL() string {
|
func (r *Release) APIURL() string {
|
||||||
return r.Repo.APIURL() + "/releases/" + strconv.FormatInt(r.ID, 10)
|
return r.Repo.APIURL() + "/releases/" + strconv.FormatInt(r.ID, 10)
|
||||||
|
@ -160,6 +189,20 @@ func (r *Release) Link() string {
|
||||||
return r.Repo.Link() + "/releases/tag/" + util.PathEscapeSegments(r.TagName)
|
return r.Repo.Link() + "/releases/tag/" + util.PathEscapeSegments(r.TagName)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SummaryCardURL returns the absolute URL to an image providing a summary of the release
|
||||||
|
func (r *Release) SummaryCardURL() string {
|
||||||
|
return fmt.Sprintf("%s/releases/summary-card/%s", r.Repo.HTMLURL(), util.PathEscapeSegments(r.TagName))
|
||||||
|
}
|
||||||
|
|
||||||
|
// DisplayName retruns the name of the release
|
||||||
|
func (r *Release) DisplayName() string {
|
||||||
|
if r.IsTag && r.Title == "" {
|
||||||
|
return r.TagName
|
||||||
|
}
|
||||||
|
|
||||||
|
return r.Title
|
||||||
|
}
|
||||||
|
|
||||||
// IsReleaseExist returns true if release with given tag name already exists.
|
// IsReleaseExist returns true if release with given tag name already exists.
|
||||||
func IsReleaseExist(ctx context.Context, repoID int64, tagName string) (bool, error) {
|
func IsReleaseExist(ctx context.Context, repoID int64, tagName string) (bool, error) {
|
||||||
if len(tagName) == 0 {
|
if len(tagName) == 0 {
|
||||||
|
|
|
@ -9,6 +9,7 @@ import (
|
||||||
"code.gitea.io/gitea/models/db"
|
"code.gitea.io/gitea/models/db"
|
||||||
"code.gitea.io/gitea/models/unittest"
|
"code.gitea.io/gitea/models/unittest"
|
||||||
|
|
||||||
|
"github.com/stretchr/testify/assert"
|
||||||
"github.com/stretchr/testify/require"
|
"github.com/stretchr/testify/require"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -25,3 +26,26 @@ func TestMigrate_InsertReleases(t *testing.T) {
|
||||||
err := InsertReleases(db.DefaultContext, r)
|
err := InsertReleases(db.DefaultContext, r)
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestReleaseLoadRepo(t *testing.T) {
|
||||||
|
require.NoError(t, unittest.PrepareTestDatabase())
|
||||||
|
|
||||||
|
release := unittest.AssertExistsAndLoadBean(t, &Release{ID: 1})
|
||||||
|
assert.Nil(t, release.Repo)
|
||||||
|
|
||||||
|
require.NoError(t, release.LoadRepo(db.DefaultContext))
|
||||||
|
|
||||||
|
assert.EqualValues(t, 1, release.Repo.ID)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestReleaseDisplayName(t *testing.T) {
|
||||||
|
release := Release{TagName: "TagName"}
|
||||||
|
|
||||||
|
assert.Empty(t, release.DisplayName())
|
||||||
|
|
||||||
|
release.IsTag = true
|
||||||
|
assert.Equal(t, "TagName", release.DisplayName())
|
||||||
|
|
||||||
|
release.Title = "Title"
|
||||||
|
assert.Equal(t, "Title", release.DisplayName())
|
||||||
|
}
|
||||||
|
|
|
@ -327,6 +327,11 @@ func (repo *Repository) HTMLURL() string {
|
||||||
return setting.AppURL + url.PathEscape(repo.OwnerName) + "/" + url.PathEscape(repo.Name)
|
return setting.AppURL + url.PathEscape(repo.OwnerName) + "/" + url.PathEscape(repo.Name)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SummaryCardURL returns the absolute URL to an image providing a summary of the repo
|
||||||
|
func (repo *Repository) SummaryCardURL() string {
|
||||||
|
return fmt.Sprintf("%s/-/summary-card", repo.HTMLURL())
|
||||||
|
}
|
||||||
|
|
||||||
// CommitLink make link to by commit full ID
|
// CommitLink make link to by commit full ID
|
||||||
// note: won't check whether it's an right id
|
// note: won't check whether it's an right id
|
||||||
func (repo *Repository) CommitLink(commitID string) (result string) {
|
func (repo *Repository) CommitLink(commitID string) (result string) {
|
||||||
|
|
|
@ -166,9 +166,9 @@ func GetReviewers(ctx context.Context, repo *Repository, doerID, posterID int64)
|
||||||
// If isShowFullName is set to true, also include full name prefix search
|
// If isShowFullName is set to true, also include full name prefix search
|
||||||
func GetIssuePostersWithSearch(ctx context.Context, repo *Repository, isPull bool, search string, isShowFullName bool) ([]*user_model.User, error) {
|
func GetIssuePostersWithSearch(ctx context.Context, repo *Repository, isPull bool, search string, isShowFullName bool) ([]*user_model.User, error) {
|
||||||
users := make([]*user_model.User, 0, 30)
|
users := make([]*user_model.User, 0, 30)
|
||||||
var prefixCond builder.Cond = builder.Like{"name", search + "%"}
|
prefixCond := db.BuildCaseInsensitiveLike("name", search+"%")
|
||||||
if isShowFullName {
|
if isShowFullName {
|
||||||
prefixCond = prefixCond.Or(builder.Like{"full_name", "%" + search + "%"})
|
prefixCond = db.BuildCaseInsensitiveLike("full_name", "%"+search+"%")
|
||||||
}
|
}
|
||||||
|
|
||||||
cond := builder.In("`user`.id",
|
cond := builder.In("`user`.id",
|
||||||
|
|
|
@ -126,17 +126,15 @@ func (opts *SearchUserOptions) toSearchQueryBase(ctx context.Context) *xorm.Sess
|
||||||
return e.Where(cond)
|
return e.Where(cond)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 2fa filter uses LEFT JOIN to check whether a user has a 2fa record
|
// Check if the user has two factor enabled, which is TOTP or Webauthn.
|
||||||
// While using LEFT JOIN, sometimes the performance might not be good, but it won't be a problem now, such SQL is seldom executed.
|
|
||||||
// There are some possible methods to refactor this SQL in future when we really need to optimize the performance (but not now):
|
|
||||||
// (1) add a column in user table (2) add a setting value in user_setting table (3) use search engines (bleve/elasticsearch)
|
|
||||||
if opts.IsTwoFactorEnabled.Value() {
|
if opts.IsTwoFactorEnabled.Value() {
|
||||||
cond = cond.And(builder.Expr("two_factor.uid IS NOT NULL"))
|
cond = cond.And(builder.Expr("two_factor.uid IS NOT NULL OR webauthn_credential.user_id IS NOT NULL"))
|
||||||
} else {
|
} else {
|
||||||
cond = cond.And(builder.Expr("two_factor.uid IS NULL"))
|
cond = cond.And(builder.Expr("two_factor.uid IS NULL AND webauthn_credential.user_id IS NULL"))
|
||||||
}
|
}
|
||||||
|
|
||||||
return e.Join("LEFT OUTER", "two_factor", "two_factor.uid = `user`.id").
|
return e.Join("LEFT OUTER", "two_factor", "two_factor.uid = `user`.id").
|
||||||
|
Join("LEFT OUTER", "webauthn_credential", "webauthn_credential.user_id = `user`.id").
|
||||||
Where(cond)
|
Where(cond)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -222,7 +222,7 @@ func TestSearchUsers(t *testing.T) {
|
||||||
[]int64{1041, 37})
|
[]int64{1041, 37})
|
||||||
|
|
||||||
testUserSuccess(&user_model.SearchUserOptions{ListOptions: db.ListOptions{Page: 1}, IsTwoFactorEnabled: optional.Some(true)},
|
testUserSuccess(&user_model.SearchUserOptions{ListOptions: db.ListOptions{Page: 1}, IsTwoFactorEnabled: optional.Some(true)},
|
||||||
[]int64{24})
|
[]int64{24, 32})
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestEmailNotificationPreferences(t *testing.T) {
|
func TestEmailNotificationPreferences(t *testing.T) {
|
||||||
|
|
256
modules/annex/annex.go
Normal file
256
modules/annex/annex.go
Normal file
|
@ -0,0 +1,256 @@
|
||||||
|
// Copyright 2022 The Gitea Authors. All rights reserved.
|
||||||
|
// SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
|
// Unlike modules/lfs, which operates mainly on git.Blobs, this operates on git.TreeEntrys.
|
||||||
|
// The motivation for this is that TreeEntrys have an easy pointer to the on-disk repo path,
|
||||||
|
// while blobs do not (in fact, if building with TAGS=gogit, blobs might exist only in a mock
|
||||||
|
// filesystem, living only in process RAM). We must have the on-disk path to do anything
|
||||||
|
// useful with git-annex because all of its interesting data is on-disk under .git/annex/.
|
||||||
|
|
||||||
|
package annex
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bytes"
|
||||||
|
"context"
|
||||||
|
"errors"
|
||||||
|
"fmt"
|
||||||
|
"io"
|
||||||
|
"os"
|
||||||
|
"path"
|
||||||
|
"path/filepath"
|
||||||
|
"strings"
|
||||||
|
"sync"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"code.gitea.io/gitea/modules/git"
|
||||||
|
"code.gitea.io/gitea/modules/log"
|
||||||
|
"code.gitea.io/gitea/modules/setting"
|
||||||
|
"code.gitea.io/gitea/modules/typesniffer"
|
||||||
|
|
||||||
|
"gopkg.in/ini.v1" //nolint:depguard // This import is forbidden in favor of using the setting module, but we need ini parsing for something other than Forgejo settings
|
||||||
|
)
|
||||||
|
|
||||||
|
// ErrBlobIsNotAnnexed occurs if a blob does not contain a valid annex key
|
||||||
|
var ErrBlobIsNotAnnexed = errors.New("not a git-annex pointer")
|
||||||
|
|
||||||
|
func PrivateInit(ctx context.Context, repoPath string) error {
|
||||||
|
if _, _, err := git.NewCommand(ctx, "config", "annex.private", "true").RunStdString(&git.RunOpts{Dir: repoPath}); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if _, _, err := git.NewCommand(ctx, "annex", "init").RunStdString(&git.RunOpts{Dir: repoPath}); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func LookupKey(blob *git.Blob) (string, error) {
|
||||||
|
stdout, _, err := git.NewCommand(git.DefaultContext, "annex", "lookupkey", "--ref").AddDynamicArguments(blob.ID.String()).RunStdString(&git.RunOpts{Dir: blob.Repo().Path})
|
||||||
|
if err != nil {
|
||||||
|
return "", ErrBlobIsNotAnnexed
|
||||||
|
}
|
||||||
|
key := strings.TrimSpace(stdout)
|
||||||
|
return key, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// LookupKeyBatch runs git annex lookupkey --batch --ref
|
||||||
|
func LookupKeyBatch(ctx context.Context, shasToBatchReader *io.PipeReader, lookupKeyBatchWriter *io.PipeWriter, wg *sync.WaitGroup, repoPath string) {
|
||||||
|
defer wg.Done()
|
||||||
|
defer shasToBatchReader.Close()
|
||||||
|
defer lookupKeyBatchWriter.Close()
|
||||||
|
|
||||||
|
stderr := new(bytes.Buffer)
|
||||||
|
var errbuf strings.Builder
|
||||||
|
if err := git.NewCommand(ctx, "annex", "lookupkey", "--batch", "--ref").Run(&git.RunOpts{
|
||||||
|
Dir: repoPath,
|
||||||
|
Stdout: lookupKeyBatchWriter,
|
||||||
|
Stdin: shasToBatchReader,
|
||||||
|
Stderr: stderr,
|
||||||
|
}); err != nil {
|
||||||
|
_ = lookupKeyBatchWriter.CloseWithError(fmt.Errorf("git annex lookupkey --batch --ref [%s]: %w - %s", repoPath, err, errbuf.String()))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// CopyFromToBatch runs git -c annex.hardlink=true annex copy --batch-keys --from <remote> --to <remote>
|
||||||
|
func CopyFromToBatch(ctx context.Context, from, to string, keysToCopyReader *io.PipeReader, wg *sync.WaitGroup, repoPath string) {
|
||||||
|
defer wg.Done()
|
||||||
|
defer keysToCopyReader.Close()
|
||||||
|
|
||||||
|
stdout := new(bytes.Buffer)
|
||||||
|
stderr := new(bytes.Buffer)
|
||||||
|
var errbuf strings.Builder
|
||||||
|
if err := git.NewCommand(ctx, "-c", "annex.hardlink=true", "annex", "copy", "--batch-keys", "--from").AddDynamicArguments(from).AddArguments("--to").AddDynamicArguments(to).Run(&git.RunOpts{
|
||||||
|
Dir: repoPath,
|
||||||
|
Stdout: stdout,
|
||||||
|
Stdin: keysToCopyReader,
|
||||||
|
Stderr: stderr,
|
||||||
|
}); err != nil {
|
||||||
|
_ = keysToCopyReader.CloseWithError(fmt.Errorf("git annex copy --batch-keys --from <remote> --to <remote> [%s]: %w - %s", repoPath, err, errbuf.String()))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func ContentLocationFromKey(repoPath, key string) (string, error) {
|
||||||
|
contentLocation, _, err := git.NewCommandContextNoGlobals(git.DefaultContext, "annex", "contentlocation").AddDynamicArguments(key).RunStdString(&git.RunOpts{Dir: repoPath})
|
||||||
|
if err != nil {
|
||||||
|
return "", fmt.Errorf("in %s: %s does not seem to be a valid annexed file: %w", repoPath, key, err)
|
||||||
|
}
|
||||||
|
contentLocation = strings.TrimSpace(contentLocation)
|
||||||
|
contentLocation = path.Clean("/" + contentLocation)[1:] // prevent directory traversals
|
||||||
|
contentLocation = path.Join(repoPath, contentLocation)
|
||||||
|
|
||||||
|
return contentLocation, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// return the absolute path of the content pointed to by the annex pointer stored in the git object
|
||||||
|
// errors if the content is not found in this repo
|
||||||
|
func ContentLocation(blob *git.Blob) (string, error) {
|
||||||
|
key, err := LookupKey(blob)
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
return ContentLocationFromKey(blob.Repo().Path, key)
|
||||||
|
}
|
||||||
|
|
||||||
|
// returns a stream open to the annex content
|
||||||
|
func Content(blob *git.Blob) (*os.File, error) {
|
||||||
|
contentLocation, err := ContentLocation(blob)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return os.Open(contentLocation)
|
||||||
|
}
|
||||||
|
|
||||||
|
// whether the object appears to be a valid annex pointer
|
||||||
|
// does *not* verify if the content is actually in this repo;
|
||||||
|
// for that, use ContentLocation()
|
||||||
|
func IsAnnexed(blob *git.Blob) (bool, error) {
|
||||||
|
if !setting.Annex.Enabled {
|
||||||
|
return false, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// LookupKey is written to only return well-formed keys
|
||||||
|
// so the test is just to see if it errors
|
||||||
|
_, err := LookupKey(blob)
|
||||||
|
if err != nil {
|
||||||
|
if errors.Is(err, ErrBlobIsNotAnnexed) {
|
||||||
|
return false, nil
|
||||||
|
}
|
||||||
|
return false, err
|
||||||
|
}
|
||||||
|
return true, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// PathIsAnnexRepo determines if repoPath is a git-annex enabled repository
|
||||||
|
func PathIsAnnexRepo(repoPath string) bool {
|
||||||
|
_, _, err := git.NewCommand(git.DefaultContext, "config", "annex.uuid").RunStdString(&git.RunOpts{Dir: repoPath})
|
||||||
|
return err == nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// IsAnnexRepo determines if repo is a git-annex enabled repository
|
||||||
|
func IsAnnexRepo(repo *git.Repository) bool {
|
||||||
|
_, _, err := git.NewCommand(repo.Ctx, "config", "annex.uuid").RunStdString(&git.RunOpts{Dir: repo.Path})
|
||||||
|
return err == nil
|
||||||
|
}
|
||||||
|
|
||||||
|
var (
|
||||||
|
uuid2repoPathCache = make(map[string]string)
|
||||||
|
repoPath2uuidCache = make(map[string]string)
|
||||||
|
)
|
||||||
|
|
||||||
|
func Init() error {
|
||||||
|
if !setting.Annex.Enabled {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
if !setting.Annex.DisableP2PHTTP {
|
||||||
|
log.Info("Populating the git-annex UUID cache with existing repositories")
|
||||||
|
start := time.Now()
|
||||||
|
if err := updateUUID2RepoPathCache(); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
log.Info("Populating the git-annex UUID cache took %v", time.Since(start))
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func updateUUID2RepoPathCache() error {
|
||||||
|
configFiles, err := filepath.Glob(filepath.Join(setting.RepoRootPath, "*", "*", "config"))
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
for _, configFile := range configFiles {
|
||||||
|
repoPath := strings.TrimSuffix(configFile, "/config")
|
||||||
|
_, ok := repoPath2uuidCache[repoPath]
|
||||||
|
if ok {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
config, err := ini.Load(configFile)
|
||||||
|
if err != nil {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
repoUUID := config.Section("annex").Key("uuid").Value()
|
||||||
|
if repoUUID != "" {
|
||||||
|
uuid2repoPathCache[repoUUID] = repoPath
|
||||||
|
repoPath2uuidCache[repoPath] = repoUUID
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func repoPathFromUUIDCache(uuid string) (string, error) {
|
||||||
|
if repoPath, ok := uuid2repoPathCache[uuid]; ok {
|
||||||
|
return repoPath, nil
|
||||||
|
}
|
||||||
|
// If the cache didn't contain an entry for the UUID then update the cache and try again
|
||||||
|
if err := updateUUID2RepoPathCache(); err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
if repoPath, ok := uuid2repoPathCache[uuid]; ok {
|
||||||
|
return repoPath, nil
|
||||||
|
}
|
||||||
|
return "", fmt.Errorf("no repository known for UUID '%s'", uuid)
|
||||||
|
}
|
||||||
|
|
||||||
|
func checkValidity(uuid, repoPath string) (bool, error) {
|
||||||
|
stdout, _, err := git.NewCommand(git.DefaultContext, "config", "annex.uuid").RunStdString(&git.RunOpts{Dir: repoPath})
|
||||||
|
if err != nil {
|
||||||
|
return false, err
|
||||||
|
}
|
||||||
|
repoUUID := strings.TrimSpace(stdout)
|
||||||
|
return uuid == repoUUID, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func removeCachedEntries(uuid, repoPath string) {
|
||||||
|
delete(uuid2repoPathCache, uuid)
|
||||||
|
delete(repoPath2uuidCache, repoPath)
|
||||||
|
}
|
||||||
|
|
||||||
|
func UUID2RepoPath(uuid string) (string, error) {
|
||||||
|
// Get the current cache entry for the UUID
|
||||||
|
repoPath, err := repoPathFromUUIDCache(uuid)
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
// Check if it is still up-to-date
|
||||||
|
valid, err := checkValidity(uuid, repoPath)
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
if !valid {
|
||||||
|
// If it isn't, remove the cache entry and try again
|
||||||
|
removeCachedEntries(uuid, repoPath)
|
||||||
|
return UUID2RepoPath(uuid)
|
||||||
|
}
|
||||||
|
// Otherwise just return the cached entry
|
||||||
|
return repoPath, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// GuessContentType guesses the content type of the annexed blob.
|
||||||
|
func GuessContentType(blob *git.Blob) (typesniffer.SniffedType, error) {
|
||||||
|
r, err := Content(blob)
|
||||||
|
if err != nil {
|
||||||
|
return typesniffer.SniffedType{}, err
|
||||||
|
}
|
||||||
|
defer r.Close()
|
||||||
|
|
||||||
|
return typesniffer.DetectContentTypeFromReader(r)
|
||||||
|
}
|
|
@ -16,6 +16,7 @@ import (
|
||||||
"strings"
|
"strings"
|
||||||
"unicode/utf8"
|
"unicode/utf8"
|
||||||
|
|
||||||
|
"code.gitea.io/gitea/modules/annex"
|
||||||
"code.gitea.io/gitea/modules/git"
|
"code.gitea.io/gitea/modules/git"
|
||||||
"code.gitea.io/gitea/modules/log"
|
"code.gitea.io/gitea/modules/log"
|
||||||
|
|
||||||
|
@ -101,6 +102,12 @@ func Int64sToStrings(ints []int64) []string {
|
||||||
|
|
||||||
// EntryIcon returns the octicon class for displaying files/directories
|
// EntryIcon returns the octicon class for displaying files/directories
|
||||||
func EntryIcon(entry *git.TreeEntry) string {
|
func EntryIcon(entry *git.TreeEntry) string {
|
||||||
|
isAnnexed, _ := annex.IsAnnexed(entry.Blob())
|
||||||
|
if isAnnexed {
|
||||||
|
// Show git-annex files as binary files to differentiate them from non-annexed files
|
||||||
|
// TODO: find a more suitable icon, maybe something related to git-annex
|
||||||
|
return "file-binary"
|
||||||
|
}
|
||||||
switch {
|
switch {
|
||||||
case entry.IsLink():
|
case entry.IsLink():
|
||||||
te, _, err := entry.FollowLink()
|
te, _, err := entry.FollowLink()
|
||||||
|
|
|
@ -5,6 +5,7 @@ package card
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
|
"fmt"
|
||||||
"image"
|
"image"
|
||||||
"image/color"
|
"image/color"
|
||||||
"io"
|
"io"
|
||||||
|
@ -35,12 +36,19 @@ type Card struct {
|
||||||
Img *image.RGBA
|
Img *image.RGBA
|
||||||
Font *truetype.Font
|
Font *truetype.Font
|
||||||
Margin int
|
Margin int
|
||||||
|
Width int
|
||||||
|
Height int
|
||||||
}
|
}
|
||||||
|
|
||||||
var fontCache = sync.OnceValues(func() (*truetype.Font, error) {
|
var fontCache = sync.OnceValues(func() (*truetype.Font, error) {
|
||||||
return truetype.Parse(goregular.TTF)
|
return truetype.Parse(goregular.TTF)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
// DefaultSize returns the default size for a card
|
||||||
|
func DefaultSize() (int, int) {
|
||||||
|
return 1200, 600
|
||||||
|
}
|
||||||
|
|
||||||
// NewCard creates a new card with the given dimensions in pixels
|
// NewCard creates a new card with the given dimensions in pixels
|
||||||
func NewCard(width, height int) (*Card, error) {
|
func NewCard(width, height int) (*Card, error) {
|
||||||
img := image.NewRGBA(image.Rect(0, 0, width, height))
|
img := image.NewRGBA(image.Rect(0, 0, width, height))
|
||||||
|
@ -55,6 +63,8 @@ func NewCard(width, height int) (*Card, error) {
|
||||||
Img: img,
|
Img: img,
|
||||||
Font: font,
|
Font: font,
|
||||||
Margin: 0,
|
Margin: 0,
|
||||||
|
Width: width,
|
||||||
|
Height: height,
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -67,14 +77,14 @@ func (c *Card) Split(vertical bool, percentage int) (*Card, *Card) {
|
||||||
mid := (bounds.Dx() * percentage / 100) + bounds.Min.X
|
mid := (bounds.Dx() * percentage / 100) + bounds.Min.X
|
||||||
subleft := c.Img.SubImage(image.Rect(bounds.Min.X, bounds.Min.Y, mid, bounds.Max.Y)).(*image.RGBA)
|
subleft := c.Img.SubImage(image.Rect(bounds.Min.X, bounds.Min.Y, mid, bounds.Max.Y)).(*image.RGBA)
|
||||||
subright := c.Img.SubImage(image.Rect(mid, bounds.Min.Y, bounds.Max.X, bounds.Max.Y)).(*image.RGBA)
|
subright := c.Img.SubImage(image.Rect(mid, bounds.Min.Y, bounds.Max.X, bounds.Max.Y)).(*image.RGBA)
|
||||||
return &Card{Img: subleft, Font: c.Font},
|
return &Card{Img: subleft, Font: c.Font, Width: subleft.Bounds().Dx(), Height: subleft.Bounds().Dy()},
|
||||||
&Card{Img: subright, Font: c.Font}
|
&Card{Img: subright, Font: c.Font, Width: subright.Bounds().Dx(), Height: subright.Bounds().Dy()}
|
||||||
}
|
}
|
||||||
mid := (bounds.Dy() * percentage / 100) + bounds.Min.Y
|
mid := (bounds.Dy() * percentage / 100) + bounds.Min.Y
|
||||||
subtop := c.Img.SubImage(image.Rect(bounds.Min.X, bounds.Min.Y, bounds.Max.X, mid)).(*image.RGBA)
|
subtop := c.Img.SubImage(image.Rect(bounds.Min.X, bounds.Min.Y, bounds.Max.X, mid)).(*image.RGBA)
|
||||||
subbottom := c.Img.SubImage(image.Rect(bounds.Min.X, mid, bounds.Max.X, bounds.Max.Y)).(*image.RGBA)
|
subbottom := c.Img.SubImage(image.Rect(bounds.Min.X, mid, bounds.Max.X, bounds.Max.Y)).(*image.RGBA)
|
||||||
return &Card{Img: subtop, Font: c.Font},
|
return &Card{Img: subtop, Font: c.Font, Width: subtop.Bounds().Dx(), Height: subtop.Bounds().Dy()},
|
||||||
&Card{Img: subbottom, Font: c.Font}
|
&Card{Img: subbottom, Font: c.Font, Width: subbottom.Bounds().Dx(), Height: subbottom.Bounds().Dy()}
|
||||||
}
|
}
|
||||||
|
|
||||||
// SetMargin sets the margins for the card
|
// SetMargin sets the margins for the card
|
||||||
|
@ -244,9 +254,14 @@ func (c *Card) fetchExternalImage(url string) (image.Image, bool) {
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Go expects a absolute URL, so we must change a relative to an absolute one
|
||||||
|
if !strings.Contains(url, "://") {
|
||||||
|
url = fmt.Sprintf("%s%s", setting.AppURL, strings.TrimPrefix(url, "/"))
|
||||||
|
}
|
||||||
|
|
||||||
resp, err := client.Get(url)
|
resp, err := client.Get(url)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Warn("error when fetching external image from %s: %w", url, err)
|
log.Warn("error when fetching external image from %s: %v", url, err)
|
||||||
return nil, false
|
return nil, false
|
||||||
}
|
}
|
||||||
defer resp.Body.Close()
|
defer resp.Body.Close()
|
||||||
|
@ -321,3 +336,8 @@ func (c *Card) DrawExternalImage(url string) {
|
||||||
}
|
}
|
||||||
c.DrawImage(image)
|
c.DrawImage(image)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// DrawRect draws a rect with the given color
|
||||||
|
func (c *Card) DrawRect(startX, startY, endX, endY int, color color.Color) {
|
||||||
|
draw.Draw(c.Img, image.Rect(startX, startY, endX, endY), &image.Uniform{color}, image.Point{}, draw.Src)
|
||||||
|
}
|
||||||
|
|
|
@ -126,6 +126,10 @@ func (b *blobReader) Close() error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (b *Blob) Repo() *Repository {
|
||||||
|
return b.repo
|
||||||
|
}
|
||||||
|
|
||||||
// Name returns name of the tree entry this blob object was created from (or empty string)
|
// Name returns name of the tree entry this blob object was created from (or empty string)
|
||||||
func (b *Blob) Name() string {
|
func (b *Blob) Name() string {
|
||||||
return b.name
|
return b.name
|
||||||
|
|
|
@ -457,12 +457,13 @@ func (c *Command) RunStdBytes(opts *RunOpts) (stdout, stderr []byte, runErr RunS
|
||||||
}
|
}
|
||||||
|
|
||||||
// AllowLFSFiltersArgs return globalCommandArgs with lfs filter, it should only be used for tests
|
// AllowLFSFiltersArgs return globalCommandArgs with lfs filter, it should only be used for tests
|
||||||
|
// It also re-enables git-credential(1), which is used to test git-annex's HTTP support
|
||||||
func AllowLFSFiltersArgs() TrustedCmdArgs {
|
func AllowLFSFiltersArgs() TrustedCmdArgs {
|
||||||
// Now here we should explicitly allow lfs filters to run
|
// Now here we should explicitly allow lfs filters to run
|
||||||
filteredLFSGlobalArgs := make(TrustedCmdArgs, len(globalCommandArgs))
|
filteredLFSGlobalArgs := make(TrustedCmdArgs, len(globalCommandArgs))
|
||||||
j := 0
|
j := 0
|
||||||
for _, arg := range globalCommandArgs {
|
for _, arg := range globalCommandArgs {
|
||||||
if strings.Contains(string(arg), "lfs") {
|
if strings.Contains(string(arg), "lfs") || strings.Contains(string(arg), "credential") {
|
||||||
j--
|
j--
|
||||||
} else {
|
} else {
|
||||||
filteredLFSGlobalArgs[j] = arg
|
filteredLFSGlobalArgs[j] = arg
|
||||||
|
|
|
@ -106,3 +106,36 @@ func BlobsLessThan1024FromCatFileBatchCheck(catFileCheckReader *io.PipeReader, s
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// BlobsLessThanOrEqual32KiBFromCatFileBatchCheck reads a pipeline from cat-file --batch-check and returns the blobs <=32KiB in size
|
||||||
|
func BlobsLessThanOrEqual32KiBFromCatFileBatchCheck(catFileCheckReader *io.PipeReader, shasToBatchWriter *io.PipeWriter, wg *sync.WaitGroup) {
|
||||||
|
defer wg.Done()
|
||||||
|
defer catFileCheckReader.Close()
|
||||||
|
scanner := bufio.NewScanner(catFileCheckReader)
|
||||||
|
defer func() {
|
||||||
|
_ = shasToBatchWriter.CloseWithError(scanner.Err())
|
||||||
|
}()
|
||||||
|
for scanner.Scan() {
|
||||||
|
line := scanner.Text()
|
||||||
|
if len(line) == 0 {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
fields := strings.Split(line, " ")
|
||||||
|
if len(fields) < 3 || fields[1] != "blob" {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
size, _ := strconv.Atoi(fields[2])
|
||||||
|
if size > 32*1024 {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
toWrite := []byte(fields[0] + "\n")
|
||||||
|
for len(toWrite) > 0 {
|
||||||
|
n, err := shasToBatchWriter.Write(toWrite)
|
||||||
|
if err != nil {
|
||||||
|
_ = catFileCheckReader.CloseWithError(err)
|
||||||
|
break
|
||||||
|
}
|
||||||
|
toWrite = toWrite[n:]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
25
modules/markup/external/external.go
vendored
25
modules/markup/external/external.go
vendored
|
@ -12,6 +12,7 @@ import (
|
||||||
"runtime"
|
"runtime"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
|
"code.gitea.io/gitea/modules/annex"
|
||||||
"code.gitea.io/gitea/modules/graceful"
|
"code.gitea.io/gitea/modules/graceful"
|
||||||
"code.gitea.io/gitea/modules/log"
|
"code.gitea.io/gitea/modules/log"
|
||||||
"code.gitea.io/gitea/modules/markup"
|
"code.gitea.io/gitea/modules/markup"
|
||||||
|
@ -86,8 +87,22 @@ func (p *Renderer) Render(ctx *markup.RenderContext, input io.Reader, output io.
|
||||||
commands = strings.Fields(command)
|
commands = strings.Fields(command)
|
||||||
args = commands[1:]
|
args = commands[1:]
|
||||||
)
|
)
|
||||||
|
isAnnexed, _ := annex.IsAnnexed(ctx.Blob)
|
||||||
if p.IsInputFile {
|
// if a renderer wants to read a file, and we have annexed content, we can
|
||||||
|
// provide the annex key file location directly to the renderer. git-annex
|
||||||
|
// takes care of having that location be read-only, so no critical
|
||||||
|
// protection layer is needed. Moreover, the file readily exists, and
|
||||||
|
// expensive temporary files can be avoided, also allowing an operator
|
||||||
|
// to raise MAX_DISPLAY_FILE_SIZE without much negative impact.
|
||||||
|
if p.IsInputFile && isAnnexed {
|
||||||
|
// look for annexed content, will be empty, if there is none
|
||||||
|
annexContentLocation, _ := annex.ContentLocation(ctx.Blob)
|
||||||
|
// we call the renderer, even if there is no annex content present.
|
||||||
|
// showing the pointer file content is not much use, and a topical
|
||||||
|
// renderer might be able to produce something useful from the
|
||||||
|
// filename alone (present in ENV)
|
||||||
|
args = append(args, annexContentLocation)
|
||||||
|
} else if p.IsInputFile {
|
||||||
// write to temp file
|
// write to temp file
|
||||||
f, err := os.CreateTemp("", "gitea_input")
|
f, err := os.CreateTemp("", "gitea_input")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -130,6 +145,12 @@ func (p *Renderer) Render(ctx *markup.RenderContext, input io.Reader, output io.
|
||||||
os.Environ(),
|
os.Environ(),
|
||||||
"GITEA_PREFIX_SRC="+ctx.Links.SrcLink(),
|
"GITEA_PREFIX_SRC="+ctx.Links.SrcLink(),
|
||||||
"GITEA_PREFIX_RAW="+ctx.Links.RawLink(),
|
"GITEA_PREFIX_RAW="+ctx.Links.RawLink(),
|
||||||
|
// also communicate the relative path of the to-be-rendered item.
|
||||||
|
// this enables the renderer to make use of the original file name
|
||||||
|
// and path, e.g., to make rendering or dtype-detection decisions
|
||||||
|
// that go beyond the originally matched extension. Even if the
|
||||||
|
// content is directly streamed to STDIN
|
||||||
|
"GITEA_RELATIVE_PATH="+ctx.RelativePath,
|
||||||
)
|
)
|
||||||
if !p.IsInputFile {
|
if !p.IsInputFile {
|
||||||
cmd.Stdin = input
|
cmd.Stdin = input
|
||||||
|
|
|
@ -8,6 +8,7 @@ import (
|
||||||
"bytes"
|
"bytes"
|
||||||
"html/template"
|
"html/template"
|
||||||
"io"
|
"io"
|
||||||
|
"net/url"
|
||||||
"regexp"
|
"regexp"
|
||||||
"slices"
|
"slices"
|
||||||
"strconv"
|
"strconv"
|
||||||
|
@ -77,6 +78,16 @@ func newFilePreview(ctx *RenderContext, node *html.Node, locale translation.Loca
|
||||||
|
|
||||||
commitSha := node.Data[m[4]:m[5]]
|
commitSha := node.Data[m[4]:m[5]]
|
||||||
filePath := node.Data[m[6]:m[7]]
|
filePath := node.Data[m[6]:m[7]]
|
||||||
|
urlFullSource := urlFull
|
||||||
|
if strings.HasSuffix(filePath, "?display=source") {
|
||||||
|
filePath = strings.TrimSuffix(filePath, "?display=source")
|
||||||
|
} else if Type(filePath) != "" {
|
||||||
|
urlFullSource = node.Data[m[0]:m[6]] + filePath + "?display=source#" + node.Data[m[8]:m[1]]
|
||||||
|
}
|
||||||
|
filePath, err := url.QueryUnescape(filePath)
|
||||||
|
if err != nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
hash := node.Data[m[8]:m[9]]
|
hash := node.Data[m[8]:m[9]]
|
||||||
|
|
||||||
preview.start = m[0]
|
preview.start = m[0]
|
||||||
|
@ -113,7 +124,7 @@ func newFilePreview(ctx *RenderContext, node *html.Node, locale translation.Loca
|
||||||
titleBuffer.WriteString(" – ")
|
titleBuffer.WriteString(" – ")
|
||||||
}
|
}
|
||||||
|
|
||||||
err = html.Render(titleBuffer, createLink(urlFull, filePath, "muted"))
|
err = html.Render(titleBuffer, createLink(urlFullSource, filePath, "muted"))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Error("failed to render filepathLink: %v", err)
|
log.Error("failed to render filepathLink: %v", err)
|
||||||
}
|
}
|
||||||
|
|
|
@ -1026,4 +1026,138 @@ func TestRender_FilePreview(t *testing.T) {
|
||||||
localMetas,
|
localMetas,
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
commitFileURL := util.URLJoin(markup.TestRepoURL, "src", "commit", "c9913120ed2c1e27c1d7752ecdb7a504dc7cf6be", "path", "to", "file.md")
|
||||||
|
|
||||||
|
t.Run("rendered file with ?display=source", func(t *testing.T) {
|
||||||
|
testRender(
|
||||||
|
commitFileURL+"?display=source"+"#L1-L2",
|
||||||
|
`<p></p>`+
|
||||||
|
`<div class="file-preview-box">`+
|
||||||
|
`<div class="header">`+
|
||||||
|
`<div>`+
|
||||||
|
`<a href="http://localhost:3000/gogits/gogs/src/commit/c9913120ed2c1e27c1d7752ecdb7a504dc7cf6be/path/to/file.md?display=source#L1-L2" class="muted" rel="nofollow">path/to/file.md</a>`+
|
||||||
|
`</div>`+
|
||||||
|
`<span class="text small grey">`+
|
||||||
|
`Lines 1 to 2 in <a href="http://localhost:3000/gogits/gogs/src/commit/c9913120ed2c1e27c1d7752ecdb7a504dc7cf6be" class="text black" rel="nofollow">c991312</a>`+
|
||||||
|
`</span>`+
|
||||||
|
`</div>`+
|
||||||
|
`<div class="ui table">`+
|
||||||
|
`<table class="file-preview">`+
|
||||||
|
`<tbody>`+
|
||||||
|
`<tr>`+
|
||||||
|
`<td class="lines-num"><span data-line-number="1"></span></td>`+
|
||||||
|
`<td class="lines-code chroma"><code class="code-inner"><span class="gh"># A`+"\n"+`</span></code></td>`+
|
||||||
|
`</tr>`+
|
||||||
|
`<tr>`+
|
||||||
|
`<td class="lines-num"><span data-line-number="2"></span></td>`+
|
||||||
|
`<td class="lines-code chroma"><code class="code-inner"><span class="gh"></span>B`+"\n"+`</code></td>`+
|
||||||
|
`</tr>`+
|
||||||
|
`</tbody>`+
|
||||||
|
`</table>`+
|
||||||
|
`</div>`+
|
||||||
|
`</div>`+
|
||||||
|
`<p></p>`,
|
||||||
|
localMetas,
|
||||||
|
)
|
||||||
|
})
|
||||||
|
|
||||||
|
t.Run("rendered file without ?display=source", func(t *testing.T) {
|
||||||
|
testRender(
|
||||||
|
commitFileURL+"#L1-L2",
|
||||||
|
`<p></p>`+
|
||||||
|
`<div class="file-preview-box">`+
|
||||||
|
`<div class="header">`+
|
||||||
|
`<div>`+
|
||||||
|
`<a href="http://localhost:3000/gogits/gogs/src/commit/c9913120ed2c1e27c1d7752ecdb7a504dc7cf6be/path/to/file.md?display=source#L1-L2" class="muted" rel="nofollow">path/to/file.md</a>`+
|
||||||
|
`</div>`+
|
||||||
|
`<span class="text small grey">`+
|
||||||
|
`Lines 1 to 2 in <a href="http://localhost:3000/gogits/gogs/src/commit/c9913120ed2c1e27c1d7752ecdb7a504dc7cf6be" class="text black" rel="nofollow">c991312</a>`+
|
||||||
|
`</span>`+
|
||||||
|
`</div>`+
|
||||||
|
`<div class="ui table">`+
|
||||||
|
`<table class="file-preview">`+
|
||||||
|
`<tbody>`+
|
||||||
|
`<tr>`+
|
||||||
|
`<td class="lines-num"><span data-line-number="1"></span></td>`+
|
||||||
|
`<td class="lines-code chroma"><code class="code-inner"><span class="gh"># A`+"\n"+`</span></code></td>`+
|
||||||
|
`</tr>`+
|
||||||
|
`<tr>`+
|
||||||
|
`<td class="lines-num"><span data-line-number="2"></span></td>`+
|
||||||
|
`<td class="lines-code chroma"><code class="code-inner"><span class="gh"></span>B`+"\n"+`</code></td>`+
|
||||||
|
`</tr>`+
|
||||||
|
`</tbody>`+
|
||||||
|
`</table>`+
|
||||||
|
`</div>`+
|
||||||
|
`</div>`+
|
||||||
|
`<p></p>`,
|
||||||
|
localMetas,
|
||||||
|
)
|
||||||
|
})
|
||||||
|
|
||||||
|
commitFileURL = util.URLJoin(markup.TestRepoURL, "src", "commit", "190d9492934af498c3f669d6a2431dc5459e5b20", "path", "to", "file.go")
|
||||||
|
|
||||||
|
t.Run("normal file with ?display=source", func(t *testing.T) {
|
||||||
|
testRender(
|
||||||
|
commitFileURL+"?display=source"+"#L2-L3",
|
||||||
|
`<p></p>`+
|
||||||
|
`<div class="file-preview-box">`+
|
||||||
|
`<div class="header">`+
|
||||||
|
`<div>`+
|
||||||
|
`<a href="http://localhost:3000/gogits/gogs/src/commit/190d9492934af498c3f669d6a2431dc5459e5b20/path/to/file.go?display=source#L2-L3" class="muted" rel="nofollow">path/to/file.go</a>`+
|
||||||
|
`</div>`+
|
||||||
|
`<span class="text small grey">`+
|
||||||
|
`Lines 2 to 3 in <a href="http://localhost:3000/gogits/gogs/src/commit/190d9492934af498c3f669d6a2431dc5459e5b20" class="text black" rel="nofollow">190d949</a>`+
|
||||||
|
`</span>`+
|
||||||
|
`</div>`+
|
||||||
|
`<div class="ui table">`+
|
||||||
|
`<table class="file-preview">`+
|
||||||
|
`<tbody>`+
|
||||||
|
`<tr>`+
|
||||||
|
`<td class="lines-num"><span data-line-number="2"></span></td>`+
|
||||||
|
`<td class="lines-code chroma"><code class="code-inner"><span class="nx">B</span>`+"\n"+`</code></td>`+
|
||||||
|
`</tr>`+
|
||||||
|
`<tr>`+
|
||||||
|
`<td class="lines-num"><span data-line-number="3"></span></td>`+
|
||||||
|
`<td class="lines-code chroma"><code class="code-inner"><span class="nx">C</span>`+"\n"+`</code></td>`+
|
||||||
|
`</tr>`+
|
||||||
|
`</tbody>`+
|
||||||
|
`</table>`+
|
||||||
|
`</div>`+
|
||||||
|
`</div>`+
|
||||||
|
`<p></p>`,
|
||||||
|
localMetas,
|
||||||
|
)
|
||||||
|
})
|
||||||
|
|
||||||
|
commitFileURL = util.URLJoin(markup.TestRepoURL, "src", "commit", "eeb243c3395e1921c5d90e73bd739827251fc99d", "path", "to", "file%20%23.txt")
|
||||||
|
|
||||||
|
t.Run("file with strange characters in name", func(t *testing.T) {
|
||||||
|
testRender(
|
||||||
|
commitFileURL+"#L1",
|
||||||
|
`<p></p>`+
|
||||||
|
`<div class="file-preview-box">`+
|
||||||
|
`<div class="header">`+
|
||||||
|
`<div>`+
|
||||||
|
`<a href="http://localhost:3000/gogits/gogs/src/commit/eeb243c3395e1921c5d90e73bd739827251fc99d/path/to/file%20%23.txt#L1" class="muted" rel="nofollow">path/to/file #.txt</a>`+
|
||||||
|
`</div>`+
|
||||||
|
`<span class="text small grey">`+
|
||||||
|
`Line 1 in <a href="http://localhost:3000/gogits/gogs/src/commit/eeb243c3395e1921c5d90e73bd739827251fc99d" class="text black" rel="nofollow">eeb243c</a>`+
|
||||||
|
`</span>`+
|
||||||
|
`</div>`+
|
||||||
|
`<div class="ui table">`+
|
||||||
|
`<table class="file-preview">`+
|
||||||
|
`<tbody>`+
|
||||||
|
`<tr>`+
|
||||||
|
`<td class="lines-num"><span data-line-number="1"></span></td>`+
|
||||||
|
`<td class="lines-code chroma"><code class="code-inner">A`+"\n"+`</code></td>`+
|
||||||
|
`</tr>`+
|
||||||
|
`</tbody>`+
|
||||||
|
`</table>`+
|
||||||
|
`</div>`+
|
||||||
|
`</div>`+
|
||||||
|
`<p></p>`,
|
||||||
|
localMetas,
|
||||||
|
)
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
|
@ -152,8 +152,8 @@ func HelloWorld() {
|
||||||
}
|
}
|
||||||
#+end_src
|
#+end_src
|
||||||
`, `<div class="src src-go">
|
`, `<div class="src src-go">
|
||||||
<pre><code class="chroma language-go"><span class="c1">// HelloWorld prints "Hello World"
|
<pre><code class="chroma language-go"><span class="c1">// HelloWorld prints "Hello World"</span>
|
||||||
</span><span class="c1"></span><span class="kd">func</span> <span class="nf">HelloWorld</span><span class="p">()</span> <span class="p">{</span>
|
<span class="kd">func</span> <span class="nf">HelloWorld</span><span class="p">()</span> <span class="p">{</span>
|
||||||
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">"Hello World"</span><span class="p">)</span>
|
<span class="nx">fmt</span><span class="p">.</span><span class="nf">Println</span><span class="p">(</span><span class="s">"Hello World"</span><span class="p">)</span>
|
||||||
<span class="p">}</span></code></pre>
|
<span class="p">}</span></code></pre>
|
||||||
</div>`)
|
</div>`)
|
||||||
|
|
|
@ -67,14 +67,18 @@ type Header struct {
|
||||||
|
|
||||||
// RenderContext represents a render context
|
// RenderContext represents a render context
|
||||||
type RenderContext struct {
|
type RenderContext struct {
|
||||||
Ctx context.Context
|
Ctx context.Context
|
||||||
RelativePath string // relative path from tree root of the branch
|
RelativePath string // relative path from tree root of the branch
|
||||||
Type string
|
Type string
|
||||||
IsWiki bool
|
IsWiki bool
|
||||||
Links Links
|
Links Links
|
||||||
Metas map[string]string
|
Metas map[string]string
|
||||||
DefaultLink string
|
DefaultLink string
|
||||||
GitRepo *git.Repository
|
GitRepo *git.Repository
|
||||||
|
// reporting the target blob that is to-be-rendered enables
|
||||||
|
// deeper inspection in the handler for external renderer
|
||||||
|
// (i.e., more targeted handling of annexed files)
|
||||||
|
Blob *git.Blob
|
||||||
ShaExistCache map[string]bool
|
ShaExistCache map[string]bool
|
||||||
cancelFn func()
|
cancelFn func()
|
||||||
SidebarTocNode ast.Node
|
SidebarTocNode ast.Node
|
||||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1 @@
|
||||||
|
x•ŽANÃ0EYû³GB;a U=D9€=þ&–ÚÙÓr} 7èêÞÓÓëåÒŒBœ^¬´¤˜yY8Ï:AІX}<7D>R×XkÎs"î;uìFº®9x” Œ ÊEdÐ’%Í~**Zß3\ºÙvíô9Й>nÿ8Žfxkû=<3D>[9K”%L>®ôêÙ{§<>7Ãs–;aÕvý4ÛhXOûH·Ô“þÕ†ûð`KÑ
|
|
@ -0,0 +1 @@
|
||||||
|
x•ŽKŠ1@]çµ$¿J¥aæz€JRÁ@w+éØsýõ®ÞâñàåÛ²´ÖÛÃè"@VL&J3%f-ÑGDÒq2>FçjBOEݹË:ÀgÃ\1¤œ¦ê¦’kÀêªEM6DÔ,Ÿ\‚âǸÞ:\6é¾OülmÈ©;Ï|ƒ!GäŒE‚£6Z«üzòY¥Î²
¨m¸wÙ›üÂÿi‘.x-o³ò"›úŒLÌ
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -1 +1 @@
|
||||||
4c1aaf56bcb9f39dcf65f3f250726850aed13cd6
|
eeb243c3395e1921c5d90e73bd739827251fc99d
|
||||||
|
|
|
@ -40,6 +40,7 @@ type ServCommandResults struct {
|
||||||
UserName string
|
UserName string
|
||||||
UserEmail string
|
UserEmail string
|
||||||
UserID int64
|
UserID int64
|
||||||
|
UserMode perm.AccessMode
|
||||||
OwnerName string
|
OwnerName string
|
||||||
RepoName string
|
RepoName string
|
||||||
RepoID int64
|
RepoID int64
|
||||||
|
|
|
@ -32,7 +32,7 @@ var (
|
||||||
// issueNumericPattern matches string that references to a numeric issue, e.g. #1287
|
// issueNumericPattern matches string that references to a numeric issue, e.g. #1287
|
||||||
issueNumericPattern = regexp.MustCompile(`(?:\s|^|\(|\[|\'|\")([#!][0-9]+)(?:\s|$|\)|\]|\'|\"|[:;,.?!]\s|[:;,.?!]$)`)
|
issueNumericPattern = regexp.MustCompile(`(?:\s|^|\(|\[|\'|\")([#!][0-9]+)(?:\s|$|\)|\]|\'|\"|[:;,.?!]\s|[:;,.?!]$)`)
|
||||||
// issueAlphanumericPattern matches string that references to an alphanumeric issue, e.g. ABC-1234
|
// issueAlphanumericPattern matches string that references to an alphanumeric issue, e.g. ABC-1234
|
||||||
issueAlphanumericPattern = regexp.MustCompile(`(?:\s|^|\(|\[|\"|\')([A-Z]{1,10}-[1-9][0-9]*)(?:\s|$|\)|\]|:|\.(\s|$)|\"|\')`)
|
issueAlphanumericPattern = regexp.MustCompile(`(?:\s|^|\(|\[|\"|\')([A-Z]{1,10}-[1-9][0-9]*)(?:\s|$|\)|\]|:|\.(\s|$)|\"|\'|,)`)
|
||||||
// crossReferenceIssueNumericPattern matches string that references a numeric issue in a different repository
|
// crossReferenceIssueNumericPattern matches string that references a numeric issue in a different repository
|
||||||
// e.g. org/repo#12345
|
// e.g. org/repo#12345
|
||||||
crossReferenceIssueNumericPattern = regexp.MustCompile(`(?:\s|^|\(|\[)([0-9a-zA-Z-_\.]+/[0-9a-zA-Z-_\.]+[#!][0-9]+)(?:\s|$|\)|\]|[:;,.?!]\s|[:;,.?!]$)`)
|
crossReferenceIssueNumericPattern = regexp.MustCompile(`(?:\s|^|\(|\[)([0-9a-zA-Z-_\.]+/[0-9a-zA-Z-_\.]+[#!][0-9]+)(?:\s|$|\)|\]|[:;,.?!]\s|[:;,.?!]$)`)
|
||||||
|
|
|
@ -466,6 +466,7 @@ func TestRegExp_issueAlphanumericPattern(t *testing.T) {
|
||||||
"ABC-123:",
|
"ABC-123:",
|
||||||
"\"ABC-123\"",
|
"\"ABC-123\"",
|
||||||
"'ABC-123'",
|
"'ABC-123'",
|
||||||
|
"ABC-123, unknown PR",
|
||||||
}
|
}
|
||||||
falseTestCases := []string{
|
falseTestCases := []string{
|
||||||
"RC-08",
|
"RC-08",
|
||||||
|
|
|
@ -47,7 +47,7 @@ func AesDecrypt(key, text []byte) ([]byte, error) {
|
||||||
cfb.XORKeyStream(text, text)
|
cfb.XORKeyStream(text, text)
|
||||||
data, err := base64.StdEncoding.DecodeString(string(text))
|
data, err := base64.StdEncoding.DecodeString(string(text))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("AesDecrypt invalid decrypted base64 string: %w", err)
|
return nil, fmt.Errorf("AesDecrypt invalid decrypted base64 string: %w - it can be caused by a change of the [security].SECRET_KEY setting or a database corruption - `forgejo doctor check --run check-db-consistency --fix` will get rid of orphaned rows found in the `two_factor` table and may fix this problem if they are the one with the invalid content", err)
|
||||||
}
|
}
|
||||||
return data, nil
|
return data, nil
|
||||||
}
|
}
|
||||||
|
|
25
modules/setting/annex.go
Normal file
25
modules/setting/annex.go
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
// Copyright 2023 The Gitea Authors. All rights reserved.
|
||||||
|
// SPDX-License-Identifier: MIT
|
||||||
|
|
||||||
|
package setting
|
||||||
|
|
||||||
|
import (
|
||||||
|
"code.gitea.io/gitea/modules/log"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Annex represents the configuration for git-annex
|
||||||
|
var Annex = struct {
|
||||||
|
Enabled bool `ini:"ENABLED"`
|
||||||
|
DisableP2PHTTP bool `ini:"DISABLE_P2PHTTP"`
|
||||||
|
}{}
|
||||||
|
|
||||||
|
func loadAnnexFrom(rootCfg ConfigProvider) {
|
||||||
|
sec := rootCfg.Section("annex")
|
||||||
|
if err := sec.MapTo(&Annex); err != nil {
|
||||||
|
log.Fatal("Failed to map Annex settings: %v", err)
|
||||||
|
}
|
||||||
|
if !sec.HasKey("DISABLE_P2PHTTP") {
|
||||||
|
// If DisableP2PHTTP is not explicitly set then use DisableHTTPGit as its default
|
||||||
|
Annex.DisableP2PHTTP = Repository.DisableHTTPGit
|
||||||
|
}
|
||||||
|
}
|
|
@ -138,6 +138,11 @@ func CompileEmailGlobList(sec ConfigSection, keys ...string) (globs []glob.Glob)
|
||||||
return globs
|
return globs
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// LoadServiceSetting loads the service settings
|
||||||
|
func LoadServiceSetting() {
|
||||||
|
loadServiceFrom(CfgProvider)
|
||||||
|
}
|
||||||
|
|
||||||
func loadServiceFrom(rootCfg ConfigProvider) {
|
func loadServiceFrom(rootCfg ConfigProvider) {
|
||||||
sec := rootCfg.Section("service")
|
sec := rootCfg.Section("service")
|
||||||
Service.ActiveCodeLives = sec.Key("ACTIVE_CODE_LIVE_MINUTES").MustInt(180)
|
Service.ActiveCodeLives = sec.Key("ACTIVE_CODE_LIVE_MINUTES").MustInt(180)
|
||||||
|
|
|
@ -153,6 +153,7 @@ func loadCommonSettingsFrom(cfg ConfigProvider) error {
|
||||||
loadCamoFrom(cfg)
|
loadCamoFrom(cfg)
|
||||||
loadI18nFrom(cfg)
|
loadI18nFrom(cfg)
|
||||||
loadGitFrom(cfg)
|
loadGitFrom(cfg)
|
||||||
|
loadAnnexFrom(cfg)
|
||||||
loadMirrorFrom(cfg)
|
loadMirrorFrom(cfg)
|
||||||
loadMarkupFrom(cfg)
|
loadMarkupFrom(cfg)
|
||||||
loadQuotaFrom(cfg)
|
loadQuotaFrom(cfg)
|
||||||
|
|
|
@ -103,6 +103,10 @@ func NewFuncMap() template.FuncMap {
|
||||||
"AppVer": func() string {
|
"AppVer": func() string {
|
||||||
return setting.AppVer
|
return setting.AppVer
|
||||||
},
|
},
|
||||||
|
"AppVerNoMetadata": func() string {
|
||||||
|
version, _, _ := strings.Cut(setting.AppVer, "+")
|
||||||
|
return version
|
||||||
|
},
|
||||||
"AppDomain": func() string { // documented in mail-templates.md
|
"AppDomain": func() string { // documented in mail-templates.md
|
||||||
return setting.Domain
|
return setting.Domain
|
||||||
},
|
},
|
||||||
|
|
|
@ -4,7 +4,9 @@
|
||||||
package util
|
package util
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"io/fs"
|
||||||
"os"
|
"os"
|
||||||
|
"path/filepath"
|
||||||
"runtime"
|
"runtime"
|
||||||
"syscall"
|
"syscall"
|
||||||
"time"
|
"time"
|
||||||
|
@ -41,10 +43,48 @@ func Remove(name string) error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
// RemoveAll removes the named file or (empty) directory with at most 5 attempts.
|
// MakeWritable recursively makes the named directory writable.
|
||||||
|
func MakeWritable(name string) error {
|
||||||
|
return filepath.WalkDir(name, func(path string, d fs.DirEntry, err error) error {
|
||||||
|
// NB: this is called WalkDir but it works on a single file too
|
||||||
|
if err == nil {
|
||||||
|
info, err := d.Info()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
// Don't try chmod'ing symlinks (will fail with broken symlinks)
|
||||||
|
if info.Mode()&os.ModeSymlink != os.ModeSymlink {
|
||||||
|
// 0200 == u+w, in octal unix permission notation
|
||||||
|
err = os.Chmod(path, info.Mode()|0o200)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// RemoveAll removes the named file or directory with at most 5 attempts.
|
||||||
func RemoveAll(name string) error {
|
func RemoveAll(name string) error {
|
||||||
var err error
|
var err error
|
||||||
|
|
||||||
for i := 0; i < 5; i++ {
|
for i := 0; i < 5; i++ {
|
||||||
|
// Do chmod -R +w to help ensure the removal succeeds.
|
||||||
|
// In particular, in the git-annex case, this handles
|
||||||
|
// https://git-annex.branchable.com/internals/lockdown/ :
|
||||||
|
//
|
||||||
|
// > (The only bad consequence of this is that rm -rf .git
|
||||||
|
// > doesn't work unless you first run chmod -R +w .git)
|
||||||
|
|
||||||
|
err = MakeWritable(name)
|
||||||
|
if err != nil {
|
||||||
|
// try again
|
||||||
|
<-time.After(100 * time.Millisecond)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
err = os.RemoveAll(name)
|
err = os.RemoveAll(name)
|
||||||
if err == nil {
|
if err == nil {
|
||||||
break
|
break
|
||||||
|
|
|
@ -111,6 +111,7 @@ new_migrate.link = Нова миграция
|
||||||
new_org.link = Нова организация
|
new_org.link = Нова организация
|
||||||
copy_generic = Копиране в клипборда
|
copy_generic = Копиране в клипборда
|
||||||
copy_error = Неуспешно копиране
|
copy_error = Неуспешно копиране
|
||||||
|
copy_path = Копиране на пътя
|
||||||
|
|
||||||
[settings]
|
[settings]
|
||||||
ui = Тема
|
ui = Тема
|
||||||
|
@ -159,7 +160,7 @@ comment_type_group_milestone = Етап
|
||||||
manage_emails = Управление на адресите на ел. поща
|
manage_emails = Управление на адресите на ел. поща
|
||||||
permission_read = Четене
|
permission_read = Четене
|
||||||
update_password = Обновяване на паролата
|
update_password = Обновяване на паролата
|
||||||
biography_placeholder = Разкажете ни малко за себе си! (Можете да използвате Markdown)
|
biography_placeholder = Разкажете на другите малко за себе си! (Можете да използвате Маркдаун)
|
||||||
orgs = Организации
|
orgs = Организации
|
||||||
continue = Продължаване
|
continue = Продължаване
|
||||||
blocked_users = Блокирани потребители
|
blocked_users = Блокирани потребители
|
||||||
|
@ -224,7 +225,7 @@ key_signature_gpg_placeholder = Започва с „-----BEGIN PGP SIGNATURE---
|
||||||
key_signature_ssh_placeholder = Започва с „-----BEGIN SSH SIGNATURE-----“
|
key_signature_ssh_placeholder = Започва с „-----BEGIN SSH SIGNATURE-----“
|
||||||
saved_successfully = Настройките бяха запазени успешно.
|
saved_successfully = Настройките бяха запазени успешно.
|
||||||
no_activity = Няма скорошна дейност
|
no_activity = Няма скорошна дейност
|
||||||
theme_desc = Това ще бъде вашата тема по подразбиране в целия сайт.
|
theme_desc = Тази тема ще се използва за уеб интерфейса, когато сте влезли.
|
||||||
keep_activity_private = Скриване на дейността от профилната страница
|
keep_activity_private = Скриване на дейността от профилната страница
|
||||||
lookup_avatar_by_mail = Търсене на профилна снимка по адреса на ел. поща
|
lookup_avatar_by_mail = Търсене на профилна снимка по адреса на ел. поща
|
||||||
password_incorrect = Текущата парола е неправилна.
|
password_incorrect = Текущата парола е неправилна.
|
||||||
|
@ -235,7 +236,7 @@ twofa_disabled = Двуфакторното удостоверяване е из
|
||||||
orgs_none = Не сте участник в никакви организации.
|
orgs_none = Не сте участник в никакви организации.
|
||||||
repos_none = Не притежавате никакви хранилища.
|
repos_none = Не притежавате никакви хранилища.
|
||||||
blocked_users_none = Няма блокирани потребители.
|
blocked_users_none = Няма блокирани потребители.
|
||||||
profile_desc = Контролирайте как вашият профил се показва на другите потребители. Вашият основен адрес на ел. поща ще се използва за известия, възстановяване на паролата и уеб базирани Git операции.
|
profile_desc = Вашият профил
|
||||||
permission_write = Четене и писане
|
permission_write = Четене и писане
|
||||||
twofa_disable = Изключване на двуфакторното удостоверяване
|
twofa_disable = Изключване на двуфакторното удостоверяване
|
||||||
twofa_enroll = Включване на двуфакторно удостоверяване
|
twofa_enroll = Включване на двуфакторно удостоверяване
|
||||||
|
@ -252,6 +253,9 @@ gpg_token_code = echo "%s" | gpg -a --default-key %s --detach-sig
|
||||||
language.title = Език по подразбиране
|
language.title = Език по подразбиране
|
||||||
language.localization_project = Помогнете ни да преведем Forgejo на вашия език! <a href="%s">Научете повече</a>.
|
language.localization_project = Помогнете ни да преведем Forgejo на вашия език! <a href="%s">Научете повече</a>.
|
||||||
language.description = Този език ще бъде запазен във вашия акаунт и ще се използва като език по подразбиране, след като влезете.
|
language.description = Този език ще бъде запазен във вашия акаунт и ще се използва като език по подразбиране, след като влезете.
|
||||||
|
pronouns_custom = Персонализирани
|
||||||
|
visibility.limited_tooltip = Видимо само за влезли потребители
|
||||||
|
pronouns_custom_label = Персонализирани местоимения
|
||||||
|
|
||||||
[packages]
|
[packages]
|
||||||
container.labels.value = Стойност
|
container.labels.value = Стойност
|
||||||
|
@ -280,6 +284,9 @@ dependencies = Зависимости
|
||||||
published_by_in = Публикуван %[1]s от <a href="%[2]s">%[3]s</a> в <a href="%[4]s"><strong>%[5]s</strong></a>
|
published_by_in = Публикуван %[1]s от <a href="%[2]s">%[3]s</a> в <a href="%[4]s"><strong>%[5]s</strong></a>
|
||||||
published_by = Публикуван %[1]s от <a href="%[2]s">%[3]s</a>
|
published_by = Публикуван %[1]s от <a href="%[2]s">%[3]s</a>
|
||||||
generic.download = Изтеглете пакета от командния ред:
|
generic.download = Изтеглете пакета от командния ред:
|
||||||
|
container.details.type = Тип образ
|
||||||
|
alpine.repository = За хранилището
|
||||||
|
container.images.title = Образи
|
||||||
|
|
||||||
[tool]
|
[tool]
|
||||||
hours = %d часа
|
hours = %d часа
|
||||||
|
@ -397,7 +404,7 @@ issues.keyword_search_unavailable = В момента търсенето по к
|
||||||
repo_desc_helper = Въведете кратко описание (опционално)
|
repo_desc_helper = Въведете кратко описание (опционално)
|
||||||
mirror_address = Клониране от URL
|
mirror_address = Клониране от URL
|
||||||
owner_helper = Някои организации може да не се показват в падащото меню поради ограничение за максимален брой хранилища.
|
owner_helper = Някои организации може да не се показват в падащото меню поради ограничение за максимален брой хранилища.
|
||||||
new_repo_helper = Хранилището съдържа всички файлове на проекта, включително хронологията на ревизиите. Вече хоствате хранилище другаде? <a href="%s">Мигрирайте хранилище.</a>
|
new_repo_helper = Хранилището съдържа всички файлове на проекта, включително хронологията на ревизиите. Вече хоствате хранилище другаде? <a href="%s">Мигрирайте хранилище</a>.
|
||||||
repo_name_helper = Добрите имена на хранилища използват кратки, запомнящи се и уникални ключови думи.
|
repo_name_helper = Добрите имена на хранилища използват кратки, запомнящи се и уникални ключови думи.
|
||||||
migrated_from = Мигрирано от <a href="%[1]s">%[2]s</a>
|
migrated_from = Мигрирано от <a href="%[1]s">%[2]s</a>
|
||||||
visibility_description = Само притежателят или участниците в организацията, ако имат права, ще могат да го видят.
|
visibility_description = Само притежателят или участниците в организацията, ако имат права, ще могат да го видят.
|
||||||
|
@ -424,14 +431,14 @@ settings.add_webhook = Добавяне на уеб-кука
|
||||||
template.webhooks = Уеб-куки
|
template.webhooks = Уеб-куки
|
||||||
issues.label_templates.info = Все още няма етикети. Създайте етикет с „Нов етикет“ или използвайте предварително зададен набор от етикети:
|
issues.label_templates.info = Все още няма етикети. Създайте етикет с „Нов етикет“ или използвайте предварително зададен набор от етикети:
|
||||||
labels = Етикети
|
labels = Етикети
|
||||||
license_helper_desc = Лицензът определя какво могат и какво не могат да правят другите с вашия код. Не сте сигурни кой е подходящ за вашия проект? Вижте <a target="_blank" rel="noopener noreferrer" href="%s">Избиране на лиценз.</a>
|
license_helper_desc = Лицензът определя какво могат и какво не могат да правят другите с вашия код. Не сте сигурни кой е подходящ за вашия проект? Вижте <a target="_blank" rel="noopener noreferrer" href="%s">Избиране на лиценз</a>.
|
||||||
issues.choose.blank = По подразбиране
|
issues.choose.blank = По подразбиране
|
||||||
settings.hooks = Уеб-куки
|
settings.hooks = Уеб-куки
|
||||||
issue_labels = Етикети
|
issue_labels = Етикети
|
||||||
issue_labels_helper = Изберете набор от етикети
|
issue_labels_helper = Изберете набор от етикети
|
||||||
readme_helper_desc = Това е мястото, където можете да напишете пълно описание на вашия проект.
|
readme_helper_desc = Това е мястото, където можете да напишете пълно описание на вашия проект.
|
||||||
repo_gitignore_helper = Изберете .gitignore шаблони
|
repo_gitignore_helper = Изберете .gitignore шаблони
|
||||||
auto_init = Да се инициализира хранилище (Добавя .gitignore, License и README)
|
auto_init = Да се инициализира хранилище
|
||||||
template.issue_labels = Етикети за задачите
|
template.issue_labels = Етикети за задачите
|
||||||
migrate_items_labels = Етикети
|
migrate_items_labels = Етикети
|
||||||
issues.label_templates.title = Зареждане на предв. зададен набор от етикети
|
issues.label_templates.title = Зареждане на предв. зададен набор от етикети
|
||||||
|
@ -815,7 +822,7 @@ diff.browse_source = Разглеждане на изходния код
|
||||||
file_view_rendered = Преглед на визуализация
|
file_view_rendered = Преглед на визуализация
|
||||||
issues.lock_with_reason = заключи като <strong>%s</strong> и ограничи обсъждането до сътрудници %s
|
issues.lock_with_reason = заключи като <strong>%s</strong> и ограничи обсъждането до сътрудници %s
|
||||||
milestones.new_subheader = Етапите ви помагат да управлявате задачите и да проследявате напредъка им.
|
milestones.new_subheader = Етапите ви помагат да управлявате задачите и да проследявате напредъка им.
|
||||||
release.edit = редактиране
|
release.edit = Редактиране
|
||||||
activity.published_release_label = Издание
|
activity.published_release_label = Издание
|
||||||
activity.navbar.contributors = Допринесли
|
activity.navbar.contributors = Допринесли
|
||||||
pulls.recently_pushed_new_branches = Изтласкахте в клона <a href="%[3]s"><strong>%[1]s</strong></a> %[2]s
|
pulls.recently_pushed_new_branches = Изтласкахте в клона <a href="%[3]s"><strong>%[1]s</strong></a> %[2]s
|
||||||
|
@ -939,7 +946,7 @@ pulls.approve_count_1 = %d одобрение
|
||||||
pulls.can_auto_merge_desc = Тази заявка за сливане може да бъде слята автоматично.
|
pulls.can_auto_merge_desc = Тази заявка за сливане може да бъде слята автоматично.
|
||||||
pulls.num_conflicting_files_1 = %d конфликтен файл
|
pulls.num_conflicting_files_1 = %d конфликтен файл
|
||||||
activity.git_stats_commit_n = %d подавания
|
activity.git_stats_commit_n = %d подавания
|
||||||
settings.event_issues = Модификация
|
settings.event_issues = Изменение
|
||||||
branch.delete_head = Изтриване
|
branch.delete_head = Изтриване
|
||||||
branch.delete = Изтриване на клона „%s“
|
branch.delete = Изтриване на клона „%s“
|
||||||
branch.delete_html = Изтриване на клона
|
branch.delete_html = Изтриване на клона
|
||||||
|
@ -1113,7 +1120,7 @@ pulls.reject_count_1 = %d поискана промяна
|
||||||
issues.review.show_resolved = Показване на решено
|
issues.review.show_resolved = Показване на решено
|
||||||
issues.review.hide_resolved = Скриване на решено
|
issues.review.hide_resolved = Скриване на решено
|
||||||
issues.review.resolve_conversation = Решаване на обсъждането
|
issues.review.resolve_conversation = Решаване на обсъждането
|
||||||
diff.comment.markdown_info = Поддържа се стилизиране с markdown.
|
diff.comment.markdown_info = Поддържа се стилизиране с Маркдаун.
|
||||||
diff.file_suppressed = Разликите не са показани, защото са твърде много
|
diff.file_suppressed = Разликите не са показани, защото са твърде много
|
||||||
pulls.reject_count_n = %d поискани промени
|
pulls.reject_count_n = %d поискани промени
|
||||||
settings.pulls.default_allow_edits_from_maintainers = Позволяване на редакции от поддържащите по подразбиране
|
settings.pulls.default_allow_edits_from_maintainers = Позволяване на редакции от поддържащите по подразбиране
|
||||||
|
@ -1195,6 +1202,95 @@ issues.all_title = Общо
|
||||||
issues.new.assign_to_me = Възлагане на мен
|
issues.new.assign_to_me = Възлагане на мен
|
||||||
ext_wiki = Външно уики
|
ext_wiki = Външно уики
|
||||||
ext_issues = Външни задачи
|
ext_issues = Външни задачи
|
||||||
|
readme_helper = Изберете шаблон за файл README
|
||||||
|
settings.event_pull_request_review_desc = Заявка за сливане е одобрена, отхвърлена или са добавени рецензионни коментари.
|
||||||
|
settings.event_pull_request_review = Рецензии
|
||||||
|
issues.filter_sort.relevance = Съответствие
|
||||||
|
settings.confirm_wiki_branch_rename = Преименуване на клона на уикито
|
||||||
|
settings.webhook.request = Заявка
|
||||||
|
settings.webhook.response = Отговор
|
||||||
|
settings.event_create = Създаване
|
||||||
|
settings.event_push_only = Събития при изтласкване
|
||||||
|
settings.event_delete = Изтриване
|
||||||
|
settings.event_header_repository = Събития за хранилището
|
||||||
|
settings.event_fork_desc = Хранилище е разклонено.
|
||||||
|
settings.event_fork = Разклоняване
|
||||||
|
settings.event_wiki_desc = Уики страница е създадена, преименувана, редактирана или изтрита.
|
||||||
|
settings.event_issue_milestone = Етапи
|
||||||
|
settings.event_pull_request_milestone_desc = Етап е добавен, премахнат или изменен.
|
||||||
|
settings.event_pull_request_label_desc = Етикети на заявка за сливане са добавени или премахнати.
|
||||||
|
settings.event_pull_request_merge = Сливане на заявка за сливане
|
||||||
|
settings.archive.tagsettings_unavailable = Настройките за маркери не са налични в архивирани хранилища.
|
||||||
|
settings.event_desc = Задействане при:
|
||||||
|
settings.event_create_desc = Клон или маркер е създаден.
|
||||||
|
generate_from = Генериране от
|
||||||
|
settings.event_push_desc = Git изтласкване към хранилище.
|
||||||
|
settings.event_package = Пакет
|
||||||
|
settings.event_pull_request_label = Етикети
|
||||||
|
settings.event_pull_request_assign_desc = Заявка за сливане е възложена или отвъзложена.
|
||||||
|
settings.event_choose = Персонализирани събития…
|
||||||
|
settings.event_header_issue = Събития при задачи
|
||||||
|
fork_no_valid_owners = Това хранилище не може да бъде разклонено, защото няма валидни притежатели.
|
||||||
|
settings.unarchive.text = Разархивирането на хранилище ще възстанови способността му да получава подавания и изтласквания, както и нови задачи и заявки за сливане.
|
||||||
|
settings.archive.branchsettings_unavailable = Настройките за клонове не са налични в архивирани хранилища.
|
||||||
|
settings.event_send_everything = Всички събития
|
||||||
|
settings.event_pull_request_approvals = Одобрения на заявка за сливане
|
||||||
|
release.invalid_external_url = Невалиден външен URL адрес: "%s"
|
||||||
|
settings.event_delete_desc = Клон или маркер е изтрит.
|
||||||
|
settings.discord_icon_url = URL адрес на иконка
|
||||||
|
settings.discord_icon_url.exceeds_max_length = URL адресът на иконката трябва да е по-малък или равен на 2048 знака
|
||||||
|
settings.event_push = Изтласкване
|
||||||
|
settings.event_repository_desc = Хранилище е създадено или изтрито.
|
||||||
|
settings.slack_icon_url = URL адрес на иконка
|
||||||
|
settings.event_issue_comment = Коментари
|
||||||
|
settings.event_pull_request_desc = Заявка за сливане е отворена, затворена, отворена наново или редактирана.
|
||||||
|
settings.event_issue_comment_desc = Коментар на задача е създаден, редактиран или изтрит.
|
||||||
|
settings.event_release_desc = Издание е публикувано, обновено или изтрито в хранилище.
|
||||||
|
settings.event_pull_request_review_request = Искания за рецензия
|
||||||
|
settings.event_pull_request_enforcement = Принудително изпълнение
|
||||||
|
diff.git-notes.remove-header = Премахване на бележката
|
||||||
|
diff.git-notes.add = Добавяне на бележка
|
||||||
|
settings.event_pull_request_assign = Възлагане
|
||||||
|
new_advanced_expand = Щракнете за разгъване
|
||||||
|
new_advanced = Разширени настройки
|
||||||
|
new_from_template = Използване на шаблон
|
||||||
|
new_from_template_description = Можете да изберете съществуващо шаблонно хранилище в тази инстанция и да приложите неговите настройки.
|
||||||
|
settings.event_pull_request_comment = Коментари
|
||||||
|
repo_gitignore_helper_desc = Изберете кои файлове да не се проследяват от списък с шаблони за обичайните езици. Типичните артефакти, генерирани от инструментите за изграждане, са включени в .gitignore по подразбиране.
|
||||||
|
object_format_helper = Формат на обектите на хранилището. Не може да се променя по-късно. SHA1 е най-съвместим.
|
||||||
|
issues.num_reviews_one = %d рецензия
|
||||||
|
settings.event_pull_request = Изменение
|
||||||
|
settings.event_issue_label = Етикети
|
||||||
|
settings.event_issue_assign = Възлагане
|
||||||
|
settings.event_header_pull_request = Събития при заявка за сливане
|
||||||
|
settings.event_issue_milestone_desc = Етап е добавен, премахнат или изменен.
|
||||||
|
settings.event_issue_label_desc = Етикети на задача са добавени или премахнати.
|
||||||
|
settings.event_issues_desc = Задача е отворена, затворена, отворена наново или редактирана.
|
||||||
|
settings.webhook.headers = Заглавки
|
||||||
|
settings.webhook.body = Тяло
|
||||||
|
settings.event_pull_request_sync = Синхронизирано
|
||||||
|
settings.event_pull_request_sync_desc = Клонът е обновен автоматично с целевия клон.
|
||||||
|
settings.event_package_desc = Пакет е създаден или изтрит в хранилище.
|
||||||
|
template_description = Шаблонните хранилища позволяват на потребителите да генерират нови хранилища със същата структура на директориите, файлове и опционални настройки.
|
||||||
|
auto_init_description = Поставете началото на Git историята с README и по избор добавете файлове License и .gitignore.
|
||||||
|
pulls.sign_in_require = <a href="%s">Влезте</a>, за да създадете нова заявка за сливане.
|
||||||
|
issues.num_reviews_few = %d рецензии
|
||||||
|
diff.git-notes.remove-body = Тази бележка ще бъде премахната.
|
||||||
|
issues.review.add_remove_review_requests = поиска рецензии от %[1]s и премахна заявки за рецензия за %[2]s %[3]s
|
||||||
|
form.name_pattern_not_allowed = Шаблонът "%s" не е разрешен в име на хранилище.
|
||||||
|
settings.wiki_rename_branch_main_notices_2 = Това ще преименува перманентно вътрешния клон на уикито на хранилището %s. Съществуващите изтегляния ще трябва да бъдат обновени.
|
||||||
|
settings.event_pull_request_milestone = Етапи
|
||||||
|
settings.event_pull_request_comment_desc = Заявка за сливане е създадена, редактирана или изтрита.
|
||||||
|
settings.event_issue_assign_desc = Задача е възложена или отвъзложена.
|
||||||
|
settings.event_pull_request_review_request_desc = Рецензия на заявка за сливане е поискана или е премахната.
|
||||||
|
generate_repo = Генериране на хранилище
|
||||||
|
default_branch_helper = Стандартният клон е основния клон за заявки за сливане и подавания на код.
|
||||||
|
|
||||||
|
issues.reaction.add = Добавяне на реакция
|
||||||
|
issues.reaction.alt_few = %[1]s реагира с %[2]s.
|
||||||
|
issues.reaction.alt_many = %[1]s и още %[2]d реагираха с %[3]s.
|
||||||
|
issues.reaction.alt_remove = Премахване на реакция %[1]s от коментара.
|
||||||
|
issues.reaction.alt_add = Добавяне на реакция %[1]s към коментара.
|
||||||
|
|
||||||
[modal]
|
[modal]
|
||||||
confirm = Потвърждаване
|
confirm = Потвърждаване
|
||||||
|
@ -1218,6 +1314,12 @@ buttons.italic.tooltip = Добавяне на курсив текст
|
||||||
buttons.link.tooltip = Добавяне на връзка
|
buttons.link.tooltip = Добавяне на връзка
|
||||||
buttons.disable_monospace_font = Изключване на равноширокия шрифт
|
buttons.disable_monospace_font = Изключване на равноширокия шрифт
|
||||||
buttons.ref.tooltip = Препратка към задача или заявка за сливане
|
buttons.ref.tooltip = Препратка към задача или заявка за сливане
|
||||||
|
table_modal.label.columns = Колони
|
||||||
|
table_modal.label.rows = Редове
|
||||||
|
table_modal.placeholder.content = Съдържание
|
||||||
|
table_modal.placeholder.header = Заглавка
|
||||||
|
buttons.new_table.tooltip = Добавяне на таблица
|
||||||
|
table_modal.header = Добавяне на таблица
|
||||||
|
|
||||||
[org]
|
[org]
|
||||||
teams.write_access = Писане
|
teams.write_access = Писане
|
||||||
|
@ -1249,7 +1351,7 @@ settings.visibility.public = Публична
|
||||||
settings.visibility.limited_shortname = Ограничена
|
settings.visibility.limited_shortname = Ограничена
|
||||||
settings.visibility.private_shortname = Частна
|
settings.visibility.private_shortname = Частна
|
||||||
settings.permission = Разрешения
|
settings.permission = Разрешения
|
||||||
settings.visibility.limited = Ограничена (видима само за удостоверени потребители)
|
settings.visibility.limited = Ограничена (видима само за влезли потребители)
|
||||||
settings.visibility.private = Частна (видима само за участниците в организацията)
|
settings.visibility.private = Частна (видима само за участниците в организацията)
|
||||||
org_name_helper = Имената на организациите е добре да са кратки и запомнящи се.
|
org_name_helper = Имената на организациите е добре да са кратки и запомнящи се.
|
||||||
org_full_name_holder = Пълно име на организацията
|
org_full_name_holder = Пълно име на организацията
|
||||||
|
@ -1330,6 +1432,9 @@ err_empty_admin_email = Администраторският адрес на е
|
||||||
password_algorithm = Алгоритъм за хеш. на паролите
|
password_algorithm = Алгоритъм за хеш. на паролите
|
||||||
default_keep_email_private = Скриване на адресите на ел. поща по подразбиране
|
default_keep_email_private = Скриване на адресите на ел. поща по подразбиране
|
||||||
invalid_password_algorithm = Невалиден алгоритъм за хеш. на паролите
|
invalid_password_algorithm = Невалиден алгоритъм за хеш. на паролите
|
||||||
|
err_admin_name_is_reserved = Потребителското име на администратора е невалидно, потребителското име е резервирано
|
||||||
|
err_admin_name_pattern_not_allowed = Потребителското име на администратора е невалидно, потребителското име съответства с резервиран шаблон
|
||||||
|
err_admin_name_is_invalid = Потребителското име на администратора е невалидно
|
||||||
|
|
||||||
[filter]
|
[filter]
|
||||||
string.asc = А - Я
|
string.asc = А - Я
|
||||||
|
@ -1361,6 +1466,14 @@ activate_account.text_1 = Здравейте, <b>%[1]s</b>, благодарим
|
||||||
activate_email.text = Моля, щракнете върху следната връзка, за да потвърдите своя адрес на ел. поща в рамките на <b>%s</b>:
|
activate_email.text = Моля, щракнете върху следната връзка, за да потвърдите своя адрес на ел. поща в рамките на <b>%s</b>:
|
||||||
activate_email = Потвърдете своя адрес на ел. поща
|
activate_email = Потвърдете своя адрес на ел. поща
|
||||||
activate_account.text_2 = Моля, щракнете върху следната връзка, за да активирате своя акаунт в рамките на <b>%s</b>:
|
activate_account.text_2 = Моля, щракнете върху следната връзка, за да активирате своя акаунт в рамките на <b>%s</b>:
|
||||||
|
issue_assigned.issue = @%[1]s ви възложи задача %[2]s в хранилище %[3]s.
|
||||||
|
issue.action.push_n = <b>@%[1]s</b> изтласка %[3]d подавания към %[2]s
|
||||||
|
issue.action.push_1 = <b>@%[1]s</b> изтласка %[3]d подаване към %[2]s
|
||||||
|
repo.transfer.subject_to_you = %s иска да прехвърли хранилище "%s" към вас
|
||||||
|
issue.action.merge = <b>@%[1]s</b> сля #%[2]d в %[3]s.
|
||||||
|
issue_assigned.pull = @%[1]s ви възложи заявката за сливане %[2]s в хранилище %[3]s.
|
||||||
|
issue.action.ready_for_review = <b>@%[1]s</b> отбеляза тази заявка за сливане като готова за рецензиране.
|
||||||
|
repo.transfer.subject_to = %s иска да прехвърли хранилище "%s" към %s
|
||||||
|
|
||||||
[user]
|
[user]
|
||||||
joined_on = Присъединени на %s
|
joined_on = Присъединени на %s
|
||||||
|
@ -1392,6 +1505,9 @@ followers.title.one = Последовател
|
||||||
following.title.one = Следван
|
following.title.one = Следван
|
||||||
following.title.few = Следвани
|
following.title.few = Следвани
|
||||||
public_activity.visibility_hint.self_public = Вашата дейност е видима за всички, с изключение на взаимодействията в частни пространства. <a href="%s">Конфигуриране</a>.
|
public_activity.visibility_hint.self_public = Вашата дейност е видима за всички, с изключение на взаимодействията в частни пространства. <a href="%s">Конфигуриране</a>.
|
||||||
|
form.name_pattern_not_allowed = Шаблонът "%s" не е разрешен в потребителско име.
|
||||||
|
form.name_reserved = Потребителското име "%s" е резервирано.
|
||||||
|
public_activity.visibility_hint.self_private_profile = Вашата дейност е видима само за вас и администраторите на инстанцията, тъй като вашият профил е частен. <a href="%s">Конфигуриране</a>.
|
||||||
|
|
||||||
[home]
|
[home]
|
||||||
filter = Други филтри
|
filter = Други филтри
|
||||||
|
@ -1661,6 +1777,7 @@ variables.creation = Добавяне на променлива
|
||||||
variables.deletion.failed = Неуспешно премахване на променлива.
|
variables.deletion.failed = Неуспешно премахване на променлива.
|
||||||
runners.task_list.repository = Хранилище
|
runners.task_list.repository = Хранилище
|
||||||
runners.description = Описание
|
runners.description = Описание
|
||||||
|
runs.no_workflows.help_no_write_access = За да научите повече за Forgejo Actions, вижте <a target="_blank" rel="noopener noreferrer" href="%s">документацията</a>.
|
||||||
|
|
||||||
[heatmap]
|
[heatmap]
|
||||||
less = По-малко
|
less = По-малко
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
[common]
|
[common]
|
||||||
home = inici
|
home = Inici
|
||||||
dashboard = Panell de control
|
dashboard = Panell de control
|
||||||
explore = Explorar
|
explore = Explorar
|
||||||
help = Ajuda
|
help = Ajuda
|
||||||
logo = Logo
|
logo = Logo
|
||||||
sign_in = Entrar
|
sign_in = Iniciar sessió
|
||||||
sign_in_with_provider = Entra amb %s
|
sign_in_with_provider = Entra amb %s
|
||||||
sign_in_or = o
|
sign_in_or = o
|
||||||
sign_out = Sortir
|
sign_out = Sortir
|
||||||
|
@ -15,7 +15,7 @@ page = Pàgina
|
||||||
template = Plantilla
|
template = Plantilla
|
||||||
language = Idioma
|
language = Idioma
|
||||||
notifications = Notificacions
|
notifications = Notificacions
|
||||||
active_stopwatch = Registre de Temps Actiu
|
active_stopwatch = Registre de temps actiu
|
||||||
create_new = Crear…
|
create_new = Crear…
|
||||||
user_profile_and_more = Perfil i Configuració…
|
user_profile_and_more = Perfil i Configuració…
|
||||||
signed_in_as = Entrat com
|
signed_in_as = Entrat com
|
||||||
|
@ -140,6 +140,14 @@ filter.not_archived = No arxivats
|
||||||
filter.not_fork = No és fork
|
filter.not_fork = No és fork
|
||||||
filter.is_fork = Són forks
|
filter.is_fork = Són forks
|
||||||
|
|
||||||
|
new_repo.title = Nou repositori
|
||||||
|
new_migrate.title = Nova migració
|
||||||
|
new_org.title = Nova organització
|
||||||
|
new_repo.link = Nou repositori
|
||||||
|
new_migrate.link = Nova migració
|
||||||
|
new_org.link = Nova organització
|
||||||
|
copy_path = Copiar ruta
|
||||||
|
|
||||||
[search]
|
[search]
|
||||||
milestone_kind = Cerca fites...
|
milestone_kind = Cerca fites...
|
||||||
fuzzy = Difusa
|
fuzzy = Difusa
|
||||||
|
@ -167,6 +175,9 @@ exact = Exacte
|
||||||
exact_tooltip = Inclou només resultats que són exactament el terme de cerca
|
exact_tooltip = Inclou només resultats que són exactament el terme de cerca
|
||||||
issue_kind = Cerca problemes...
|
issue_kind = Cerca problemes...
|
||||||
|
|
||||||
|
regexp = Expressió regular
|
||||||
|
regexp_tooltip = Interpreta el terme de cerca com una expressió regular
|
||||||
|
|
||||||
[heatmap]
|
[heatmap]
|
||||||
number_of_contributions_in_the_last_12_months = %s contribucions en els últims 12 mesos
|
number_of_contributions_in_the_last_12_months = %s contribucions en els últims 12 mesos
|
||||||
contributions_zero = Cap contribució
|
contributions_zero = Cap contribució
|
||||||
|
@ -337,6 +348,72 @@ manual_activation_only = Contacti amb l'administrador de lloc per a completar l'
|
||||||
remember_me = Recordar aquest dispositiu
|
remember_me = Recordar aquest dispositiu
|
||||||
create_new_account = Registrar compte
|
create_new_account = Registrar compte
|
||||||
|
|
||||||
|
forgot_password_title = Contrasenya oblidada
|
||||||
|
forgot_password = Contrasenya oblidada?
|
||||||
|
hint_login = Ja tens compte? <a href="%s">Entra ara!</a>
|
||||||
|
hint_register = Necessites un compte? <a href="%s">Registra't ara.</a>
|
||||||
|
sign_up_button = Registra't ara.
|
||||||
|
sign_up_successful = S'ha creat el compte correctament. Benvingut!
|
||||||
|
confirmation_mail_sent_prompt = S'ha enviat un correu electrònic de confirmació a <b>%s</b>. Per tal de completar el registre, reviseu la safata d'entrada i seguiu l'enllaç que se us ha enviat en els següents %s. Si l'adreça de correu és incorrecta, podreu accedir al compte i demanar d'enviar un altre correu de confirmació a una altra adreça.
|
||||||
|
must_change_password = Actualitza la contrasenya
|
||||||
|
allow_password_change = Requereix a l'usuari canviar la contrasenya (recomanat)
|
||||||
|
reset_password_mail_sent_prompt = S'ha enviat un correu electrònic de confirmació a <b>%s</b>. Per tal de completar el procés de recuperació del compte, reviseu la safata d'entrada i seguiu l'enllaç que se us ha enviat en els següents %s.
|
||||||
|
active_your_account = Activeu el compte
|
||||||
|
account_activated = El compte s'ha activat
|
||||||
|
prohibit_login = El compte està en suspensió
|
||||||
|
prohibit_login_desc = S'ha suspès la interacció del vostre compte amb la instància. Contacteu amb l'administrador per a recuperar-ne l'accés.
|
||||||
|
resent_limit_prompt = Fa poc que heu sol·licitat un correu electrònic d'activació. Si us plau, espereu 3 minuts i torneu a intentar-ho.
|
||||||
|
has_unconfirmed_mail = Hola %s, la vostra adreça de correu no s'ha confirmat (<b>%s</b>). Si no heu rebut un correu de confirmació o necessiteu que l'enviem de nou, feu clic al botó següent.
|
||||||
|
change_unconfirmed_email_summary = Canvieu l'adreça de correu on s'envia el correu d'activació.
|
||||||
|
change_unconfirmed_email = Si heu proporcionat una direcció de correu incorrecta durant el registre, la podeu canviar aquí baix i se us enviarà una confirmació a l'adreça nova.
|
||||||
|
change_unconfirmed_email_error = No s'ha pogut canviar l'adreça de correu: %v
|
||||||
|
resend_mail = Feu clic aquí per tornar a enviar el correu electrònic d'activació
|
||||||
|
send_reset_mail = Enviar correu electrònic de recuperació del compte
|
||||||
|
reset_password = Recuperació del compte
|
||||||
|
invalid_code = El codi de confirmació no és vàlid o ha caducat.
|
||||||
|
invalid_code_forgot_password = El codi de confirmació és invàlid o ha caducat. Feu click <a href="%s">aquí</a> per a iniciar una sessió nova.
|
||||||
|
invalid_password = La contrasenya no coincideix amb la que es va utilitzar per a crear el compte.
|
||||||
|
reset_password_helper = Recuperar compte
|
||||||
|
reset_password_wrong_user = Heu iniciat sessió com a %s, però l'enllaç de recuperació pertany a %s
|
||||||
|
password_too_short = La longitud de la contrasenya no pot ser inferior a %d caràcters.
|
||||||
|
non_local_account = Els usuaris no locals no poden actualitzar la seva contrasenya mitjançant l'interfície web de Forgejo
|
||||||
|
verify = Verificar
|
||||||
|
unauthorized_credentials = Les credencials són incorrectes o han caducat. Torneu a executar l'ordre o visiteu %s per a més informació
|
||||||
|
scratch_code = Codi de recuperació
|
||||||
|
use_scratch_code = Utilitzar un codi de recuperació
|
||||||
|
use_onetime_code = Utilitzar un codi d'un sol ús
|
||||||
|
twofa_scratch_used = Ja heu utilitzat el vostre codi de recuperació. Se us ha redirigit a la pàgina de configuració de l'autenticació de doble factor per tal d'eliminar el dispositiu o generar un codi de recuperació nou.
|
||||||
|
twofa_passcode_incorrect = El codi d'accés és incorrecte. Si heu perdut el dispositiu, useu el codi de recuperació per a entrar.
|
||||||
|
twofa_scratch_token_incorrect = El codi de recuperació és incorrecte.
|
||||||
|
login_userpass = Entra
|
||||||
|
oauth_signup_tab = Registrar compte nou
|
||||||
|
oauth_signup_title = Completar compte nou
|
||||||
|
oauth_signup_submit = Completar compte
|
||||||
|
oauth_signin_tab = Vincular a un compte existent
|
||||||
|
oauth_signin_title = Entreu per a autoritzar el compte vinculat
|
||||||
|
oauth_signin_submit = Vincular compte
|
||||||
|
oauth.signin.error = Hi ha hagut un error processant la sol·licitud d'autorització. Si persisteix, poseu-vos en contacte amb l'administrador del lloc.
|
||||||
|
oauth.signin.error.access_denied = S'ha denegat la sol·licitud d'autorització.
|
||||||
|
oauth.signin.error.temporarily_unavailable = Ha fallat l'autorització perquè el servidor d'autenticació no està disponible temporalment. Intenteu-ho de nou més tard.
|
||||||
|
openid_connect_submit = Connectar
|
||||||
|
openid_connect_title = Entreu a un compte existent
|
||||||
|
openid_register_title = Crear un compte nou
|
||||||
|
openid_signin_desc = Introduïu la URI OpenID. Per exemple: alice.openid.example.org o https://openid.example.org/alice.
|
||||||
|
disable_forgot_password_mail = La recuperació de comptes està deshabilitada perquè no hi ha configuració de correu electrònic. Si us plau, contacteu amb l'administrador del lloc.
|
||||||
|
disable_forgot_password_mail_admin = La recuperació de comptes només està disponible quan s'ha configurat el correu electrònic. Si us plau, configureu el correu electrònic per a habilitar la recuperació de comptes.
|
||||||
|
email_domain_blacklisted = No podeu registrar-vos amb el correu electrònic.
|
||||||
|
authorize_application = Autoritzar aplicació
|
||||||
|
authorize_redirect_notice = Sereu redirigits a %s si autoritzeu aquesta aplicació.
|
||||||
|
authorize_application_created_by = Aquesta aplicació l'ha creat %s.
|
||||||
|
authorize_application_description = Si li concediu l'accés podrà accedir i escriure a tota la informació del vostre compte, inclòs repositoris privats i organitzacions.
|
||||||
|
authorize_title = Autoritzeu "%s" a accedir al vostre compte?
|
||||||
|
authorization_failed = Ha fallat l'autorització
|
||||||
|
authorization_failed_desc = Ha fallat l'autorització perquè s'ha detectat una sol·licitud invàlida. Si us plau, contacteu amb el responsable de l'aplicació que heu intentat autoritzar.
|
||||||
|
password_pwned = La contrasenya que heu introduït es troba en una <a target="_blank" rel="noopener noreferrer" href="%s">llista de contrasenyes robades</a> exposades en dades filtrades públicament. Si us plau, intenteu-ho de nou amb una contrasenya diferent i considereu modificar aquesta contrasenya a tot arreu on la utilitzeu.
|
||||||
|
password_pwned_err = No s'ha pogut completar la sol·licitud a HaveIBeenPwned
|
||||||
|
last_admin = No podeu eliminar l'últim usuari administrador. Com a mínim n'hi ha d'haver un.
|
||||||
|
back_to_sign_in = Torneu a entrar
|
||||||
|
|
||||||
[editor]
|
[editor]
|
||||||
buttons.indent.tooltip = Aniua els elements un nivell
|
buttons.indent.tooltip = Aniua els elements un nivell
|
||||||
buttons.unindent.tooltip = Desaniuna els elements un nivell
|
buttons.unindent.tooltip = Desaniuna els elements un nivell
|
||||||
|
@ -355,6 +432,13 @@ buttons.list.ordered.tooltip = Afegir una llista enumerada
|
||||||
buttons.list.task.tooltip = Afegir una llista de tasques
|
buttons.list.task.tooltip = Afegir una llista de tasques
|
||||||
buttons.mention.tooltip = Mencionar un usuari o equip
|
buttons.mention.tooltip = Mencionar un usuari o equip
|
||||||
|
|
||||||
|
buttons.new_table.tooltip = Afegir taula
|
||||||
|
table_modal.header = Afegir taula
|
||||||
|
table_modal.placeholder.header = Capçalera
|
||||||
|
table_modal.placeholder.content = Contingut
|
||||||
|
table_modal.label.rows = Files
|
||||||
|
table_modal.label.columns = Columnes
|
||||||
|
|
||||||
[home]
|
[home]
|
||||||
my_orgs = Organitzacions
|
my_orgs = Organitzacions
|
||||||
show_more_repos = Mostra més repositoris…
|
show_more_repos = Mostra més repositoris…
|
||||||
|
@ -381,4 +465,15 @@ filter = Altres filtres
|
||||||
footer.software = Sobre aquest software
|
footer.software = Sobre aquest software
|
||||||
footer.links = Enllaços
|
footer.links = Enllaços
|
||||||
navbar = Barra de navegació
|
navbar = Barra de navegació
|
||||||
footer = Peu de pàgina
|
footer = Peu de pàgina
|
||||||
|
|
||||||
|
[mail]
|
||||||
|
view_it_on = Veure a %s
|
||||||
|
reply = o responeu directament a aquest correu
|
||||||
|
link_not_working_do_paste = No funciona l'enllaç? Proveu a copiar-lo i enganxar-lo al navegador web.
|
||||||
|
hi_user_x = Hola <b>%s</b>,
|
||||||
|
activate_account = Si us plau, activeu el compte
|
||||||
|
activate_account.text_1 = Hola <b>%[1]s</b>, gràcies per registrar-te a %[2]s!
|
||||||
|
admin.new_user.user_info = Informació d'usuari
|
||||||
|
admin.new_user.text = Si us plau, <a href="%s">cliqueu aui</a> per administrar aquest usuari des del panell d'administració.
|
||||||
|
register_notify = Benvinguts a %s
|
|
@ -4,7 +4,7 @@ dashboard=Přehled
|
||||||
explore=Procházet
|
explore=Procházet
|
||||||
help=Nápověda
|
help=Nápověda
|
||||||
logo=Logo
|
logo=Logo
|
||||||
sign_in=Přihlášení
|
sign_in=Přihlásit se
|
||||||
sign_in_with_provider = Přihlásit se přes %s
|
sign_in_with_provider = Přihlásit se přes %s
|
||||||
sign_in_or=nebo
|
sign_in_or=nebo
|
||||||
sign_out=Odhlásit se
|
sign_out=Odhlásit se
|
||||||
|
@ -517,8 +517,8 @@ issue_assigned.issue=@%[1]s vás přiřadil/a k problému %[2]s v repozitáři %
|
||||||
|
|
||||||
issue.x_mentioned_you=<b>@%s</b> vás zmínil/a:
|
issue.x_mentioned_you=<b>@%s</b> vás zmínil/a:
|
||||||
issue.action.force_push=<b>%[1]s</b> vynutil/a nahrání <b>%[2]s</b> z %[3]s do %[4]s.
|
issue.action.force_push=<b>%[1]s</b> vynutil/a nahrání <b>%[2]s</b> z %[3]s do %[4]s.
|
||||||
issue.action.push_1=<b>@%[1]s</b> nahrál/a %[3]d commit do %[2]s
|
issue.action.push_1=Uživatel <b>@%[1]s</b> nahrál %[3]d revizi do %[2]s
|
||||||
issue.action.push_n=<b>@%[1]s</b> nahrál/a %[3]d commity do %[2]s
|
issue.action.push_n=Uživatel <b>@%[1]s</b> nahrál %[3]d revizí do %[2]s
|
||||||
issue.action.close=<b>@%[1]s</b> uzavřel/a #%[2]d.
|
issue.action.close=<b>@%[1]s</b> uzavřel/a #%[2]d.
|
||||||
issue.action.reopen=<b>@%[1]s</b> znovu otevřel/a #%[2]d.
|
issue.action.reopen=<b>@%[1]s</b> znovu otevřel/a #%[2]d.
|
||||||
issue.action.merge=<b>@%[1]s</b> sloučil/a #%[2]d do %[3]s.
|
issue.action.merge=<b>@%[1]s</b> sloučil/a #%[2]d do %[3]s.
|
||||||
|
@ -590,9 +590,9 @@ AuthName=Název ověření
|
||||||
AdminEmail=E-mailová adresa správce
|
AdminEmail=E-mailová adresa správce
|
||||||
|
|
||||||
NewBranchName=Název nové větve
|
NewBranchName=Název nové větve
|
||||||
CommitSummary=Shrnutí commity
|
CommitSummary=Shrnutí revize
|
||||||
CommitMessage=Zpráva commitu
|
CommitMessage=Zpráva revize
|
||||||
CommitChoice=Výběr commitu
|
CommitChoice=Výběr revize
|
||||||
TreeName=Cesta k souboru
|
TreeName=Cesta k souboru
|
||||||
Content=Obsah
|
Content=Obsah
|
||||||
|
|
||||||
|
@ -681,6 +681,8 @@ To = Název větve
|
||||||
Biography = Životopis
|
Biography = Životopis
|
||||||
AccessToken = Přístupový token
|
AccessToken = Přístupový token
|
||||||
|
|
||||||
|
email_domain_is_not_allowed = Doména uživatelské e-mailové adresy <b>%s</b> je v rozporu se seznamem EMAIL_DOMAIN_ALLOWLIST nebo EMAIL_DOMAIN_BLOCKLIST. Ujistěte se, že je vaše adresa správně nastavena.
|
||||||
|
|
||||||
[user]
|
[user]
|
||||||
change_avatar=Změnit váš avatar…
|
change_avatar=Změnit váš avatar…
|
||||||
joined_on=Přidal/a se %s
|
joined_on=Přidal/a se %s
|
||||||
|
@ -747,7 +749,7 @@ webauthn=Dvoufázové ověření (bezpečnostní klíče)
|
||||||
public_profile=Veřejný profil
|
public_profile=Veřejný profil
|
||||||
biography_placeholder=Řekněte ostatním něco o sobě! (Je podporován Markdown)
|
biography_placeholder=Řekněte ostatním něco o sobě! (Je podporován Markdown)
|
||||||
location_placeholder=Sdílejte svou přibližnou polohu s ostatními
|
location_placeholder=Sdílejte svou přibližnou polohu s ostatními
|
||||||
profile_desc=Nastavte, jak bude váš profil zobrazen ostatním uživatelům. Vaše hlavní e-mailová adresa bude použita pro oznámení, obnovení hesla a operace Git.
|
profile_desc=O vás
|
||||||
password_username_disabled=Externí uživatelé nemohou měnit svoje uživatelské jméno. Kontaktujte prosím svého administrátora pro více detailů.
|
password_username_disabled=Externí uživatelé nemohou měnit svoje uživatelské jméno. Kontaktujte prosím svého administrátora pro více detailů.
|
||||||
full_name=Celé jméno
|
full_name=Celé jméno
|
||||||
website=Web
|
website=Web
|
||||||
|
@ -767,7 +769,7 @@ language=Jazyk
|
||||||
ui=Motiv vzhledu
|
ui=Motiv vzhledu
|
||||||
hidden_comment_types=Skryté typy komentářů
|
hidden_comment_types=Skryté typy komentářů
|
||||||
hidden_comment_types_description=Zde zkontrolované typy komentářů nebudou zobrazeny na stránkách problémů. Zaškrtnutí „Štítek“ například odstraní všechny komentáře „<user> přidal/odstranil <label>“.
|
hidden_comment_types_description=Zde zkontrolované typy komentářů nebudou zobrazeny na stránkách problémů. Zaškrtnutí „Štítek“ například odstraní všechny komentáře „<user> přidal/odstranil <label>“.
|
||||||
hidden_comment_types.ref_tooltip=Komentáře, kde byl tento problém odkázán u jiného problému/commitu/…
|
hidden_comment_types.ref_tooltip=Komentáře, kde byl tento problém odkázán z jiného problému/revize/…
|
||||||
hidden_comment_types.issue_ref_tooltip=Komentáře, kde uživatel změní větev/značku spojenou s problémem
|
hidden_comment_types.issue_ref_tooltip=Komentáře, kde uživatel změní větev/značku spojenou s problémem
|
||||||
comment_type_group_reference=Reference
|
comment_type_group_reference=Reference
|
||||||
comment_type_group_label=Štítek
|
comment_type_group_label=Štítek
|
||||||
|
@ -780,7 +782,7 @@ comment_type_group_deadline=Uzávěrka
|
||||||
comment_type_group_dependency=Závislost
|
comment_type_group_dependency=Závislost
|
||||||
comment_type_group_lock=Stav zámku
|
comment_type_group_lock=Stav zámku
|
||||||
comment_type_group_review_request=Žádost o posouzení
|
comment_type_group_review_request=Žádost o posouzení
|
||||||
comment_type_group_pull_request_push=Přidané commity
|
comment_type_group_pull_request_push=Přidané revize
|
||||||
comment_type_group_project=Projekt
|
comment_type_group_project=Projekt
|
||||||
comment_type_group_issue_ref=Referenční číslo problému
|
comment_type_group_issue_ref=Referenční číslo problému
|
||||||
saved_successfully=Vaše nastavení bylo úspěšně uloženo.
|
saved_successfully=Vaše nastavení bylo úspěšně uloženo.
|
||||||
|
@ -822,7 +824,7 @@ activations_pending=Čekající aktivace
|
||||||
can_not_add_email_activations_pending=Existuje čekající aktivace, zkuste to znovu za pár minut, pokud chcete přidat nový e-mail.
|
can_not_add_email_activations_pending=Existuje čekající aktivace, zkuste to znovu za pár minut, pokud chcete přidat nový e-mail.
|
||||||
delete_email=Smazat
|
delete_email=Smazat
|
||||||
email_deletion=Odstranit e-mailovou adresu
|
email_deletion=Odstranit e-mailovou adresu
|
||||||
email_deletion_desc=E-mailová adresa a přidružené informace budou z vašeho účtu odstraněny. Commity Gitu s touto e-mailovou adresou zůstanou nezměněny. Pokračovat?
|
email_deletion_desc=E-mailová adresa a přidružené informace budou z vašeho účtu odstraněny. Revize Gitu s touto e-mailovou adresou zůstanou nezměněny. Pokračovat?
|
||||||
email_deletion_success=E-mailová adresa byla odstraněna.
|
email_deletion_success=E-mailová adresa byla odstraněna.
|
||||||
theme_update_success=Váš motiv vzhledu byl aktualizován.
|
theme_update_success=Váš motiv vzhledu byl aktualizován.
|
||||||
theme_update_error=Vybraný motiv vzhledu neexistuje.
|
theme_update_error=Vybraný motiv vzhledu neexistuje.
|
||||||
|
@ -838,16 +840,16 @@ add_email_success=Nová e-mailová adresa byla přidána.
|
||||||
email_preference_set_success=Nastavení e-mailu bylo úspěšně nastaveno.
|
email_preference_set_success=Nastavení e-mailu bylo úspěšně nastaveno.
|
||||||
add_openid_success=Nová OpenID adresa byla přidána.
|
add_openid_success=Nová OpenID adresa byla přidána.
|
||||||
keep_email_private=Skrýt e-mailovou adresu
|
keep_email_private=Skrýt e-mailovou adresu
|
||||||
keep_email_private_popup=Tímto skryjete svou e-mailovou adresu ze svého profilu. Nebude již výchozí adresou pro commity provedené skrze webové rozhraní, jako nahrávání a úpravy souborů, a nebude použita pro slučovací commity. Místo toho můžete použít speciální adresu %s pro spojení commitů s vaším účtem. Změna této funkce nebude mít vliv na stávající commity.
|
keep_email_private_popup=Vaše e-mailová adresa nebude zobrazena na vašem profilu a nebude výchozí adresou pro revize provedené skrze webové rozhraní, jako nahrávání, úpravy a slučování. Namísto toho lze použít speciální adresu %s pro propojení revizí s vaším účtem. Tato možnost neovlivní existující revize.
|
||||||
openid_desc=OpenID vám umožní delegovat ověřování na externího poskytovatele.
|
openid_desc=OpenID vám umožní delegovat ověřování na externího poskytovatele.
|
||||||
|
|
||||||
manage_ssh_keys=Správa klíčů SSH
|
manage_ssh_keys=Správa klíčů SSH
|
||||||
manage_ssh_principals=Spravovat SSH Principal certifikáty
|
manage_ssh_principals=Spravovat SSH Principal certifikáty
|
||||||
manage_gpg_keys=Správa klíčů GPG
|
manage_gpg_keys=Správa klíčů GPG
|
||||||
add_key=Přidat klíč
|
add_key=Přidat klíč
|
||||||
ssh_desc=Tyto veřejné klíče SSH jsou propojeny s vaším účtem. Odpovídající soukromé klíče umožní plný přístup k vašim repozitářům. Klíče SSH, které byly ověřeny, mohou být použity pro ověření Git commitů podepsaných přes SSH.
|
ssh_desc=Tyto veřejné klíče SSH jsou propojeny s vaším účtem. Odpovídající soukromé klíče umožní plný přístup k vašim repozitářům. Klíče SSH, které byly ověřeny, mohou být použity pro ověření Git revizí podepsaných přes SSH.
|
||||||
principal_desc=Tyto SSH Principal certifikáty jsou přidruženy k vašemu účtu a umožňují plný přístup do vašich repozitářů.
|
principal_desc=Tyto SSH Principal certifikáty jsou přidruženy k vašemu účtu a umožňují plný přístup do vašich repozitářů.
|
||||||
gpg_desc=Tyto veřejné klíče GPG jsou propojeny s vaším účtem a používají se k ověření vašich commitů. Uložte je na bezpečné místo, jelikož umožňují podepsat commity vaší identitou.
|
gpg_desc=Tyto veřejné klíče GPG jsou propojeny s vaším účtem a používají se k ověření vašich revizí. Uložte je na bezpečné místo, jelikož umožňují podepsat revize vaší identitou.
|
||||||
ssh_helper=<strong>Potřebujete pomoct?</strong> Podívejte se do příručky, jak <a href="%s">vytvořit vlastní klíče SSH</a> nebo vyřešte <a href="%s">běžné problémy</a>, se kterými se můžete potkat při použití SSH.
|
ssh_helper=<strong>Potřebujete pomoct?</strong> Podívejte se do příručky, jak <a href="%s">vytvořit vlastní klíče SSH</a> nebo vyřešte <a href="%s">běžné problémy</a>, se kterými se můžete potkat při použití SSH.
|
||||||
gpg_helper=<strong>Potřebujete pomoct?</strong> Podívejte se do příručky <a href="%s">o GPG</a>.
|
gpg_helper=<strong>Potřebujete pomoct?</strong> Podívejte se do příručky <a href="%s">o GPG</a>.
|
||||||
add_new_key=Přidat klíč SSH
|
add_new_key=Přidat klíč SSH
|
||||||
|
@ -861,9 +863,9 @@ ssh_principal_been_used=Tento SSH Principal certifikát již byl přidán na ser
|
||||||
gpg_key_id_used=Veřejný GPG klíč se stejným ID již existuje.
|
gpg_key_id_used=Veřejný GPG klíč se stejným ID již existuje.
|
||||||
gpg_no_key_email_found=Tento GPG klíč neodpovídá žádné aktivované e-mailové adrese spojené s vaším účtem. Může být stále přidán, pokud podepíšete zadaný token.
|
gpg_no_key_email_found=Tento GPG klíč neodpovídá žádné aktivované e-mailové adrese spojené s vaším účtem. Může být stále přidán, pokud podepíšete zadaný token.
|
||||||
gpg_key_matched_identities=Odpovídající identity:
|
gpg_key_matched_identities=Odpovídající identity:
|
||||||
gpg_key_matched_identities_long=Vložené identity v tomto klíči odpovídají následujícím aktivovaným e-mailovým adresám tohoto uživatele. Commity odpovídající těmto e-mailovým adresám lze ověřit pomocí tohoto klíče.
|
gpg_key_matched_identities_long=Vložené identity v tomto klíči odpovídají následujícím aktivovaným e-mailovým adresám tohoto uživatele. Revize odpovídající těmto e-mailovým adresám lze ověřit pomocí tohoto klíče.
|
||||||
gpg_key_verified=Ověřený klíč
|
gpg_key_verified=Ověřený klíč
|
||||||
gpg_key_verified_long=Klíč byl ověřen pomocí tokenu a může být použit k ověření commitů shodujících se s libovolnou aktivovanou e-mailovou adresou pro tohoto uživatele navíc k jakékoli odpovídající identitě tohoto klíče.
|
gpg_key_verified_long=Klíč byl ověřen pomocí tokenu a může být použit k ověření revizí shodujících se s libovolnou aktivovanou e-mailovou adresou pro tohoto uživatele navíc k jakékoli odpovídající identitě tohoto klíče.
|
||||||
gpg_key_verify=Ověřit
|
gpg_key_verify=Ověřit
|
||||||
gpg_invalid_token_signature=Zadaný GPG klíč, podpis a token se neshodují nebo je token zastaralý.
|
gpg_invalid_token_signature=Zadaný GPG klíč, podpis a token se neshodují nebo je token zastaralý.
|
||||||
gpg_token_required=Musíte zadat podpis pro níže uvedený token
|
gpg_token_required=Musíte zadat podpis pro níže uvedený token
|
||||||
|
@ -874,7 +876,7 @@ gpg_token_signature=Zakódovaný podpis GPG
|
||||||
key_signature_gpg_placeholder=Začíná textem „-----BEGIN PGP SIGNATURE-----“
|
key_signature_gpg_placeholder=Začíná textem „-----BEGIN PGP SIGNATURE-----“
|
||||||
verify_gpg_key_success=GPG klíč „%s“ byl ověřen.
|
verify_gpg_key_success=GPG klíč „%s“ byl ověřen.
|
||||||
ssh_key_verified=Ověřený klíč
|
ssh_key_verified=Ověřený klíč
|
||||||
ssh_key_verified_long=Klíč byl ověřen pomocí tokenu a může být použit k ověření commitů shodujících se s libovolnou vaší aktivovanou e-mailovou adresou pro tohoto uživatele.
|
ssh_key_verified_long=Klíč byl ověřen pomocí tokenu a může být použit k ověření revizí shodujících se s libovolnou vaší aktivovanou e-mailovou adresou pro tohoto uživatele.
|
||||||
ssh_key_verify=Ověřit
|
ssh_key_verify=Ověřit
|
||||||
ssh_invalid_token_signature=Zadaný SSH klíč, podpis nebo token se neshodují nebo je token zastaralý.
|
ssh_invalid_token_signature=Zadaný SSH klíč, podpis nebo token se neshodují nebo je token zastaralý.
|
||||||
ssh_token_required=Musíte zadat podpis pro níže uvedený token
|
ssh_token_required=Musíte zadat podpis pro níže uvedený token
|
||||||
|
@ -896,7 +898,7 @@ ssh_key_deletion=Odebrat klíč SSH
|
||||||
gpg_key_deletion=Odebrat klíč GPG
|
gpg_key_deletion=Odebrat klíč GPG
|
||||||
ssh_principal_deletion=Odstranit SSH Principal certifikát
|
ssh_principal_deletion=Odstranit SSH Principal certifikát
|
||||||
ssh_key_deletion_desc=Odstranění SSH klíče zruší jeho přístup k vašemu účtu. Pokračovat?
|
ssh_key_deletion_desc=Odstranění SSH klíče zruší jeho přístup k vašemu účtu. Pokračovat?
|
||||||
gpg_key_deletion_desc=Odstraněním klíče GPG zneplatníte ověření commitů, které jsou jím podepsány. Pokračovat?
|
gpg_key_deletion_desc=Odstraněním klíče GPG zneplatníte ověření revizí, které jsou jím podepsány. Pokračovat?
|
||||||
ssh_principal_deletion_desc=Odstranění SSH Principal certifikátu zruší jeho přístup k vašemu účtu. Pokračovat?
|
ssh_principal_deletion_desc=Odstranění SSH Principal certifikátu zruší jeho přístup k vašemu účtu. Pokračovat?
|
||||||
ssh_key_deletion_success=SSH klíč byl odstraněn.
|
ssh_key_deletion_success=SSH klíč byl odstraněn.
|
||||||
gpg_key_deletion_success=GPG klíč byl odstraněn.
|
gpg_key_deletion_success=GPG klíč byl odstraněn.
|
||||||
|
@ -914,7 +916,7 @@ principal_state_desc=Tento SSH Principal certifikát byl použit během posledn
|
||||||
show_openid=Zobrazit na profilu
|
show_openid=Zobrazit na profilu
|
||||||
hide_openid=Odstranit z profilu
|
hide_openid=Odstranit z profilu
|
||||||
ssh_disabled=SSH je zakázáno
|
ssh_disabled=SSH je zakázáno
|
||||||
ssh_signonly=SSH je v současné době zakázáno, proto jsou tyto klíče použity pouze pro ověření podpisu.
|
ssh_signonly=SSH je v současné době zakázáno, proto jsou tyto klíče použity pouze pro ověření podpisu revizí.
|
||||||
ssh_externally_managed=Tento SSH klíč je spravován externě pro tohoto uživatele
|
ssh_externally_managed=Tento SSH klíč je spravován externě pro tohoto uživatele
|
||||||
manage_social=Správa propojených účtů sociálních sítí
|
manage_social=Správa propojených účtů sociálních sítí
|
||||||
social_desc=Tyto účty sociálních sítí lze použít k přihlášení k vašemu účtu. Ujistěte se, že jsou všechny vaše.
|
social_desc=Tyto účty sociálních sítí lze použít k přihlášení k vašemu účtu. Ujistěte se, že jsou všechny vaše.
|
||||||
|
@ -966,7 +968,7 @@ oauth2_client_secret_hint=Tajný klíč se znovu nezobrazí po opuštění nebo
|
||||||
oauth2_application_edit=Upravit
|
oauth2_application_edit=Upravit
|
||||||
oauth2_application_create_description=Aplikace OAuth2 poskytují přístup vašim aplikacím třetích stran k uživatelským účtům na této instanci.
|
oauth2_application_create_description=Aplikace OAuth2 poskytují přístup vašim aplikacím třetích stran k uživatelským účtům na této instanci.
|
||||||
oauth2_application_remove_description=Odebráním OAuth2 aplikace zabrání přístupu ověřeným uživatelům na této instanci. Pokračovat?
|
oauth2_application_remove_description=Odebráním OAuth2 aplikace zabrání přístupu ověřeným uživatelům na této instanci. Pokračovat?
|
||||||
oauth2_application_locked=Gitea předregistruje některé OAuth2 aplikace při spuštění, pokud je to povoleno v konfiguraci. Aby se zabránilo neočekávanému chování, nelze je upravovat ani odstranit. Více informací naleznete v dokumentaci OAuth2.
|
oauth2_application_locked=Forgejo předem zaregistruje některé OAuth2 aplikace při spuštění, pokud je to povoleno v konfiguraci. Aby se zabránilo neočekávanému chování, nelze je upravovat ani odstranit. Více informací naleznete v dokumentaci OAuth2.
|
||||||
|
|
||||||
authorized_oauth2_applications=Autorizované aplikace OAuth2
|
authorized_oauth2_applications=Autorizované aplikace OAuth2
|
||||||
authorized_oauth2_applications_description=Těmto aplikacím třetích stran jste udělili přístup ke svému osobnímu účtu Forgejo. Zrušte prosím přístup aplikacím, které již nejsou používány.
|
authorized_oauth2_applications_description=Těmto aplikacím třetích stran jste udělili přístup ke svému osobnímu účtu Forgejo. Zrušte prosím přístup aplikacím, které již nejsou používány.
|
||||||
|
@ -1010,7 +1012,7 @@ remove_account_link=Odstranit propojený účet
|
||||||
remove_account_link_desc=Odstraněním propojeného účtu zrušíte jeho přístup k vašemu Forgejo účtu. Pokračovat?
|
remove_account_link_desc=Odstraněním propojeného účtu zrušíte jeho přístup k vašemu Forgejo účtu. Pokračovat?
|
||||||
remove_account_link_success=Propojený účet byl odstraněn.
|
remove_account_link_success=Propojený účet byl odstraněn.
|
||||||
|
|
||||||
hooks.desc=Přidat webhooky, které budou spouštěny pro <strong>všechny repozitáře</strong> vve vašem vlastnictví.
|
hooks.desc=Přidejte webhooky, které budou spouštěny pro <strong>všechny repozitáře</strong> ve vašem vlastnictví.
|
||||||
|
|
||||||
orgs_none=Nejste členem žádné organizace.
|
orgs_none=Nejste členem žádné organizace.
|
||||||
repos_none=Nevlastníte žádné repozitáře.
|
repos_none=Nevlastníte žádné repozitáře.
|
||||||
|
@ -1054,6 +1056,8 @@ language.title = Výchozí jazyk
|
||||||
keep_activity_private.description = Vaše <a href="%s">veřejná aktivita</a> bude viditelná pouze vám a správcům instance.
|
keep_activity_private.description = Vaše <a href="%s">veřejná aktivita</a> bude viditelná pouze vám a správcům instance.
|
||||||
language.description = Tento jazyk bude uložen do vašeho účtu a po přihlášení bude použit jako výchozí.
|
language.description = Tento jazyk bude uložen do vašeho účtu a po přihlášení bude použit jako výchozí.
|
||||||
language.localization_project = Pomozte nám s překladem Forgejo do vašeho jazyka! <a href="%s">Více informací</a>.
|
language.localization_project = Pomozte nám s překladem Forgejo do vašeho jazyka! <a href="%s">Více informací</a>.
|
||||||
|
user_block_yourself = Nemůžete zablokovat sami sebe.
|
||||||
|
pronouns_custom_label = Vlastní zájmena
|
||||||
|
|
||||||
[repo]
|
[repo]
|
||||||
new_repo_helper=Repozitář obsahuje všechny soubory projektu, včetně historie revizí. Už jej hostujete jinde? <a href="%s">Migrovat repozitář</a>.
|
new_repo_helper=Repozitář obsahuje všechny soubory projektu, včetně historie revizí. Už jej hostujete jinde? <a href="%s">Migrovat repozitář</a>.
|
||||||
|
@ -1102,7 +1106,7 @@ object_format_helper = Objektový formát repozitáře. Později jej nelze změn
|
||||||
readme=README
|
readme=README
|
||||||
readme_helper=Vyberte šablonu souboru README
|
readme_helper=Vyberte šablonu souboru README
|
||||||
readme_helper_desc=Do tohoto místa můžete zadat celý popis vašeho projektu.
|
readme_helper_desc=Do tohoto místa můžete zadat celý popis vašeho projektu.
|
||||||
auto_init=Inicializovat repozitář (přidá soubory .gitignore, License a README)
|
auto_init=Inicializovat repozitář
|
||||||
trust_model_helper=Vyberte model důvěry pro ověření podpisu. Možnosti jsou:
|
trust_model_helper=Vyberte model důvěry pro ověření podpisu. Možnosti jsou:
|
||||||
trust_model_helper_collaborator=Spolupracovník: Důvěřovat podpisům spolupracovníků
|
trust_model_helper_collaborator=Spolupracovník: Důvěřovat podpisům spolupracovníků
|
||||||
trust_model_helper_committer=Přispěvatel: Důvěřovat podpisům, které se shodují s přispěvateli
|
trust_model_helper_committer=Přispěvatel: Důvěřovat podpisům, které se shodují s přispěvateli
|
||||||
|
@ -1111,12 +1115,12 @@ trust_model_helper_default=Výchozí: Použít výchozí model důvěry pro tuto
|
||||||
create_repo=Vytvořit repozitář
|
create_repo=Vytvořit repozitář
|
||||||
default_branch=Výchozí větev
|
default_branch=Výchozí větev
|
||||||
default_branch_label=výchozí
|
default_branch_label=výchozí
|
||||||
default_branch_helper=Výchozí větev je základní větev pro žádosti o sloučení a commity kódu.
|
default_branch_helper=Výchozí větev je základní větev pro žádosti o sloučení a revize kódu.
|
||||||
mirror_prune=Vyčistit
|
mirror_prune=Vyčistit
|
||||||
mirror_prune_desc=Odstranit zastaralé reference na vzdálené sledování
|
mirror_prune_desc=Odstranit zastaralé reference na vzdálené sledování
|
||||||
mirror_interval=Interval zrcadlení (platné časové jednotky jsou „h“, „m“ a „s“). Nastavením na 0 zakážete periodickou synchronizaci. (Minimální interval: %s)
|
mirror_interval=Interval zrcadlení (platné časové jednotky jsou „h“, „m“ a „s“). Nastavením na 0 zakážete periodickou synchronizaci. (Minimální interval: %s)
|
||||||
mirror_interval_invalid=Interval zrcadlení není platný.
|
mirror_interval_invalid=Interval zrcadlení není platný.
|
||||||
mirror_sync_on_commit=Synchronizovat při nahrávání commitů
|
mirror_sync_on_commit=Synchronizovat při nahrávání revizí
|
||||||
mirror_address=Klonovat z URL
|
mirror_address=Klonovat z URL
|
||||||
mirror_address_desc=Zadejte požadované přístupové údaje do sekce Ověření.
|
mirror_address_desc=Zadejte požadované přístupové údaje do sekce Ověření.
|
||||||
mirror_address_url_invalid=Poskytnutá URL je neplatná. Všechny části musíte správně nahradit escape sekvencí.
|
mirror_address_url_invalid=Poskytnutá URL je neplatná. Všechny části musíte správně nahradit escape sekvencí.
|
||||||
|
@ -1149,7 +1153,7 @@ blame_prior=Zobrazit blame před touto změnou
|
||||||
blame.ignore_revs.failed=Nepodařilo se ignorovat revize v <a href="%s">.git-blame-ignore-revs</a>.
|
blame.ignore_revs.failed=Nepodařilo se ignorovat revize v <a href="%s">.git-blame-ignore-revs</a>.
|
||||||
author_search_tooltip=Zobrazí maximálně 30 uživatelů
|
author_search_tooltip=Zobrazí maximálně 30 uživatelů
|
||||||
|
|
||||||
tree_path_not_found_commit=Cesta %[1]s v commitu %[2]s neexistuje
|
tree_path_not_found_commit=Cesta %[1]s v revizi %[2]s neexistuje
|
||||||
tree_path_not_found_branch=Cesta %[1]s ve větvi %[2]s neexistuje
|
tree_path_not_found_branch=Cesta %[1]s ve větvi %[2]s neexistuje
|
||||||
tree_path_not_found_tag=Cesta %[1]s ve značce %[2]s neexistuje
|
tree_path_not_found_tag=Cesta %[1]s ve značce %[2]s neexistuje
|
||||||
|
|
||||||
|
@ -1265,7 +1269,7 @@ empty_message=Tento repozitář nemá žádný obsah.
|
||||||
broken_message=Data gitu, která jsou základem tohoto repozitáře, nelze číst. Kontaktujte správce této instance nebo smažte tento repositář.
|
broken_message=Data gitu, která jsou základem tohoto repozitáře, nelze číst. Kontaktujte správce této instance nebo smažte tento repositář.
|
||||||
|
|
||||||
code=Zdrojový kód
|
code=Zdrojový kód
|
||||||
code.desc=Přístup ke zdrojovým kódům, souborům, commitům a větvím.
|
code.desc=Přístup ke zdrojovým kódům, souborům, revizím a větvím.
|
||||||
branch=Větev
|
branch=Větev
|
||||||
tree=Strom
|
tree=Strom
|
||||||
clear_ref=Vymazat aktuální referenci
|
clear_ref=Vymazat aktuální referenci
|
||||||
|
@ -1283,8 +1287,8 @@ org_labels_desc=Štítky na úrovni organizace, které mohou být použity se <s
|
||||||
org_labels_desc_manage=spravovat
|
org_labels_desc_manage=spravovat
|
||||||
|
|
||||||
milestones=Milníky
|
milestones=Milníky
|
||||||
commits=Commity
|
commits=Revize
|
||||||
commit=Commit
|
commit=Revize
|
||||||
release=Vydání
|
release=Vydání
|
||||||
releases=Vydání
|
releases=Vydání
|
||||||
tag=Značka
|
tag=Značka
|
||||||
|
@ -1313,18 +1317,19 @@ view_git_blame=Zobrazit git blame
|
||||||
video_not_supported_in_browser=Váš prohlížeč nepodporuje značku HTML5 „video“.
|
video_not_supported_in_browser=Váš prohlížeč nepodporuje značku HTML5 „video“.
|
||||||
audio_not_supported_in_browser=Váš prohlížeč nepodporuje značku HTML5 „audio“.
|
audio_not_supported_in_browser=Váš prohlížeč nepodporuje značku HTML5 „audio“.
|
||||||
stored_lfs=Uloženo pomocí Git LFS
|
stored_lfs=Uloženo pomocí Git LFS
|
||||||
|
stored_annex=Uloženo pomocí Git Annex
|
||||||
symbolic_link=Symbolický odkaz
|
symbolic_link=Symbolický odkaz
|
||||||
executable_file=Spustitelný soubor
|
executable_file=Spustitelný soubor
|
||||||
vendored = Vendorováno
|
vendored = Vendorováno
|
||||||
generated = Generováno
|
generated = Generováno
|
||||||
commit_graph=Graf commitů
|
commit_graph=Graf revizí
|
||||||
commit_graph.select=Vybrat větve
|
commit_graph.select=Vybrat větve
|
||||||
commit_graph.hide_pr_refs=Skrýt žádosti o sloučení
|
commit_graph.hide_pr_refs=Skrýt žádosti o sloučení
|
||||||
commit_graph.monochrome=Černobílé
|
commit_graph.monochrome=Černobílé
|
||||||
commit_graph.color=Barva
|
commit_graph.color=Barva
|
||||||
commit.contained_in=Tento commit je obsažen v:
|
commit.contained_in=Tato revize je obsažena v:
|
||||||
commit.contained_in_default_branch=Tento commit je součástí výchozí větve
|
commit.contained_in_default_branch=Tato revize je součástí výchozí větve
|
||||||
commit.load_referencing_branches_and_tags=Načíst větve a značky odkazující na tento commit
|
commit.load_referencing_branches_and_tags=Načíst větve a značky odkazující na tuto revizi
|
||||||
blame=Blame
|
blame=Blame
|
||||||
download_file=Stáhnout soubor
|
download_file=Stáhnout soubor
|
||||||
normal_view=Normální zobrazení
|
normal_view=Normální zobrazení
|
||||||
|
@ -1338,6 +1343,7 @@ editor.upload_file=Nahrát soubor
|
||||||
editor.edit_file=Upravit soubor
|
editor.edit_file=Upravit soubor
|
||||||
editor.preview_changes=Náhled změn
|
editor.preview_changes=Náhled změn
|
||||||
editor.cannot_edit_lfs_files=LFS soubory nemohou být upravovány přes webové rozhraní.
|
editor.cannot_edit_lfs_files=LFS soubory nemohou být upravovány přes webové rozhraní.
|
||||||
|
editor.cannot_edit_annex_files=Annex soubory nemohou být upravovány přes webové rozhraní.
|
||||||
editor.cannot_edit_non_text_files=Binární soubory nemohou být upravovány přes webové rozhraní.
|
editor.cannot_edit_non_text_files=Binární soubory nemohou být upravovány přes webové rozhraní.
|
||||||
editor.edit_this_file=Upravit soubor
|
editor.edit_this_file=Upravit soubor
|
||||||
editor.this_file_locked=Soubor je uzamčen
|
editor.this_file_locked=Soubor je uzamčen
|
||||||
|
@ -1361,12 +1367,12 @@ editor.patching=Záplatování:
|
||||||
editor.fail_to_apply_patch=Nelze použít záplatu „%s“
|
editor.fail_to_apply_patch=Nelze použít záplatu „%s“
|
||||||
editor.new_patch=Nová záplata
|
editor.new_patch=Nová záplata
|
||||||
editor.commit_message_desc=Přidat volitelný rozšířený popis…
|
editor.commit_message_desc=Přidat volitelný rozšířený popis…
|
||||||
editor.signoff_desc=Přidat Signed-off-by podpis přispěvatele na konec zprávy o commitu.
|
editor.signoff_desc=Přidat podpis přispěvatele „Signed-off-by“ na konec zprávy revize.
|
||||||
editor.commit_directly_to_this_branch=Odeslat přímo do větve <strong class="%[2]s">%[1]s</strong>.
|
editor.commit_directly_to_this_branch=Odeslat přímo do větve <strong class="%[2]s">%[1]s</strong>.
|
||||||
editor.create_new_branch=Vytvořit <strong>novou větev</strong> pro tento commit a vytvořit žádost o sloučení.
|
editor.create_new_branch=Vytvořit <strong>novou větev</strong> pro tuto revizi a vytvořit žádost o sloučení.
|
||||||
editor.create_new_branch_np=Vytvořte <strong>novou větev</strong> z tohoto commitu.
|
editor.create_new_branch_np=Vytvořit <strong>novou větev</strong> z této revize.
|
||||||
editor.propose_file_change=Navrhnout změnu souboru
|
editor.propose_file_change=Navrhnout změnu souboru
|
||||||
editor.new_branch_name=Pojmenujte novou větev pro tento commit
|
editor.new_branch_name=Pojmenujte novou větev pro tuto revizi
|
||||||
editor.new_branch_name_desc=Název nové větve…
|
editor.new_branch_name_desc=Název nové větve…
|
||||||
editor.cancel=Zrušit
|
editor.cancel=Zrušit
|
||||||
editor.filename_cannot_be_empty=Jméno nemůže být prázdné.
|
editor.filename_cannot_be_empty=Jméno nemůže být prázdné.
|
||||||
|
@ -1378,7 +1384,7 @@ editor.file_is_a_symlink=`„%s“ je symbolický odkaz. Symbolické odkazy nemo
|
||||||
editor.filename_is_a_directory=Jméno souboru „%s“ je již použito jako jméno adresáře v tomto repozitáři.
|
editor.filename_is_a_directory=Jméno souboru „%s“ je již použito jako jméno adresáře v tomto repozitáři.
|
||||||
editor.file_editing_no_longer_exists=Upravovaný soubor „%s“ již není součástí tohoto repozitáře.
|
editor.file_editing_no_longer_exists=Upravovaný soubor „%s“ již není součástí tohoto repozitáře.
|
||||||
editor.file_deleting_no_longer_exists=Odstraňovaný soubor „%s“ již není součástí tohoto repozitáře.
|
editor.file_deleting_no_longer_exists=Odstraňovaný soubor „%s“ již není součástí tohoto repozitáře.
|
||||||
editor.file_changed_while_editing=Obsah souboru se od zahájení úprav změnil. <a target="_blank" rel="noopener noreferrer" href="%s">Klikněte sem</a> pro jejich zobrazení nebo <strong>proveďte commit změn ještě jednou</strong> pro jejich přepsání.
|
editor.file_changed_while_editing=Obsah souboru se od zahájení úprav změnil. <a target="_blank" rel="noopener noreferrer" href="%s">Klikněte sem</a> pro jeho zobrazení nebo <strong>odešlete změny ještě jednou</strong> pro jeho přepsání.
|
||||||
editor.file_already_exists=Soubor „%s“ již existuje v tomto repozitáři.
|
editor.file_already_exists=Soubor „%s“ již existuje v tomto repozitáři.
|
||||||
editor.commit_empty_file_header=Odeslat prázdný soubor
|
editor.commit_empty_file_header=Odeslat prázdný soubor
|
||||||
editor.commit_empty_file_text=Soubor, který se chystáte odeslat, je prázdný. Pokračovat?
|
editor.commit_empty_file_text=Soubor, který se chystáte odeslat, je prázdný. Pokračovat?
|
||||||
|
@ -1392,16 +1398,16 @@ editor.add_subdir=Přidat adresář…
|
||||||
editor.unable_to_upload_files=Nepodařilo se nahrát soubory do „%s“. Chyba: %v
|
editor.unable_to_upload_files=Nepodařilo se nahrát soubory do „%s“. Chyba: %v
|
||||||
editor.upload_file_is_locked=Soubor „%s“ je uzamčen uživatelem %s.
|
editor.upload_file_is_locked=Soubor „%s“ je uzamčen uživatelem %s.
|
||||||
editor.upload_files_to_dir=Nahrány soubory do „%s“
|
editor.upload_files_to_dir=Nahrány soubory do „%s“
|
||||||
editor.cannot_commit_to_protected_branch=Nelze vytvořit commit v chráněné větvi „%s“.
|
editor.cannot_commit_to_protected_branch=Nelze vytvořit revizi v chráněné větvi „%s“.
|
||||||
editor.no_commit_to_branch=Nepodařilo se odeslat přímo do větve:
|
editor.no_commit_to_branch=Nepodařilo se odeslat přímo do větve:
|
||||||
editor.user_no_push_to_branch=Uživatel nemůže nahrávat do větve
|
editor.user_no_push_to_branch=Uživatel nemůže nahrávat do větve
|
||||||
editor.require_signed_commit=Větev vyžaduje podepsaný commit
|
editor.require_signed_commit=Větev vyžaduje podepsanou revizi
|
||||||
editor.cherry_pick=Cherry-pick %s na:
|
editor.cherry_pick=Cherry-pick %s na:
|
||||||
editor.revert=Vrátit %s na:
|
editor.revert=Vrátit %s na:
|
||||||
|
|
||||||
commits.desc=Procházet historii změn zdrojového kódu.
|
commits.desc=Procházet historii změn zdrojového kódu.
|
||||||
commits.commits=Commity
|
commits.commits=Revize
|
||||||
commits.no_commits=Žádné společné commity. „%s“ a „%s“ mají zcela odlišnou historii.
|
commits.no_commits=Žádné společné revize. „%s“ a „%s“ mají zcela odlišnou historii.
|
||||||
commits.nothing_to_compare=Tyto větve jsou stejné.
|
commits.nothing_to_compare=Tyto větve jsou stejné.
|
||||||
commits.search=Hledání commitů…
|
commits.search=Hledání commitů…
|
||||||
commits.search.tooltip=Můžete předřadit klíčová slova s „author:“, „committer:“, „after:“ nebo „before:“, např. „revert author:Alice before:2019-01-03“.
|
commits.search.tooltip=Můžete předřadit klíčová slova s „author:“, „committer:“, „after:“ nebo „before:“, např. „revert author:Alice before:2019-01-03“.
|
||||||
|
@ -1414,21 +1420,21 @@ commits.older=Starší
|
||||||
commits.newer=Novější
|
commits.newer=Novější
|
||||||
commits.signed_by=Podepsáno
|
commits.signed_by=Podepsáno
|
||||||
commits.signed_by_untrusted_user=Podepsáno nedůvěryhodným uživatelem
|
commits.signed_by_untrusted_user=Podepsáno nedůvěryhodným uživatelem
|
||||||
commits.signed_by_untrusted_user_unmatched=Podepsáno nedůvěryhodným uživatelem, který nesouhlasí s přispěvatelem
|
commits.signed_by_untrusted_user_unmatched=Podepsáno nedůvěryhodným uživatelem, který neodpovídá přispěvateli
|
||||||
commits.gpg_key_id=ID klíče GPG
|
commits.gpg_key_id=ID klíče GPG
|
||||||
commits.ssh_key_fingerprint=Otisk klíče SSH
|
commits.ssh_key_fingerprint=Otisk klíče SSH
|
||||||
commits.view_path=Zobrazit v tomto bodě v historii
|
commits.view_path=Zobrazit tento bod v historii
|
||||||
|
|
||||||
commit.operations=Operace
|
commit.operations=Operace
|
||||||
commit.revert=Vrátit
|
commit.revert=Vrátit
|
||||||
commit.revert-header=Vrátit: %s
|
commit.revert-header=Vrátit: %s
|
||||||
commit.revert-content=Vyberte větev pro návrat na:
|
commit.revert-content=Vyberte větev pro návrat:
|
||||||
commit.cherry-pick=Cherry-pick
|
commit.cherry-pick=Cherry-pick
|
||||||
commit.cherry-pick-header=Cherry-pick: %s
|
commit.cherry-pick-header=Cherry-pick: %s
|
||||||
commit.cherry-pick-content=Vyberte větev pro Cherry-pick na:
|
commit.cherry-pick-content=Vyberte větev pro Cherry-pick:
|
||||||
|
|
||||||
commitstatus.error=Chyba
|
commitstatus.error=Chyba
|
||||||
commitstatus.failure=Chyba
|
commitstatus.failure=Selhání
|
||||||
commitstatus.pending=Čekající
|
commitstatus.pending=Čekající
|
||||||
commitstatus.success=Úspěch
|
commitstatus.success=Úspěch
|
||||||
|
|
||||||
|
@ -1611,15 +1617,15 @@ issues.context.edit=Upravit
|
||||||
issues.context.delete=Smazat
|
issues.context.delete=Smazat
|
||||||
issues.no_content=K dispozici není žádný popis.
|
issues.no_content=K dispozici není žádný popis.
|
||||||
issues.close=Zavřít problém
|
issues.close=Zavřít problém
|
||||||
issues.comment_pull_merged_at=sloučený commit %[1]s do %[2]s %[3]s
|
issues.comment_pull_merged_at=sloučena revize %[1]s do %[2]s %[3]s
|
||||||
issues.comment_manually_pull_merged_at=ručně sloučený commit %[1]s do %[2]s %[3]s
|
issues.comment_manually_pull_merged_at=ručně sloučena revize %[1]s do %[2]s %[3]s
|
||||||
issues.close_comment_issue=Zavřít s komentářem
|
issues.close_comment_issue=Zavřít s komentářem
|
||||||
issues.reopen_issue=Znovu otevřít
|
issues.reopen_issue=Znovu otevřít
|
||||||
issues.reopen_comment_issue=Znovu otevřít s komentářem
|
issues.reopen_comment_issue=Znovu otevřít s komentářem
|
||||||
issues.create_comment=Okomentovat
|
issues.create_comment=Okomentovat
|
||||||
issues.closed_at=`uzavřel/a tento problém <a id="%[1]s" href="#%[1]s">%[2]s</a>`
|
issues.closed_at=`uzavřel/a tento problém <a id="%[1]s" href="#%[1]s">%[2]s</a>`
|
||||||
issues.reopened_at=`znovu otevřel/a tento problém <a id="%[1]s" href="#%[1]s">%[2]s</a>`
|
issues.reopened_at=`znovu otevřel/a tento problém <a id="%[1]s" href="#%[1]s">%[2]s</a>`
|
||||||
issues.commit_ref_at=`odkázal/a na tento problém z commitu <a id="%[1]s" href="#%[1]s">%[2]s</a>`
|
issues.commit_ref_at=`odkázal/a na tento problém z revize <a id="%[1]s" href="#%[1]s">%[2]s</a>`
|
||||||
issues.ref_issue_from=`<a href="%[3]s">odkázal/a na tento problém %[4]s</a> <a id="%[1]s" href="#%[1]s">%[2]s</a>`
|
issues.ref_issue_from=`<a href="%[3]s">odkázal/a na tento problém %[4]s</a> <a id="%[1]s" href="#%[1]s">%[2]s</a>`
|
||||||
issues.ref_pull_from=`<a href="%[3]s">odkázal/a na tuto žádost o sloučení %[4]s</a> <a id="%[1]s" href="#%[1]s">%[2]s</a>`
|
issues.ref_pull_from=`<a href="%[3]s">odkázal/a na tuto žádost o sloučení %[4]s</a> <a id="%[1]s" href="#%[1]s">%[2]s</a>`
|
||||||
issues.ref_closing_from=`<a href="%[3]s">odkazoval/a na tento problém ze žádosti o sloučení %[4]s, která jej uzavře</a>, <a id="%[1]s" href="#%[1]s">%[2]s</a>`
|
issues.ref_closing_from=`<a href="%[3]s">odkazoval/a na tento problém ze žádosti o sloučení %[4]s, která jej uzavře</a>, <a id="%[1]s" href="#%[1]s">%[2]s</a>`
|
||||||
|
@ -1725,8 +1731,8 @@ issues.due_date=Termín dokončení
|
||||||
issues.invalid_due_date_format=Termín dokončení musí být ve formátu „rrrr-mm-dd“.
|
issues.invalid_due_date_format=Termín dokončení musí být ve formátu „rrrr-mm-dd“.
|
||||||
issues.error_modifying_due_date=Změna termínu dokončení selhala.
|
issues.error_modifying_due_date=Změna termínu dokončení selhala.
|
||||||
issues.error_removing_due_date=Odstranění termínu dokončení selhalo.
|
issues.error_removing_due_date=Odstranění termínu dokončení selhalo.
|
||||||
issues.push_commit_1=přidal/a %d commit %s
|
issues.push_commit_1=přidal/a %d revizi %s
|
||||||
issues.push_commits_n=přidal/a %d commity %s
|
issues.push_commits_n=přidal/a %d revize %s
|
||||||
issues.force_push_codes=`vynucené nahrání %[1]s od <a class="%[7]s" href="%[3]s"><code>%[2]s</code></a> do <a class="%[7]s" href="%[5]s"><code>%[4]s</code></a> %[6]s`
|
issues.force_push_codes=`vynucené nahrání %[1]s od <a class="%[7]s" href="%[3]s"><code>%[2]s</code></a> do <a class="%[7]s" href="%[5]s"><code>%[4]s</code></a> %[6]s`
|
||||||
issues.force_push_compare=Porovnat
|
issues.force_push_compare=Porovnat
|
||||||
issues.due_date_form=rrrr-mm-dd
|
issues.due_date_form=rrrr-mm-dd
|
||||||
|
@ -1831,13 +1837,13 @@ pulls.switch_comparison_type=Přepnout typ porovnání
|
||||||
pulls.switch_head_and_base=Prohodit hlavní a základní větev
|
pulls.switch_head_and_base=Prohodit hlavní a základní větev
|
||||||
pulls.filter_branch=Filtrovat větev
|
pulls.filter_branch=Filtrovat větev
|
||||||
pulls.no_results=Nebyly nalezeny žádné výsledky.
|
pulls.no_results=Nebyly nalezeny žádné výsledky.
|
||||||
pulls.show_all_commits=Zobrazit všechny commity
|
pulls.show_all_commits=Zobrazit všechny revize
|
||||||
pulls.show_changes_since_your_last_review=Zobrazit změny od vašeho posledního posouzení
|
pulls.show_changes_since_your_last_review=Zobrazit změny od vašeho posledního posouzení
|
||||||
pulls.showing_only_single_commit=Zobrazuji pouze změny commitu %[1]s
|
pulls.showing_only_single_commit=Zobrazuji pouze změny revize %[1]s
|
||||||
pulls.showing_specified_commit_range=Zobrazují se pouze změny mezi %[1]s..%[2]s
|
pulls.showing_specified_commit_range=Zobrazují se pouze změny mezi %[1]s..%[2]s
|
||||||
pulls.select_commit_hold_shift_for_range=Vyberte commit. Podržte klávesu shift + klepněte pro výběr rozsahu
|
pulls.select_commit_hold_shift_for_range=Vyberte revizi. Podržte klávesu Shift a klikněte pro výběr rozsahu
|
||||||
pulls.review_only_possible_for_full_diff=Posouzení je možné pouze při zobrazení plného rozlišení
|
pulls.review_only_possible_for_full_diff=Posouzení je možné pouze při zobrazení plného rozlišení
|
||||||
pulls.filter_changes_by_commit=Filtrovat podle commitu
|
pulls.filter_changes_by_commit=Filtrovat podle revize
|
||||||
pulls.nothing_to_compare=Tyto větve jsou stejné. Není třeba vytvářet žádost o sloučení.
|
pulls.nothing_to_compare=Tyto větve jsou stejné. Není třeba vytvářet žádost o sloučení.
|
||||||
pulls.nothing_to_compare_have_tag = Vybraná větev a značka jsou shodné.
|
pulls.nothing_to_compare_have_tag = Vybraná větev a značka jsou shodné.
|
||||||
pulls.nothing_to_compare_and_allow_empty_pr=Tyto větve jsou stejné. Tato žádost o sloučení bude prázdná.
|
pulls.nothing_to_compare_and_allow_empty_pr=Tyto větve jsou stejné. Tato žádost o sloučení bude prázdná.
|
||||||
|
@ -1847,7 +1853,7 @@ pulls.title_desc_few=chce sloučit %[1]d commity z větve <code>%[2]s</code> do
|
||||||
pulls.merged_title_desc_few=sloučil %[1]d commity z větve <code>%[2]s</code> do větve <code>%[3]s</code> před %[4]s
|
pulls.merged_title_desc_few=sloučil %[1]d commity z větve <code>%[2]s</code> do větve <code>%[3]s</code> před %[4]s
|
||||||
pulls.change_target_branch_at=`změnil/a cílovou větev z <b>%s</b> na <b>%s</b> %s`
|
pulls.change_target_branch_at=`změnil/a cílovou větev z <b>%s</b> na <b>%s</b> %s`
|
||||||
pulls.tab_conversation=Konverzace
|
pulls.tab_conversation=Konverzace
|
||||||
pulls.tab_commits=Commity
|
pulls.tab_commits=Revize
|
||||||
pulls.tab_files=Změněné soubory
|
pulls.tab_files=Změněné soubory
|
||||||
pulls.reopen_to_merge=Otevřete znovu tuto žádost pro provedení sloučení.
|
pulls.reopen_to_merge=Otevřete znovu tuto žádost pro provedení sloučení.
|
||||||
pulls.cant_reopen_deleted_branch=Tuto žádost o sloučení nelze znovu otevřít, protože větev byla smazána.
|
pulls.cant_reopen_deleted_branch=Tuto žádost o sloučení nelze znovu otevřít, protože větev byla smazána.
|
||||||
|
@ -1866,7 +1872,7 @@ pulls.data_broken=Tato žádost o sloučení je rozbitá kvůli chybějícím in
|
||||||
pulls.files_conflicted=Tato žádost o sloučení obsahuje změny, které jsou v rozporu s cílovou větví.
|
pulls.files_conflicted=Tato žádost o sloučení obsahuje změny, které jsou v rozporu s cílovou větví.
|
||||||
pulls.is_checking=Právě probíhá kontrola konfliktů při sloučení. Zkuste to za chvíli.
|
pulls.is_checking=Právě probíhá kontrola konfliktů při sloučení. Zkuste to za chvíli.
|
||||||
pulls.is_ancestor=Tato větev je již součástí cílové větve. Není co sloučit.
|
pulls.is_ancestor=Tato větev je již součástí cílové větve. Není co sloučit.
|
||||||
pulls.is_empty=Změny na této větvi jsou již na cílové větvi. Toto bude prázdný commit.
|
pulls.is_empty=Změny na této větvi se již nacházejí na cílové větvi. Tato revize bude prázdná.
|
||||||
pulls.required_status_check_failed=Některé požadované kontroly nebyly úspěšné.
|
pulls.required_status_check_failed=Některé požadované kontroly nebyly úspěšné.
|
||||||
pulls.required_status_check_missing=Některé požadované kontroly chybí.
|
pulls.required_status_check_missing=Některé požadované kontroly chybí.
|
||||||
pulls.required_status_check_administrator=Jako administrátor stále můžete sloučit tuto žádost.
|
pulls.required_status_check_administrator=Jako administrátor stále můžete sloučit tuto žádost.
|
||||||
|
@ -1887,25 +1893,25 @@ pulls.reject_count_1=%d žádost o změnu
|
||||||
pulls.reject_count_n=%d žádostí o změnu
|
pulls.reject_count_n=%d žádostí o změnu
|
||||||
pulls.waiting_count_1=%d čekající posouzení
|
pulls.waiting_count_1=%d čekající posouzení
|
||||||
pulls.waiting_count_n=%d čekajících posouzení
|
pulls.waiting_count_n=%d čekajících posouzení
|
||||||
pulls.wrong_commit_id=id commitu musí být id commitu v cílové větvi
|
pulls.wrong_commit_id=id revize musí být id revize v cílové větvi
|
||||||
|
|
||||||
pulls.no_merge_desc=Tato žádost nemůže být sloučena, protože všechny možnosti repozitáře na sloučení jsou zakázány.
|
pulls.no_merge_desc=Tato žádost nemůže být sloučena, protože všechny možnosti repozitáře na sloučení jsou zakázány.
|
||||||
pulls.no_merge_helper=Povolte možnosti sloučení v nastavení repozitáře nebo proveďte sloučení žádosti ručně.
|
pulls.no_merge_helper=Povolte možnosti sloučení v nastavení repozitáře nebo proveďte sloučení žádosti ručně.
|
||||||
pulls.no_merge_wip=Tato žádost nemůže být sloučena, protože je označena jako rozpracovaná.
|
pulls.no_merge_wip=Tato žádost nemůže být sloučena, protože je označena jako rozpracovaná.
|
||||||
pulls.no_merge_not_ready=Tento žádost není připravena na sloučení, zkontrolujte stav posouzení a kontroly stavu.
|
pulls.no_merge_not_ready=Tento žádost není připravena na sloučení, zkontrolujte stav posouzení a kontroly stavu.
|
||||||
pulls.no_merge_access=Nemáte oprávnění sloučit tuto žádost.
|
pulls.no_merge_access=Nemáte oprávnění sloučit tuto žádost.
|
||||||
pulls.merge_pull_request=Vytvořit slučovací commit
|
pulls.merge_pull_request=Vytvořit slučovací revizi
|
||||||
pulls.rebase_merge_pull_request=Rebase pak fast-forward
|
pulls.rebase_merge_pull_request=Rebase pak fast-forward
|
||||||
pulls.rebase_merge_commit_pull_request=Rebase a poté vytvořit slučovací commit
|
pulls.rebase_merge_commit_pull_request=Provést rebase a poté vytvořit slučovací revizi
|
||||||
pulls.squash_merge_pull_request=Vytvořit squash commit
|
pulls.squash_merge_pull_request=Vytvořit squash revizi
|
||||||
pulls.merge_manually=Sloučeno ručně
|
pulls.merge_manually=Sloučeno ručně
|
||||||
pulls.merge_commit_id=ID slučovacího commitu
|
pulls.merge_commit_id=ID slučovací revize
|
||||||
pulls.require_signed_wont_sign=Větev vyžaduje podepsané commity, ale toto sloučení nebude podepsáno
|
pulls.require_signed_wont_sign=Větev vyžaduje podepsané revize, ale toto sloučení nebude podepsáno
|
||||||
|
|
||||||
pulls.invalid_merge_option=Pro tuto žádost nemůžete použít tuto možnost sloučení.
|
pulls.invalid_merge_option=Pro tuto žádost nemůžete použít tuto možnost sloučení.
|
||||||
pulls.merge_conflict=Sloučení selhalo: při slučování došlo ke konfliktu. Tip: zkuste jinou strategii
|
pulls.merge_conflict=Sloučení selhalo: při slučování došlo ke konfliktu. Tip: zkuste jinou strategii
|
||||||
pulls.merge_conflict_summary=Chybové hlášení
|
pulls.merge_conflict_summary=Chybové hlášení
|
||||||
pulls.rebase_conflict=Sloučení selhalo: došlo ke konfliktu při rebase commitu: %[1]s. Tip: zkuste jinou strategii
|
pulls.rebase_conflict=Sloučení selhalo: došlo ke konfliktu při provádění rebase revize %[1]s. Tip: zkuste jinou strategii
|
||||||
pulls.rebase_conflict_summary=Chybové hlášení
|
pulls.rebase_conflict_summary=Chybové hlášení
|
||||||
pulls.unrelated_histories=Sloučení selhalo: hlava a základ revize nesdílí společnou historii. Tip: zkuste jinou strategii
|
pulls.unrelated_histories=Sloučení selhalo: hlava a základ revize nesdílí společnou historii. Tip: zkuste jinou strategii
|
||||||
pulls.merge_out_of_date=Sloučení selhalo: základ byl aktualizován při generování sloučení. Tip: zkuste to znovu.
|
pulls.merge_out_of_date=Sloučení selhalo: základ byl aktualizován při generování sloučení. Tip: zkuste to znovu.
|
||||||
|
@ -1935,7 +1941,7 @@ pulls.reopened_at=`znovu otevřel/a tuto žádost o sloučení <a id="%[1]s" hre
|
||||||
pulls.cmd_instruction_hint=Zobrazit instrukce příkazové řádky
|
pulls.cmd_instruction_hint=Zobrazit instrukce příkazové řádky
|
||||||
pulls.cmd_instruction_checkout_desc=Z vašeho repositáře projektu se podívejte na novou větev a vyzkoušejte změny.
|
pulls.cmd_instruction_checkout_desc=Z vašeho repositáře projektu se podívejte na novou větev a vyzkoušejte změny.
|
||||||
pulls.cmd_instruction_merge_title=Sloučit
|
pulls.cmd_instruction_merge_title=Sloučit
|
||||||
pulls.cmd_instruction_merge_desc=Slučte změny a aktualizujte je na Gitea.
|
pulls.cmd_instruction_merge_desc=Slučte změny a aktualizujte je na Forgeju.
|
||||||
pulls.clear_merge_message=Vymazat zprávu o sloučení
|
pulls.clear_merge_message=Vymazat zprávu o sloučení
|
||||||
|
|
||||||
pulls.auto_merge_button_when_succeed=(Když kontroly uspějí)
|
pulls.auto_merge_button_when_succeed=(Když kontroly uspějí)
|
||||||
|
@ -1957,7 +1963,7 @@ pulls.delete.text=Opravdu chcete odstranit tuto žádost o sloučení? (Tímto t
|
||||||
pull.deleted_branch=(odstraněno):%s
|
pull.deleted_branch=(odstraněno):%s
|
||||||
|
|
||||||
milestones.new=Nový milník
|
milestones.new=Nový milník
|
||||||
milestones.closed=Zavřen dne %s
|
milestones.closed=Uzavřeno %s
|
||||||
milestones.update_ago=Aktualizováno %s
|
milestones.update_ago=Aktualizováno %s
|
||||||
milestones.no_due_date=Bez lhůty dokončení
|
milestones.no_due_date=Bez lhůty dokončení
|
||||||
milestones.open=Otevřít
|
milestones.open=Otevřít
|
||||||
|
@ -1986,15 +1992,15 @@ milestones.filter_sort.most_complete=Nejvíce dokončené
|
||||||
milestones.filter_sort.most_issues=Nejvíce problémů
|
milestones.filter_sort.most_issues=Nejvíce problémů
|
||||||
milestones.filter_sort.least_issues=Nejméně problémů
|
milestones.filter_sort.least_issues=Nejméně problémů
|
||||||
|
|
||||||
signing.will_sign=Tento commit bude podepsána klíčem „%s“.
|
signing.will_sign=Tato revize bude podepsána klíčem „%s“.
|
||||||
signing.wont_sign.error=Došlo k chybě při kontrole, zda může být commit podepsán.
|
signing.wont_sign.error=Došlo k chybě při kontrole, zda může být revize podepsána.
|
||||||
signing.wont_sign.nokey=Tato instance nemá žádný klíč k podepsání tohoto commitu.
|
signing.wont_sign.nokey=Tato instance nemá žádný klíč k podepsání této revize.
|
||||||
signing.wont_sign.never=Commity nejsou nikdy podepsány.
|
signing.wont_sign.never=Revize nebudou nikdy podepsány.
|
||||||
signing.wont_sign.always=Commity jsou vždy podepsány.
|
signing.wont_sign.always=Revize budou vždy podepsány.
|
||||||
signing.wont_sign.pubkey=Commit nebude podepsán, protože nemáte veřejný klíč spojený s vaším účtem.
|
signing.wont_sign.pubkey=Reviz nebude podepsána, protože nemáte veřejný klíč spojený s vaším účtem.
|
||||||
signing.wont_sign.twofa=Pro podepisování commitů musíte mít zapnuto dvoufázové ověření.
|
signing.wont_sign.twofa=Pro podepisování revizí musíte mít zapnuto dvoufázové ověření.
|
||||||
signing.wont_sign.parentsigned=Commit nebude podepsán, protože nadřazený commit není podepsán.
|
signing.wont_sign.parentsigned=Revize nebude podepsána, protože nadřazená revize není podepsána.
|
||||||
signing.wont_sign.basesigned=Sloučení nebude podepsáno, protože základní commit není podepsaný.
|
signing.wont_sign.basesigned=Revize nebude podepsána, protože základní revize není podepsána.
|
||||||
signing.wont_sign.headsigned=Sloučení nebude podepsáno, protože hlavní revize není podepsána.
|
signing.wont_sign.headsigned=Sloučení nebude podepsáno, protože hlavní revize není podepsána.
|
||||||
signing.wont_sign.commitssigned=Sloučení nebude podepsáno, protože všechny přidružené revize nejsou podepsány.
|
signing.wont_sign.commitssigned=Sloučení nebude podepsáno, protože všechny přidružené revize nejsou podepsány.
|
||||||
signing.wont_sign.approved=Sloučení nebude podepsáno, protože žádost o sloučení není schválena.
|
signing.wont_sign.approved=Sloučení nebude podepsáno, protože žádost o sloučení není schválena.
|
||||||
|
@ -2013,9 +2019,9 @@ wiki.filter_page=Filtr stránky
|
||||||
wiki.new_page=Stránka
|
wiki.new_page=Stránka
|
||||||
wiki.page_title=Název stránky
|
wiki.page_title=Název stránky
|
||||||
wiki.page_content=Obsah stránky
|
wiki.page_content=Obsah stránky
|
||||||
wiki.default_commit_message=Napište poznámku k této aktualizaci stránky (nepovinný).
|
wiki.default_commit_message=Napište poznámku k této aktualizaci stránky (nepovinné).
|
||||||
wiki.save_page=Uložit stránku
|
wiki.save_page=Uložit stránku
|
||||||
wiki.last_commit_info=%s upravil tuto stránku %s
|
wiki.last_commit_info=Uživatel %s upravil tuto stránku %s
|
||||||
wiki.edit_page_button=Změnit stránku
|
wiki.edit_page_button=Změnit stránku
|
||||||
wiki.new_page_button=Nová stránka
|
wiki.new_page_button=Nová stránka
|
||||||
wiki.file_revision=Revize stránky
|
wiki.file_revision=Revize stránky
|
||||||
|
@ -2074,14 +2080,14 @@ activity.title.releases_1=%d vydání
|
||||||
activity.title.releases_n=%d vydání
|
activity.title.releases_n=%d vydání
|
||||||
activity.title.releases_published_by=%s publikoval %s
|
activity.title.releases_published_by=%s publikoval %s
|
||||||
activity.published_release_label=Vydání
|
activity.published_release_label=Vydání
|
||||||
activity.no_git_activity=V tomto období nebyla žádná aktivita při odevzdání.
|
activity.no_git_activity=V tomto období nebyla žádná aktivita přispěvatelů.
|
||||||
activity.git_stats_exclude_merges=Při vyloučení slučování,
|
activity.git_stats_exclude_merges=Při vyloučení slučování,
|
||||||
activity.git_stats_author_1=%d autor
|
activity.git_stats_author_1=%d autor
|
||||||
activity.git_stats_author_n=%d autoři
|
activity.git_stats_author_n=%d autoři
|
||||||
activity.git_stats_pushed_1=nahrál
|
activity.git_stats_pushed_1=nahrál
|
||||||
activity.git_stats_pushed_n=nahrály
|
activity.git_stats_pushed_n=nahrály
|
||||||
activity.git_stats_commit_1=%d commit
|
activity.git_stats_commit_1=%d revize
|
||||||
activity.git_stats_commit_n=%d commity
|
activity.git_stats_commit_n=%d revizí
|
||||||
activity.git_stats_push_to_branch=do %s a
|
activity.git_stats_push_to_branch=do %s a
|
||||||
activity.git_stats_push_to_all_branches=do všech větví.
|
activity.git_stats_push_to_all_branches=do všech větví.
|
||||||
activity.git_stats_on_default_branch=Na %s,
|
activity.git_stats_on_default_branch=Na %s,
|
||||||
|
@ -2097,7 +2103,7 @@ activity.git_stats_deletion_1=%d odebrání
|
||||||
activity.git_stats_deletion_n=%d odebrání
|
activity.git_stats_deletion_n=%d odebrání
|
||||||
|
|
||||||
contributors.contribution_type.filter_label = Typ přispění:
|
contributors.contribution_type.filter_label = Typ přispění:
|
||||||
contributors.contribution_type.commits=Commity
|
contributors.contribution_type.commits=Revize
|
||||||
|
|
||||||
search=Vyhledat
|
search=Vyhledat
|
||||||
search.search_repo=Hledat repozitář
|
search.search_repo=Hledat repozitář
|
||||||
|
@ -2123,9 +2129,9 @@ settings.hooks=Webhooky
|
||||||
settings.githooks=Git hooky
|
settings.githooks=Git hooky
|
||||||
settings.basic_settings=Základní nastavení
|
settings.basic_settings=Základní nastavení
|
||||||
settings.mirror_settings=Nastavení zrcadel
|
settings.mirror_settings=Nastavení zrcadel
|
||||||
settings.mirror_settings.docs=Nastavte repozitář pro automatickou synchronizaci commitů, značek a větví s jiným repozitářem.
|
settings.mirror_settings.docs=Nastavte repozitář pro automatickou synchronizaci revizí, značek a větví s jiným repozitářem.
|
||||||
settings.mirror_settings.docs.disabled_pull_mirror.instructions=Nastavte váš projekt pro automatické nahrávání commitů, značek a větví do jiného repozitáře. Správce webu zakázal zrcadla pro natažení.
|
settings.mirror_settings.docs.disabled_pull_mirror.instructions=Nastavte váš projekt pro automatické nahrávání revizí, značek a větví do jiného repozitáře. Správce webu zakázal nahrávání ze zrcadel.
|
||||||
settings.mirror_settings.docs.disabled_push_mirror.instructions=Nastavte svůj projekt pro automatické natažení commitů, značek a větví z jiného repozitáře.
|
settings.mirror_settings.docs.disabled_push_mirror.instructions=Nastavte svůj projekt pro automatické nahrávání revizí, značek a větví z jiného repozitáře.
|
||||||
settings.mirror_settings.docs.no_new_mirrors=Váš repozitář zrcadlí změny do nebo z jiného repozitáře. Mějte prosím na paměti, že v tuto chvíli nemůžete vytvořit žádná nová zrcadla.
|
settings.mirror_settings.docs.no_new_mirrors=Váš repozitář zrcadlí změny do nebo z jiného repozitáře. Mějte prosím na paměti, že v tuto chvíli nemůžete vytvořit žádná nová zrcadla.
|
||||||
settings.mirror_settings.docs.can_still_use=I když nemůžete upravit stávající zrcadla nebo vytvořit nová, stále můžete použít své stávající zrcadlo.
|
settings.mirror_settings.docs.can_still_use=I když nemůžete upravit stávající zrcadla nebo vytvořit nová, stále můžete použít své stávající zrcadlo.
|
||||||
settings.mirror_settings.docs.more_information_if_disabled=Více informací o zrcadlech pro nahrání a natažení naleznete zde:
|
settings.mirror_settings.docs.more_information_if_disabled=Více informací o zrcadlech pro nahrání a natažení naleznete zde:
|
||||||
|
@ -2186,11 +2192,11 @@ settings.admin_settings=Administrátorská nastavení
|
||||||
settings.admin_enable_health_check=Povolit kontrolu stavu repozitáře (git fsck)
|
settings.admin_enable_health_check=Povolit kontrolu stavu repozitáře (git fsck)
|
||||||
settings.admin_code_indexer=Indexování kódu
|
settings.admin_code_indexer=Indexování kódu
|
||||||
settings.admin_stats_indexer=Index statistiky kódu
|
settings.admin_stats_indexer=Index statistiky kódu
|
||||||
settings.admin_indexer_commit_sha=Poslední indexovaný commit
|
settings.admin_indexer_commit_sha=Poslední indexovaná revize
|
||||||
settings.admin_indexer_unindexed=Neindexováno
|
settings.admin_indexer_unindexed=Neindexováno
|
||||||
settings.reindex_button=Přidat do fronty reindexace
|
settings.reindex_button=Přidat do fronty reindexace
|
||||||
settings.reindex_requested=Požadováno reindexování
|
settings.reindex_requested=Požadováno reindexování
|
||||||
settings.admin_enable_close_issues_via_commit_in_any_branch=Zavřít problém pomocí commitu v jiné než výchozí větvi
|
settings.admin_enable_close_issues_via_commit_in_any_branch=Zavřít problém pomocí revize provedené v jiné než výchozí větvi
|
||||||
settings.danger_zone=Nebezpečná zóna
|
settings.danger_zone=Nebezpečná zóna
|
||||||
settings.new_owner_has_same_repo=Nový vlastník již repozitář se stejným názvem má. Vyberte prosím jiné jméno.
|
settings.new_owner_has_same_repo=Nový vlastník již repozitář se stejným názvem má. Vyberte prosím jiné jméno.
|
||||||
settings.convert=Převést na běžný repozitář
|
settings.convert=Převést na běžný repozitář
|
||||||
|
@ -2227,11 +2233,11 @@ settings.trust_model.collaborator=Spolupracovník
|
||||||
settings.trust_model.collaborator.long=Spolupracovník: Důvěřovat podpisům spolupracovníků
|
settings.trust_model.collaborator.long=Spolupracovník: Důvěřovat podpisům spolupracovníků
|
||||||
settings.trust_model.collaborator.desc=Platné podpisy spolupracovníků tohoto repozitáře budou označeny jako „důvěryhodné“ - (ať se shodují s autorem, či nikoli). V opačném případě budou platné podpisy označeny jako „nedůvěryhodné“, pokud se podpis shoduje s přispěvatelem a „neodpovídající“, pokud ne.
|
settings.trust_model.collaborator.desc=Platné podpisy spolupracovníků tohoto repozitáře budou označeny jako „důvěryhodné“ - (ať se shodují s autorem, či nikoli). V opačném případě budou platné podpisy označeny jako „nedůvěryhodné“, pokud se podpis shoduje s přispěvatelem a „neodpovídající“, pokud ne.
|
||||||
settings.trust_model.committer=Přispěvatel
|
settings.trust_model.committer=Přispěvatel
|
||||||
settings.trust_model.committer.long=Přispěvatel: Důvěřovat podpisům, které odpovídají autorům (což odpovídá GitHub a přinutí Giteu nastavit jako tvůrce pro Giteou podepsané revize)
|
settings.trust_model.committer.long=Přispěvatel: Důvěřovat podpisům, které odpovídají autorům (což odpovídá GitHubu a přinutí Forgejo nastavit se jako autora pro Forgejem podepsané revize)
|
||||||
settings.trust_model.committer.desc=Platné podpisy budou označeny jako „důvěryhodné“ pouze, pokud se shodují s přispěvatelem, v opačném případě budou označeny jako „neodpovídající“. To přinutí Forgejo, aby bylo přispěvatelem podepsaných commitů se skutečným přispěvatelem označeným jako Co-authored-by: a Co-committed-by: na konci commitu. Výchozí klíč Forgejo musí odpovídat uživateli v databázi.
|
settings.trust_model.committer.desc=Platné podpisy budou označeny jako „důvěryhodné“ pouze, pokud se shodují s přispěvatelem, v opačném případě budou označeny jako „neodpovídající“. To přinutí Forgejo, aby bylo přispěvatelem podepsaných revizí se skutečným přispěvatelem označeným jako Co-authored-by: a Co-committed-by: na konci revize. Výchozí klíč Forgejo musí odpovídat uživateli v databázi.
|
||||||
settings.trust_model.collaboratorcommitter=Spolupracovník+Přispěvatel
|
settings.trust_model.collaboratorcommitter=Spolupracovník+Přispěvatel
|
||||||
settings.trust_model.collaboratorcommitter.long=Spolupracovník+Přispěvatel: Důvěřovat podpisům od spolupracovníků, které odpovídají tvůrci revize
|
settings.trust_model.collaboratorcommitter.long=Spolupracovník+Přispěvatel: Důvěřovat podpisům od spolupracovníků, které odpovídají tvůrci revize
|
||||||
settings.trust_model.collaboratorcommitter.desc=Platné podpisy spolupracovníků tohoto repozitáře budou označeny jako „důvěryhodné“, pokud se shodují s přispěvatelem. V opačném případě budou platné podpisy označeny jako "nedůvěryhodné", pokud se podpis shoduje s přispěvatelem a „neodpovídajícím“ v opačném případě. To přinutí Giteu, aby byla označena jako přispěvatel podepsaných commitů se skutečným přispěvatelem označeným jako Co-Authored-By: a Co-Committed-By: na konci commitu. Výchozí klíč Forgejo musí odpovídat uživateli v databázi.
|
settings.trust_model.collaboratorcommitter.desc=Platné podpisy spolupracovníků tohoto repozitáře budou označeny jako „důvěryhodné“, pokud se shodují s přispěvatelem. V opačném případě budou platné podpisy označeny jako "nedůvěryhodné", pokud se podpis shoduje s přispěvatelem a „neodpovídajícím“ v opačném případě. To přinutí Forgejo, aby bylo označeno jako autor podepsaných revizí se skutečným přispěvatelem označeným jako Co-Authored-By: a Co-Committed-By: na konci revize. Výchozí klíč Forgejo musí odpovídat uživateli v databázi.
|
||||||
settings.wiki_delete=Odstranit data wiki
|
settings.wiki_delete=Odstranit data wiki
|
||||||
settings.wiki_delete_desc=Smazání Wiki dat repozitáře je trvalé a nemůže být vráceno zpět.
|
settings.wiki_delete_desc=Smazání Wiki dat repozitáře je trvalé a nemůže být vráceno zpět.
|
||||||
settings.wiki_delete_notices_1=- Natrvalo odstraní a zakáže wiki repozitáře pro %s.
|
settings.wiki_delete_notices_1=- Natrvalo odstraní a zakáže wiki repozitáře pro %s.
|
||||||
|
@ -2395,7 +2401,7 @@ settings.deploy_key_deletion=Odstranit klíč pro nasazení
|
||||||
settings.deploy_key_deletion_desc=Odstranění klíče pro nasazení zruší jeho přístup k repozitáři. Pokračovat?
|
settings.deploy_key_deletion_desc=Odstranění klíče pro nasazení zruší jeho přístup k repozitáři. Pokračovat?
|
||||||
settings.deploy_key_deletion_success=Klíč pro nasazení byl odstraněn.
|
settings.deploy_key_deletion_success=Klíč pro nasazení byl odstraněn.
|
||||||
settings.branches=Větve
|
settings.branches=Větve
|
||||||
settings.protected_branch=Ochrana větve
|
settings.protected_branch=Ochrana větví
|
||||||
settings.protected_branch.save_rule=Uložit pravidlo
|
settings.protected_branch.save_rule=Uložit pravidlo
|
||||||
settings.protected_branch.delete_rule=Odstranit pravidlo
|
settings.protected_branch.delete_rule=Odstranit pravidlo
|
||||||
settings.protected_branch_can_push=Povolit nahrání?
|
settings.protected_branch_can_push=Povolit nahrání?
|
||||||
|
@ -2410,14 +2416,14 @@ settings.protect_enable_push=Povolit nahrávání
|
||||||
settings.protect_enable_push_desc=Každý, kdo má přístup k zápisu, bude moci nahrávat do této větve (ale ne vynucená nahrávání).
|
settings.protect_enable_push_desc=Každý, kdo má přístup k zápisu, bude moci nahrávat do této větve (ale ne vynucená nahrávání).
|
||||||
settings.protect_enable_merge=Povolit sloučení
|
settings.protect_enable_merge=Povolit sloučení
|
||||||
settings.protect_whitelist_committers=Povolit omezené nahrání
|
settings.protect_whitelist_committers=Povolit omezené nahrání
|
||||||
settings.protect_whitelist_committers_desc=Pouze povolení uživatelé budou moci nahrávat do této větve (ale ne vynucení nahrávání).
|
settings.protect_whitelist_committers_desc=Pouze povolení uživatelé budou moci nahrávat do této větve (ale ne vynutit nahrání).
|
||||||
settings.protect_whitelist_deploy_keys=Povolit nahrání klíčům pro nasazení s přístupem pro zápis.
|
settings.protect_whitelist_deploy_keys=Povolit nahrání klíčům pro nasazení s přístupem pro zápis.
|
||||||
settings.protect_whitelist_users=Povolení uživatelé pro nahrávání
|
settings.protect_whitelist_users=Povolení uživatelé pro nahrávání
|
||||||
settings.protect_whitelist_search_users=Hledat uživatele…
|
settings.protect_whitelist_search_users=Hledat uživatele…
|
||||||
settings.protect_whitelist_teams=Povolené týmy pro nahrávání
|
settings.protect_whitelist_teams=Povolené týmy pro nahrávání
|
||||||
settings.protect_whitelist_search_teams=Vyhledat týmy…
|
settings.protect_whitelist_search_teams=Vyhledat týmy…
|
||||||
settings.protect_merge_whitelist_committers=Povolit whitelist pro slučování
|
settings.protect_merge_whitelist_committers=Povolit whitelist pro slučování
|
||||||
settings.protect_merge_whitelist_committers_desc=Povolit pouze vyjmenovaným uživatelům nebo týmům slučovat požadavky na natažení do této větve.
|
settings.protect_merge_whitelist_committers_desc=Povolit slučování požadavků na sloučení do této větve pouze vyjmenovaným uživatelům nebo týmům.
|
||||||
settings.protect_merge_whitelist_users=Povolení uživatelé pro slučování
|
settings.protect_merge_whitelist_users=Povolení uživatelé pro slučování
|
||||||
settings.protect_merge_whitelist_teams=Povolené týmy pro slučování
|
settings.protect_merge_whitelist_teams=Povolené týmy pro slučování
|
||||||
settings.protect_check_status_contexts=Povolit kontrolu stavu
|
settings.protect_check_status_contexts=Povolit kontrolu stavu
|
||||||
|
@ -2435,8 +2441,8 @@ settings.protect_approvals_whitelist_users=Povolení posuzovatelé
|
||||||
settings.protect_approvals_whitelist_teams=Povolené týmy pro posuzování
|
settings.protect_approvals_whitelist_teams=Povolené týmy pro posuzování
|
||||||
settings.dismiss_stale_approvals=Odmítnout nekvalitní schválení
|
settings.dismiss_stale_approvals=Odmítnout nekvalitní schválení
|
||||||
settings.dismiss_stale_approvals_desc=Pokud budou do větve nahrány nové revize, které mění obsah tohoto požadavku na natažení, všechna stará schválení budou zamítnuta.
|
settings.dismiss_stale_approvals_desc=Pokud budou do větve nahrány nové revize, které mění obsah tohoto požadavku na natažení, všechna stará schválení budou zamítnuta.
|
||||||
settings.require_signed_commits=Vyžadovat podepsané commity
|
settings.require_signed_commits=Vyžadovat podepsané revize
|
||||||
settings.require_signed_commits_desc=Odmítnout nahrání do této větve pokud nejsou podepsaná nebo jsou neověřitelná.
|
settings.require_signed_commits_desc=Odmítnout nahrání do této větve, pokud nejsou podepsaná nebo jsou neověřitelná.
|
||||||
settings.protect_branch_name_pattern=Vzor jména chráněné větve
|
settings.protect_branch_name_pattern=Vzor jména chráněné větve
|
||||||
settings.protect_branch_name_pattern_desc=Vzory názvů chráněných větví. Pro vzorovou syntaxi viz <a href="%s">dokumentace</a>. Příklady: main, release/**
|
settings.protect_branch_name_pattern_desc=Vzory názvů chráněných větví. Pro vzorovou syntaxi viz <a href="%s">dokumentace</a>. Příklady: main, release/**
|
||||||
settings.protect_patterns=Vzory
|
settings.protect_patterns=Vzory
|
||||||
|
@ -2457,11 +2463,11 @@ settings.block_on_official_review_requests=Blokovat sloučení při oficiální
|
||||||
settings.block_on_official_review_requests_desc=Slučování nebude možné, pokud mají oficiální požadavek na posouzení, i když mají k dispozici dostatek schválení.
|
settings.block_on_official_review_requests_desc=Slučování nebude možné, pokud mají oficiální požadavek na posouzení, i když mají k dispozici dostatek schválení.
|
||||||
settings.block_outdated_branch=Blokovat sloučení, pokud je požadavek na natažení zastaralý
|
settings.block_outdated_branch=Blokovat sloučení, pokud je požadavek na natažení zastaralý
|
||||||
settings.block_outdated_branch_desc=Slučování nebude možné, pokud je hlavní větev za základní větví.
|
settings.block_outdated_branch_desc=Slučování nebude možné, pokud je hlavní větev za základní větví.
|
||||||
settings.default_branch_desc=Vybrat výchozí větev repozitáře pro požadavky na natažení a revize kódu:
|
settings.default_branch_desc=Vybrat výchozí větev repozitáře pro žádosti o sloučení a příspěvky kódu:
|
||||||
settings.merge_style_desc=Sloučit styly
|
settings.merge_style_desc=Sloučit styly
|
||||||
settings.default_merge_style_desc=Výchozí styl sloučení
|
settings.default_merge_style_desc=Výchozí styl sloučení
|
||||||
settings.choose_branch=Vyberte větev…
|
settings.choose_branch=Vyberte větev…
|
||||||
settings.no_protected_branch=Nejsou tu žádné chráněné větve.
|
settings.no_protected_branch=Nemáte žádné chráněné větve.
|
||||||
settings.edit_protected_branch=Upravit
|
settings.edit_protected_branch=Upravit
|
||||||
settings.protected_branch_required_rule_name=Požadovaný název pravidla
|
settings.protected_branch_required_rule_name=Požadovaný název pravidla
|
||||||
settings.protected_branch_duplicate_rule_name=Již existuje pravidlo pro tuto sadu větví
|
settings.protected_branch_duplicate_rule_name=Již existuje pravidlo pro tuto sadu větví
|
||||||
|
@ -2484,7 +2490,7 @@ settings.matrix.room_id=ID místnosti
|
||||||
settings.matrix.message_type=Typ zprávy
|
settings.matrix.message_type=Typ zprávy
|
||||||
settings.archive.button=Archivovat repozitář
|
settings.archive.button=Archivovat repozitář
|
||||||
settings.archive.header=Archivovat tento repozitář
|
settings.archive.header=Archivovat tento repozitář
|
||||||
settings.archive.text = Archivováním repozitáře jej celý převedete do stavu pouze pro čtení. Bude skryt z nástěnky. Nikdo (ani vy!) nebude moci vytvářet nové commity ani otevírat problémy a žádosti o sloučení.
|
settings.archive.text = Archivováním repozitáře jej celý převedete do stavu pouze pro čtení. Bude skryt z nástěnky. Nikdo (ani vy!) nebude moci vytvářet nové revize ani otevírat problémy a žádosti o sloučení.
|
||||||
settings.archive.success=Repozitář byl úspěšně archivován.
|
settings.archive.success=Repozitář byl úspěšně archivován.
|
||||||
settings.archive.error=Nastala chyba při archivování repozitáře. Prohlédněte si záznam pro více detailů.
|
settings.archive.error=Nastala chyba při archivování repozitáře. Prohlédněte si záznam pro více detailů.
|
||||||
settings.archive.error_ismirror=Nemůžete archivovat zrcadlený repozitář.
|
settings.archive.error_ismirror=Nemůžete archivovat zrcadlený repozitář.
|
||||||
|
@ -2492,7 +2498,7 @@ settings.archive.branchsettings_unavailable=Nastavení větví není v archivova
|
||||||
settings.archive.tagsettings_unavailable=Nastavení značek nejsou v archivovaných repozitářích k dispozici.
|
settings.archive.tagsettings_unavailable=Nastavení značek nejsou v archivovaných repozitářích k dispozici.
|
||||||
settings.unarchive.button=Zrušit archivaci repozitáře
|
settings.unarchive.button=Zrušit archivaci repozitáře
|
||||||
settings.unarchive.header=Obnovit tento repozitář
|
settings.unarchive.header=Obnovit tento repozitář
|
||||||
settings.unarchive.text=Obnovení repozitáře vrátí možnost přijímání commitů a nahrávání. Stejně tak se obnoví i možnost vytváření nových problémů a žádostí o sloučení.
|
settings.unarchive.text=Obnovení repozitáře vrátí možnost přijímání revizí a nahrávání. Stejně tak se obnoví i možnost vytváření nových problémů a žádostí o sloučení.
|
||||||
settings.unarchive.success=Repozitář byl úspěšně obnoven.
|
settings.unarchive.success=Repozitář byl úspěšně obnoven.
|
||||||
settings.unarchive.error=Nastala chyba při obnovování repozitáře. Prohlédněte si záznam pro více detailů.
|
settings.unarchive.error=Nastala chyba při obnovování repozitáře. Prohlédněte si záznam pro více detailů.
|
||||||
settings.update_avatar_success=Avatar repozitáře byl aktualizován.
|
settings.update_avatar_success=Avatar repozitáře byl aktualizován.
|
||||||
|
@ -2500,7 +2506,7 @@ settings.lfs=LFS
|
||||||
settings.lfs_filelist=LFS soubory uložené v tomto repozitáři
|
settings.lfs_filelist=LFS soubory uložené v tomto repozitáři
|
||||||
settings.lfs_no_lfs_files=V tomto repozitáři nejsou uloženy žádné LFS soubory
|
settings.lfs_no_lfs_files=V tomto repozitáři nejsou uloženy žádné LFS soubory
|
||||||
settings.lfs_findcommits=Najít revize
|
settings.lfs_findcommits=Najít revize
|
||||||
settings.lfs_lfs_file_no_commits=Pro tento soubor LFS nebyly nalezeny žádné commity
|
settings.lfs_lfs_file_no_commits=Pro tento soubor LFS nebyly nalezeny žádné revize
|
||||||
settings.lfs_noattribute=Tato cesta nemá uzamykatelný atribut ve výchozí větvi
|
settings.lfs_noattribute=Tato cesta nemá uzamykatelný atribut ve výchozí větvi
|
||||||
settings.lfs_delete=Odstranit LFS soubor s OID %s
|
settings.lfs_delete=Odstranit LFS soubor s OID %s
|
||||||
settings.lfs_delete_warning=Odstranění souboru LFS může při kontrole způsobit chybu „objekt neexistuje“. Jste si jisti?
|
settings.lfs_delete_warning=Odstranění souboru LFS může při kontrole způsobit chybu „objekt neexistuje“. Jste si jisti?
|
||||||
|
@ -2576,7 +2582,7 @@ diff.review.approve=Schválit
|
||||||
diff.review.self_reject=Autoři požadavků na natažení nemohou požadovat změny na svém vlastním požadavku na natažení
|
diff.review.self_reject=Autoři požadavků na natažení nemohou požadovat změny na svém vlastním požadavku na natažení
|
||||||
diff.review.reject=Požadovat změny
|
diff.review.reject=Požadovat změny
|
||||||
diff.review.self_approve=Autoři požadavku na natažení nemohou schválit svůj vlastní požadavek na natažení
|
diff.review.self_approve=Autoři požadavku na natažení nemohou schválit svůj vlastní požadavek na natažení
|
||||||
diff.committed_by=odevzdal
|
diff.committed_by=autor:
|
||||||
diff.protected=Chráněno
|
diff.protected=Chráněno
|
||||||
diff.image.side_by_side=Vedle sebe
|
diff.image.side_by_side=Vedle sebe
|
||||||
diff.image.swipe=Posunout
|
diff.image.swipe=Posunout
|
||||||
|
@ -2618,7 +2624,7 @@ release.edit_release=Aktualizovat vydání
|
||||||
release.delete_release=Smazat vydání
|
release.delete_release=Smazat vydání
|
||||||
release.delete_tag=Smazat značku
|
release.delete_tag=Smazat značku
|
||||||
release.deletion=Smazat vydání
|
release.deletion=Smazat vydání
|
||||||
release.deletion_desc=Smazání vydání jej pouze odebere z Gitea. Nebude to mít vliv na značku Git, obsah vašeho repozitáře nebo jeho historii. Pokračovat?
|
release.deletion_desc=Smazáním vydání jej pouze odeberete z Forgeja. Nebude to mít vliv na značku Gitu, obsah vašeho repozitáře nebo jeho historii. Pokračovat?
|
||||||
release.deletion_success=Vydání bylo odstraněno.
|
release.deletion_success=Vydání bylo odstraněno.
|
||||||
release.deletion_tag_desc=Odstraní tuto značku z repozitáře. Obsah repozitáře a historie zůstanou nezměněny. Pokračovat?
|
release.deletion_tag_desc=Odstraní tuto značku z repozitáře. Obsah repozitáře a historie zůstanou nezměněny. Pokračovat?
|
||||||
release.deletion_tag_success=Značka byla odstraněna.
|
release.deletion_tag_success=Značka byla odstraněna.
|
||||||
|
@ -2641,7 +2647,7 @@ branch.delete_html=Odstranit větev
|
||||||
branch.delete_desc=Smazání větve je trvalé. Přestože zrušená větev může existovat i po krátkou dobu, než bude skutečně odstraněna, NELZE ji většinou vrátit. Pokračovat?
|
branch.delete_desc=Smazání větve je trvalé. Přestože zrušená větev může existovat i po krátkou dobu, než bude skutečně odstraněna, NELZE ji většinou vrátit. Pokračovat?
|
||||||
branch.deletion_success=Větev „%s“ byla smazána.
|
branch.deletion_success=Větev „%s“ byla smazána.
|
||||||
branch.deletion_failed=Nepodařilo se odstranit větev „%s“.
|
branch.deletion_failed=Nepodařilo se odstranit větev „%s“.
|
||||||
branch.delete_branch_has_new_commits=Větev „%s“ nemůže být smazána, protože byly přidány nové commity po sloučení.
|
branch.delete_branch_has_new_commits=Větev „%s“ nelze odstranit, protože byly po sloučení přidány nové revize.
|
||||||
branch.create_branch=Vytvořit větev %s
|
branch.create_branch=Vytvořit větev %s
|
||||||
branch.create_from=z „%s“
|
branch.create_from=z „%s“
|
||||||
branch.create_success=Větev „%s“ byla vytvořena.
|
branch.create_success=Větev „%s“ byla vytvořena.
|
||||||
|
@ -2708,12 +2714,12 @@ mirror_sync = synchronizováno
|
||||||
blame.ignore_revs = Ignorování revizí v souboru <a href="%s">.git-blame-ignore-revs</a>. Klikněte <a href="%s">sem pro udělení výjimky</a> a zobrazení normálního přehledu blame.
|
blame.ignore_revs = Ignorování revizí v souboru <a href="%s">.git-blame-ignore-revs</a>. Klikněte <a href="%s">sem pro udělení výjimky</a> a zobrazení normálního přehledu blame.
|
||||||
commits.browse_further = Procházet dále
|
commits.browse_further = Procházet dále
|
||||||
issues.role.first_time_contributor = První přispěvatel
|
issues.role.first_time_contributor = První přispěvatel
|
||||||
editor.invalid_commit_mail = Neplatný e-mail pro vytvoření commitu.
|
editor.invalid_commit_mail = Neplatný e-mail pro vytvoření revize.
|
||||||
commits.renamed_from = Přejmenováno z %s
|
commits.renamed_from = Přejmenováno z %s
|
||||||
activity.navbar.recent_commits = Nedávné commity
|
activity.navbar.recent_commits = Nedávné revize
|
||||||
settings.units.units = Jednotky
|
settings.units.units = Jednotky
|
||||||
pulls.blocked_by_user = V tomto repozitáři nemůžete vytvořit žádost o sloučení, protože jste byli zablokováni jeho majitelem.
|
pulls.blocked_by_user = V tomto repozitáři nemůžete vytvořit žádost o sloučení, protože jste byli zablokováni jeho majitelem.
|
||||||
pulls.clear_merge_message_hint = Vymazáním zprávy o sloučení pouze odstraníte obsah zprávy commitu a ponecháte vygenerované git trailery, jako „Co-Authored-By …“.
|
pulls.clear_merge_message_hint = Vymazáním zprávy o sloučení pouze odstraníte obsah zprávy revize a ponecháte vygenerované git trailery, jako „Co-Authored-By …“.
|
||||||
pulls.agit_explanation = Vytvořeno pomocí workflow AGit. AGit umožňuje přispěvatelům navrhovat změny pomocí „git push“ bez vytváření forku nebo nové větve.
|
pulls.agit_explanation = Vytvořeno pomocí workflow AGit. AGit umožňuje přispěvatelům navrhovat změny pomocí „git push“ bez vytváření forku nebo nové větve.
|
||||||
contributors.contribution_type.deletions = Odstranění
|
contributors.contribution_type.deletions = Odstranění
|
||||||
settings.pull_mirror_sync_in_progress = Probíhá načítání změn ze vzdáleného %s.
|
settings.pull_mirror_sync_in_progress = Probíhá načítání změn ze vzdáleného %s.
|
||||||
|
@ -2722,7 +2728,7 @@ settings.mirror_settings.docs.disabled_push_mirror.pull_mirror_warning = Tuto ak
|
||||||
settings.new_owner_blocked_doer = Nový majitel vás zablokoval.
|
settings.new_owner_blocked_doer = Nový majitel vás zablokoval.
|
||||||
settings.mirror_settings.pushed_repository = Odeslaný repozitář
|
settings.mirror_settings.pushed_repository = Odeslaný repozitář
|
||||||
settings.add_collaborator_blocked_our = Nepodařilo se přidat spolupracovníka, jelikož byl zablokován majitelem repozitáře.
|
settings.add_collaborator_blocked_our = Nepodařilo se přidat spolupracovníka, jelikož byl zablokován majitelem repozitáře.
|
||||||
pulls.commit_ref_at = `se odkázal na tuto žádost o sloučení z commitu <a id="%[1]s" href="#%[1]s">%[2]s</a>`
|
pulls.commit_ref_at = `se odkázal/a na tuto žádost o sloučení z revize <a id="%[1]s" href="#%[1]s">%[2]s</a>`
|
||||||
settings.wiki_rename_branch_main = Normalizovat název větve Wiki
|
settings.wiki_rename_branch_main = Normalizovat název větve Wiki
|
||||||
settings.wiki_rename_branch_main_desc = Přejmenovat větev interně používanou pro Wiki na „%s“. Tato změna je trvalá a nelze ji vrátit.
|
settings.wiki_rename_branch_main_desc = Přejmenovat větev interně používanou pro Wiki na „%s“. Tato změna je trvalá a nelze ji vrátit.
|
||||||
pulls.fast_forward_only_merge_pull_request = Pouze zrychlené
|
pulls.fast_forward_only_merge_pull_request = Pouze zrychlené
|
||||||
|
@ -2746,24 +2752,24 @@ settings.add_collaborator_blocked_them = Nepodařilo se přidat spolupracovníka
|
||||||
settings.ignore_stale_approvals = Ignorovat zastaralá schválení
|
settings.ignore_stale_approvals = Ignorovat zastaralá schválení
|
||||||
settings.event_pull_request_merge = Sloučení žádosti o sloučení
|
settings.event_pull_request_merge = Sloučení žádosti o sloučení
|
||||||
settings.event_pull_request_approvals = Schválení žádostí o sloučení
|
settings.event_pull_request_approvals = Schválení žádostí o sloučení
|
||||||
settings.ignore_stale_approvals_desc = Nepočítat schválení udělená u starších commitů (zastaralá schválení) do celkového počtu schválení u ŽS. Není relevantní, pokud byla zastaralá schválení již zrušena.
|
settings.ignore_stale_approvals_desc = Nepočítat schválení udělená u starších revizí (zastaralá schválení) do celkového počtu schválení u žádosti o sloučení. Není relevantní, pokud byla zastaralá schválení již zrušena.
|
||||||
file_follow = Následovat symbolický odkaz
|
file_follow = Následovat symbolický odkaz
|
||||||
settings.protect_status_check_patterns_desc = Zadejte vzorce pro upřesnění kontrol, které musí projít před sloučením větví do větve, která se shoduje s tímto pravidlem. Na každý řádek zadejte jeden vzorec. Vzorce nesmí být prázdné.
|
settings.protect_status_check_patterns_desc = Zadejte vzorce pro upřesnění kontrol, které musí projít před sloučením větví do větve, která se shoduje s tímto pravidlem. Na každý řádek zadejte jeden vzorec. Vzorce nesmí být prázdné.
|
||||||
settings.archive.mirrors_unavailable = Zrcadla nejsou v archivovaných repozitářích k dispozici.
|
settings.archive.mirrors_unavailable = Zrcadla nejsou v archivovaných repozitářích k dispozici.
|
||||||
settings.protect_enable_merge_desc = Kdokoli s přístupem k zápisu bude moci slučovat žádosti o sloučení do této větve.
|
settings.protect_enable_merge_desc = Kdokoli s přístupem k zápisu bude moci slučovat žádosti o sloučení do této větve.
|
||||||
settings.event_pull_request_review_request_desc = Bylo požádáno o posouzení žádosti o sloučení nebo bylo toto požádání odstraněno.
|
settings.event_pull_request_review_request_desc = Bylo požádáno o posouzení žádosti o sloučení nebo bylo toto požádání odstraněno.
|
||||||
error.broken_git_hook = Zdá se, že u tohoto repozitáře jsou rozbité Git hooks. Pro jejich opravení se prosím řiďte pokyny v <a target="_blank" rel="noreferrer" href="%s">dokumentaci</a> a poté odešlete několik commitů pro obnovení stavu.
|
error.broken_git_hook = Zdá se, že u tohoto repozitáře jsou rozbité Git webhooky. Pro jejich opravení se prosím řiďte pokyny v <a target="_blank" rel="noreferrer" href="%s">dokumentaci</a> a poté odešlete pár revizí pro obnovení stavu.
|
||||||
pulls.title_desc_one = žádá o sloučení %[1]d commitu z <code>%[2]s</code> do <code id="%[4]s">%[3]s</code>
|
pulls.title_desc_one = žádá o sloučení %[1]d commitu z <code>%[2]s</code> do <code id="%[4]s">%[3]s</code>
|
||||||
pulls.merged_title_desc_one = sloučil %[1]d commit z <code>%[2]s</code> do <code>%[3]s</code> %[4]s
|
pulls.merged_title_desc_one = sloučil %[1]d commit z <code>%[2]s</code> do <code>%[3]s</code> %[4]s
|
||||||
open_with_editor = Otevřít pomocí %s
|
open_with_editor = Otevřít pomocí %s
|
||||||
commits.search_branch = Tato větev
|
commits.search_branch = Tato větev
|
||||||
editor.commit_id_not_matching = Tento soubor se během úpravy změnil. Proveďte commit do nové větve a poté je slučte.
|
editor.commit_id_not_matching = Tento soubor se během úpravy změnil. Odešlete změny do nové větve a poté je slučte.
|
||||||
pulls.ready_for_review = Připraveni na posouzení?
|
pulls.ready_for_review = Připraveni na posouzení?
|
||||||
settings.rename_branch_failed_protected = Nepodařilo se přejmenovat větev %s, jelikož se jedná o chráněnou větev.
|
settings.rename_branch_failed_protected = Nepodařilo se přejmenovat větev %s, jelikož se jedná o chráněnou větev.
|
||||||
editor.push_out_of_date = Push je nejspíše zastaralý.
|
editor.push_out_of_date = Push je nejspíše zastaralý.
|
||||||
stars = Oblíbení
|
stars = Oblíbení
|
||||||
n_commit_one = %s commit
|
n_commit_one = %s revize
|
||||||
n_commit_few = %s commitů
|
n_commit_few = %s revizí
|
||||||
n_branch_one = %s větev
|
n_branch_one = %s větev
|
||||||
n_tag_one = %s značka
|
n_tag_one = %s značka
|
||||||
n_tag_few = %s značek
|
n_tag_few = %s značek
|
||||||
|
@ -2809,7 +2815,7 @@ subscribe.issue.guest.tooltip = Přihlaste se pro odebírání tohoto problému.
|
||||||
subscribe.pull.guest.tooltip = Přihlaste se pro odebírání této žádosti o sloučení.
|
subscribe.pull.guest.tooltip = Přihlaste se pro odebírání této žádosti o sloučení.
|
||||||
issues.author.tooltip.pr = Tento uživatel je autorem této žádosti o sloučení.
|
issues.author.tooltip.pr = Tento uživatel je autorem této žádosti o sloučení.
|
||||||
issues.author.tooltip.issue = Tento uživatel je autorem tohoto problému.
|
issues.author.tooltip.issue = Tento uživatel je autorem tohoto problému.
|
||||||
activity.commit = Aktivita commitů
|
activity.commit = Aktivita revizí
|
||||||
milestones.filter_sort.name = Název
|
milestones.filter_sort.name = Název
|
||||||
release.type_attachment = Příloha
|
release.type_attachment = Příloha
|
||||||
release.type_external_asset = Externí příloha
|
release.type_external_asset = Externí příloha
|
||||||
|
@ -2849,13 +2855,30 @@ issues.num_reviews_one = %d kontrola
|
||||||
issues.num_reviews_few = %d kontrol
|
issues.num_reviews_few = %d kontrol
|
||||||
issues.summary_card_alt = Souhrn problému s názvem „%s“ v repozitáři %s
|
issues.summary_card_alt = Souhrn problému s názvem „%s“ v repozitáři %s
|
||||||
editor.add_tmpl.filename = nazevsouboru
|
editor.add_tmpl.filename = nazevsouboru
|
||||||
|
settings.default_update_style_desc = Výchozí způsob aktualizací používaný pro aktualizace žádostí o sloučení, které jsou pozadu oproti základní větvi.
|
||||||
|
pulls.sign_in_require = <a href="%s">Přihlaste se</a> pro vytvoření nové žádosti o sloučení.
|
||||||
|
new_from_template = Použít šablonu
|
||||||
|
new_from_template_description = Můžete si vybrat existující šablonu repozitáře na této instanci a použít její nastavení.
|
||||||
|
new_advanced = Pokročilá nastavení
|
||||||
|
new_advanced_expand = Klikněte pro rozbalení
|
||||||
|
auto_init_description = Vytvořit historii Gitu se souborem README a volitelně přidat soubory License a .gitignore.
|
||||||
|
summary_card_alt = Karta se souhrnem repozitáře %s
|
||||||
|
issues.reaction.alt_many = Uživatel %[1]s a %[2]d dalších zareagovali s %[3]s.
|
||||||
|
release.summary_card_alt = Karta souhrnu vydání s názvem „%s“ v repozitáři %s
|
||||||
|
issues.reaction.add = Přidat reakci
|
||||||
|
issues.reaction.alt_few = Uživatel %[1]s zareagoval pomocí %[2]s.
|
||||||
|
issues.context.menu = Nabídka komentáře
|
||||||
|
issues.reaction.alt_remove = Odstranit %[1]s reakci z komentáře.
|
||||||
|
issues.reaction.alt_add = Přidat %[1]s reakci na komentář.
|
||||||
|
|
||||||
|
editor.commit_email = E-mail revize
|
||||||
|
|
||||||
[graphs]
|
[graphs]
|
||||||
component_loading_info = Tohle může chvíli trvat…
|
component_loading_info = Tohle může chvíli trvat…
|
||||||
component_failed_to_load = Došlo k neočekávané chybě.
|
component_failed_to_load = Došlo k neočekávané chybě.
|
||||||
code_frequency.what = frekvence kódu
|
code_frequency.what = frekvence kódu
|
||||||
contributors.what = příspěvky
|
contributors.what = příspěvky
|
||||||
recent_commits.what = nedávné commity
|
recent_commits.what = nedávné revize
|
||||||
component_loading = Načítání %s...
|
component_loading = Načítání %s...
|
||||||
component_loading_failed = Nepodařilo se načíst %s
|
component_loading_failed = Nepodařilo se načíst %s
|
||||||
|
|
||||||
|
@ -3003,7 +3026,7 @@ last_page=Poslední
|
||||||
total=Celkem: %d
|
total=Celkem: %d
|
||||||
settings=Nastavení správce
|
settings=Nastavení správce
|
||||||
|
|
||||||
dashboard.new_version_hint=Gitea %s je nyní k dispozici, právě u vás běži %s. Podívej se na <a target="_blank" rel="noreferrer" href="%s">blogu</a> pro více informací.
|
dashboard.new_version_hint=Forgejo %s je nyní k dispozici, aktuálně používáte verzi %s. Pro více informací viz <a target="_blank" rel="noreferrer" href="%s">blog</a>.
|
||||||
dashboard.statistic=Souhrn
|
dashboard.statistic=Souhrn
|
||||||
dashboard.operations=Operace údržby
|
dashboard.operations=Operace údržby
|
||||||
dashboard.system_status=Stav systému
|
dashboard.system_status=Stav systému
|
||||||
|
@ -3516,7 +3539,7 @@ self_check.database_collation_mismatch=Očekávejte, že databáze použije coll
|
||||||
self_check.database_inconsistent_collation_columns=Databáze používá collation %s, ale tyto sloupce používají chybné collation. To může způsobit neočekávané problémy.
|
self_check.database_inconsistent_collation_columns=Databáze používá collation %s, ale tyto sloupce používají chybné collation. To může způsobit neočekávané problémy.
|
||||||
self_check.database_fix_mysql=Pro uživatele MySQL/MariaDB můžete použít příkaz „forgejo doctor convert“, který opraví problémy s porovnáním. Problém také můžete ručně vyřešit příkazem „ALTER ... COLLATE ...“ SQL.
|
self_check.database_fix_mysql=Pro uživatele MySQL/MariaDB můžete použít příkaz „forgejo doctor convert“, který opraví problémy s porovnáním. Problém také můžete ručně vyřešit příkazem „ALTER ... COLLATE ...“ SQL.
|
||||||
self_check = Vlastní kontrola
|
self_check = Vlastní kontrola
|
||||||
self_check.database_collation_case_insensitive=Databáze používá collation %s, což je collation nerozlišující velká a malá písmena. Ačkoli s ní Gitea může pracovat, mohou se vyskytnout vzácné případy, kdy nebude fungovat podle očekávání.
|
self_check.database_collation_case_insensitive=Databáze používá collation %s, což je collation nerozlišující velká a malá písmena. Ačkoli s ní Forgejo může pracovat, mohou se vyskytnout vzácné případy, kdy nebude fungovat podle očekávání.
|
||||||
auths.oauth2_map_group_to_team = Zmapovat zabrané skupiny u týmů organizací (volitelné - vyžaduje název claimu výše)
|
auths.oauth2_map_group_to_team = Zmapovat zabrané skupiny u týmů organizací (volitelné - vyžaduje název claimu výše)
|
||||||
monitor.queue.settings.desc = Pooly dynamicky rostou podle blokování fronty jejich workerů.
|
monitor.queue.settings.desc = Pooly dynamicky rostou podle blokování fronty jejich workerů.
|
||||||
|
|
||||||
|
@ -3563,7 +3586,7 @@ delete_branch=smazal/a větev %[2]s z <a href="%[1]s">%[3]s</a>
|
||||||
compare_branch=Porovnat
|
compare_branch=Porovnat
|
||||||
compare_commits=Porovnat %d revizí
|
compare_commits=Porovnat %d revizí
|
||||||
compare_commits_general=Porovnat revize
|
compare_commits_general=Porovnat revize
|
||||||
mirror_sync_push=synchronizoval/a commity do <a href="%[2]s">%[3]s</a> v <a href="%[1]s">%[4]s</a> ze zrcadla
|
mirror_sync_push=synchronizoval/a revize do <a href="%[2]s">%[3]s</a> v <a href="%[1]s">%[4]s</a> ze zrcadla
|
||||||
mirror_sync_create=synchronizoval/a novou referenci <a href="%[2]s">%[3]s</a> do <a href="%[1]s">%[4]s</a> ze zrcadla
|
mirror_sync_create=synchronizoval/a novou referenci <a href="%[2]s">%[3]s</a> do <a href="%[1]s">%[4]s</a> ze zrcadla
|
||||||
mirror_sync_delete=synchronizoval/a a smazal/a referenci <code>%[2]s</code> v <a href="%[1]s">%[3]s</a> ze zrcadla
|
mirror_sync_delete=synchronizoval/a a smazal/a referenci <code>%[2]s</code> v <a href="%[1]s">%[3]s</a> ze zrcadla
|
||||||
approve_pull_request=`schválil/a <a href="%[1]s">%[3]s#%[2]s</a>`
|
approve_pull_request=`schválil/a <a href="%[1]s">%[3]s#%[2]s</a>`
|
||||||
|
@ -3618,13 +3641,13 @@ no_subscriptions=Žádné odběry
|
||||||
[gpg]
|
[gpg]
|
||||||
default_key=Podepsáno výchozím klíčem
|
default_key=Podepsáno výchozím klíčem
|
||||||
error.extract_sign=Selhalo získání podpisu
|
error.extract_sign=Selhalo získání podpisu
|
||||||
error.generate_hash=Selhalo vygenerování hash revize
|
error.generate_hash=Selhalo vygenerování hashe revize
|
||||||
error.no_committer_account=Žádný účet není propojen s e-mailovou adresou přispěvatele
|
error.no_committer_account=Žádný účet není propojen s e-mailovou adresou přispěvatele
|
||||||
error.no_gpg_keys_found=V databázi nebyl nalezen žádný známý klíč pro tento podpis
|
error.no_gpg_keys_found=V databázi nebyl nalezen žádný známý klíč pro tento podpis
|
||||||
error.not_signed_commit=Nepodepsaný commit
|
error.not_signed_commit=Nepodepsaná revize
|
||||||
error.failed_retrieval_gpg_keys=Nepodařilo se získat žádný klíč propojený s účtem přispěvatele
|
error.failed_retrieval_gpg_keys=Nepodařilo se získat žádný klíč propojený s účtem přispěvatele
|
||||||
error.probable_bad_signature=VAROVÁNÍ! Přestože v databázi existuje klíč s tímto ID, tento commit neověřuje! Tento commit je PODEZŘELÝ.
|
error.probable_bad_signature=VAROVÁNÍ! Přestože v databázi existuje klíč s tímto ID, tato revize jím není ověřena! Tato revize je PODEZŘELÁ.
|
||||||
error.probable_bad_default_signature=VAROVÁNÍ! Ačkoli výchozí klíč má toto ID, neověřuje tento commit! Tento commit je PODEZŘELÝ.
|
error.probable_bad_default_signature=VAROVÁNÍ! Přestože má výchozí klíč toto ID, tato revize jím není ověřena! Tato revize je PODEZŘELÁ.
|
||||||
|
|
||||||
[units]
|
[units]
|
||||||
unit=Jednotka
|
unit=Jednotka
|
||||||
|
@ -3846,7 +3869,7 @@ runners.task_list.no_tasks=Zatím zde nejsou žádné úlohy.
|
||||||
runners.task_list.run=Spustit
|
runners.task_list.run=Spustit
|
||||||
runners.task_list.status=Status
|
runners.task_list.status=Status
|
||||||
runners.task_list.repository=Repozitář
|
runners.task_list.repository=Repozitář
|
||||||
runners.task_list.commit=Commit
|
runners.task_list.commit=Revize
|
||||||
runners.task_list.done_at=Dokončeno v
|
runners.task_list.done_at=Dokončeno v
|
||||||
runners.edit_runner=Upravit Runner
|
runners.edit_runner=Upravit Runner
|
||||||
runners.update_runner=Aktualizovat změny
|
runners.update_runner=Aktualizovat změny
|
||||||
|
@ -3866,7 +3889,7 @@ runners.reset_registration_token=Resetovat registrační token
|
||||||
runners.reset_registration_token_success=Registrační token runneru byl úspěšně obnoven
|
runners.reset_registration_token_success=Registrační token runneru byl úspěšně obnoven
|
||||||
|
|
||||||
runs.all_workflows=Všechny workflowy
|
runs.all_workflows=Všechny workflowy
|
||||||
runs.commit=Commit
|
runs.commit=Revize
|
||||||
runs.scheduled=Naplánováno
|
runs.scheduled=Naplánováno
|
||||||
runs.invalid_workflow_helper=Konfigurační soubor pracovního postupu je neplatný. Zkontrolujte prosím konfigurační soubor: %s
|
runs.invalid_workflow_helper=Konfigurační soubor pracovního postupu je neplatný. Zkontrolujte prosím konfigurační soubor: %s
|
||||||
runs.no_matching_online_runner_helper=Žádný odpovídající online runner s popiskem: %s
|
runs.no_matching_online_runner_helper=Žádný odpovídající online runner s popiskem: %s
|
||||||
|
@ -3879,7 +3902,7 @@ runs.no_workflows=Zatím neexistují žádné pracovní postupy.
|
||||||
runs.no_workflows.quick_start = Nevíte jak začít s Gitea Action? Podívejte se na <a target="_blank" rel="noopener noreferrer" href="%s">průvodce rychlým startem</a>.
|
runs.no_workflows.quick_start = Nevíte jak začít s Gitea Action? Podívejte se na <a target="_blank" rel="noopener noreferrer" href="%s">průvodce rychlým startem</a>.
|
||||||
runs.no_workflows.documentation = Další informace o Gitea Action, viz <a target="_blank" rel="noopener noreferrer" href="%s">dokumentace</a>.
|
runs.no_workflows.documentation = Další informace o Gitea Action, viz <a target="_blank" rel="noopener noreferrer" href="%s">dokumentace</a>.
|
||||||
runs.no_runs=Pracovní postup zatím nebyl spuštěn.
|
runs.no_runs=Pracovní postup zatím nebyl spuštěn.
|
||||||
runs.empty_commit_message=(prázdná zpráva commitu)
|
runs.empty_commit_message=(prázdná zpráva revize)
|
||||||
|
|
||||||
workflow.disable=Zakázat workflow
|
workflow.disable=Zakázat workflow
|
||||||
workflow.disable_success=Workflow „%s“ byl úspěšně deaktivován.
|
workflow.disable_success=Workflow „%s“ byl úspěšně deaktivován.
|
||||||
|
@ -3952,7 +3975,7 @@ code_kind = Hledat kód...
|
||||||
package_kind = Hledat balíčky...
|
package_kind = Hledat balíčky...
|
||||||
project_kind = Hledat projekty...
|
project_kind = Hledat projekty...
|
||||||
branch_kind = Hledat větve...
|
branch_kind = Hledat větve...
|
||||||
commit_kind = Hledat commity...
|
commit_kind = Hledat revize...
|
||||||
runner_kind = Hledat runnery...
|
runner_kind = Hledat runnery...
|
||||||
no_results = Nenalezeny žádné odpovídající výsledky.
|
no_results = Nenalezeny žádné odpovídající výsledky.
|
||||||
fuzzy_tooltip = Zahrnout také výsledky, které úzce odpovídají hledanému výrazu
|
fuzzy_tooltip = Zahrnout také výsledky, které úzce odpovídají hledanému výrazu
|
||||||
|
|
1833
options/locale/locale_da.ini
Normal file
1833
options/locale/locale_da.ini
Normal file
File diff suppressed because it is too large
Load diff
|
@ -683,6 +683,8 @@ To = Branchname
|
||||||
AccessToken = Zugangstoken
|
AccessToken = Zugangstoken
|
||||||
|
|
||||||
|
|
||||||
|
email_domain_is_not_allowed = Die Domain der E-Mail-Adresse des Benutzers <b>%s</b> steht in Konflikt mit EMAIL_DOMAIN_ALLOWLIST oder EMAIL_DOMAIN_BLOCKLIST. Bitte stelle sicher, dass du die E-Mail-Adresse richtig gesetzt hast.
|
||||||
|
|
||||||
[user]
|
[user]
|
||||||
change_avatar=Profilbild ändern …
|
change_avatar=Profilbild ändern …
|
||||||
joined_on=Beigetreten am %s
|
joined_on=Beigetreten am %s
|
||||||
|
@ -749,7 +751,7 @@ webauthn=Hardware-Sicherheitsschlüssel
|
||||||
public_profile=Öffentliches Profil
|
public_profile=Öffentliches Profil
|
||||||
biography_placeholder=Erzähle anderen ein wenig über dich selbst! (Markdown wird unterstützt)
|
biography_placeholder=Erzähle anderen ein wenig über dich selbst! (Markdown wird unterstützt)
|
||||||
location_placeholder=Teile deinen ungefähren Standort mit anderen
|
location_placeholder=Teile deinen ungefähren Standort mit anderen
|
||||||
profile_desc=Leg fest, wie dein Profil anderen Benutzern angezeigt wird. Deine primäre E-Mail-Adresse wird für Benachrichtigungen, Passwort-Wiederherstellung und webbasierte Git-Operationen verwendet.
|
profile_desc=Über dich
|
||||||
password_username_disabled=Benutzer, die nicht von Forgejo verwaltet werden können ihren Benutzernamen nicht ändern. Bitte kontaktiere deinen Administrator für mehr Details.
|
password_username_disabled=Benutzer, die nicht von Forgejo verwaltet werden können ihren Benutzernamen nicht ändern. Bitte kontaktiere deinen Administrator für mehr Details.
|
||||||
full_name=Vollständiger Name
|
full_name=Vollständiger Name
|
||||||
website=Webseite
|
website=Webseite
|
||||||
|
@ -814,7 +816,7 @@ manage_emails=E-Mail-Adressen verwalten
|
||||||
manage_themes=Standard-Theme
|
manage_themes=Standard-Theme
|
||||||
manage_openid=OpenID-Adressen
|
manage_openid=OpenID-Adressen
|
||||||
email_desc=Deine primäre E-Mail-Adresse wird für Benachrichtigungen, Passwort-Wiederherstellung und, sofern sie nicht versteckt ist, web-basierte Git-Operationen verwendet.
|
email_desc=Deine primäre E-Mail-Adresse wird für Benachrichtigungen, Passwort-Wiederherstellung und, sofern sie nicht versteckt ist, web-basierte Git-Operationen verwendet.
|
||||||
theme_desc=Dies wird dein Standard-Theme auf der Seite sein.
|
theme_desc=Dieses Thema wird für die Weboberfläche verwendet, wenn du angemeldet bist.
|
||||||
primary=Primär
|
primary=Primär
|
||||||
activated=Aktiviert
|
activated=Aktiviert
|
||||||
requires_activation=Erfordert Aktivierung
|
requires_activation=Erfordert Aktivierung
|
||||||
|
@ -840,7 +842,7 @@ add_email_success=Die neue E-Mail-Addresse wurde hinzugefügt.
|
||||||
email_preference_set_success=E-Mail-Einstellungen wurden erfolgreich aktualisiert.
|
email_preference_set_success=E-Mail-Einstellungen wurden erfolgreich aktualisiert.
|
||||||
add_openid_success=Die neue OpenID-Adresse wurde hinzugefügt.
|
add_openid_success=Die neue OpenID-Adresse wurde hinzugefügt.
|
||||||
keep_email_private=E-Mail-Adresse verbergen
|
keep_email_private=E-Mail-Adresse verbergen
|
||||||
keep_email_private_popup=Dies wird deine E-Mail-Adresse in deinem Profil ausblenden. Sie wird nicht mehr der Standardwert für die Commits, die vom Web-Interface gemacht wurden, sein, z.B. Dateiuploads und -bearbeitungen, und sie wird nicht für Merge-Commits benutzt werden. Stattdessen kann eine besondere Adresse %s benutzt werden, um Commits mit deinem Konto zu assoziieren. Beachte, dass diese Option für existierende Commits keine Wirkung hat.
|
keep_email_private_popup=Deine Mailadresse wird nicht in deinem Profil angezeigt und wird nicht der Standard für Commits über das Webinterface sein, wie zum Beispiel Dateiuploads, Bearbeitungen, und Merge-Commits. Stattdessen kann eine besondere Adresse %s benutzt werden, um Commits mit deinem Account zu verbinden. Diese Option wirkt sich nicht auf bestehende Commits aus.
|
||||||
openid_desc=Mit OpenID kannst du dich über einen Drittanbieter authentifizieren.
|
openid_desc=Mit OpenID kannst du dich über einen Drittanbieter authentifizieren.
|
||||||
|
|
||||||
manage_ssh_keys=SSH-Schlüssel verwalten
|
manage_ssh_keys=SSH-Schlüssel verwalten
|
||||||
|
@ -1056,6 +1058,8 @@ language.title = Standardsprache
|
||||||
keep_activity_private.description = Deine <a href="%s">öffentliche Aktivität</a> wird nur für dich selbst und die Instanzadminstratoren sichtbar sein.
|
keep_activity_private.description = Deine <a href="%s">öffentliche Aktivität</a> wird nur für dich selbst und die Instanzadminstratoren sichtbar sein.
|
||||||
language.localization_project = Hilf uns, Forgejo in deine Sprache zu übersetzen! <a href="%s">Mehr erfahren</a>.
|
language.localization_project = Hilf uns, Forgejo in deine Sprache zu übersetzen! <a href="%s">Mehr erfahren</a>.
|
||||||
language.description = Diese Sprache wird in deinem Konto gespeichert und standardmäßig nach dem Anmelden benutzt.
|
language.description = Diese Sprache wird in deinem Konto gespeichert und standardmäßig nach dem Anmelden benutzt.
|
||||||
|
user_block_yourself = Du kannst dich nicht selbst blockieren.
|
||||||
|
pronouns_custom_label = Individuelle Pronomen
|
||||||
|
|
||||||
[repo]
|
[repo]
|
||||||
owner=Besitzer
|
owner=Besitzer
|
||||||
|
@ -1097,11 +1101,11 @@ issue_labels=Labels
|
||||||
issue_labels_helper=Wähle eine Label-Sammlung
|
issue_labels_helper=Wähle eine Label-Sammlung
|
||||||
license=Lizenz
|
license=Lizenz
|
||||||
license_helper=Wähle eine Lizenz
|
license_helper=Wähle eine Lizenz
|
||||||
license_helper_desc=Eine Lizenz regelt, was andere mit deinem Code tun (oder nicht tun) können. Unsicher, welches für dein Projekt die Richtige ist? Siehe <a target="_blank" rel="noopener noreferrer" href="%s">Choose a license.</a>
|
license_helper_desc=Eine Lizenz regelt, was andere mit deinem Code tun (oder nicht tun) können. Unsicher, welches für dein Projekt die Richtige ist? Siehe <a target="_blank" rel="noopener noreferrer" href="%s">Choose a license</a>.
|
||||||
readme=README
|
readme=README
|
||||||
readme_helper=Wähle eine README-Vorlage
|
readme_helper=Wähle eine README-Vorlage
|
||||||
readme_helper_desc=Hier kannst du eine komplette Beschreibung für dein Projekt schreiben.
|
readme_helper_desc=Hier kannst du eine komplette Beschreibung für dein Projekt schreiben.
|
||||||
auto_init=Repository initialisieren (Fügt .gitignore, License und README-Dateien hinzu)
|
auto_init=Repository initialisieren
|
||||||
trust_model_helper=Wähle das Vertrauensmodell für die Signaturvalidierung aus. Mögliche Modelle sind:
|
trust_model_helper=Wähle das Vertrauensmodell für die Signaturvalidierung aus. Mögliche Modelle sind:
|
||||||
trust_model_helper_collaborator=Mitarbeiter: Vertraue Signaturen von Mitarbeitern am Projekt
|
trust_model_helper_collaborator=Mitarbeiter: Vertraue Signaturen von Mitarbeitern am Projekt
|
||||||
trust_model_helper_committer=Committer: Vertraue Signaturen, die mit ihren Committern übereinstimmen
|
trust_model_helper_committer=Committer: Vertraue Signaturen, die mit ihren Committern übereinstimmen
|
||||||
|
@ -1179,8 +1183,8 @@ template.invalid=Es muss ein Vorlagen-Repository ausgewählt werden
|
||||||
|
|
||||||
archive.title=Dieses Repository ist archiviert. Du kannst Dateien ansehen und es klonen, kannst aber nicht pushen oder Issues/Pull-Requests öffnen.
|
archive.title=Dieses Repository ist archiviert. Du kannst Dateien ansehen und es klonen, kannst aber nicht pushen oder Issues/Pull-Requests öffnen.
|
||||||
archive.title_date=Dieses Repository wurde am %s archiviert. Du kannst Dateien ansehen und es klonen, aber nicht pushen oder Issues/Pull-Requests öffnen.
|
archive.title_date=Dieses Repository wurde am %s archiviert. Du kannst Dateien ansehen und es klonen, aber nicht pushen oder Issues/Pull-Requests öffnen.
|
||||||
archive.issue.nocomment=Dieses Repo ist archiviert. Du kannst Issues nicht kommentieren.
|
archive.issue.nocomment=Dieses Repository ist archiviert. Du kannst Issues nicht kommentieren.
|
||||||
archive.pull.nocomment=Dieses Repo ist archiviert. Du kannst Pull-Requests nicht kommentieren.
|
archive.pull.nocomment=Dieses Repository ist archiviert. Du kannst Pull-Requests nicht kommentieren.
|
||||||
|
|
||||||
form.reach_limit_of_creation_1=Du hast bereits dein Limit von %d Repository erreicht.
|
form.reach_limit_of_creation_1=Du hast bereits dein Limit von %d Repository erreicht.
|
||||||
form.reach_limit_of_creation_n=Du hast bereits dein Limit von %d Repositorys erreicht.
|
form.reach_limit_of_creation_n=Du hast bereits dein Limit von %d Repositorys erreicht.
|
||||||
|
@ -1313,6 +1317,8 @@ view_git_blame=„git blame“ ansehen
|
||||||
video_not_supported_in_browser=Dein Browser unterstützt das HTML5-„video“-Tag nicht.
|
video_not_supported_in_browser=Dein Browser unterstützt das HTML5-„video“-Tag nicht.
|
||||||
audio_not_supported_in_browser=Dein Browser unterstützt das HTML5-„audio“-Tag nicht.
|
audio_not_supported_in_browser=Dein Browser unterstützt das HTML5-„audio“-Tag nicht.
|
||||||
stored_lfs=Gespeichert mit Git LFS
|
stored_lfs=Gespeichert mit Git LFS
|
||||||
|
stored_annex=Gespeichert mit Git Annex
|
||||||
|
stored_annex_not_present = hier nicht vorhanden, versuche git annex whereis
|
||||||
symbolic_link=Softlink
|
symbolic_link=Softlink
|
||||||
executable_file=Ausführbare Datei
|
executable_file=Ausführbare Datei
|
||||||
commit_graph=Commit-Graph
|
commit_graph=Commit-Graph
|
||||||
|
@ -1336,6 +1342,7 @@ editor.upload_file=Datei hochladen
|
||||||
editor.edit_file=Datei bearbeiten
|
editor.edit_file=Datei bearbeiten
|
||||||
editor.preview_changes=Vorschau der Änderungen
|
editor.preview_changes=Vorschau der Änderungen
|
||||||
editor.cannot_edit_lfs_files=LFS-Dateien können im Webinterface nicht bearbeitet werden.
|
editor.cannot_edit_lfs_files=LFS-Dateien können im Webinterface nicht bearbeitet werden.
|
||||||
|
editor.cannot_edit_annex_files=Annex-Dateien können im Webinterface nicht bearbeitet werden.
|
||||||
editor.cannot_edit_non_text_files=Binärdateien können nicht im Webinterface bearbeitet werden.
|
editor.cannot_edit_non_text_files=Binärdateien können nicht im Webinterface bearbeitet werden.
|
||||||
editor.edit_this_file=Datei bearbeiten
|
editor.edit_this_file=Datei bearbeiten
|
||||||
editor.this_file_locked=Datei ist gesperrt
|
editor.this_file_locked=Datei ist gesperrt
|
||||||
|
@ -2490,8 +2497,8 @@ settings.archive.text=Durch das Archivieren wird ein Repo vollständig schreibge
|
||||||
settings.archive.success=Das Repo wurde erfolgreich archiviert.
|
settings.archive.success=Das Repo wurde erfolgreich archiviert.
|
||||||
settings.archive.error=Beim Versuch, das Repository zu archivieren, ist ein Fehler aufgetreten. Weitere Details finden sich im Log.
|
settings.archive.error=Beim Versuch, das Repository zu archivieren, ist ein Fehler aufgetreten. Weitere Details finden sich im Log.
|
||||||
settings.archive.error_ismirror=Du kannst kein gespiegeltes Repo archivieren.
|
settings.archive.error_ismirror=Du kannst kein gespiegeltes Repo archivieren.
|
||||||
settings.archive.branchsettings_unavailable=Branch-Einstellungen sind nicht verfügbar wenn das Repo archiviert ist.
|
settings.archive.branchsettings_unavailable=Branch-Einstellungen sind nicht verfügbar in archivierten Repos.
|
||||||
settings.archive.tagsettings_unavailable=Tag Einstellungen sind nicht verfügbar, wenn das Repo archiviert wurde.
|
settings.archive.tagsettings_unavailable=Tag-Einstellungen sind nicht verfügbar in archivierten Repos.
|
||||||
settings.unarchive.button=Archivierung zurücksetzen
|
settings.unarchive.button=Archivierung zurücksetzen
|
||||||
settings.unarchive.header=Archivierung dieses Repositorys zurücksetzen
|
settings.unarchive.header=Archivierung dieses Repositorys zurücksetzen
|
||||||
settings.unarchive.text=Durch das Aufheben der Archivierung kann das Repo wieder Commits und Pushes sowie neue Issues und Pull-Requests empfangen.
|
settings.unarchive.text=Durch das Aufheben der Archivierung kann das Repo wieder Commits und Pushes sowie neue Issues und Pull-Requests empfangen.
|
||||||
|
@ -2690,7 +2697,7 @@ error.csv.too_large=Diese Datei kann nicht gerendert werden, da sie zu groß ist
|
||||||
error.csv.unexpected=Diese Datei kann nicht gerendert werden, da sie ein unerwartetes Zeichen in Zeile %d und Spalte %d enthält.
|
error.csv.unexpected=Diese Datei kann nicht gerendert werden, da sie ein unerwartetes Zeichen in Zeile %d und Spalte %d enthält.
|
||||||
error.csv.invalid_field_count=Diese Datei kann nicht gerendert werden, da sie eine falsche Anzahl an Feldern in Zeile %d hat.
|
error.csv.invalid_field_count=Diese Datei kann nicht gerendert werden, da sie eine falsche Anzahl an Feldern in Zeile %d hat.
|
||||||
rss.must_be_on_branch = Du musst auf einem Branch sein, um einen RSS-Feed zu haben.
|
rss.must_be_on_branch = Du musst auf einem Branch sein, um einen RSS-Feed zu haben.
|
||||||
new_repo_helper = Ein Repository enthält alle Projektdateien inklusive der Revisionshistorie. Bereits woanders gehostet? <a href="%s">Repository migrieren.</a>
|
new_repo_helper = Ein Repository enthält alle Projektdateien inklusive der Revisionshistorie. Bereits woanders gehostet? <a href="%s">Repository migrieren</a>.
|
||||||
issues.comment.blocked_by_user = Du kannst kein Kommentar für dieses Issue erstellen, weil du vom Repository-Besitzer oder dem Autoren des Issues blockiert wurdest.
|
issues.comment.blocked_by_user = Du kannst kein Kommentar für dieses Issue erstellen, weil du vom Repository-Besitzer oder dem Autoren des Issues blockiert wurdest.
|
||||||
clone_in_vscodium = In VSCodium klonen
|
clone_in_vscodium = In VSCodium klonen
|
||||||
settings.units.add_more = Mehr aktivieren
|
settings.units.add_more = Mehr aktivieren
|
||||||
|
@ -2704,7 +2711,7 @@ settings.add_collaborator_blocked_them = Der Mitarbeiter konnte nicht hinzugefü
|
||||||
settings.wiki_rename_branch_main = Den Wiki-Branch-Namen normalisieren
|
settings.wiki_rename_branch_main = Den Wiki-Branch-Namen normalisieren
|
||||||
settings.enter_repo_name = Gib den Besitzer- und den Repository-Namen genau wie angezeigt ein:
|
settings.enter_repo_name = Gib den Besitzer- und den Repository-Namen genau wie angezeigt ein:
|
||||||
settings.wiki_branch_rename_success = Der Branch-Name des Repository-Wikis wurde erfolgreich normalisiert.
|
settings.wiki_branch_rename_success = Der Branch-Name des Repository-Wikis wurde erfolgreich normalisiert.
|
||||||
settings.archive.mirrors_unavailable = Spiegel sind nicht verfügbar, wenn das Repo archiviert ist.
|
settings.archive.mirrors_unavailable = Spiegel sind nicht verfügbar in archivierten Repos.
|
||||||
pulls.blocked_by_user = Du kannst keinen Pull-Request in diesem Repository erstellen, weil du vom Repository-Besitzer blockiert wurdest.
|
pulls.blocked_by_user = Du kannst keinen Pull-Request in diesem Repository erstellen, weil du vom Repository-Besitzer blockiert wurdest.
|
||||||
settings.add_collaborator_blocked_our = Der Mitarbeiter konnte nicht hinzugefügt werden, weil der Repository-Besitzer ihn blockiert hat.
|
settings.add_collaborator_blocked_our = Der Mitarbeiter konnte nicht hinzugefügt werden, weil der Repository-Besitzer ihn blockiert hat.
|
||||||
issues.blocked_by_user = Du kannst kein Issue in diesem Repository erstellen, weil du vom Repository-Besitzer blockiert wurdest.
|
issues.blocked_by_user = Du kannst kein Issue in diesem Repository erstellen, weil du vom Repository-Besitzer blockiert wurdest.
|
||||||
|
@ -2851,6 +2858,23 @@ issues.num_reviews_one = %d Review
|
||||||
issues.summary_card_alt = Zusammenfassung eines Issues mit dem Titel „%s“ im Repository %s
|
issues.summary_card_alt = Zusammenfassung eines Issues mit dem Titel „%s“ im Repository %s
|
||||||
issues.num_reviews_few = %d Reviews
|
issues.num_reviews_few = %d Reviews
|
||||||
editor.add_tmpl.filename = Dateiname
|
editor.add_tmpl.filename = Dateiname
|
||||||
|
settings.default_update_style_desc = Standard-Aktualisierungsart um Pull-Requests zu aktualisieren, die hinter dem Base-Branch sind.
|
||||||
|
new_advanced = Erweiterte Einstellungen
|
||||||
|
new_advanced_expand = Zum Ausklappen klicken
|
||||||
|
pulls.sign_in_require = <a href="%s">Anmelden</a>, um einen neuen Pull-Request zu erstellen.
|
||||||
|
new_from_template = Eine Vorlage benutzen
|
||||||
|
new_from_template_description = Du kannst eine existierende Repository-Vorlage auf dieser Instanz benutzen und ihre Einstellungen anwenden.
|
||||||
|
auto_init_description = Die Git-Historie mit einer README-Datei und optional einer Lizenz- und .gitignore-Datei starten.
|
||||||
|
issues.context.menu = Kommentar Menü
|
||||||
|
issues.reaction.add = Reaktion hinzufügen
|
||||||
|
issues.reaction.alt_many = %[1]s und %[2]d mehr reagierten %[3]s.
|
||||||
|
issues.reaction.alt_few = %[1]s reagierten %[2]s.
|
||||||
|
issues.reaction.alt_add = Füge %[1]s Reaktion zum Kommentar hinzu.
|
||||||
|
issues.reaction.alt_remove = Entferne %[1]s Reaktion von diesem Kommentar.
|
||||||
|
summary_card_alt = Zusammenfassungskarte des Repositorys %s
|
||||||
|
release.summary_card_alt = Übersichtskarte eines Releases mit dem Titel „%s“ im Repository %s
|
||||||
|
|
||||||
|
editor.commit_email = Commit-E-Mail
|
||||||
|
|
||||||
[graphs]
|
[graphs]
|
||||||
component_loading_failed = Konnte %s nicht laden
|
component_loading_failed = Konnte %s nicht laden
|
||||||
|
@ -3092,7 +3116,7 @@ dashboard.sync_branch.started=Synchronisierung der Branches gestartet
|
||||||
dashboard.rebuild_issue_indexer=Issue-Indexer neu bauen
|
dashboard.rebuild_issue_indexer=Issue-Indexer neu bauen
|
||||||
|
|
||||||
users.user_manage_panel=Benutzerkonten verwalten
|
users.user_manage_panel=Benutzerkonten verwalten
|
||||||
users.new_account=Benutzerkonto erstellen
|
users.new_account=Benutzeraccount erstellen
|
||||||
users.name=Benutzername
|
users.name=Benutzername
|
||||||
users.full_name=Vollständiger Name
|
users.full_name=Vollständiger Name
|
||||||
users.activated=Aktiviert
|
users.activated=Aktiviert
|
||||||
|
@ -3561,7 +3585,7 @@ comment_pull=`hat den Pull-Request <a href="%[1]s">%[3]s#%[2]s</a> kommentiert`
|
||||||
merge_pull_request=`führte Pull-Request <a href="%[1]s">%[3]s#%[2]s</a> zusammen`
|
merge_pull_request=`führte Pull-Request <a href="%[1]s">%[3]s#%[2]s</a> zusammen`
|
||||||
auto_merge_pull_request=`führte Pull-Request <a href="%[1]s">%[3]s#%[2]s</a> automatisch zusammen`
|
auto_merge_pull_request=`führte Pull-Request <a href="%[1]s">%[3]s#%[2]s</a> automatisch zusammen`
|
||||||
transfer_repo=hat Repository <code>%s</code> übertragen zu <a href="%s">%s</a>
|
transfer_repo=hat Repository <code>%s</code> übertragen zu <a href="%s">%s</a>
|
||||||
push_tag=Tag <a href="%[2]s">%[3]s</a> nach <a href="%[1]s">%[4]s</a> wurde gepusht
|
push_tag=hat Tag <a href="%[2]s">%[3]s</a> auf <a href="%[1]s">%[4]s</a> gepusht
|
||||||
delete_tag=hat Tag %[2]s in <a href="%[1]s">%[3]s</a> gelöscht
|
delete_tag=hat Tag %[2]s in <a href="%[1]s">%[3]s</a> gelöscht
|
||||||
delete_branch=hat Branch %[2]s in <a href="%[1]s">%[3]s</a> gelöscht
|
delete_branch=hat Branch %[2]s in <a href="%[1]s">%[3]s</a> gelöscht
|
||||||
compare_branch=Vergleichen
|
compare_branch=Vergleichen
|
||||||
|
@ -3686,12 +3710,12 @@ conan.registry=Diese Registry über die Kommandozeile einrichten:
|
||||||
conan.install=Um das Paket mit Conan zu installieren, führe den folgenden Befehl aus:
|
conan.install=Um das Paket mit Conan zu installieren, führe den folgenden Befehl aus:
|
||||||
conda.registry=Richte diese Registry als Conda-Repository in deiner <code>.condarc</code>-Datei ein:
|
conda.registry=Richte diese Registry als Conda-Repository in deiner <code>.condarc</code>-Datei ein:
|
||||||
conda.install=Um das Paket mit Conda zu installieren, führe den folgenden Befehl aus:
|
conda.install=Um das Paket mit Conda zu installieren, führe den folgenden Befehl aus:
|
||||||
container.details.type=Container-Image Typ
|
container.details.type=Abbildtyp
|
||||||
container.details.platform=Plattform
|
container.details.platform=Plattform
|
||||||
container.pull=Downloade das Container-Image aus der Kommandozeile:
|
container.pull=Downloade das Container-Image aus der Kommandozeile:
|
||||||
container.digest=Digest
|
container.digest=Digest
|
||||||
container.multi_arch=Betriebsystem / Architektur
|
container.multi_arch=Betriebsystem / Architektur
|
||||||
container.layers=Container-Image Ebenen
|
container.layers=Abbildebenen
|
||||||
container.labels=Labels
|
container.labels=Labels
|
||||||
container.labels.key=Schlüssel
|
container.labels.key=Schlüssel
|
||||||
container.labels.value=Wert
|
container.labels.value=Wert
|
||||||
|
@ -3958,7 +3982,7 @@ package_kind = Pakete suchen …
|
||||||
project_kind = Projekte suchen …
|
project_kind = Projekte suchen …
|
||||||
branch_kind = Branches suchen …
|
branch_kind = Branches suchen …
|
||||||
commit_kind = Commits suchen …
|
commit_kind = Commits suchen …
|
||||||
runner_kind = Runners suchen …
|
runner_kind = Runner suchen …
|
||||||
no_results = Keine passenden Ergebnisse gefunden.
|
no_results = Keine passenden Ergebnisse gefunden.
|
||||||
code_search_unavailable = Die Code-Suche ist momentan nicht verfügbar. Bitte kontaktiere den Webseitenadministrator.
|
code_search_unavailable = Die Code-Suche ist momentan nicht verfügbar. Bitte kontaktiere den Webseitenadministrator.
|
||||||
keyword_search_unavailable = Die Suche mittels Schlüsselwort ist momentan nicht verfügbar. Bitte kontaktiere den Webseitenadministrator.
|
keyword_search_unavailable = Die Suche mittels Schlüsselwort ist momentan nicht verfügbar. Bitte kontaktiere den Webseitenadministrator.
|
||||||
|
|
|
@ -166,6 +166,7 @@ new_org.link = Νέος οργανισμός
|
||||||
new_migrate.title = Νέα μεταφορά
|
new_migrate.title = Νέα μεταφορά
|
||||||
new_repo.title = Νέο repository
|
new_repo.title = Νέο repository
|
||||||
new_org.title = Νέος οργανισμός
|
new_org.title = Νέος οργανισμός
|
||||||
|
copy_path = Αντιγραφή τοποθεσίας
|
||||||
|
|
||||||
[aria]
|
[aria]
|
||||||
navbar=Μπάρα πλοήγησης
|
navbar=Μπάρα πλοήγησης
|
||||||
|
@ -197,8 +198,14 @@ buttons.ref.tooltip=Μνημόνευση ενός θέματος ή pull request
|
||||||
buttons.switch_to_legacy.tooltip=Χρήση του κλασσικού κειμενογράφου
|
buttons.switch_to_legacy.tooltip=Χρήση του κλασσικού κειμενογράφου
|
||||||
buttons.enable_monospace_font=Ενεργοποίηση σταθερής γραμματοσειράς
|
buttons.enable_monospace_font=Ενεργοποίηση σταθερής γραμματοσειράς
|
||||||
buttons.disable_monospace_font=Απενεργοποίηση σταθερής γραμματοσειράς
|
buttons.disable_monospace_font=Απενεργοποίηση σταθερής γραμματοσειράς
|
||||||
buttons.unindent.tooltip = Αναίρεση στοιχείων κατά ένα επίπεδο
|
buttons.unindent.tooltip = Μείωση εσοχής στοιχείων κατά ένα επίπεδο
|
||||||
buttons.indent.tooltip = Στοιχεία φωλιών κατά ένα επίπεδο
|
buttons.indent.tooltip = Αύξηση εσοχής στοιχείων κατά ένα επίπεδο
|
||||||
|
table_modal.header = Προσθήκη πίνακα
|
||||||
|
table_modal.placeholder.header = Επικεφαλίδα
|
||||||
|
table_modal.placeholder.content = Περιεχόμενο
|
||||||
|
table_modal.label.rows = Σειρές
|
||||||
|
table_modal.label.columns = Στήλες
|
||||||
|
buttons.new_table.tooltip = Προσθήκη πίνακα
|
||||||
|
|
||||||
[filter]
|
[filter]
|
||||||
string.asc=A - Z
|
string.asc=A - Z
|
||||||
|
@ -249,9 +256,9 @@ err_empty_db_path=Η διαδρομή της βάσης δεδομένων SQLit
|
||||||
no_admin_and_disable_registration=Δεν μπορείτε να απενεργοποιήσετε την ιδιο-εγγραφή χρήστη χωρίς να έχετε δημιουργήσει διαχειριστικό λογαριασμό.
|
no_admin_and_disable_registration=Δεν μπορείτε να απενεργοποιήσετε την ιδιο-εγγραφή χρήστη χωρίς να έχετε δημιουργήσει διαχειριστικό λογαριασμό.
|
||||||
err_empty_admin_password=Ο κωδικός πρόσβασης του διαχειριστή δεν μπορεί να είναι κενός.
|
err_empty_admin_password=Ο κωδικός πρόσβασης του διαχειριστή δεν μπορεί να είναι κενός.
|
||||||
err_empty_admin_email=Το email του διαχειριστή δεν μπορεί να είναι κενό.
|
err_empty_admin_email=Το email του διαχειριστή δεν μπορεί να είναι κενό.
|
||||||
err_admin_name_is_reserved=Το Όνομα χρήστη του Διαχειριστή δεν είναι έγκυρο, είναι δεσμευμένο
|
err_admin_name_is_reserved=Το όνομα χρήστη του Διαχειριστή δεν είναι έγκυρο, αυτό το όνομα είναι δεσμευμένο
|
||||||
err_admin_name_pattern_not_allowed=Το Όνομα χρήστη του Διαχειριστή δεν είναι έγκυρο, ταιριάζει σε μια δεσμευμένη μορφή
|
err_admin_name_pattern_not_allowed=Το Όνομα χρήστη του Διαχειριστή δεν είναι έγκυρο, ταιριάζει σε μια δεσμευμένη μορφή
|
||||||
err_admin_name_is_invalid=Το Όνομα Χρήστη του Διαχειριστή δεν είναι έγκυρο
|
err_admin_name_is_invalid=Το όνομα χρήστη του Διαχειριστή δεν είναι έγκυρο
|
||||||
|
|
||||||
general_title=Γενικές ρυθμίσεις
|
general_title=Γενικές ρυθμίσεις
|
||||||
app_name=Τίτλος διακομιστή
|
app_name=Τίτλος διακομιστή
|
||||||
|
@ -476,6 +483,8 @@ hint_register = Χρειάζεστε έναν λογαριασμό; <a href="%s"
|
||||||
sign_up_button = Δημιουργία λογαριασμού.
|
sign_up_button = Δημιουργία λογαριασμού.
|
||||||
back_to_sign_in = Επιστροφή στην σελίδα εισόδου
|
back_to_sign_in = Επιστροφή στην σελίδα εισόδου
|
||||||
sign_in_openid = Συνέχεια με OpenID
|
sign_in_openid = Συνέχεια με OpenID
|
||||||
|
unauthorized_credentials = Τα διαπιστευτήρια σύνδεσης είναι λανθασμένα ή έχουν λήξει. Προσπαθήστε ξανά την ενέργεια ή δείτε %s για περισσότερες πληροφορίες
|
||||||
|
use_onetime_code = Χρήση κωδικού μίας χρήσης
|
||||||
|
|
||||||
[mail]
|
[mail]
|
||||||
view_it_on=Δείτε το στο %s
|
view_it_on=Δείτε το στο %s
|
||||||
|
@ -553,7 +562,7 @@ password_change.text_1 = Μόλις άλλαξε ο κωδικός πρόσβα
|
||||||
primary_mail_change.subject = Η κύρια διεύθυνση email σας άλλαξε
|
primary_mail_change.subject = Η κύρια διεύθυνση email σας άλλαξε
|
||||||
primary_mail_change.text_1 = Η κύρια διεύθυνση email του λογαριασμού σας μόλις άλλαξε στην %[1]s. Αυτό σημαίνει πως η διεύθυνση στην οποία λαμβάνετε αυτό το μήνυμα δεν θα λαμβάνει ειδοποιήσεις email για τον λογαριασμό σας πια.
|
primary_mail_change.text_1 = Η κύρια διεύθυνση email του λογαριασμού σας μόλις άλλαξε στην %[1]s. Αυτό σημαίνει πως η διεύθυνση στην οποία λαμβάνετε αυτό το μήνυμα δεν θα λαμβάνει ειδοποιήσεις email για τον λογαριασμό σας πια.
|
||||||
totp_disabled.subject = Το TOTP απενεργοποιήθηκε
|
totp_disabled.subject = Το TOTP απενεργοποιήθηκε
|
||||||
totp_disabled.text_1 = Το TOTP στο λογαριασμό σας μόλις απενεργοποιήθηκε.
|
totp_disabled.text_1 = Ο κωδικός μίας χρήσης (TOTP) για το λογαριασμό σας μόλις απενεργοποιήθηκε.
|
||||||
removed_security_key.subject = Καταργήθηκε ένα κλειδί ασφαλείας
|
removed_security_key.subject = Καταργήθηκε ένα κλειδί ασφαλείας
|
||||||
removed_security_key.text_1 = Το κλειδί ασφαλείας «%[1]s» μόλις αφαιρέθηκε από τον λογαριασμό σας.
|
removed_security_key.text_1 = Το κλειδί ασφαλείας «%[1]s» μόλις αφαιρέθηκε από τον λογαριασμό σας.
|
||||||
totp_disabled.no_2fa = Δεν έχετε ρυθμίσει κάποια άλλη μέθοδο σύνδεσης δευτέρου παράγοντα (2FA), άρα δεν χρειάζεται να συνδεθείτε στον λογαριασμό σας μέσω 2FA.
|
totp_disabled.no_2fa = Δεν έχετε ρυθμίσει κάποια άλλη μέθοδο σύνδεσης δευτέρου παράγοντα (2FA), άρα δεν χρειάζεται να συνδεθείτε στον λογαριασμό σας μέσω 2FA.
|
||||||
|
@ -715,6 +724,7 @@ following.title.one = ακολουθεί
|
||||||
public_activity.visibility_hint.admin_public = Η δραστηριότητα είναι ορατή σε όλους, αλλά ως διαχειριστής μπορείτε να δείτε και τις αλληλεπιδράσεις σε ιδιωτικούς χώρους.
|
public_activity.visibility_hint.admin_public = Η δραστηριότητα είναι ορατή σε όλους, αλλά ως διαχειριστής μπορείτε να δείτε και τις αλληλεπιδράσεις σε ιδιωτικούς χώρους.
|
||||||
public_activity.visibility_hint.self_public = Η δραστηριότητά σου είναι ορατή σε όλους, πλην τις αλληλεπιδράσεις σας σε ιδιωτικούς χώρους. <a href="%s">Αλλαγή ορατότητας</a>.
|
public_activity.visibility_hint.self_public = Η δραστηριότητά σου είναι ορατή σε όλους, πλην τις αλληλεπιδράσεις σας σε ιδιωτικούς χώρους. <a href="%s">Αλλαγή ορατότητας</a>.
|
||||||
public_activity.visibility_hint.self_private = Η δραστηριότητά σας είναι ορατή μόνο σε εσάς και στους διαχειριστές. <a href="%s">Αλλαγή ορατότητας</a>.
|
public_activity.visibility_hint.self_private = Η δραστηριότητά σας είναι ορατή μόνο σε εσάς και στους διαχειριστές. <a href="%s">Αλλαγή ορατότητας</a>.
|
||||||
|
public_activity.visibility_hint.self_private_profile = Η δραστηριότητά σας είναι ορατή μόνο σε εσάς και τους διαχειριστές του διακομιστή καθώς το προφίλ σας είναι ιδιωτικό <a href="%s">Αλλαγή ορατότητας</a>.
|
||||||
|
|
||||||
[settings]
|
[settings]
|
||||||
profile=Προφίλ
|
profile=Προφίλ
|
||||||
|
@ -736,9 +746,9 @@ uid=UID
|
||||||
webauthn=Πιστοποίηση δύο παραγόντων (Κλειδιά Ασφαλείας)
|
webauthn=Πιστοποίηση δύο παραγόντων (Κλειδιά Ασφαλείας)
|
||||||
|
|
||||||
public_profile=Δημόσιο προφίλ
|
public_profile=Δημόσιο προφίλ
|
||||||
biography_placeholder=Πείτε μας λίγο για τον εαυτό σας! (Μπορείτε να γράψετε με Markdown)
|
biography_placeholder=Πείτε λίγα πράγματα για τον εαυτό σας! (Μπορείτε να γράψετε με Markdown)
|
||||||
location_placeholder=Μοιραστείτε την κατά προσέγγιση τοποθεσία σας με άλλους
|
location_placeholder=Μοιραστείτε την κατά προσέγγιση τοποθεσία σας με άλλους
|
||||||
profile_desc=Ελέγξτε πώς εμφανίζεται το προφίλ σας σε άλλους χρήστες. Η κύρια διεύθυνση email σας θα χρησιμοποιηθεί για ειδοποιήσεις, ανάκτηση κωδικού πρόσβασης και λειτουργίες Git που βασίζονται στο web.
|
profile_desc=Σχετικά με εσάς
|
||||||
password_username_disabled=Οι μη τοπικοί χρήστες δεν επιτρέπεται να αλλάξουν το όνομα χρήστη τους. Επικοινωνήστε με το διαχειριστή σας για περισσότερες λεπτομέρειες.
|
password_username_disabled=Οι μη τοπικοί χρήστες δεν επιτρέπεται να αλλάξουν το όνομα χρήστη τους. Επικοινωνήστε με το διαχειριστή σας για περισσότερες λεπτομέρειες.
|
||||||
full_name=Πλήρες όνομα
|
full_name=Πλήρες όνομα
|
||||||
website=Ιστοσελίδα
|
website=Ιστοσελίδα
|
||||||
|
@ -803,7 +813,7 @@ manage_emails=Διαχείριση διευθύνσεων email
|
||||||
manage_themes=Προεπιλεγμένο θέμα
|
manage_themes=Προεπιλεγμένο θέμα
|
||||||
manage_openid=Διευθύνσεις OpenID
|
manage_openid=Διευθύνσεις OpenID
|
||||||
email_desc=Η κύρια διεύθυνση ηλεκτρονικού ταχυδρομείου σας θα χρησιμοποιηθεί για ειδοποιήσεις, ανάκτηση του κωδικού πρόσβασης και, εφόσον δεν είναι κρυμμένη, λειτουργίες Git στον ιστότοπο.
|
email_desc=Η κύρια διεύθυνση ηλεκτρονικού ταχυδρομείου σας θα χρησιμοποιηθεί για ειδοποιήσεις, ανάκτηση του κωδικού πρόσβασης και, εφόσον δεν είναι κρυμμένη, λειτουργίες Git στον ιστότοπο.
|
||||||
theme_desc=Αυτό θα είναι το προεπιλεγμένο θέμα διεπαφής σας σε όλη την ιστοσελίδα.
|
theme_desc=Αυτό θα είναι το προεπιλεγμένο θέμα διεπαφής σας όταν είστε συνδεδεμένοι.
|
||||||
primary=Κύριο
|
primary=Κύριο
|
||||||
activated=Ενεργό
|
activated=Ενεργό
|
||||||
requires_activation=Απαιτείται ενεργοποίηση
|
requires_activation=Απαιτείται ενεργοποίηση
|
||||||
|
@ -1038,13 +1048,14 @@ pronouns = Αντωνυμίες
|
||||||
pronouns_custom = κάτι άλλο
|
pronouns_custom = κάτι άλλο
|
||||||
pronouns_unspecified = Απροσδιόριστες
|
pronouns_unspecified = Απροσδιόριστες
|
||||||
hints = Συμβουλές
|
hints = Συμβουλές
|
||||||
additional_repo_units_hint_description = Εμφάνιση κουμπιού «Προσθήκη μονάδων...» σε αποθετήρια που δεν έχουν ενεργοποιημένες όλες τις διαθέσιμες μονάδες.
|
additional_repo_units_hint_description = Εμφάνιση υπόδειξης «Προσθήκη μονάδων...» σε αποθετήρια που δεν έχουν ενεργοποιημένες όλες τις διαθέσιμες μονάδες.
|
||||||
update_hints = Ενημέρωση συμβουλών
|
update_hints = Ενημέρωση συμβουλών
|
||||||
update_hints_success = Οι συμβουλές ενημερώθηκαν.
|
update_hints_success = Οι συμβουλές ενημερώθηκαν.
|
||||||
language.title = Προεπιλεγμένη γλώσσα
|
language.title = Προεπιλεγμένη γλώσσα
|
||||||
keep_activity_private.description = Η <a href="%s">δημόσια δραστηριότητά σας</a> θα είναι ορατή μόνο σε εσάς και στους διαχειριστές.
|
keep_activity_private.description = Η <a href="%s">δημόσια δραστηριότητά σας</a> θα είναι ορατή μόνο σε εσάς και στους διαχειριστές.
|
||||||
language.localization_project = Βοηθήστε μας να μεταφράσουμε το Forgejo στην γλώσσα σας! <a href="%s">Περισσότερες πληροφορίες</a>.
|
language.localization_project = Βοηθήστε μας να μεταφράσουμε το Forgejo στην γλώσσα σας! <a href="%s">Περισσότερες πληροφορίες</a>.
|
||||||
language.description = Από εδώ και στο εξής, αυτή η γλώσσα θα χρησιμοποιείται από προεπιλογή για τον λογαριασμό σας.
|
language.description = Από εδώ και στο εξής, αυτή η γλώσσα θα χρησιμοποιείται από προεπιλογή για τον λογαριασμό σας.
|
||||||
|
pronouns_custom_label = Ειδικές αντωνυμίες
|
||||||
|
|
||||||
[repo]
|
[repo]
|
||||||
new_repo_helper=Ένα repository περιέχει όλα τα αρχεία έργου, συμπεριλαμβανομένου του ιστορικού εκδόσεων. Έχετε ήδη ένα που φιλοξενείται κάπου αλλού; <a href="%s">Μεταφορά αποθετηρίου.</a>
|
new_repo_helper=Ένα repository περιέχει όλα τα αρχεία έργου, συμπεριλαμβανομένου του ιστορικού εκδόσεων. Έχετε ήδη ένα που φιλοξενείται κάπου αλλού; <a href="%s">Μεταφορά αποθετηρίου.</a>
|
||||||
|
@ -1215,7 +1226,7 @@ migrate.migrating_failed_no_addr=Η μεταφορά απέτυχε.
|
||||||
migrate.github.description=Μεταφορά δεδομένων από το github.com ή διακομιστές GitHub Enterprise.
|
migrate.github.description=Μεταφορά δεδομένων από το github.com ή διακομιστές GitHub Enterprise.
|
||||||
migrate.git.description=Μεταφορά μόνο του αποθετηρίου από μια οποιαδήποτε υπηρεσία Git.
|
migrate.git.description=Μεταφορά μόνο του αποθετηρίου από μια οποιαδήποτε υπηρεσία Git.
|
||||||
migrate.gitlab.description=Μεταφορά δεδομένων από το gitlab.com ή άλλες εγκαταστάσεις GitLab.
|
migrate.gitlab.description=Μεταφορά δεδομένων από το gitlab.com ή άλλες εγκαταστάσεις GitLab.
|
||||||
migrate.gitea.description=Μεταφορά δεδομένων από το gitea.com ή άλλες εγκαταστάσεις Gitea/Forgejo.
|
migrate.gitea.description=Μεταφορά δεδομένων από το gitea.com ή άλλες εγκαταστάσεις Gitea.
|
||||||
migrate.gogs.description=Μεταφορά δεδομένων από το notabug.org ή άλλες εγκαταστάσεις Gogs.
|
migrate.gogs.description=Μεταφορά δεδομένων από το notabug.org ή άλλες εγκαταστάσεις Gogs.
|
||||||
migrate.onedev.description=Μεταφορά δεδομένων από το code.onedev.io ή άλλες εγκαταστάσεις OneDev.
|
migrate.onedev.description=Μεταφορά δεδομένων από το code.onedev.io ή άλλες εγκαταστάσεις OneDev.
|
||||||
migrate.codebase.description=Μεταφορά δεδομένων από το codebasehq.com.
|
migrate.codebase.description=Μεταφορά δεδομένων από το codebasehq.com.
|
||||||
|
@ -1303,6 +1314,7 @@ view_git_blame=Προβολή git blame
|
||||||
video_not_supported_in_browser=Το πρόγραμμα περιήγησής σας δεν υποστηρίζει την ετικέτα HTML5 «video».
|
video_not_supported_in_browser=Το πρόγραμμα περιήγησής σας δεν υποστηρίζει την ετικέτα HTML5 «video».
|
||||||
audio_not_supported_in_browser=Το πρόγραμμα περιήγησής σας δεν υποστηρίζει την ετικέτα HTML5 «audio».
|
audio_not_supported_in_browser=Το πρόγραμμα περιήγησής σας δεν υποστηρίζει την ετικέτα HTML5 «audio».
|
||||||
stored_lfs=Αποθηκεύτηκε με το Git LFS
|
stored_lfs=Αποθηκεύτηκε με το Git LFS
|
||||||
|
stored_annex=Αποθηκεύτηκε με το Git Annex
|
||||||
symbolic_link=Symbolic link
|
symbolic_link=Symbolic link
|
||||||
executable_file=Εκτελέσιμο αρχείο
|
executable_file=Εκτελέσιμο αρχείο
|
||||||
commit_graph=Γράφημα υποβολών
|
commit_graph=Γράφημα υποβολών
|
||||||
|
@ -1326,6 +1338,7 @@ editor.upload_file=Ανέβασμα αρχείου
|
||||||
editor.edit_file=Επεξεργασία αρχείου
|
editor.edit_file=Επεξεργασία αρχείου
|
||||||
editor.preview_changes=Προεπισκόπηση αλλαγών
|
editor.preview_changes=Προεπισκόπηση αλλαγών
|
||||||
editor.cannot_edit_lfs_files=Τα αρχεία LFS δεν μπορούν να επεξεργαστούν στη διεπαφή web.
|
editor.cannot_edit_lfs_files=Τα αρχεία LFS δεν μπορούν να επεξεργαστούν στη διεπαφή web.
|
||||||
|
editor.cannot_edit_annex_files=Τα αρχεία Annex δεν μπορούν να επεξεργαστούν στη διεπαφή web.
|
||||||
editor.cannot_edit_non_text_files=Τα δυαδικά αρχεία δεν μπορούν να επεξεργαστούν στη διεπαφή web.
|
editor.cannot_edit_non_text_files=Τα δυαδικά αρχεία δεν μπορούν να επεξεργαστούν στη διεπαφή web.
|
||||||
editor.edit_this_file=Επεξεργασία αρχείου
|
editor.edit_this_file=Επεξεργασία αρχείου
|
||||||
editor.this_file_locked=Το αρχείο είναι κλειδωμένο
|
editor.this_file_locked=Το αρχείο είναι κλειδωμένο
|
||||||
|
@ -1924,7 +1937,7 @@ pulls.cmd_instruction_hint=Προβολή οδηγιών γραμμής εντο
|
||||||
pulls.cmd_instruction_checkout_title=Έλεγχος
|
pulls.cmd_instruction_checkout_title=Έλεγχος
|
||||||
pulls.cmd_instruction_checkout_desc=Από το repository του έργου σας, ελέγξτε έναν νέο κλάδο και δοκιμάστε τις αλλαγές.
|
pulls.cmd_instruction_checkout_desc=Από το repository του έργου σας, ελέγξτε έναν νέο κλάδο και δοκιμάστε τις αλλαγές.
|
||||||
pulls.cmd_instruction_merge_title=Συγχώνευση
|
pulls.cmd_instruction_merge_title=Συγχώνευση
|
||||||
pulls.cmd_instruction_merge_desc=Συγχώνευση των αλλαγών και ενημέρωση στο Gitea.
|
pulls.cmd_instruction_merge_desc=Συγχώνευση των αλλαγών και ενημέρωση στο Forgejo.
|
||||||
pulls.clear_merge_message=Εκκαθάριση μηνύματος συγχώνευσης
|
pulls.clear_merge_message=Εκκαθάριση μηνύματος συγχώνευσης
|
||||||
pulls.clear_merge_message_hint=Η εκκαθάριση του μηνύματος συγχώνευσης θα αφαιρέσει μόνο το περιεχόμενο του μηνύματος υποβολής και θα διατηρήσει τα παραγόμενα git trailers όπως "Co-Authored-By …".
|
pulls.clear_merge_message_hint=Η εκκαθάριση του μηνύματος συγχώνευσης θα αφαιρέσει μόνο το περιεχόμενο του μηνύματος υποβολής και θα διατηρήσει τα παραγόμενα git trailers όπως "Co-Authored-By …".
|
||||||
|
|
||||||
|
@ -2619,7 +2632,7 @@ release.edit_release=Ενημέρωση κυκλοφορίας
|
||||||
release.delete_release=Διαγραφή κυκλοφορίας
|
release.delete_release=Διαγραφή κυκλοφορίας
|
||||||
release.delete_tag=Διαγραφή ετικέτας
|
release.delete_tag=Διαγραφή ετικέτας
|
||||||
release.deletion=Διαγραφή κυκλοφορίας
|
release.deletion=Διαγραφή κυκλοφορίας
|
||||||
release.deletion_desc=Διαγράφοντας μια κυκλοφορία, αυτή αφαιρείται μόνο από το Gitea. Δε θα επηρεάσει την ετικέτα Git, τα περιεχόμενα του αποθετηρίου σας ή το ιστορικό της. Συνέχεια;
|
release.deletion_desc=Διαγράφοντας μια κυκλοφορία, αυτή αφαιρείται μόνο από το Forgejo. Δε θα επηρεάσει την ετικέτα Git, τα περιεχόμενα του αποθετηρίου σας ή το ιστορικό της. Συνέχεια;
|
||||||
release.deletion_success=Η κυκλοφορία έχει διαγραφεί.
|
release.deletion_success=Η κυκλοφορία έχει διαγραφεί.
|
||||||
release.deletion_tag_desc=Θα διαγράψει αυτή την ετικέτα από το repository. Τα περιεχόμενα του repository και το ιστορικό δεν θα πειραχτούν. Να γίνει συνέχεια;
|
release.deletion_tag_desc=Θα διαγράψει αυτή την ετικέτα από το repository. Τα περιεχόμενα του repository και το ιστορικό δεν θα πειραχτούν. Να γίνει συνέχεια;
|
||||||
release.deletion_tag_success=Η ετικέτα έχει διαγραφεί.
|
release.deletion_tag_success=Η ετικέτα έχει διαγραφεί.
|
||||||
|
@ -3161,12 +3174,12 @@ packages.size=Μέγεθος
|
||||||
packages.published=Δημοσιευμένα
|
packages.published=Δημοσιευμένα
|
||||||
|
|
||||||
defaulthooks=Προεπιλεγμένα webhooks
|
defaulthooks=Προεπιλεγμένα webhooks
|
||||||
defaulthooks.desc=Τα Webhooks κάνουν αυτόματα αιτήσεις HTTP POST σε ένα διακομιστή όταν ενεργοποιούν ορισμένα γεγονότα στο Gitea. Τα Webhooks που ορίζονται εδώ είναι προκαθορισμένα και θα αντιγραφούν σε όλα τα νέα αποθετήρια. Διαβάστε περισσότερα στον οδηγό <a target="_blank" rel="noopener" href="%s">webhooks</a>.
|
defaulthooks.desc=Τα Webhooks κάνουν αυτόματα αιτήσεις HTTP POST σε ένα διακομιστή όταν ενεργοποιούν ορισμένα γεγονότα στο Forgejo. Τα Webhooks που ορίζονται εδώ είναι προκαθορισμένα και θα αντιγραφούν σε όλα τα νέα αποθετήρια. Διαβάστε περισσότερα στον οδηγό <a target="_blank" rel="noopener" href="%s">webhooks</a>.
|
||||||
defaulthooks.add_webhook=Προσθήκη Προεπιλεγμένου Webhook
|
defaulthooks.add_webhook=Προσθήκη Προεπιλεγμένου Webhook
|
||||||
defaulthooks.update_webhook=Ενημέρωση Προεπιλεγμένου Webhook
|
defaulthooks.update_webhook=Ενημέρωση Προεπιλεγμένου Webhook
|
||||||
|
|
||||||
systemhooks=Webhooks συστήματος
|
systemhooks=Webhooks συστήματος
|
||||||
systemhooks.desc=Τα Webhooks κάνουν αυτόματα αιτήσεις HTTP POST σε ένα διακομιστή όταν ενεργοποιούνται ορισμένα γεγονότα στο Gitea. Τα Webhooks που ορίζονται εδώ θα ενεργούν σε όλα τα αποθετήρια του συστήματος, γι 'αυτό παρακαλώ εξετάστε τυχόν επιπτώσεις απόδοσης που μπορεί να έχει. Διαβάστε περισσότερα στον οδηγό <a target="_blank" rel="noopener" href="%s">webhooks</a>.
|
systemhooks.desc=Τα Webhooks κάνουν αυτόματα αιτήσεις HTTP POST σε ένα διακομιστή όταν ενεργοποιούνται ορισμένα γεγονότα στο Forgejo. Τα Webhooks που ορίζονται εδώ θα ενεργούν σε όλα τα αποθετήρια του συστήματος, γι 'αυτό παρακαλώ εξετάστε τυχόν επιπτώσεις απόδοσης που μπορεί να έχει. Διαβάστε περισσότερα στον οδηγό <a target="_blank" rel="noopener" href="%s">webhooks</a>.
|
||||||
systemhooks.add_webhook=Προσθήκη Webhook Συστήματος
|
systemhooks.add_webhook=Προσθήκη Webhook Συστήματος
|
||||||
systemhooks.update_webhook=Ενημέρωση Webhook Συστήματος
|
systemhooks.update_webhook=Ενημέρωση Webhook Συστήματος
|
||||||
|
|
||||||
|
@ -3929,6 +3942,8 @@ exact = Ακριβής
|
||||||
milestone_kind = Αναζήτηση ορόσημων...
|
milestone_kind = Αναζήτηση ορόσημων...
|
||||||
union = Ένωση
|
union = Ένωση
|
||||||
union_tooltip = Να συμπεριληφθούν αποτελέσματα που περιέχουν οποιαδήποτε από τις λέξεις που έχουν εισαχθεί και διαχωριστεί με κενό
|
union_tooltip = Να συμπεριληφθούν αποτελέσματα που περιέχουν οποιαδήποτε από τις λέξεις που έχουν εισαχθεί και διαχωριστεί με κενό
|
||||||
|
regexp = Κανονική Έκφραση
|
||||||
|
regexp_tooltip = Ερμηνεία του όρου αναζήτησης ως κανονική έκφραση
|
||||||
|
|
||||||
[munits.data]
|
[munits.data]
|
||||||
mib = MiB
|
mib = MiB
|
||||||
|
|
|
@ -644,6 +644,7 @@ team_name_been_taken = The team name is already taken.
|
||||||
team_no_units_error = Allow access to at least one repository section.
|
team_no_units_error = Allow access to at least one repository section.
|
||||||
email_been_used = The email address is already used.
|
email_been_used = The email address is already used.
|
||||||
email_invalid = The email address is invalid.
|
email_invalid = The email address is invalid.
|
||||||
|
email_domain_is_not_allowed = The domain of the user's email address <b>%s</b> conflicts with EMAIL_DOMAIN_ALLOWLIST or EMAIL_DOMAIN_BLOCKLIST. Make sure you have set the email address correctly.
|
||||||
openid_been_used = The OpenID address "%s" is already used.
|
openid_been_used = The OpenID address "%s" is already used.
|
||||||
username_password_incorrect = Username or password is incorrect.
|
username_password_incorrect = Username or password is incorrect.
|
||||||
password_complexity = Password does not pass complexity requirements:
|
password_complexity = Password does not pass complexity requirements:
|
||||||
|
@ -748,13 +749,14 @@ blocked_users = Blocked users
|
||||||
public_profile = Public profile
|
public_profile = Public profile
|
||||||
biography_placeholder = Tell others a little bit about yourself! (Markdown is supported)
|
biography_placeholder = Tell others a little bit about yourself! (Markdown is supported)
|
||||||
location_placeholder = Share your approximate location with others
|
location_placeholder = Share your approximate location with others
|
||||||
profile_desc = Control how your profile is shown to other users. Your primary email address will be used for notifications, password recovery and web-based Git operations.
|
profile_desc = About you
|
||||||
password_username_disabled = Non-local users are not allowed to change their username. Please contact your site administrator for more details.
|
password_username_disabled = Non-local users are not allowed to change their username. Please contact your site administrator for more details.
|
||||||
full_name = Full name
|
full_name = Full name
|
||||||
website = Website
|
website = Website
|
||||||
location = Location
|
location = Location
|
||||||
pronouns = Pronouns
|
pronouns = Pronouns
|
||||||
pronouns_custom = Custom
|
pronouns_custom = Custom
|
||||||
|
pronouns_custom_label = Custom pronouns
|
||||||
pronouns_unspecified = Unspecified
|
pronouns_unspecified = Unspecified
|
||||||
update_theme = Change theme
|
update_theme = Change theme
|
||||||
update_profile = Update profile
|
update_profile = Update profile
|
||||||
|
@ -849,7 +851,7 @@ add_email_success = The new email address has been added.
|
||||||
email_preference_set_success = Email preference has been set successfully.
|
email_preference_set_success = Email preference has been set successfully.
|
||||||
add_openid_success = The new OpenID address has been added.
|
add_openid_success = The new OpenID address has been added.
|
||||||
keep_email_private = Hide email address
|
keep_email_private = Hide email address
|
||||||
keep_email_private_popup = This will hide your email address from your profile. It will no longer be the default for commits made via the web interface, like file uploads and edits, and will not be used for merge commits. Instead a special address %s can be used to associate commits with your account. Note that changing this option will not affect existing commits.
|
keep_email_private_popup = Your email address will not be shown on your profile and will not be the default for commits made via the web interface, like file uploads, edits, and merge commits. Instead, a special address %s can be used to link commits to your account. This option will not affect existing commits.
|
||||||
openid_desc = OpenID lets you delegate authentication to an external provider.
|
openid_desc = OpenID lets you delegate authentication to an external provider.
|
||||||
|
|
||||||
manage_ssh_keys = Manage SSH keys
|
manage_ssh_keys = Manage SSH keys
|
||||||
|
@ -1053,6 +1055,10 @@ 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>.
|
||||||
|
new_from_template = Use a template
|
||||||
|
new_from_template_description = You can select an existing repository template on this instance and apply its settings.
|
||||||
|
new_advanced = Advanced settings
|
||||||
|
new_advanced_expand = Click to expand
|
||||||
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
|
||||||
|
@ -1099,7 +1105,8 @@ object_format_helper = Object format of the repository. Cannot be changed later.
|
||||||
readme = README
|
readme = README
|
||||||
readme_helper = Select a README file template
|
readme_helper = Select a README file template
|
||||||
readme_helper_desc = This is the place where you can write a complete description for your project.
|
readme_helper_desc = This is the place where you can write a complete description for your project.
|
||||||
auto_init = Initialize repository (Adds .gitignore, License and README)
|
auto_init = Initialize repository
|
||||||
|
auto_init_description = Start the Git history with a README and optionally add License and .gitignore files.
|
||||||
create_repo = Create repository
|
create_repo = Create repository
|
||||||
default_branch = Default branch
|
default_branch = Default branch
|
||||||
default_branch_label = default
|
default_branch_label = default
|
||||||
|
@ -1148,6 +1155,7 @@ blame_prior = View blame prior to this change
|
||||||
blame.ignore_revs = Ignoring revisions in <a href="%s">.git-blame-ignore-revs</a>. Click <a href="%s">here to bypass</a> and see the normal blame view.
|
blame.ignore_revs = Ignoring revisions in <a href="%s">.git-blame-ignore-revs</a>. Click <a href="%s">here to bypass</a> and see the normal blame view.
|
||||||
blame.ignore_revs.failed = Failed to ignore revisions in <a href="%s">.git-blame-ignore-revs</a>.
|
blame.ignore_revs.failed = Failed to ignore revisions in <a href="%s">.git-blame-ignore-revs</a>.
|
||||||
author_search_tooltip = Shows a maximum of 30 users
|
author_search_tooltip = Shows a maximum of 30 users
|
||||||
|
summary_card_alt = Summary card of repository %s
|
||||||
|
|
||||||
tree_path_not_found_commit = Path %[1]s doesn't exist in commit %[2]s
|
tree_path_not_found_commit = Path %[1]s doesn't exist in commit %[2]s
|
||||||
tree_path_not_found_branch = Path %[1]s doesn't exist in branch %[2]s
|
tree_path_not_found_branch = Path %[1]s doesn't exist in branch %[2]s
|
||||||
|
@ -1329,6 +1337,8 @@ view_git_blame = View git blame
|
||||||
video_not_supported_in_browser = Your browser does not support the HTML5 "video" tag.
|
video_not_supported_in_browser = Your browser does not support the HTML5 "video" tag.
|
||||||
audio_not_supported_in_browser = Your browser does not support the HTML5 "audio" tag.
|
audio_not_supported_in_browser = Your browser does not support the HTML5 "audio" tag.
|
||||||
stored_lfs = Stored with Git LFS
|
stored_lfs = Stored with Git LFS
|
||||||
|
stored_annex = Stored with Git Annex
|
||||||
|
stored_annex_not_present = not present here, try using git annex whereis
|
||||||
symbolic_link = Symbolic link
|
symbolic_link = Symbolic link
|
||||||
executable_file = Executable file
|
executable_file = Executable file
|
||||||
vendored = Vendored
|
vendored = Vendored
|
||||||
|
@ -1356,6 +1366,7 @@ editor.upload_file = Upload file
|
||||||
editor.edit_file = Edit file
|
editor.edit_file = Edit file
|
||||||
editor.preview_changes = Preview changes
|
editor.preview_changes = Preview changes
|
||||||
editor.cannot_edit_lfs_files = LFS files cannot be edited in the web interface.
|
editor.cannot_edit_lfs_files = LFS files cannot be edited in the web interface.
|
||||||
|
editor.cannot_edit_annex_files = Annex files cannot be edited in the web interface.
|
||||||
editor.cannot_edit_non_text_files = Binary files cannot be edited in the web interface.
|
editor.cannot_edit_non_text_files = Binary files cannot be edited in the web interface.
|
||||||
editor.edit_this_file = Edit file
|
editor.edit_this_file = Edit file
|
||||||
editor.this_file_locked = File is locked
|
editor.this_file_locked = File is locked
|
||||||
|
@ -1420,6 +1431,7 @@ editor.user_no_push_to_branch = User cannot push to branch
|
||||||
editor.require_signed_commit = Branch requires a signed commit
|
editor.require_signed_commit = Branch requires a signed commit
|
||||||
editor.cherry_pick = Cherry-pick %s onto:
|
editor.cherry_pick = Cherry-pick %s onto:
|
||||||
editor.revert = Revert %s onto:
|
editor.revert = Revert %s onto:
|
||||||
|
editor.commit_email = Commit email
|
||||||
|
|
||||||
commits.desc = Browse source code change history.
|
commits.desc = Browse source code change history.
|
||||||
commits.commits = Commits
|
commits.commits = Commits
|
||||||
|
@ -1628,6 +1640,12 @@ issues.num_reviews_one = %d review
|
||||||
issues.num_reviews_few = %d reviews
|
issues.num_reviews_few = %d reviews
|
||||||
issues.commented_at = `commented <a href="#%s">%s</a>`
|
issues.commented_at = `commented <a href="#%s">%s</a>`
|
||||||
issues.delete_comment_confirm = Are you sure you want to delete this comment?
|
issues.delete_comment_confirm = Are you sure you want to delete this comment?
|
||||||
|
issues.reaction.add = Add reaction
|
||||||
|
issues.reaction.alt_few = %[1]s reacted %[2]s.
|
||||||
|
issues.reaction.alt_many = %[1]s and %[2]d more reacted %[3]s.
|
||||||
|
issues.reaction.alt_remove = Remove %[1]s reaction from comment.
|
||||||
|
issues.reaction.alt_add = Add %[1]s reaction to comment.
|
||||||
|
issues.context.menu = Comment menu
|
||||||
issues.context.copy_link = Copy link
|
issues.context.copy_link = Copy link
|
||||||
issues.context.quote_reply = Quote reply
|
issues.context.quote_reply = Quote reply
|
||||||
issues.context.reference_issue = Reference in a new issue
|
issues.context.reference_issue = Reference in a new issue
|
||||||
|
@ -1845,6 +1863,7 @@ pulls.new = New pull request
|
||||||
pulls.view = View pull request
|
pulls.view = View pull request
|
||||||
pulls.edit.already_changed = Unable to save changes to the pull request. It appears the content has already been changed by another user. Please refresh the page and try editing again to avoid overwriting their changes
|
pulls.edit.already_changed = Unable to save changes to the pull request. It appears the content has already been changed by another user. Please refresh the page and try editing again to avoid overwriting their changes
|
||||||
pulls.compare_changes = New pull request
|
pulls.compare_changes = New pull request
|
||||||
|
pulls.sign_in_require = <a href="%s">Sign in</a> to create a new pull request.
|
||||||
pulls.allow_edits_from_maintainers = Allow edits from maintainers
|
pulls.allow_edits_from_maintainers = Allow edits from maintainers
|
||||||
pulls.allow_edits_from_maintainers_desc = Users with write access to the base branch can also push to this branch
|
pulls.allow_edits_from_maintainers_desc = Users with write access to the base branch can also push to this branch
|
||||||
pulls.allow_edits_from_maintainers_err = Updating failed
|
pulls.allow_edits_from_maintainers_err = Updating failed
|
||||||
|
@ -2741,6 +2760,7 @@ release.asset_name = Asset name
|
||||||
release.asset_external_url = External URL
|
release.asset_external_url = External URL
|
||||||
release.add_external_asset = Add external asset
|
release.add_external_asset = Add external asset
|
||||||
release.invalid_external_url = Invalid external URL: "%s"
|
release.invalid_external_url = Invalid external URL: "%s"
|
||||||
|
release.summary_card_alt = Summary card of an release titled "%s" in repository %s
|
||||||
|
|
||||||
branch.name = Branch name
|
branch.name = Branch name
|
||||||
branch.already_exists = A branch named "%s" already exists.
|
branch.already_exists = A branch named "%s" already exists.
|
||||||
|
@ -3877,6 +3897,7 @@ variables.deletion.description = Removing a variable is permanent and cannot be
|
||||||
variables.description = Variables will be passed to certain actions and cannot be read otherwise.
|
variables.description = Variables will be passed to certain actions and cannot be read otherwise.
|
||||||
variables.id_not_exist = Variable with ID %d does not exist.
|
variables.id_not_exist = Variable with ID %d does not exist.
|
||||||
variables.edit = Edit Variable
|
variables.edit = Edit Variable
|
||||||
|
variables.not_found = Failed to find the variable.
|
||||||
variables.deletion.failed = Failed to remove variable.
|
variables.deletion.failed = Failed to remove variable.
|
||||||
variables.deletion.success = The variable has been removed.
|
variables.deletion.success = The variable has been removed.
|
||||||
variables.creation.failed = Failed to add variable.
|
variables.creation.failed = Failed to add variable.
|
||||||
|
|
|
@ -56,7 +56,7 @@ mirror=Réplica
|
||||||
new_repo=Nuevo repositorio
|
new_repo=Nuevo repositorio
|
||||||
new_migrate=Nueva migración
|
new_migrate=Nueva migración
|
||||||
new_mirror=Nueva réplica
|
new_mirror=Nueva réplica
|
||||||
new_fork=Nuevo fork de repositorio
|
new_fork=Nueva bifurcación del repositorio
|
||||||
new_org=Nueva organización
|
new_org=Nueva organización
|
||||||
new_project=Nuevo proyecto
|
new_project=Nuevo proyecto
|
||||||
new_project_column=Nueva columna
|
new_project_column=Nueva columna
|
||||||
|
@ -75,7 +75,7 @@ collaborative=Colaborativo
|
||||||
forks=Forks
|
forks=Forks
|
||||||
|
|
||||||
activities=Actividades
|
activities=Actividades
|
||||||
pull_requests=Pull requests
|
pull_requests=Solicitudes de incorporación de cambios
|
||||||
issues=Incidencias
|
issues=Incidencias
|
||||||
milestones=Hitos
|
milestones=Hitos
|
||||||
|
|
||||||
|
@ -156,8 +156,8 @@ invalid_data = Datos inválidos: %v
|
||||||
confirm_delete_artifact = ¿Estás seguro de que deseas eliminar el artefacto "%s"?
|
confirm_delete_artifact = ¿Estás seguro de que deseas eliminar el artefacto "%s"?
|
||||||
more_items = Mas cosas
|
more_items = Mas cosas
|
||||||
copy_generic = Copiar al portapapeles
|
copy_generic = Copiar al portapapeles
|
||||||
filter.not_fork = No forks
|
filter.not_fork = No hay bifurcaciones
|
||||||
filter.is_fork = Forks
|
filter.is_fork = Bifurcaciones
|
||||||
test = Test
|
test = Test
|
||||||
error413 = Has agotado tu cuota.
|
error413 = Has agotado tu cuota.
|
||||||
new_repo.title = Nuevo repositorio
|
new_repo.title = Nuevo repositorio
|
||||||
|
@ -229,7 +229,7 @@ platform_desc=Se ha confirmado que Forgejo funciona en sistemas operativos libre
|
||||||
lightweight=Ligero
|
lightweight=Ligero
|
||||||
lightweight_desc=Forgejo tiene pocos requisitos y puede funcionar en una Raspberry Pi barata. ¡Ahorra energía!
|
lightweight_desc=Forgejo tiene pocos requisitos y puede funcionar en una Raspberry Pi barata. ¡Ahorra energía!
|
||||||
license=Código abierto
|
license=Código abierto
|
||||||
license_desc=¡Está todo en < <a target="_blank" rel="noopener noreferrer" href="%[1]s">Forgejo</a>! Únase <a target="_blank" rel="noopener noreferrer" href="%[2]s">contribuyendo</a> a hacer este proyecto todavía mejor. ¡No sea tímido y colabore!
|
license_desc=¡Pasa a conseguir <a target="_blank" rel="noopener noreferrer" href="%[1]s">Forgejo</a>! Únete a nosotros y <a target="_blank" rel="noopener noreferrer" href="%[2]s">colabora</a> para mejorar este proyecto. ¡No seas tímido y colabora!
|
||||||
|
|
||||||
[install]
|
[install]
|
||||||
install=Instalación
|
install=Instalación
|
||||||
|
@ -397,8 +397,8 @@ code_search_results=Resultados de búsqueda para «%s»
|
||||||
code_last_indexed_at=Indexado por última vez %s
|
code_last_indexed_at=Indexado por última vez %s
|
||||||
relevant_repositories_tooltip=Repositorios que son bifurcaciones o que no tienen ningún tema, ningún icono, y ninguna descripción están ocultos.
|
relevant_repositories_tooltip=Repositorios que son bifurcaciones o que no tienen ningún tema, ningún icono, y ninguna descripción están ocultos.
|
||||||
relevant_repositories=Solo se muestran repositorios relevantes, <a href="%s">mostrar resultados sin filtrar</a>.
|
relevant_repositories=Solo se muestran repositorios relevantes, <a href="%s">mostrar resultados sin filtrar</a>.
|
||||||
forks_few = %d forks
|
forks_few = %d bifurcaciones
|
||||||
forks_one = %d fork
|
forks_one = %d bifurcación
|
||||||
stars_few = %d estrellas
|
stars_few = %d estrellas
|
||||||
stars_one = %d estrella
|
stars_one = %d estrella
|
||||||
|
|
||||||
|
@ -746,7 +746,7 @@ webauthn=Autenticación de dos factores (claves de seguridad)
|
||||||
public_profile=Perfil público
|
public_profile=Perfil público
|
||||||
biography_placeholder=¡Cuenta a otros un poco sobre ti! (Se admite Markdown)
|
biography_placeholder=¡Cuenta a otros un poco sobre ti! (Se admite Markdown)
|
||||||
location_placeholder=Comparte tu ubicación aproximada con otros
|
location_placeholder=Comparte tu ubicación aproximada con otros
|
||||||
profile_desc=Controla cómo se muestra su perfil a otros usuarios. Tu dirección de correo electrónico principal se utilizará para notificaciones, recuperación de contraseña y operaciones de Git basadas en la web.
|
profile_desc=Acerca de ti
|
||||||
password_username_disabled=Usuarios no locales no tienen permitido cambiar su nombre de usuario. Por favor, contacta con el administrador del sistema para más detalles.
|
password_username_disabled=Usuarios no locales no tienen permitido cambiar su nombre de usuario. Por favor, contacta con el administrador del sistema para más detalles.
|
||||||
full_name=Nombre completo
|
full_name=Nombre completo
|
||||||
website=Página web
|
website=Página web
|
||||||
|
@ -811,7 +811,7 @@ manage_emails=Administrar direcciones de correo electrónico
|
||||||
manage_themes=Tema por defecto
|
manage_themes=Tema por defecto
|
||||||
manage_openid=Direcciones OpenID
|
manage_openid=Direcciones OpenID
|
||||||
email_desc=Su dirección de correo electrónico principal se utilizará para notificaciones, recuperación de contraseña y, siempre y cuando no esté oculto, operaciones de Git basadas en la web.
|
email_desc=Su dirección de correo electrónico principal se utilizará para notificaciones, recuperación de contraseña y, siempre y cuando no esté oculto, operaciones de Git basadas en la web.
|
||||||
theme_desc=Este será su tema por defecto en todo el sitio.
|
theme_desc=Este tema será usado en la interfaz web cuando hayas iniciado sesión.
|
||||||
primary=Principal
|
primary=Principal
|
||||||
activated=Activado
|
activated=Activado
|
||||||
requires_activation=Requiere activación
|
requires_activation=Requiere activación
|
||||||
|
@ -837,14 +837,14 @@ add_email_success=La nueva dirección de correo electrónico ha sido añadida.
|
||||||
email_preference_set_success=La preferencia de correo electrónico se ha establecido correctamente.
|
email_preference_set_success=La preferencia de correo electrónico se ha establecido correctamente.
|
||||||
add_openid_success=La nueva dirección OpenID ha sido añadida.
|
add_openid_success=La nueva dirección OpenID ha sido añadida.
|
||||||
keep_email_private=Ocultar dirección de correo electrónico
|
keep_email_private=Ocultar dirección de correo electrónico
|
||||||
keep_email_private_popup=Esto ocultará tu dirección de correo electrónico de tu perfil. Ya no será la dirección predeterminada para los commits realizados a través de la interfaz web, como las subidas y ediciones de archivos, y no se utilizará para los commits de fusión. En su lugar, se utilizará una dirección especial %s para asociar los commits a tu cuenta. Ten en cuenta que cambiar esta opción no afectará a los commits existentes.
|
keep_email_private_popup=Esto ocultará tu dirección de correo electrónico de tu perfil. Ya no será la dirección predeterminada para los confirmaciones realizadas a través de la interfaz web, como las subidas y ediciones de archivos, y no se utilizará para las confirmaciones de fusión. En su lugar, se utilizará una dirección especial %s para asociar las confirmaciones a tu cuenta. Ten en cuenta que cambiar esta opción no afectará a las confirmaciones existentes.
|
||||||
openid_desc=OpenID le permite delegar la autenticación a un proveedor externo.
|
openid_desc=OpenID le permite delegar la autenticación a un proveedor externo.
|
||||||
|
|
||||||
manage_ssh_keys=Gestionar claves SSH
|
manage_ssh_keys=Gestionar claves SSH
|
||||||
manage_ssh_principals=Administrar Principales de Certificado SSH
|
manage_ssh_principals=Administrar Principales de Certificado SSH
|
||||||
manage_gpg_keys=Gestionar claves GPG
|
manage_gpg_keys=Gestionar claves GPG
|
||||||
add_key=Añadir clave
|
add_key=Añadir clave
|
||||||
ssh_desc=Estas claves SSH públicas están asociadas a tu cuenta. Las correspondientes claves privadas permiten el acceso total a tus repositorios. Las claves SSH que han sido verificadas pueden utilizarse para verificar commits de Git firmados por SSH.
|
ssh_desc=Estas claves SSH públicas están asociadas a tu cuenta. Las correspondientes claves privadas permiten el acceso total a tus repositorios. Las claves SSH que han sido verificadas pueden utilizarse para verificar confirmaciones de Git firmadas por SSH.
|
||||||
principal_desc=Estos principales de certificado SSH están asociados con su cuenta y permiten el acceso completo a sus repositorios.
|
principal_desc=Estos principales de certificado SSH están asociados con su cuenta y permiten el acceso completo a sus repositorios.
|
||||||
gpg_desc=Estas claves GPG públicas están asociadas a tu cuenta y se utilizan para verificar tus commits. Mantén a salvo tus claves privadas, ya que permiten firmar commits con tu identidad.
|
gpg_desc=Estas claves GPG públicas están asociadas a tu cuenta y se utilizan para verificar tus commits. Mantén a salvo tus claves privadas, ya que permiten firmar commits con tu identidad.
|
||||||
ssh_helper=<strong>¿Necesitas ayuda?</strong> Echa un vistazo en la guía de GitHub para <a href="%s">crear tus propias claves SSH</a> o resolver <a href="%s">problemas comunes</a> que puede encontrar al usar SSH.
|
ssh_helper=<strong>¿Necesitas ayuda?</strong> Echa un vistazo en la guía de GitHub para <a href="%s">crear tus propias claves SSH</a> o resolver <a href="%s">problemas comunes</a> que puede encontrar al usar SSH.
|
||||||
|
@ -1054,6 +1054,8 @@ keep_activity_private.description = Tu <a href="%s">actividad pública</a> solo
|
||||||
language.description = Este idioma se guardará en tu cuenta y se utilizará como predeterminado cuando te conectes.
|
language.description = Este idioma se guardará en tu cuenta y se utilizará como predeterminado cuando te conectes.
|
||||||
language.localization_project = ¡Ayúdanos a traducir Forgejo a tu idioma! <a href="%s">Más información</a>.
|
language.localization_project = ¡Ayúdanos a traducir Forgejo a tu idioma! <a href="%s">Más información</a>.
|
||||||
|
|
||||||
|
pronouns_custom_label = Pronombres personalizados
|
||||||
|
|
||||||
[repo]
|
[repo]
|
||||||
owner=Propietario
|
owner=Propietario
|
||||||
owner_helper=Algunas organizaciones pueden no aparecer en el menú desplegable debido a un límite máximo de recuento de repositorios.
|
owner_helper=Algunas organizaciones pueden no aparecer en el menú desplegable debido a un límite máximo de recuento de repositorios.
|
||||||
|
@ -1068,10 +1070,10 @@ visibility=Visibilidad
|
||||||
visibility_description=Sólo el propietario o los miembros de la organización -si tienen derechos- podrán verlo.
|
visibility_description=Sólo el propietario o los miembros de la organización -si tienen derechos- podrán verlo.
|
||||||
visibility_helper=Hacer el repositorio privado
|
visibility_helper=Hacer el repositorio privado
|
||||||
visibility_helper_forced=El administrador de su sitio obliga a nuevos repositorios a ser privados.
|
visibility_helper_forced=El administrador de su sitio obliga a nuevos repositorios a ser privados.
|
||||||
visibility_fork_helper=(Cambiar esto afectará a la visibilidad de todos los forks.)
|
visibility_fork_helper=(Cambiar esto afectará a la visibilidad de todas las bifurcaciones.)
|
||||||
clone_helper=¿Necesita ayuda para clonar? Visite <a target="_blank" rel="noopener noreferrer" href="%s">Ayuda</a>.
|
clone_helper=¿Necesita ayuda para clonar? Visite <a target="_blank" rel="noopener noreferrer" href="%s">Ayuda</a>.
|
||||||
fork_repo=Hacer fork del repositorio
|
fork_repo=Hacer una bifurcación del repositorio
|
||||||
fork_from=Crear un fork desde
|
fork_from=Crear una bifurcación desde
|
||||||
already_forked=Ya ha forkeado %s
|
already_forked=Ya ha forkeado %s
|
||||||
fork_to_different_account=Forkear a una cuenta diferente
|
fork_to_different_account=Forkear a una cuenta diferente
|
||||||
fork_visibility_helper=La visibilidad de un repositorio del cual se ha hecho fork no puede ser cambiada.
|
fork_visibility_helper=La visibilidad de un repositorio del cual se ha hecho fork no puede ser cambiada.
|
||||||
|
@ -1094,11 +1096,11 @@ issue_labels=Etiquetas
|
||||||
issue_labels_helper=Selecciona un conjunto de etiquetas
|
issue_labels_helper=Selecciona un conjunto de etiquetas
|
||||||
license=Licencia
|
license=Licencia
|
||||||
license_helper=Selecciona un archivo de licencia
|
license_helper=Selecciona un archivo de licencia
|
||||||
license_helper_desc=Una licencia regula lo que otros pueden y no pueden hacer con tu código. ¿No está seguro de cuál es el adecuado para su proyecto? Vea <a target="_blank" rel="noopener noreferrer" href="%s">Elija una licencia.</a>
|
license_helper_desc=Una licencia regula lo que otros pueden y no pueden hacer con tu código. ¿No está seguro de cuál es el adecuado para su proyecto? Vea <a target="_blank" rel="noopener noreferrer" href="%s">Elija una licencia</a>.
|
||||||
readme=LÉAME
|
readme=LÉAME
|
||||||
readme_helper=Selecciona una plantilla de archivo README
|
readme_helper=Selecciona una plantilla de archivo README
|
||||||
readme_helper_desc=Este es el lugar donde puedes escribir una descripción completa de su proyecto.
|
readme_helper_desc=Este es el lugar donde puedes escribir una descripción completa de su proyecto.
|
||||||
auto_init=Inicializar el repositorio (añade .gitignore, licencia y README)
|
auto_init=Inicializar el repositorio
|
||||||
trust_model_helper=Seleccionar modelo de confianza para la verificación de la firma. Las opciones posibles son:
|
trust_model_helper=Seleccionar modelo de confianza para la verificación de la firma. Las opciones posibles son:
|
||||||
trust_model_helper_collaborator=Colaborador: Confiar en firmas de colaboradores
|
trust_model_helper_collaborator=Colaborador: Confiar en firmas de colaboradores
|
||||||
trust_model_helper_committer=Comitter: Firmas de confianza que coinciden con los committers
|
trust_model_helper_committer=Comitter: Firmas de confianza que coinciden con los committers
|
||||||
|
@ -1222,7 +1224,7 @@ migrate.migrating_failed_no_addr=Migración fallida.
|
||||||
migrate.github.description=Migrar datos desde github.com o un servidor GitHub Enterprise.
|
migrate.github.description=Migrar datos desde github.com o un servidor GitHub Enterprise.
|
||||||
migrate.git.description=Migrar un repositorio sólo desde cualquier servicio Git.
|
migrate.git.description=Migrar un repositorio sólo desde cualquier servicio Git.
|
||||||
migrate.gitlab.description=Migrar datos de gitlab.com u otra instancia de GitLab.
|
migrate.gitlab.description=Migrar datos de gitlab.com u otra instancia de GitLab.
|
||||||
migrate.gitea.description=Migrar datos de gitea.com u otra instancia de Gitea/Forgejo.
|
migrate.gitea.description=Migrar datos de gitea.com u otra instancia de Gitea.
|
||||||
migrate.gogs.description=Migrar datos de notabug.org u otra instancia de Gogs.
|
migrate.gogs.description=Migrar datos de notabug.org u otra instancia de Gogs.
|
||||||
migrate.onedev.description=Migrar datos desde code.onedev.io u otra instancia de OneDev.
|
migrate.onedev.description=Migrar datos desde code.onedev.io u otra instancia de OneDev.
|
||||||
migrate.codebase.description=Migrar datos desde codebasehq.com.
|
migrate.codebase.description=Migrar datos desde codebasehq.com.
|
||||||
|
@ -1233,7 +1235,7 @@ migrate.migrating_milestones=Migrando hitos
|
||||||
migrate.migrating_labels=Migrando etiquetas
|
migrate.migrating_labels=Migrando etiquetas
|
||||||
migrate.migrating_releases=Migrando lanzamientos
|
migrate.migrating_releases=Migrando lanzamientos
|
||||||
migrate.migrating_issues=Migrando incidencias
|
migrate.migrating_issues=Migrando incidencias
|
||||||
migrate.migrating_pulls=Migrando pull requests
|
migrate.migrating_pulls=Migrando solicitudes de incorporación de cambios
|
||||||
migrate.cancel_migrating_title=Cancelar la migración
|
migrate.cancel_migrating_title=Cancelar la migración
|
||||||
migrate.cancel_migrating_confirm=¿Quiere cancelar esta migración?
|
migrate.cancel_migrating_confirm=¿Quiere cancelar esta migración?
|
||||||
|
|
||||||
|
@ -1310,6 +1312,7 @@ view_git_blame=Ver Git blame
|
||||||
video_not_supported_in_browser=Su navegador no soporta el tag "video" de HTML5.
|
video_not_supported_in_browser=Su navegador no soporta el tag "video" de HTML5.
|
||||||
audio_not_supported_in_browser=Su navegador no soporta el tag "audio" de HTML5.
|
audio_not_supported_in_browser=Su navegador no soporta el tag "audio" de HTML5.
|
||||||
stored_lfs=Almacenados con Git LFS
|
stored_lfs=Almacenados con Git LFS
|
||||||
|
stored_annex=Almacenados con Git Annex
|
||||||
symbolic_link=Enlace simbólico
|
symbolic_link=Enlace simbólico
|
||||||
executable_file=Archivo ejecutable
|
executable_file=Archivo ejecutable
|
||||||
commit_graph=Gráfico de commits
|
commit_graph=Gráfico de commits
|
||||||
|
@ -1333,6 +1336,7 @@ editor.upload_file=Subir archivo
|
||||||
editor.edit_file=Editar archivo
|
editor.edit_file=Editar archivo
|
||||||
editor.preview_changes=Vista previa de los cambios
|
editor.preview_changes=Vista previa de los cambios
|
||||||
editor.cannot_edit_lfs_files=Los archivos LFS no se pueden editar en la interfaz web.
|
editor.cannot_edit_lfs_files=Los archivos LFS no se pueden editar en la interfaz web.
|
||||||
|
editor.cannot_edit_annex_files=Los archivos Annex no se pueden editar en la interfaz web.
|
||||||
editor.cannot_edit_non_text_files=Los archivos binarios no se pueden editar en la interfaz web.
|
editor.cannot_edit_non_text_files=Los archivos binarios no se pueden editar en la interfaz web.
|
||||||
editor.edit_this_file=Editar archivo
|
editor.edit_this_file=Editar archivo
|
||||||
editor.this_file_locked=El archivo está bloqueado
|
editor.this_file_locked=El archivo está bloqueado
|
||||||
|
@ -1859,7 +1863,7 @@ pulls.add_prefix=Añadir prefijo <strong>%s</strong>
|
||||||
pulls.remove_prefix=Eliminar prefijo <strong>%s</strong>
|
pulls.remove_prefix=Eliminar prefijo <strong>%s</strong>
|
||||||
pulls.data_broken=Este pull request está rota debido a que falta información del fork.
|
pulls.data_broken=Este pull request está rota debido a que falta información del fork.
|
||||||
pulls.files_conflicted=Este pull request tiene cambios en conflicto con la rama de destino.
|
pulls.files_conflicted=Este pull request tiene cambios en conflicto con la rama de destino.
|
||||||
pulls.is_checking=La comprobación de conflicto de fusión está en progreso. Inténtalo de nuevo en unos momentos.
|
pulls.is_checking=La comprobación de conflicto de fusión está en progreso. Inténtelo de nuevo en unos momentos.
|
||||||
pulls.is_ancestor=Esta rama ya está incluida en la rama de destino. No hay nada que fusionar.
|
pulls.is_ancestor=Esta rama ya está incluida en la rama de destino. No hay nada que fusionar.
|
||||||
pulls.is_empty=Los cambios en esta rama ya están en la rama de destino. Esto será un commit vacío.
|
pulls.is_empty=Los cambios en esta rama ya están en la rama de destino. Esto será un commit vacío.
|
||||||
pulls.required_status_check_failed=Algunos controles requeridos no han tenido éxito.
|
pulls.required_status_check_failed=Algunos controles requeridos no han tenido éxito.
|
||||||
|
@ -2039,8 +2043,8 @@ activity.opened_prs_count_1=Pull request propuesta
|
||||||
activity.opened_prs_count_n=Pull requests propuestas
|
activity.opened_prs_count_n=Pull requests propuestas
|
||||||
activity.title.user_1=%d usuario
|
activity.title.user_1=%d usuario
|
||||||
activity.title.user_n=%d usuarios
|
activity.title.user_n=%d usuarios
|
||||||
activity.title.prs_1=%d pull request
|
activity.title.prs_1=%d solicitud de incorporación de cambios
|
||||||
activity.title.prs_n=%d pull requests
|
activity.title.prs_n=%d solicitudes de incorporación de cambios
|
||||||
activity.title.prs_merged_by=%s fusionado por %s
|
activity.title.prs_merged_by=%s fusionado por %s
|
||||||
activity.title.prs_opened_by=%s propuesto por %s
|
activity.title.prs_opened_by=%s propuesto por %s
|
||||||
activity.merged_prs_label=Fusionado
|
activity.merged_prs_label=Fusionado
|
||||||
|
@ -2087,7 +2091,7 @@ activity.git_stats_and_deletions=y
|
||||||
activity.git_stats_deletion_1=%d eliminación
|
activity.git_stats_deletion_1=%d eliminación
|
||||||
activity.git_stats_deletion_n=%d eliminaciones
|
activity.git_stats_deletion_n=%d eliminaciones
|
||||||
|
|
||||||
contributors.contribution_type.commits=Commits
|
contributors.contribution_type.commits=Confirmaciones
|
||||||
|
|
||||||
search=Buscar
|
search=Buscar
|
||||||
search.search_repo=Buscar repositorio
|
search.search_repo=Buscar repositorio
|
||||||
|
@ -2331,7 +2335,7 @@ settings.event_pull_request_desc=Pull request abierto, cerrado, reabierto o edit
|
||||||
settings.event_pull_request_assign=Asignación
|
settings.event_pull_request_assign=Asignación
|
||||||
settings.event_pull_request_assign_desc=Pull Request asignado o no asignado.
|
settings.event_pull_request_assign_desc=Pull Request asignado o no asignado.
|
||||||
settings.event_pull_request_label=Etiquetas
|
settings.event_pull_request_label=Etiquetas
|
||||||
settings.event_pull_request_label_desc=Etiqueta de pull request actualizada o borrada.
|
settings.event_pull_request_label_desc=Etiquetas de pull request actualizadas o borradas.
|
||||||
settings.event_pull_request_milestone=Hitos
|
settings.event_pull_request_milestone=Hitos
|
||||||
settings.event_pull_request_milestone_desc=Hitos añadidos, eliminados o modificados.
|
settings.event_pull_request_milestone_desc=Hitos añadidos, eliminados o modificados.
|
||||||
settings.event_pull_request_comment=Comentarios
|
settings.event_pull_request_comment=Comentarios
|
||||||
|
@ -2436,7 +2440,7 @@ settings.protect_approvals_whitelist_users=Lista blanca de usuarios revisores
|
||||||
settings.protect_approvals_whitelist_teams=Lista blanca de equipos revisores
|
settings.protect_approvals_whitelist_teams=Lista blanca de equipos revisores
|
||||||
settings.dismiss_stale_approvals=Descartar aprobaciones obsoletas
|
settings.dismiss_stale_approvals=Descartar aprobaciones obsoletas
|
||||||
settings.dismiss_stale_approvals_desc=Cuando los nuevos commits que cambien el contenido de la pull request sean empujados a la rama, se descartarán las aprobaciones antiguas.
|
settings.dismiss_stale_approvals_desc=Cuando los nuevos commits que cambien el contenido de la pull request sean empujados a la rama, se descartarán las aprobaciones antiguas.
|
||||||
settings.require_signed_commits=Exigir commits firmados
|
settings.require_signed_commits=Exigir confirmaciones firmadas
|
||||||
settings.require_signed_commits_desc=Rechazar push en esta rama si los commits no están firmados o no son verificables.
|
settings.require_signed_commits_desc=Rechazar push en esta rama si los commits no están firmados o no son verificables.
|
||||||
settings.protect_branch_name_pattern=Patrón de nombre de ramas protegidas
|
settings.protect_branch_name_pattern=Patrón de nombre de ramas protegidas
|
||||||
settings.protect_patterns=Patrones
|
settings.protect_patterns=Patrones
|
||||||
|
@ -2464,7 +2468,7 @@ settings.choose_branch=Elija una rama…
|
||||||
settings.no_protected_branch=No hay ramas protegidas.
|
settings.no_protected_branch=No hay ramas protegidas.
|
||||||
settings.edit_protected_branch=Editar
|
settings.edit_protected_branch=Editar
|
||||||
settings.protected_branch_required_rule_name=Nombre de regla requerido
|
settings.protected_branch_required_rule_name=Nombre de regla requerido
|
||||||
settings.protected_branch_duplicate_rule_name=Nombre de regla duplicado
|
settings.protected_branch_duplicate_rule_name=Ya hay una regla para este conjunto de ramas
|
||||||
settings.protected_branch_required_approvals_min=Las aprobaciones necesarias no pueden ser negativas.
|
settings.protected_branch_required_approvals_min=Las aprobaciones necesarias no pueden ser negativas.
|
||||||
settings.tags=Etiquetas
|
settings.tags=Etiquetas
|
||||||
settings.tags.protection=Protección de etiquetas
|
settings.tags.protection=Protección de etiquetas
|
||||||
|
@ -2488,11 +2492,11 @@ settings.archive.text=Archivar el repositorio lo hará de sólo lectura. Se ocul
|
||||||
settings.archive.success=El repositorio ha sido archivado exitosamente.
|
settings.archive.success=El repositorio ha sido archivado exitosamente.
|
||||||
settings.archive.error=Ha ocurrido un error al intentar archivar el repositorio. Vea el registro para más detalles.
|
settings.archive.error=Ha ocurrido un error al intentar archivar el repositorio. Vea el registro para más detalles.
|
||||||
settings.archive.error_ismirror=No puede archivar un repositorio replicado.
|
settings.archive.error_ismirror=No puede archivar un repositorio replicado.
|
||||||
settings.archive.branchsettings_unavailable=Los ajustes de rama no están disponibles si el repositorio está archivado.
|
settings.archive.branchsettings_unavailable=Los ajustes de rama no están disponibles en repositorios archivados.
|
||||||
settings.archive.tagsettings_unavailable=Los ajustes de las etiquetas no están disponibles si el repositorio está archivado.
|
settings.archive.tagsettings_unavailable=Los ajustes de las etiquetas no están disponibles si el repositorio está archivado.
|
||||||
settings.unarchive.button=Desarchivar repositorio
|
settings.unarchive.button=Desarchivar repositorio
|
||||||
settings.unarchive.header=Desarchivar este repositorio
|
settings.unarchive.header=Desarchivar este repositorio
|
||||||
settings.unarchive.text=La desarchivación del repositorio restablecerá su capacidad de recibir commits y pushes, así como nuevas incidencias y pull requests.
|
settings.unarchive.text=La desarchivación del repositorio restablecerá su capacidad de recibir confirmaciones y subidos, así como nuevas incidencias y solicitudes de incorporación de cambios.
|
||||||
settings.unarchive.success=El repositorio se ha desarchivado correctamente.
|
settings.unarchive.success=El repositorio se ha desarchivado correctamente.
|
||||||
settings.unarchive.error=Ocurrió un error mientras se trataba de des-archivar el repositorio. Revisa el registro para más detalles.
|
settings.unarchive.error=Ocurrió un error mientras se trataba de des-archivar el repositorio. Revisa el registro para más detalles.
|
||||||
settings.update_avatar_success=El avatar del repositorio ha sido actualizado.
|
settings.update_avatar_success=El avatar del repositorio ha sido actualizado.
|
||||||
|
@ -2563,7 +2567,7 @@ diff.generated=generado
|
||||||
diff.vendored=vendido
|
diff.vendored=vendido
|
||||||
diff.comment.add_line_comment=Añadir comentario en línea
|
diff.comment.add_line_comment=Añadir comentario en línea
|
||||||
diff.comment.placeholder=Deja un comentario
|
diff.comment.placeholder=Deja un comentario
|
||||||
diff.comment.markdown_info=Es posible estilizar con markdown.
|
diff.comment.markdown_info=Es posible dar estilos con Markdown.
|
||||||
diff.comment.add_single_comment=Añadir solo comentario
|
diff.comment.add_single_comment=Añadir solo comentario
|
||||||
diff.comment.add_review_comment=Añadir comentario
|
diff.comment.add_review_comment=Añadir comentario
|
||||||
diff.comment.start_review=Comenzar revisión
|
diff.comment.start_review=Comenzar revisión
|
||||||
|
@ -2718,7 +2722,7 @@ size_format = %[1]s: %[2]s, %[3]s: %[4]s
|
||||||
admin.update_flags = Actualizar indicadores
|
admin.update_flags = Actualizar indicadores
|
||||||
admin.flags_replaced = Indicadores del repositorio sustituidos
|
admin.flags_replaced = Indicadores del repositorio sustituidos
|
||||||
admin.failed_to_replace_flags = Fallo al substituir los indicadores del repositorio
|
admin.failed_to_replace_flags = Fallo al substituir los indicadores del repositorio
|
||||||
new_repo_helper = Un repositorio contiene todos los archivos del proyecto, incluido el historial de revisiones. ¿Ya tienes uno en otro sitio? <a href="%s">Migrar repositorio.</a>
|
new_repo_helper = Un repositorio contiene todos los archivos del proyecto, incluido el historial de revisiones. ¿Ya tienes uno en otro sitio? <a href="%s">Migrar repositorio</a>.
|
||||||
object_format_helper = Formato de objeto del repositorio. No puede ser modificado más tarde. SHA1 es el más compatible.
|
object_format_helper = Formato de objeto del repositorio. No puede ser modificado más tarde. SHA1 es el más compatible.
|
||||||
commits.browse_further = Seguir explorando
|
commits.browse_further = Seguir explorando
|
||||||
subscribe.issue.guest.tooltip = Inicia sesión para suscribirte a esta incidencia.
|
subscribe.issue.guest.tooltip = Inicia sesión para suscribirte a esta incidencia.
|
||||||
|
@ -2796,7 +2800,7 @@ settings.confirmation_string = Cadena de confirmación
|
||||||
issues.filter_sort.relevance = Relevancia
|
issues.filter_sort.relevance = Relevancia
|
||||||
settings.transfer_quota_exceeded = El nuevo propietario (%s) ha sobrepasado la cuota. El repositorio no ha sido transferido.
|
settings.transfer_quota_exceeded = El nuevo propietario (%s) ha sobrepasado la cuota. El repositorio no ha sido transferido.
|
||||||
settings.web_hook_name_sourcehut_builds = Builds de SourceHut
|
settings.web_hook_name_sourcehut_builds = Builds de SourceHut
|
||||||
settings.wiki_rename_branch_main_notices_2 =
|
settings.wiki_rename_branch_main_notices_2 =Se va a renombrar de forma permanente la rama interna de la wiki del repositorio %s. Se actualizaran los checkouts existentes.
|
||||||
settings.wiki_rename_branch_main = Normalizar el nombre de la rama de la wiki
|
settings.wiki_rename_branch_main = Normalizar el nombre de la rama de la wiki
|
||||||
settings.wiki_rename_branch_main_desc = Renombrar la rama interna usada por la wiki a "%s". Este cambio es permanente y no se puede deshacer.
|
settings.wiki_rename_branch_main_desc = Renombrar la rama interna usada por la wiki a "%s". Este cambio es permanente y no se puede deshacer.
|
||||||
settings.confirm_wiki_branch_rename = Renombrar la rama de la wiki
|
settings.confirm_wiki_branch_rename = Renombrar la rama de la wiki
|
||||||
|
@ -2813,7 +2817,32 @@ release.download_count_one = %s descarga
|
||||||
diff.git-notes.add = Añadir nota
|
diff.git-notes.add = Añadir nota
|
||||||
diff.git-notes.remove-header = Eliminar nota
|
diff.git-notes.remove-header = Eliminar nota
|
||||||
release.download_count_few = %s descargas
|
release.download_count_few = %s descargas
|
||||||
diff.git-notes.remove-body = Esta nota se eliminará.
|
diff.git-notes.remove-body = Esta nota será eliminada.
|
||||||
|
|
||||||
|
new_from_template = Usa una plantilla
|
||||||
|
new_from_template_description = Puedes seleccionar una plantilla de repositorio ya existente en esta instancia y aplicar sus ajustes.
|
||||||
|
new_advanced = Ajustes avanzados
|
||||||
|
new_advanced_expand = Click para expandir
|
||||||
|
auto_init_description = Empieza el historial Git con un README y opcionalmente añade una Licencia y archivos .gitignore.
|
||||||
|
editor.add_tmpl.filename = nombre de fichero
|
||||||
|
issues.num_reviews_one = %d revisión
|
||||||
|
issues.num_reviews_few = %d revisiones
|
||||||
|
issues.reaction.add = Añadir reacción
|
||||||
|
issues.reaction.alt_remove = Quitar %[1]s reacción de comentario.
|
||||||
|
issues.reaction.alt_add = Añadir %[1]s reacción al comentario.
|
||||||
|
issues.review.add_review_requests = solicitada revisiones de %[1]s %[2]s
|
||||||
|
issues.review.remove_review_requests = eliminada la solicitud de revisiones para %[1]s %[2]s
|
||||||
|
|
||||||
|
editor.commit_email = Correo electrónico del commit
|
||||||
|
issues.context.menu = Menú de comentarios
|
||||||
|
issues.review.add_remove_review_requests = Revisiones solicitadas de %[1]s y revisiones eliminadas para %[2]s %[3]s
|
||||||
|
pulls.sign_in_require = <a href="%s">Inicia sesión</a> para crear un nuevo pull request.
|
||||||
|
pulls.cmd_instruction_checkout_title = Cambiar rama
|
||||||
|
settings.protect_new_rule = Crear una nueva regla de protección de rama
|
||||||
|
settings.enforce_on_admins_desc = Los administradores del repositorio no pueden saltarse esta regla.
|
||||||
|
release.type_external_asset = Recurso externo
|
||||||
|
release.asset_name = Nombre del recurso
|
||||||
|
release.add_external_asset = Añadir un recurso externo
|
||||||
|
|
||||||
[graphs]
|
[graphs]
|
||||||
component_loading = Cargando %s...
|
component_loading = Cargando %s...
|
||||||
|
@ -2822,6 +2851,9 @@ contributors.what = contribuciones
|
||||||
recent_commits.what = commits recientes
|
recent_commits.what = commits recientes
|
||||||
code_frequency.what = frecuencia de código
|
code_frequency.what = frecuencia de código
|
||||||
|
|
||||||
|
component_loading_info = Esto puede tomar un tiempo…
|
||||||
|
component_failed_to_load = Ocurrió un error inesperado.
|
||||||
|
|
||||||
[org]
|
[org]
|
||||||
org_name_holder=Nombre de la organización
|
org_name_holder=Nombre de la organización
|
||||||
org_full_name_holder=Nombre completo de la organización
|
org_full_name_holder=Nombre completo de la organización
|
||||||
|
@ -2947,6 +2979,8 @@ teams.invite.by=Invitado por %s
|
||||||
teams.invite.description=Por favor, haga clic en el botón de abajo para unirse al equipo.
|
teams.invite.description=Por favor, haga clic en el botón de abajo para unirse al equipo.
|
||||||
follow_blocked_user = No puedes seguir a esta organización porque esta organización te ha bloqueado.
|
follow_blocked_user = No puedes seguir a esta organización porque esta organización te ha bloqueado.
|
||||||
|
|
||||||
|
open_dashboard = Abrir panel de control
|
||||||
|
|
||||||
[admin]
|
[admin]
|
||||||
dashboard=Panel de control
|
dashboard=Panel de control
|
||||||
identity_access=Identidad y acceso
|
identity_access=Identidad y acceso
|
||||||
|
@ -3474,6 +3508,20 @@ notices.op=Operación
|
||||||
notices.delete_success=Los avisos del sistema se han eliminado.
|
notices.delete_success=Los avisos del sistema se han eliminado.
|
||||||
|
|
||||||
|
|
||||||
|
config_summary = Resumen
|
||||||
|
config_settings = Ajustes
|
||||||
|
users.activated.description = Finalización de la verificación del correo electrónico. El propietario de una cuenta sin activar no podrá iniciar sesión hasta que la verificación se complete.
|
||||||
|
users.organization_creation.description = Permitir la creación de nuevas organizaciones.
|
||||||
|
emails.change_email_text = ¿Estás seguro que quieres actualizar esta dirección de correo electrónico?
|
||||||
|
emails.delete = Eliminar correo electrónico
|
||||||
|
emails.delete_desc = ¿Estás seguro que quieres eliminar esta dirección de correo electrónico?
|
||||||
|
emails.deletion_success = El correo electrónico ha sido eliminado.
|
||||||
|
emails.delete_primary_email_error = No puedes eliminar el correo electrónico principal.
|
||||||
|
auths.tips.gmail_settings = Ajustes de Gmail:
|
||||||
|
auths.tip.gitlab_new = Registrar una nueva aplicación en %s
|
||||||
|
config.cache_test = Caché de prueba
|
||||||
|
self_check.no_problem_found = Aún no se encontró un problema.
|
||||||
|
|
||||||
[action]
|
[action]
|
||||||
create_repo=creó el repositorio <a href="%s">%s</a>
|
create_repo=creó el repositorio <a href="%s">%s</a>
|
||||||
rename_repo=repositorio renombrado de <code>%[1]s</code> a <a href="%[2]s">%[3]s</a>
|
rename_repo=repositorio renombrado de <code>%[1]s</code> a <a href="%[2]s">%[3]s</a>
|
||||||
|
@ -3617,7 +3665,7 @@ conda.install=Para instalar el paquete usando Conda, ejecute el siguiente comand
|
||||||
container.details.type=Tipo de imagen
|
container.details.type=Tipo de imagen
|
||||||
container.details.platform=Plataforma
|
container.details.platform=Plataforma
|
||||||
container.pull=Arrastra la imagen desde la línea de comandos:
|
container.pull=Arrastra la imagen desde la línea de comandos:
|
||||||
container.digest=Resumen:
|
container.digest=Resumen
|
||||||
container.multi_arch=SO / Arquitectura
|
container.multi_arch=SO / Arquitectura
|
||||||
container.layers=Capas de imagen
|
container.layers=Capas de imagen
|
||||||
container.labels=Etiquetas
|
container.labels=Etiquetas
|
||||||
|
@ -3714,6 +3762,19 @@ owner.settings.chef.title=Registro de Chef
|
||||||
owner.settings.chef.keypair=Generar par de claves
|
owner.settings.chef.keypair=Generar par de claves
|
||||||
owner.settings.chef.keypair.description=Un par de claves es necesario para autenticarse en el registro del Chef. Si ha generado un par de claves antes, generar un nuevo par de claves descartará el par de claves antiguo.
|
owner.settings.chef.keypair.description=Un par de claves es necesario para autenticarse en el registro del Chef. Si ha generado un par de claves antes, generar un nuevo par de claves descartará el par de claves antiguo.
|
||||||
|
|
||||||
|
arch.pacman.repo.multi = %s tiene la misma versión en diferentes distribuciones.
|
||||||
|
arch.pacman.repo.multi.item = Configuración para %s
|
||||||
|
arch.pacman.conf = Añadir servidor con distribución y arquitectura relacionadas a <code>/etc/pacman.conf</code> :
|
||||||
|
arch.pacman.sync = Sincronizar el paquete con pacman:
|
||||||
|
arch.version.properties = Propiedades de la versión
|
||||||
|
arch.version.groups = Grupo
|
||||||
|
arch.version.depends = Depende
|
||||||
|
arch.version.conflicts = Conflictos
|
||||||
|
arch.version.replaces = Reemplazos
|
||||||
|
arch.version.backup = Copia de seguridad
|
||||||
|
container.images.title = Imágenes
|
||||||
|
rpm.repository.multiple_groups = Este paquete está disponible en múltiples grupos.
|
||||||
|
|
||||||
[secrets]
|
[secrets]
|
||||||
secrets=Secretos
|
secrets=Secretos
|
||||||
description=Los secretos pasarán a ciertas acciones y no se podrán leer de otro modo.
|
description=Los secretos pasarán a ciertas acciones y no se podrán leer de otro modo.
|
||||||
|
@ -3732,7 +3793,7 @@ management=Gestión de secretos
|
||||||
[actions]
|
[actions]
|
||||||
actions=Acciones
|
actions=Acciones
|
||||||
|
|
||||||
unit.desc=Gestionar acciones
|
unit.desc=Gestione procesos CI/CD integrados con Forgejo Actions.
|
||||||
|
|
||||||
status.unknown=Desconocido
|
status.unknown=Desconocido
|
||||||
status.waiting=Esperando
|
status.waiting=Esperando
|
||||||
|
@ -3816,6 +3877,9 @@ variables.update.failed=Error al editar la variable.
|
||||||
variables.update.success=La variable ha sido editada.
|
variables.update.success=La variable ha sido editada.
|
||||||
variables.id_not_exist = Variable con id %d no existe.
|
variables.id_not_exist = Variable con id %d no existe.
|
||||||
|
|
||||||
|
runs.empty_commit_message = (mensaje de commit vacío)
|
||||||
|
runs.expire_log_message = Los registros han sido eliminados porque eran demasiado antiguos.
|
||||||
|
|
||||||
[projects]
|
[projects]
|
||||||
type-1.display_name=Proyecto individual
|
type-1.display_name=Proyecto individual
|
||||||
type-2.display_name=Proyecto repositorio
|
type-2.display_name=Proyecto repositorio
|
||||||
|
@ -3837,7 +3901,7 @@ search = Buscar...
|
||||||
type_tooltip = Tipo de búsqueda
|
type_tooltip = Tipo de búsqueda
|
||||||
project_kind = Buscar proyectos...
|
project_kind = Buscar proyectos...
|
||||||
branch_kind = Buscar ramas...
|
branch_kind = Buscar ramas...
|
||||||
commit_kind = Buscar commits...
|
commit_kind = Buscar confirmaciones...
|
||||||
repo_kind = Buscar repositorios...
|
repo_kind = Buscar repositorios...
|
||||||
user_kind = Buscar usuarios...
|
user_kind = Buscar usuarios...
|
||||||
org_kind = Buscar organizaciones...
|
org_kind = Buscar organizaciones...
|
||||||
|
@ -3860,6 +3924,8 @@ fuzzy = Difusa
|
||||||
runner_kind = Buscar ejecutores…
|
runner_kind = Buscar ejecutores…
|
||||||
regexp_tooltip = Interpretar los términos de búsqueda como una expresión regular
|
regexp_tooltip = Interpretar los términos de búsqueda como una expresión regular
|
||||||
|
|
||||||
|
regexp = Expresión Regular
|
||||||
|
|
||||||
[markup]
|
[markup]
|
||||||
filepreview.lines = Líneas %[1]d a %[2]d en %[3]s
|
filepreview.lines = Líneas %[1]d a %[2]d en %[3]s
|
||||||
filepreview.line = Línea %[1]d en %[2]s
|
filepreview.line = Línea %[1]d en %[2]s
|
||||||
|
@ -3870,7 +3936,7 @@ releases.write = <b>Write:</b> Publicar, editar y eliminar lanzamientos y sus ar
|
||||||
packages.read = <b>Lectura:</b> Ver y descargar paquetes asignados al repositorio.
|
packages.read = <b>Lectura:</b> Ver y descargar paquetes asignados al repositorio.
|
||||||
wiki.read = <b>Lectura:</b> Leer la wiki integrada y su historial.
|
wiki.read = <b>Lectura:</b> Leer la wiki integrada y su historial.
|
||||||
issues.read = <b>Lectura:</b> Leer y crear incidencias y comentarios.
|
issues.read = <b>Lectura:</b> Leer y crear incidencias y comentarios.
|
||||||
pulls.write = <b>Escritura:</b> Cerrar pull requests y gestionar metadatos como etiquetas, hitos, asignaciones, fechas de vencimiento y dependencias.
|
pulls.write = <b>Escritura:</b> Cerrar solicitudes de incorporación de cambios y gestionar metadatos como etiquetas, hitos, asignaciones, fechas de vencimiento y dependencias.
|
||||||
releases.read = <b>Lectura:</b> Ver y descagar lanzamientos.
|
releases.read = <b>Lectura:</b> Ver y descagar lanzamientos.
|
||||||
wiki.write = <b>Escritura:</b> Crear, actualizar y eliminar páginas en la wiki integrada.
|
wiki.write = <b>Escritura:</b> Crear, actualizar y eliminar páginas en la wiki integrada.
|
||||||
projects.read = <b>Lectura:</b> Acceso a las tablas de proyecto del repositorio.
|
projects.read = <b>Lectura:</b> Acceso a las tablas de proyecto del repositorio.
|
||||||
|
|
|
@ -881,7 +881,7 @@ migrate.migrating_failed=مهاجرت از <b>%s</b> ناموفق بود.
|
||||||
migrate.migrating_failed_no_addr=مهاجرت ناموفق بود.
|
migrate.migrating_failed_no_addr=مهاجرت ناموفق بود.
|
||||||
migrate.git.description=کوچ یک مخزن فقط از یک سرویس Git.
|
migrate.git.description=کوچ یک مخزن فقط از یک سرویس Git.
|
||||||
migrate.gitlab.description=مهاجرت داده از gitlabb.com یا پیادهسازیهای دیگر GitLab.
|
migrate.gitlab.description=مهاجرت داده از gitlabb.com یا پیادهسازیهای دیگر GitLab.
|
||||||
migrate.gitea.description=مهاجرت داده از gitea.com یا پیادهسازیهای دیگر Gitea/Forgejo.
|
migrate.gitea.description=مهاجرت داده از gitea.com یا پیادهسازیهای دیگر Gitea.
|
||||||
migrate.gogs.description=مهاجرت داده از notabug.com یا پیادهسازیهای دیگر Gogs.
|
migrate.gogs.description=مهاجرت داده از notabug.com یا پیادهسازیهای دیگر Gogs.
|
||||||
migrate.onedev.description=مهاجرت داده از code.onedev.io یا پیادهسازیهای دیگر OneDev.
|
migrate.onedev.description=مهاجرت داده از code.onedev.io یا پیادهسازیهای دیگر OneDev.
|
||||||
migrate.codebase.description=مهاجر داده ها از codebasehq.com.
|
migrate.codebase.description=مهاجر داده ها از codebasehq.com.
|
||||||
|
@ -951,6 +951,7 @@ file_copy_permalink=پرمالینک را کپی کنید
|
||||||
video_not_supported_in_browser=مرورگر شما از تگ video که در HTML5 تعریف شده است، پشتیبانی نمی کند.
|
video_not_supported_in_browser=مرورگر شما از تگ video که در HTML5 تعریف شده است، پشتیبانی نمی کند.
|
||||||
audio_not_supported_in_browser=مرورگر شما از تگ audio که در HTML5 تعریف شده است، پشتیبانی نمی کند.
|
audio_not_supported_in_browser=مرورگر شما از تگ audio که در HTML5 تعریف شده است، پشتیبانی نمی کند.
|
||||||
stored_lfs=ذخیره شده با GIT LFS
|
stored_lfs=ذخیره شده با GIT LFS
|
||||||
|
stored_annex=ذخیره شده با GIT Annex
|
||||||
symbolic_link=پیوند نمادین
|
symbolic_link=پیوند نمادین
|
||||||
commit_graph=نمودار کامیت
|
commit_graph=نمودار کامیت
|
||||||
commit_graph.select=انتخاب برنچها
|
commit_graph.select=انتخاب برنچها
|
||||||
|
@ -968,6 +969,7 @@ editor.upload_file=بارگذاری پرونده
|
||||||
editor.edit_file=ویرایش پرونده
|
editor.edit_file=ویرایش پرونده
|
||||||
editor.preview_changes=پیش نمایش تغییرات
|
editor.preview_changes=پیش نمایش تغییرات
|
||||||
editor.cannot_edit_lfs_files=پرونده های LFS در صحفه وب قابل تغییر نیست.
|
editor.cannot_edit_lfs_files=پرونده های LFS در صحفه وب قابل تغییر نیست.
|
||||||
|
editor.cannot_edit_annex_files=پرونده های Annex در صحفه وب قابل تغییر نیست.
|
||||||
editor.cannot_edit_non_text_files=پروندههای دودویی در صفحه وب قابل تغییر نیست.
|
editor.cannot_edit_non_text_files=پروندههای دودویی در صفحه وب قابل تغییر نیست.
|
||||||
editor.edit_this_file=ویرایش پرونده
|
editor.edit_this_file=ویرایش پرونده
|
||||||
editor.this_file_locked=پرونده قفل شده است
|
editor.this_file_locked=پرونده قفل شده است
|
||||||
|
@ -2291,7 +2293,7 @@ auths.bind_password=اتصال گذرواژه
|
||||||
auths.user_base=پایگاه جستجوی کاربر
|
auths.user_base=پایگاه جستجوی کاربر
|
||||||
auths.user_dn=کاربر DN
|
auths.user_dn=کاربر DN
|
||||||
auths.attribute_username=ویژگی نام کاربری
|
auths.attribute_username=ویژگی نام کاربری
|
||||||
auths.attribute_username_placeholder=نام کاربری را خالی بگذارید برای انتخاب نام کاربری gitea انتخاب شود.
|
auths.attribute_username_placeholder=نام کاربری را خالی بگذارید برای انتخاب نام کاربری Forgejo انتخاب شود.
|
||||||
auths.attribute_name=ویژگی نام
|
auths.attribute_name=ویژگی نام
|
||||||
auths.attribute_surname=ویژگی نام خانوادگی
|
auths.attribute_surname=ویژگی نام خانوادگی
|
||||||
auths.attribute_mail=ویژگی ایمیل
|
auths.attribute_mail=ویژگی ایمیل
|
||||||
|
|
|
@ -119,7 +119,7 @@ new_project_column = Uusi sarake
|
||||||
retry = Yritä uudelleen
|
retry = Yritä uudelleen
|
||||||
copy_type_unsupported = Tätä tiedostotyyppiä ei voi kopioida
|
copy_type_unsupported = Tätä tiedostotyyppiä ei voi kopioida
|
||||||
locked = Lukittu
|
locked = Lukittu
|
||||||
filter = Suodatin
|
filter = Suodata
|
||||||
filter.is_archived = Arkistoitu
|
filter.is_archived = Arkistoitu
|
||||||
filter.not_archived = Ei arkistoitu
|
filter.not_archived = Ei arkistoitu
|
||||||
filter.public = Julkinen
|
filter.public = Julkinen
|
||||||
|
@ -167,6 +167,8 @@ filter.not_template = Ei mallipohjat
|
||||||
filter.not_mirror = Ei peilattu
|
filter.not_mirror = Ei peilattu
|
||||||
copy_path = Kopioi polku
|
copy_path = Kopioi polku
|
||||||
|
|
||||||
|
concept_user_individual = Yksittäinen
|
||||||
|
|
||||||
[aria]
|
[aria]
|
||||||
footer.links = Linkit
|
footer.links = Linkit
|
||||||
navbar = Navigaatiopalkki
|
navbar = Navigaatiopalkki
|
||||||
|
@ -205,6 +207,8 @@ table_modal.placeholder.content = Sisältö
|
||||||
table_modal.label.rows = Rivit
|
table_modal.label.rows = Rivit
|
||||||
table_modal.label.columns = Sarakkeet
|
table_modal.label.columns = Sarakkeet
|
||||||
|
|
||||||
|
buttons.unindent.tooltip = Vähennä sisennystä yhden tason verran
|
||||||
|
|
||||||
[filter]
|
[filter]
|
||||||
string.asc = A - Ö
|
string.asc = A - Ö
|
||||||
string.desc = Ö - A
|
string.desc = Ö - A
|
||||||
|
@ -231,7 +235,7 @@ install_desc = Suorita alustallesi suunnattu <a target="_blank" rel="noopener no
|
||||||
|
|
||||||
[install]
|
[install]
|
||||||
install=Asennus
|
install=Asennus
|
||||||
title=Alkuperäiset asetukset
|
title=Aloitusasetukset
|
||||||
docker_helper=Jos ajat Forgejoa Dockerin sisällä, lue <a target="_blank" rel="noopener noreferrer" href="%s">ohjeet</a> ennen minkään asetuksen muuttamista.
|
docker_helper=Jos ajat Forgejoa Dockerin sisällä, lue <a target="_blank" rel="noopener noreferrer" href="%s">ohjeet</a> ennen minkään asetuksen muuttamista.
|
||||||
require_db_desc=Forgejo tarvitsee toimiakseen MySQL-, PostgreSQL-, SQLite3- tai TiDB- (MySQL-protokolla) tietokannan.
|
require_db_desc=Forgejo tarvitsee toimiakseen MySQL-, PostgreSQL-, SQLite3- tai TiDB- (MySQL-protokolla) tietokannan.
|
||||||
db_title=Tietokannan asetukset
|
db_title=Tietokannan asetukset
|
||||||
|
@ -292,7 +296,7 @@ disable_gravatar.description=Poista Gravatar ja kolmannen osapuolen avaratir kä
|
||||||
federated_avatar_lookup=Käytä federoituja profiilikuvia
|
federated_avatar_lookup=Käytä federoituja profiilikuvia
|
||||||
federated_avatar_lookup.description=Käytä Libravatar-palvelua profiilikuvien hakemiseen.
|
federated_avatar_lookup.description=Käytä Libravatar-palvelua profiilikuvien hakemiseen.
|
||||||
disable_registration=Poista omatoiminen rekisteröityminen käytöstä
|
disable_registration=Poista omatoiminen rekisteröityminen käytöstä
|
||||||
disable_registration.description=Poista käyttäjän itse-rekisteröinti, vain ylläpito voi luoda tilejä.
|
disable_registration.description=Vain järjestelmänvalvojat voivat luoda uusia käyttäjiä. On suositeltavaa pitää rekisteröinti suljettuna mikäli kyseessä ei ole julkinen instanssi jota varten tarvitsee hallinnoida suuria määriä roskapostikäyttäjiä.
|
||||||
allow_only_external_registration.description=Käyttäjät voivat luoda uusia käyttäjiä vain erikseen konfiguroituja ulkoisia palveluja käyttäen.
|
allow_only_external_registration.description=Käyttäjät voivat luoda uusia käyttäjiä vain erikseen konfiguroituja ulkoisia palveluja käyttäen.
|
||||||
openid_signin=Ota OpenID-kirjautuminen käyttöön
|
openid_signin=Ota OpenID-kirjautuminen käyttöön
|
||||||
openid_signin.description=Salli OpenID:n kautta kirjautuminen.
|
openid_signin.description=Salli OpenID:n kautta kirjautuminen.
|
||||||
|
@ -319,7 +323,7 @@ default_keep_email_private=Piilota sähköpostiosoitteet oletuksena
|
||||||
default_keep_email_private.description=Piilota oletusarvoisesti uusien käyttäjätilien sähköpostiosoitteet estääksesi tietojen vuotamisen rekisteröinnin yhteydessä.
|
default_keep_email_private.description=Piilota oletusarvoisesti uusien käyttäjätilien sähköpostiosoitteet estääksesi tietojen vuotamisen rekisteröinnin yhteydessä.
|
||||||
default_enable_timetracking=Ota ajanseuranta oletusarvoisesti käyttöön
|
default_enable_timetracking=Ota ajanseuranta oletusarvoisesti käyttöön
|
||||||
default_enable_timetracking.description=Salli uusien repositorioiden aikaseurannan käyttöönotto oletusarvoisesti.
|
default_enable_timetracking.description=Salli uusien repositorioiden aikaseurannan käyttöönotto oletusarvoisesti.
|
||||||
no_reply_address=Piilotettu sähköpostin verkkotunnus
|
no_reply_address=Piilotetun sähköpostin verkkotunnus
|
||||||
no_reply_address_helper=Verkkotunnuksen nimi käyttäjille, joilla on piilotettu sähköpostiosoite. Esimerkiksi käyttäjätunnus 'joe' kirjataan Git-palveluun nimellä 'joe@noreply.example.org' jos piilotetun sähköpostiosoitteen arvoksi on asetettu 'noreply.example.org'.
|
no_reply_address_helper=Verkkotunnuksen nimi käyttäjille, joilla on piilotettu sähköpostiosoite. Esimerkiksi käyttäjätunnus 'joe' kirjataan Git-palveluun nimellä 'joe@noreply.example.org' jos piilotetun sähköpostiosoitteen arvoksi on asetettu 'noreply.example.org'.
|
||||||
password_algorithm=Salasanan hajautusalgoritmi
|
password_algorithm=Salasanan hajautusalgoritmi
|
||||||
enable_update_checker_helper_forgejo = Se tarkistaa tietyin väliajoin uusia Forgejo-versioita tutkimalla sen TXT DNS record -tietoja osoitteesta release.forgejo.org .
|
enable_update_checker_helper_forgejo = Se tarkistaa tietyin väliajoin uusia Forgejo-versioita tutkimalla sen TXT DNS record -tietoja osoitteesta release.forgejo.org .
|
||||||
|
@ -346,6 +350,8 @@ app_slogan_helper = Syötä instanssin tunnuslause tähän. Jätä tyhjäksi poi
|
||||||
domain_helper = Palvelimen verkkotunnus tai isäntänimi.
|
domain_helper = Palvelimen verkkotunnus tai isäntänimi.
|
||||||
smtp_from_invalid = "Lähetä sähköpostit osoitteella"-osoite on virheellinen
|
smtp_from_invalid = "Lähetä sähköpostit osoitteella"-osoite on virheellinen
|
||||||
|
|
||||||
|
err_admin_name_pattern_not_allowed = Ylläpitäjän käyttäjätunnus on virheellinen, se vastaa varattua kaaviota
|
||||||
|
|
||||||
[home]
|
[home]
|
||||||
uname_holder=Käyttäjätunnus tai sähköpostiosoite
|
uname_holder=Käyttäjätunnus tai sähköpostiosoite
|
||||||
password_holder=Salasana
|
password_holder=Salasana
|
||||||
|
@ -461,6 +467,19 @@ change_unconfirmed_email = Jos annoit väärän sähköpostiosoitteen rekisterö
|
||||||
invalid_code_forgot_password = Vahvistuskoodisi on virheellinen tai vanhentunut. Napsauta <a href="%s">tästä</a> aloittaaksesi uuden istunnon.
|
invalid_code_forgot_password = Vahvistuskoodisi on virheellinen tai vanhentunut. Napsauta <a href="%s">tästä</a> aloittaaksesi uuden istunnon.
|
||||||
openid_signin_desc = Kirjoita OpenID-URI:si. Esimerkki: alice.openid.example.org tai https://openid.example.org/alice.
|
openid_signin_desc = Kirjoita OpenID-URI:si. Esimerkki: alice.openid.example.org tai https://openid.example.org/alice.
|
||||||
change_unconfirmed_email_summary = Vaihda sähköpostiosoite, johon aktivointisähköposti lähetetään.
|
change_unconfirmed_email_summary = Vaihda sähköpostiosoite, johon aktivointisähköposti lähetetään.
|
||||||
|
reset_password_wrong_user = Olet kirjautuneena tilillä %s, mutta tilin palautuslinkki on tarkoitettu tilille %s
|
||||||
|
last_admin = Et voi poistaa viimeistä ylläpitäjää. Ylläpitäjiä tulee olla vähintään yksi.
|
||||||
|
password_pwned = Valitsemasi salasana on <a target="_blank" rel="noopener noreferrer" href="%s">varastettujen salasanojen listalla</a>, eli se on paljastanut jossain julkisessa tietovuodossa. Kokeile asettaa eri salasana, ja jos käytät samaa salasanaa muissa palveluissa, vaihda kyseinen salasana.
|
||||||
|
|
||||||
|
use_onetime_code = Käytä kertakäyttöiskoodia
|
||||||
|
|
||||||
|
unauthorized_credentials = Kirjautumistiedot ovat virheelliset tai vanhentuneet. Yritä suorittaa komento uudelleen tai katso %s saadaksesi lisätietoja
|
||||||
|
oauth.signin.error = Valtuuspyynnön käsittelyssä tapahtui virhe. Jos virhe toistuu, ota yhteys sivuston ylläpitoon.
|
||||||
|
oauth.signin.error.temporarily_unavailable = Valtuus epäonnistui, koska todennuspalvelin ei ole tällä hetkellä käytettävissä. Yritä uudelleen myöhemmin.
|
||||||
|
disable_forgot_password_mail = Tilin palautus ei ole käytössä, koska sähköpostia ei ole määritetty. Ota yhteys sivuston ylläpitoon.
|
||||||
|
disable_forgot_password_mail_admin = Tilin palautus on käytössä vain, jos sähköposti on määritetty. Aseta sähköposti, jotta tilin palauttaminen on mahdollista ottaa käyttöön.
|
||||||
|
authorization_failed_desc = Valtuus epäonnistui, koska havaitsimme virheellisen pyynnön. Ota yhteys sen sovelluksen ylläpitäjään, jota yritit valtuuttaa.
|
||||||
|
password_pwned_err = Pyyntöä HaveIBeenPwned-palveluun ei voitu suorittaa
|
||||||
|
|
||||||
[mail]
|
[mail]
|
||||||
view_it_on=Näytä %s
|
view_it_on=Näytä %s
|
||||||
|
@ -514,9 +533,18 @@ account_security_caution.text_1 = Jos se olit sinä, voit jättää tämän vies
|
||||||
issue.action.approve = <b>@%[1]s</b> hyväksyi tämän vetopyynnön.
|
issue.action.approve = <b>@%[1]s</b> hyväksyi tämän vetopyynnön.
|
||||||
issue.action.review = <b>@%[1]s</b> kommentoi tätä vetopyyntöä.
|
issue.action.review = <b>@%[1]s</b> kommentoi tätä vetopyyntöä.
|
||||||
issue.action.ready_for_review = <b>@%[1]s</b> merkitsi tämän vetopyynnön valmiiksi katselmointia varten.
|
issue.action.ready_for_review = <b>@%[1]s</b> merkitsi tämän vetopyynnön valmiiksi katselmointia varten.
|
||||||
|
totp_disabled.text_1 = Tilisi aikapohjainen kertakäyttösalasana (TOTP) poistettiin käytöstä.
|
||||||
|
issue.action.close = <b>@%[1]s</b> sulki ongelman #%[2]d.
|
||||||
|
issue.action.reopen = <b>@%[1]s</b> avasi uudelleen ongelman #%[2]d.
|
||||||
|
admin.new_user.text = <a href="%s">Napsauta tästä</a> hallitaksesi tätä käyttäjää ylläpitonäkymästä.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
repo.collaborator.added.text = Sinut on lisätty avustajaksi repoon:
|
||||||
|
|
||||||
|
primary_mail_change.text_1 = Tilisi ensisijaiseksi sähköpostiosoitteeksi asetettiin %[1]s. Se tarkoittaa, että tämä sähköpostiosoite ei enää vastaanota tilisi ilmoituksia sähköpostitse.
|
||||||
|
team_invite.text_1 = %[1]s on kutsunut sinut liittymään tiimiin %[2]s organisaatiossa %[3]s.
|
||||||
|
|
||||||
[modal]
|
[modal]
|
||||||
yes=Kyllä
|
yes=Kyllä
|
||||||
no=Ei
|
no=Ei
|
||||||
|
@ -629,8 +657,13 @@ following_one = %d seurataan
|
||||||
block_user.detail = Huomaa, että käyttäjän estämisellä on muita vaikutuksia, kuten:
|
block_user.detail = Huomaa, että käyttäjän estämisellä on muita vaikutuksia, kuten:
|
||||||
show_on_map = Näytä paikka kartalla
|
show_on_map = Näytä paikka kartalla
|
||||||
form.name_chars_not_allowed = Käyttäjätunnus "%s" sisältää virheellisiä merkkejä.
|
form.name_chars_not_allowed = Käyttäjätunnus "%s" sisältää virheellisiä merkkejä.
|
||||||
|
follow_blocked_user = Et voi seurata tätä käyttäjää, koska olet estänyt kyseisen käyttäjän tai kyseinen käyttäjä on estänyt sinut.
|
||||||
|
disabled_public_activity = Käyttäjä on poistanut käytöstä toiminnan julkisen näkyvyyden.
|
||||||
|
|
||||||
|
|
||||||
|
form.name_reserved = Käyttäjätunnus "%s" on varattu.
|
||||||
|
form.name_pattern_not_allowed = Kaava "%s" ei ole sallittu käyttäjätunnuksessa.
|
||||||
|
|
||||||
[settings]
|
[settings]
|
||||||
profile=Profiili
|
profile=Profiili
|
||||||
account=Tili
|
account=Tili
|
||||||
|
@ -684,7 +717,7 @@ keep_activity_private_popup=Tekee toiminnon näkyvän vain sinulle ja ylläpitä
|
||||||
|
|
||||||
lookup_avatar_by_mail=Hae profiilikuva sähköpostin perusteella
|
lookup_avatar_by_mail=Hae profiilikuva sähköpostin perusteella
|
||||||
federated_avatar_lookup=Ulkopuolinen profiilikuvan haku
|
federated_avatar_lookup=Ulkopuolinen profiilikuvan haku
|
||||||
enable_custom_avatar=Ota käyttöön mukautettu profiilikuva
|
enable_custom_avatar=Käytä mukautettua profiilikuvaa
|
||||||
choose_new_avatar=Valitse uusi profiilikuva
|
choose_new_avatar=Valitse uusi profiilikuva
|
||||||
update_avatar=Päivitä profiilikuva
|
update_avatar=Päivitä profiilikuva
|
||||||
delete_current_avatar=Poista nykyinen profiilikuva
|
delete_current_avatar=Poista nykyinen profiilikuva
|
||||||
|
@ -699,9 +732,9 @@ password_change_disabled=Ei-lokaalit käyttäjät eivät voi päivittää salasa
|
||||||
|
|
||||||
emails=Sähköposti osoitteet
|
emails=Sähköposti osoitteet
|
||||||
manage_emails=Hallitse sähköpostiosoitteita
|
manage_emails=Hallitse sähköpostiosoitteita
|
||||||
manage_themes=Valitse oletusteema
|
manage_themes=Oletusteema
|
||||||
manage_openid=Hallitse OpenID osoitteita
|
manage_openid=OpenID-osoitteet
|
||||||
theme_desc=Tämä on sivuston oletusteemasi.
|
theme_desc=Tätä teemaa käytetään verkkosivuston käyttöliittymässä, kun olet sisäänkirjautuneena.
|
||||||
primary=Ensisijainen
|
primary=Ensisijainen
|
||||||
activated=Aktivoitu
|
activated=Aktivoitu
|
||||||
requires_activation=Vaatii aktivoinnin
|
requires_activation=Vaatii aktivoinnin
|
||||||
|
@ -717,7 +750,7 @@ theme_update_error=Valittua teemaa ei löydy.
|
||||||
openid_deletion=Poista OpenID-osoite
|
openid_deletion=Poista OpenID-osoite
|
||||||
openid_deletion_success=OpenID-osoite on poistettu.
|
openid_deletion_success=OpenID-osoite on poistettu.
|
||||||
add_new_email=Lisää uusi sähköpostiosoite
|
add_new_email=Lisää uusi sähköpostiosoite
|
||||||
add_new_openid=Lisää uusi OpenID URI
|
add_new_openid=Lisää uusi OpenID-URI
|
||||||
add_email=Lisää sähköpostiosoite
|
add_email=Lisää sähköpostiosoite
|
||||||
add_openid=Lisää OpenID URI
|
add_openid=Lisää OpenID URI
|
||||||
add_email_success=Uusi sähköpostiosoite on lisätty.
|
add_email_success=Uusi sähköpostiosoite on lisätty.
|
||||||
|
@ -729,14 +762,14 @@ openid_desc=OpenID mahdollistaa todentamisen delegoinnin ulkopuoliselle palvelun
|
||||||
manage_ssh_keys=Hallitse SSH-avaimia
|
manage_ssh_keys=Hallitse SSH-avaimia
|
||||||
manage_gpg_keys=Hallitse GPG-avaimia
|
manage_gpg_keys=Hallitse GPG-avaimia
|
||||||
add_key=Lisää avain
|
add_key=Lisää avain
|
||||||
ssh_desc=Nämä julkiset SSH-avaimet on liitetty tiliisi. Vastaavat yksityiset avaimet antavat täyden pääsyn repoihisi.
|
ssh_desc=Nämä julkiset SSH-avaimet on liitetty tiliisi. Vastaavat yksityiset avaimet antavat täyden pääsyn repoihisi. Vahvistettuja SSH-avaimia voi käyttää SSH-allekirjoitettujen Git-kommittien vahvistamiseen.
|
||||||
gpg_desc=Nämä julkiset GPG-avaimet on liitetty tiliisi. Pidä yksityiset avaimet turvassa, koska ne mahdollistavat committien todentamisen.
|
gpg_desc=Nämä julkiset GPG-avaimet on liitetty tiliisi, ja niitä käytetään kommittien vahvistamiseen. Pidä yksityiset avaimet turvassa, koska ne mahdollistavat kommittien allekirjoittamisen sinun nimissä.
|
||||||
ssh_helper=<strong>Tarvitsetko apua?</strong> Tutustu GitHubin oppaaseen <a href="%s">omien SSH-avainten luonnista</a> tai <a href="%s">yleisistä ongelmista</a>, joita voit kohdata SSH:n kanssa.
|
ssh_helper=<strong>Tarvitsetko apua?</strong> Tutustu GitHubin oppaaseen <a href="%s">omien SSH-avainten luonnista</a> tai <a href="%s">yleisistä ongelmista</a>, joita voit kohdata SSH:n kanssa.
|
||||||
gpg_helper=<strong>Tarvitsetko apua?</strong> Katso GitHubin opas <a href="%s">GPG</a>:stä.
|
gpg_helper=<strong>Tarvitsetko apua?</strong> Katso GitHubin opas <a href="%s">GPG</a>:stä.
|
||||||
add_new_key=Lisää SSH avain
|
add_new_key=Lisää SSH avain
|
||||||
add_new_gpg_key=Lisää GPG-avain
|
add_new_gpg_key=Lisää GPG-avain
|
||||||
key_content_ssh_placeholder=Alkaa sanoilla 'ssh-ed25519', 'ssh-rsa', 'ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp521', 'sk-ecdsa-sha2-nistp256@openssh.com', tai 'sk-ssh-ed25519@openssh.com'
|
key_content_ssh_placeholder=Alkaa sanoilla "ssh-ed25519", "ssh-rsa", "ecdsa-sha2-nistp256", "ecdsa-sha2-nistp384", "ecdsa-sha2-nistp521", "sk-ecdsa-sha2-nistp256@openssh.com" tai "sk-ssh-ed25519@openssh.com"
|
||||||
key_content_gpg_placeholder=Alkaa sanoilla '-----BEGIN PGP PUBLIC KEY BLOCK-----'
|
key_content_gpg_placeholder=Alkaa sanoilla "-----BEGIN PGP PUBLIC KEY BLOCK-----"
|
||||||
ssh_key_name_used=Samanniminen SSH avain on jo olemassa tililläsi.
|
ssh_key_name_used=Samanniminen SSH avain on jo olemassa tililläsi.
|
||||||
gpg_key_id_used=Julkinen GPG-avain samalla tunnuksella on jo olemassa.
|
gpg_key_id_used=Julkinen GPG-avain samalla tunnuksella on jo olemassa.
|
||||||
gpg_no_key_email_found=Tämä GPG-avain ei vastaa mitään tiliisi liitettyä aktivoitua sähköpostiosoitetta. Se voidaan silti lisätä, jos allekirjoitat annetun pääsymerkin.
|
gpg_no_key_email_found=Tämä GPG-avain ei vastaa mitään tiliisi liitettyä aktivoitua sähköpostiosoitetta. Se voidaan silti lisätä, jos allekirjoitat annetun pääsymerkin.
|
||||||
|
@ -748,7 +781,7 @@ gpg_token=Pääsymerkki
|
||||||
gpg_token_help=Voit luoda allekirjoituksen käyttäen:
|
gpg_token_help=Voit luoda allekirjoituksen käyttäen:
|
||||||
gpg_token_code=echo "%s" | gpg -a --default-key %s --detach-sig
|
gpg_token_code=echo "%s" | gpg -a --default-key %s --detach-sig
|
||||||
gpg_token_signature=Panssaroitu GPG-allekirjoitus
|
gpg_token_signature=Panssaroitu GPG-allekirjoitus
|
||||||
key_signature_gpg_placeholder=Alkaa sanoilla '-----BEGIN PGP SIGNATURE-----'
|
key_signature_gpg_placeholder=Alkaa sanoilla "-----BEGIN PGP SIGNATURE-----"
|
||||||
ssh_key_verified=Vahvistettu avain
|
ssh_key_verified=Vahvistettu avain
|
||||||
ssh_key_verified_long=Avain on vahvistettu pääsymerkillä ja sitä voidaan käyttää todentamaan commitit, jotka vastaavat tämän käyttäjän aktivoituja sähköpostiosoitteita.
|
ssh_key_verified_long=Avain on vahvistettu pääsymerkillä ja sitä voidaan käyttää todentamaan commitit, jotka vastaavat tämän käyttäjän aktivoituja sähköpostiosoitteita.
|
||||||
ssh_key_verify=Vahvista
|
ssh_key_verify=Vahvista
|
||||||
|
@ -756,7 +789,7 @@ ssh_token_required=Sinun täytyy antaa allekirjoitus alla olevalle pääsymerkil
|
||||||
ssh_token=Pääsymerkki
|
ssh_token=Pääsymerkki
|
||||||
ssh_token_help=Voit luoda allekirjoituksen käyttäen:
|
ssh_token_help=Voit luoda allekirjoituksen käyttäen:
|
||||||
ssh_token_signature=Panssaroitu SSH-allekirjoitus
|
ssh_token_signature=Panssaroitu SSH-allekirjoitus
|
||||||
key_signature_ssh_placeholder=Alkaa sanoilla '-----BEGIN SSH SIGNATURE-----'
|
key_signature_ssh_placeholder=Alkaa sanoilla "-----BEGIN SSH SIGNATURE-----"
|
||||||
subkeys=Aliavaimet
|
subkeys=Aliavaimet
|
||||||
key_id=Avain ID
|
key_id=Avain ID
|
||||||
key_name=Avaimen nimi
|
key_name=Avaimen nimi
|
||||||
|
@ -774,7 +807,7 @@ can_read_info=Luku
|
||||||
can_write_info=Kirjoitus
|
can_write_info=Kirjoitus
|
||||||
show_openid=Näytä profiilissa
|
show_openid=Näytä profiilissa
|
||||||
hide_openid=Piilota profiilista
|
hide_openid=Piilota profiilista
|
||||||
ssh_disabled=SSH pois käytöstä
|
ssh_disabled=SSH on pois käytöstä
|
||||||
manage_social=Hallitse liitettyjä sosiaalisia tilejä
|
manage_social=Hallitse liitettyjä sosiaalisia tilejä
|
||||||
|
|
||||||
manage_access_token=Hallitse pääsymerkkejä
|
manage_access_token=Hallitse pääsymerkkejä
|
||||||
|
@ -795,7 +828,7 @@ create_oauth2_application=Luo uusi OAuth2-sovellus
|
||||||
create_oauth2_application_button=Luo sovellus
|
create_oauth2_application_button=Luo sovellus
|
||||||
oauth2_application_name=Sovelluksen nimi
|
oauth2_application_name=Sovelluksen nimi
|
||||||
save_application=Tallenna
|
save_application=Tallenna
|
||||||
oauth2_regenerate_secret=Luo secret uudelleen
|
oauth2_regenerate_secret=Luo salaisuus uudelleen
|
||||||
oauth2_regenerate_secret_hint=Kadotitko secretin?
|
oauth2_regenerate_secret_hint=Kadotitko secretin?
|
||||||
oauth2_application_edit=Muokkaa
|
oauth2_application_edit=Muokkaa
|
||||||
|
|
||||||
|
@ -811,10 +844,10 @@ twofa_enrolled=Tiliisi on otettu käyttöön kaksivaiheinen vahvistus. Ota palau
|
||||||
|
|
||||||
webauthn_nickname=Nimimerkki
|
webauthn_nickname=Nimimerkki
|
||||||
|
|
||||||
manage_account_links=Hallitse linkitettyjä tilejä
|
manage_account_links=Yhdistetyt tilit
|
||||||
manage_account_links_desc=Nämä ulkoiset tilit on linkitetty Forgejo tiliisi.
|
manage_account_links_desc=Nämä ulkoiset tilit on linkitetty Forgejo tiliisi.
|
||||||
link_account=Yhdistä tili
|
link_account=Yhdistä tili
|
||||||
remove_account_link=Poista linkitetty tili
|
remove_account_link=Poista yhdistetty tili
|
||||||
remove_account_link_desc=Linkitetyn tilin poistaminen peruuttaa pääsyn Forgejo-tiliisi linkitetyn tili kautta. Jatketaanko?
|
remove_account_link_desc=Linkitetyn tilin poistaminen peruuttaa pääsyn Forgejo-tiliisi linkitetyn tili kautta. Jatketaanko?
|
||||||
remove_account_link_success=Linkitetty tili on poistettu.
|
remove_account_link_success=Linkitetty tili on poistettu.
|
||||||
|
|
||||||
|
@ -854,11 +887,11 @@ location_placeholder = Jaa likimääräinen sijaintisi muiden kanssa
|
||||||
retype_new_password = Vahvista uusi salasana
|
retype_new_password = Vahvista uusi salasana
|
||||||
create_oauth2_application_success = Loit uuden OAuth2-sovelluksen.
|
create_oauth2_application_success = Loit uuden OAuth2-sovelluksen.
|
||||||
repos_none = Et omista yhtäkään repositoriota.
|
repos_none = Et omista yhtäkään repositoriota.
|
||||||
visibility.limited_tooltip = Näkyvissä vain tunnistautuneille käyttäjille
|
visibility.limited_tooltip = Näkyvissä vain kirjautuneille käyttäjille
|
||||||
email_notifications.disable = Poista sähköposti-ilmoitukset käytöstä
|
email_notifications.disable = Poista sähköposti-ilmoitukset käytöstä
|
||||||
webauthn_register_key = Lisää turva-avain
|
webauthn_register_key = Lisää turva-avain
|
||||||
blocked_users = Estetyt käyttäjät
|
blocked_users = Estetyt käyttäjät
|
||||||
profile_desc = Määritä, miten muut näkevät profiilisi. Ensisijaista sähköpostiosoitettasi käytetään ilmoitusten ja salasanan palautuspyyntöjen lähettämiseen sekä verkkosivupohjaisiin Git-operaatioihin.
|
profile_desc = Tietoja sinusta
|
||||||
change_password_success = Salasanasi on päivitetty. Kirjaudu jatkossa käyttäen uutta salasanaa.
|
change_password_success = Salasanasi on päivitetty. Kirjaudu jatkossa käyttäen uutta salasanaa.
|
||||||
manage_oauth2_applications = Hallitse OAuth2-sovelluksia
|
manage_oauth2_applications = Hallitse OAuth2-sovelluksia
|
||||||
change_password = Vaihda salasana
|
change_password = Vaihda salasana
|
||||||
|
@ -892,6 +925,36 @@ twofa_disable = Poista kaksivaiheinen todennus käytöstä
|
||||||
twofa_disable_desc = Kaksivaiheisen todennuksen poistaminen asettaa tilisi aiempaa suurempaan uhkaan. Jatketaanko?
|
twofa_disable_desc = Kaksivaiheisen todennuksen poistaminen asettaa tilisi aiempaa suurempaan uhkaan. Jatketaanko?
|
||||||
update_language_not_found = Kieli "%s" ei ole käytettävissä.
|
update_language_not_found = Kieli "%s" ei ole käytettävissä.
|
||||||
change_username_prompt = Huomio: Käyttäjätunnuksen vaihtaminen muuttaa myös tilisi URL-osoitteen.
|
change_username_prompt = Huomio: Käyttäjätunnuksen vaihtaminen muuttaa myös tilisi URL-osoitteen.
|
||||||
|
oauth2_client_secret_hint = Tätä salaisuutta ei näytetä uudelleen, kun olet poistunut sivulta tai päivittänyt sivun. Varmista, että olet ottanut salaisuuden talteen.
|
||||||
|
blocked_since = Estetty %s lähtien
|
||||||
|
user_unblock_success = Käyttäjän esto on poistettu.
|
||||||
|
oauth2_redirect_uris = Uudelleenohjaus-URI:t. Käytä uutta riviä (newline) jokaista URI:a kohden.
|
||||||
|
oauth2_client_secret = Asiakkaan salaisuus
|
||||||
|
verify_ssh_key_success = SSH-avain "%s" on vahvistettu.
|
||||||
|
change_username_redirect_prompt = Vanha käyttäjätunnus uudelleenohjaa, kunnes joku muu ottaa käyttäjätunnuksen käyttönsä.
|
||||||
|
uploaded_avatar_is_too_big = Lähetetyn tiedoston koko (%d KiB) ylittää enimmäiskoon (%d KiB).
|
||||||
|
ssh_key_been_used = Tämä SSH-avain on jo lisätty palvelimelle.
|
||||||
|
verify_gpg_key_success = GPG-avain "%s" on vahvistettu.
|
||||||
|
add_key_success = SSH-avain "%s" on lisätty.
|
||||||
|
add_gpg_key_success = GPG-avain "%s" on lisätty.
|
||||||
|
ssh_key_deletion_success = SSH-avain on poistettu.
|
||||||
|
valid_until_date = Kelvollinen %s asti
|
||||||
|
oauth2_client_id = Asiakkaan tunniste
|
||||||
|
email_notifications.onmention = Ilmoitus vain maininnasta
|
||||||
|
email_notifications.submit = Aseta valinta
|
||||||
|
email_notifications.andyourown = Ja omat ilmoitukset
|
||||||
|
key_state_desc = Tätä avainta on käytetty viimeisen 7 päivän aikana
|
||||||
|
oauth2_application_create_description = OAuth2-sovellukset mahdollistavat kolmannen osapuolen sovelluksen pääsyn tilillesi tässä instanssissa.
|
||||||
|
oauth2_confidential_client = Luottamuksellinen sovellus. Valitse sovelluksille, jotka pitävät salaisuuden luottamuksellisena, kuten web-sovelluksille. Älä valitse natiiveille sovelluksille mukaan lukien työpöytä- ja mobiilisovellukset.
|
||||||
|
ssh_key_deletion_desc = SSH-avaimen poistaminen kumoaa pääsyn tilillesi kyseistä avainta käyttäen. Jatketaanko?
|
||||||
|
|
||||||
|
add_email_confirmation_sent = Vahvistusviesti on lähetetty osoitteeseen "%s". Vahvista sähköpostiosoitteesi seuraavan %s sisällä.
|
||||||
|
|
||||||
|
pronouns_custom_label = Mukautetut pronominit
|
||||||
|
openid_deletion_desc = Tämän OpenID-osoitteen poistaminen tililtäsi estää kirjautumisen sitä käyttäen. Jatketaanko?
|
||||||
|
ssh_signonly = SSH on tällä hetkellä poistettu käytöstä, joten näitä avaimia käytetään vain kommittien allekirjoituksen vahvistamiseen.
|
||||||
|
generate_token_name_duplicate = Nimeä <strong>%s</strong> on jo käytetty sovelluksen nimenä. Käytä eri nimeä.
|
||||||
|
oauth2_applications_desc = OAuth2-sovellukset mahdollistavat käyttämäsi kolmannen osapuolen sovelluksen todentaa turvallisesti käyttäjiä tähän Forgejo-instanssiin.
|
||||||
|
|
||||||
[repo]
|
[repo]
|
||||||
owner=Omistaja
|
owner=Omistaja
|
||||||
|
@ -917,7 +980,7 @@ repo_gitignore_helper=Valitse .gitignore-mallit
|
||||||
issue_labels=Ongelmien tunnisteet
|
issue_labels=Ongelmien tunnisteet
|
||||||
issue_labels_helper=Valitse pohja ongelmien nimilapuille.
|
issue_labels_helper=Valitse pohja ongelmien nimilapuille.
|
||||||
license=Lisenssi
|
license=Lisenssi
|
||||||
license_helper=Valitse lisenssitiedosto.
|
license_helper=Valitse lisenssitiedosto
|
||||||
readme=README
|
readme=README
|
||||||
auto_init=Alusta repo (Luo .gitignore, License ja README)
|
auto_init=Alusta repo (Luo .gitignore, License ja README)
|
||||||
create_repo=Luo repo
|
create_repo=Luo repo
|
||||||
|
@ -1316,7 +1379,7 @@ activity.new_issues_count_1=Uusi ongelma
|
||||||
activity.new_issues_count_n=uutta ongelmaa
|
activity.new_issues_count_n=uutta ongelmaa
|
||||||
activity.new_issue_label=Avoinna
|
activity.new_issue_label=Avoinna
|
||||||
activity.unresolved_conv_label=Auki
|
activity.unresolved_conv_label=Auki
|
||||||
activity.published_release_label=Julkaistu
|
activity.published_release_label=Julkaisu
|
||||||
activity.git_stats_pushed_1=on työntänyt
|
activity.git_stats_pushed_1=on työntänyt
|
||||||
activity.git_stats_file_1=%d tiedosto
|
activity.git_stats_file_1=%d tiedosto
|
||||||
activity.git_stats_file_n=%d tiedostoa
|
activity.git_stats_file_n=%d tiedostoa
|
||||||
|
@ -1361,9 +1424,9 @@ settings.transfer.title=Siirrä omistajuus
|
||||||
settings.transfer_form_title=Syötä repon nimi vahvistuksena:
|
settings.transfer_form_title=Syötä repon nimi vahvistuksena:
|
||||||
settings.transfer_notices_3=- Jos arkisto on yksityinen ja se siirretään yksittäiselle käyttäjälle, tämä toiminto varmistaa, että käyttäjällä on ainakin lukuoikeudet (ja muuttaa käyttöoikeuksia tarvittaessa).
|
settings.transfer_notices_3=- Jos arkisto on yksityinen ja se siirretään yksittäiselle käyttäjälle, tämä toiminto varmistaa, että käyttäjällä on ainakin lukuoikeudet (ja muuttaa käyttöoikeuksia tarvittaessa).
|
||||||
settings.transfer_owner=Uusi omistaja
|
settings.transfer_owner=Uusi omistaja
|
||||||
settings.wiki_delete=Poista Wiki data
|
settings.wiki_delete=Poista wikidata
|
||||||
settings.wiki_delete_desc=Repon wikin data poistaminen on pysyvä eikä voi peruuttaa.
|
settings.wiki_delete_desc=Repon wikin data poistaminen on pysyvä eikä voi peruuttaa.
|
||||||
settings.confirm_wiki_delete=Wiki datan poistaminen
|
settings.confirm_wiki_delete=Poista wikidata
|
||||||
settings.wiki_deletion_success=Repon wiki data on poistettu.
|
settings.wiki_deletion_success=Repon wiki data on poistettu.
|
||||||
settings.delete=Poista tämä repo
|
settings.delete=Poista tämä repo
|
||||||
settings.delete_desc=Repon poistaminen on pysyvä eikä voi peruuttaa.
|
settings.delete_desc=Repon poistaminen on pysyvä eikä voi peruuttaa.
|
||||||
|
@ -1384,7 +1447,7 @@ settings.webhook.body=Sisältö
|
||||||
settings.githook_edit_desc=Jos koukku ei ole käytössä, esitellään esimerkkisisältö. Sisällön jättäminen tyhjäksi arvoksi poistaa tämän koukun käytöstä.
|
settings.githook_edit_desc=Jos koukku ei ole käytössä, esitellään esimerkkisisältö. Sisällön jättäminen tyhjäksi arvoksi poistaa tämän koukun käytöstä.
|
||||||
settings.githook_name=Koukun nimi
|
settings.githook_name=Koukun nimi
|
||||||
settings.githook_content=Koukun sisältö
|
settings.githook_content=Koukun sisältö
|
||||||
settings.update_githook=Päivitys koukku
|
settings.update_githook=Päivitä koukku
|
||||||
settings.payload_url=Kohde URL
|
settings.payload_url=Kohde URL
|
||||||
settings.http_method=HTTP-menetelmä
|
settings.http_method=HTTP-menetelmä
|
||||||
settings.secret=Salaus
|
settings.secret=Salaus
|
||||||
|
@ -1406,7 +1469,7 @@ settings.event_push_desc=Git push repoon.
|
||||||
settings.event_repository=Repo
|
settings.event_repository=Repo
|
||||||
settings.event_repository_desc=Repo luotu tai poistettu.
|
settings.event_repository_desc=Repo luotu tai poistettu.
|
||||||
settings.event_header_issue=Ongelmien tapahtumat
|
settings.event_header_issue=Ongelmien tapahtumat
|
||||||
settings.event_issues=Ongelmat
|
settings.event_issues=Muokkaus
|
||||||
settings.event_issues_desc=Ongelma avattu, suljettu, avattu uudelleen tai muokattu.
|
settings.event_issues_desc=Ongelma avattu, suljettu, avattu uudelleen tai muokattu.
|
||||||
settings.event_issue_assign=Ongelma määritetty
|
settings.event_issue_assign=Ongelma määritetty
|
||||||
settings.event_issue_assign_desc=Ongelma osoitettu tai osoitus poistettu.
|
settings.event_issue_assign_desc=Ongelma osoitettu tai osoitus poistettu.
|
||||||
|
@ -1414,7 +1477,7 @@ settings.event_issue_label_desc=Ongelman tunnisteet päivitetty tai tyhjennetty.
|
||||||
settings.event_issue_milestone_desc=Merkkipaalu lisätty, poistettu tai muokattu.
|
settings.event_issue_milestone_desc=Merkkipaalu lisätty, poistettu tai muokattu.
|
||||||
settings.event_issue_comment_desc=Ongelman kommentti luotu, muokattu tai poistettu.
|
settings.event_issue_comment_desc=Ongelman kommentti luotu, muokattu tai poistettu.
|
||||||
settings.event_header_pull_request=Vetopyyntöjen tapahtumat
|
settings.event_header_pull_request=Vetopyyntöjen tapahtumat
|
||||||
settings.event_pull_request=Vetopyyntö
|
settings.event_pull_request=Muokkaus
|
||||||
settings.event_package_desc=Paketti on luotu tai poistettu repossa.
|
settings.event_package_desc=Paketti on luotu tai poistettu repossa.
|
||||||
settings.active_helper=Tiedot käynnistetyistä tapahtumista lähetetään tähän webkoukun URL-osoitteeseen.
|
settings.active_helper=Tiedot käynnistetyistä tapahtumista lähetetään tähän webkoukun URL-osoitteeseen.
|
||||||
settings.add_hook_success=Uusi webkoukku on lisätty.
|
settings.add_hook_success=Uusi webkoukku on lisätty.
|
||||||
|
@ -1573,7 +1636,7 @@ release.ahead.commits = <strong>%d</strong> kommittia
|
||||||
all_branches = Kaikki haarat
|
all_branches = Kaikki haarat
|
||||||
n_tag_few = %s tagia
|
n_tag_few = %s tagia
|
||||||
settings.event_fork_desc = Repo forkattu.
|
settings.event_fork_desc = Repo forkattu.
|
||||||
actions = Toimenpiteet
|
actions = Actions
|
||||||
fork_guest_user = Kirjaudu sisään forkataksesi tämän repon.
|
fork_guest_user = Kirjaudu sisään forkataksesi tämän repon.
|
||||||
fork_from_self = Et voi forkata omistamaasi repoa.
|
fork_from_self = Et voi forkata omistamaasi repoa.
|
||||||
visibility_fork_helper = (Tämän muuttaminen vaikuttaa kaikkien forkkien näkyvyyteen.)
|
visibility_fork_helper = (Tämän muuttaminen vaikuttaa kaikkien forkkien näkyvyyteen.)
|
||||||
|
@ -1641,7 +1704,7 @@ activity.git_stats_author_n = %d tekijää
|
||||||
issues.dependency.add_error_dep_exists = Riippuvuus on jo olemassa.
|
issues.dependency.add_error_dep_exists = Riippuvuus on jo olemassa.
|
||||||
wiki.page_content = Sivun sisältö
|
wiki.page_content = Sivun sisältö
|
||||||
wiki.page_title = Sivun otsikko
|
wiki.page_title = Sivun otsikko
|
||||||
activity.navbar.contributors = Kontribuuttorit
|
activity.navbar.contributors = Avustajat
|
||||||
n_release_few = %s julkaisua
|
n_release_few = %s julkaisua
|
||||||
n_release_one = %s julkaisu
|
n_release_one = %s julkaisu
|
||||||
symbolic_link = Symbolinen linkki
|
symbolic_link = Symbolinen linkki
|
||||||
|
@ -1659,7 +1722,7 @@ milestones.deletion_success = Merkkipaalu on poistettu.
|
||||||
project = Projektit
|
project = Projektit
|
||||||
pulls.delete.title = Poistetaanko tämä vetopyyntö?
|
pulls.delete.title = Poistetaanko tämä vetopyyntö?
|
||||||
activity.title.issues_1 = %d ongelma
|
activity.title.issues_1 = %d ongelma
|
||||||
contributors.contribution_type.filter_label = Kontribuution tyyppi:
|
contributors.contribution_type.filter_label = Avustuksen tyyppi:
|
||||||
settings.protected_branch.delete_rule = Poista sääntö
|
settings.protected_branch.delete_rule = Poista sääntö
|
||||||
settings.archive.success = Repo arkistoitiin onnistuneesti.
|
settings.archive.success = Repo arkistoitiin onnistuneesti.
|
||||||
diff.comment.placeholder = Jätä kommentti
|
diff.comment.placeholder = Jätä kommentti
|
||||||
|
@ -1703,7 +1766,7 @@ issues.close = Sulje ongelma
|
||||||
issues.no_content = Ei kuvausta.
|
issues.no_content = Ei kuvausta.
|
||||||
pulls.reject_count_1 = %d muutospyyntö
|
pulls.reject_count_1 = %d muutospyyntö
|
||||||
pulls.update_branch_success = Haarapäivitys onnistui
|
pulls.update_branch_success = Haarapäivitys onnistui
|
||||||
milestones.completeness = <strong>%d%%</strong> valmiina
|
milestones.completeness = <strong>%d% %</strong> valmiina
|
||||||
contributors.contribution_type.additions = Lisäykset
|
contributors.contribution_type.additions = Lisäykset
|
||||||
contributors.contribution_type.deletions = Poistot
|
contributors.contribution_type.deletions = Poistot
|
||||||
settings.webhook_deletion_success = Webkoukku on poistettu.
|
settings.webhook_deletion_success = Webkoukku on poistettu.
|
||||||
|
@ -1883,7 +1946,7 @@ migrate.gitlab.description = Tee migraatio gitlab.comista tai muista GitLab-inst
|
||||||
migrate.gitea.description = Tee migraatio gitea.comista tai muista Gitea-instansseista.
|
migrate.gitea.description = Tee migraatio gitea.comista tai muista Gitea-instansseista.
|
||||||
repo_gitignore_helper_desc = Valitse mitä tiedostoja ei seurata yleisimpien kielten mallipohjista. Tyypilliset artefaktit, joita eri kielten koostamistyökalut tuottavat, lisätään .gitignore-tiedostoon oletusarvoisesti.
|
repo_gitignore_helper_desc = Valitse mitä tiedostoja ei seurata yleisimpien kielten mallipohjista. Tyypilliset artefaktit, joita eri kielten koostamistyökalut tuottavat, lisätään .gitignore-tiedostoon oletusarvoisesti.
|
||||||
milestones.filter_sort.latest_due_date = Kaukaisin määräpäivä
|
milestones.filter_sort.latest_due_date = Kaukaisin määräpäivä
|
||||||
license_helper_desc = Lisenssi määrää, mitä muut voivat ja eivät voi tehdä koodillasi. Etkö ole varma, mikä lisenssi soveltuu projektillesi? Lue <a target="_blank" rel="noopener noreferrer" href="%s">ohje lisenssin valinnasta.</a>
|
license_helper_desc = Lisenssi määrää, mitä muut voivat ja eivät voi tehdä koodillasi. Etkö ole varma, mikä lisenssi soveltuu projektillesi? Lue <a target="_blank" rel="noopener noreferrer" href="%s">ohje lisenssin valinnasta</a>.
|
||||||
milestones.filter_sort.earliest_due_data = Lähin määräpäivä
|
milestones.filter_sort.earliest_due_data = Lähin määräpäivä
|
||||||
issues.filter_type.reviewed_by_you = Katselmoitu toimestasi
|
issues.filter_type.reviewed_by_you = Katselmoitu toimestasi
|
||||||
settings.units.overview = Yleisnäkymä
|
settings.units.overview = Yleisnäkymä
|
||||||
|
@ -1959,9 +2022,91 @@ editor.must_have_write_access = Sinulla täytyy olla kirjoitusoikeus tehdäksesi
|
||||||
issues.re_request_review = Pyydä katselmointia uudelleen
|
issues.re_request_review = Pyydä katselmointia uudelleen
|
||||||
pulls.status_checks_details = Yksityiskohdat
|
pulls.status_checks_details = Yksityiskohdat
|
||||||
release.title_empty = Nimi ei voi olla tyhjä.
|
release.title_empty = Nimi ei voi olla tyhjä.
|
||||||
|
archive.title = Tämä repo on arkistoitu. Voit katsella sen sisältämiä tiedostoja ja kloonata repon, mutta et voi pushata, avata ongelmia tai luoda vetopyyntöjä.
|
||||||
|
reactions_more = ja %d lisää
|
||||||
|
mirror_address = Kloonaa URL-osoitteesta
|
||||||
|
migrate_items_merge_requests = Yhdistämispyynnöt
|
||||||
|
stars_remove_warning = Tämä poistaa kaikki tähdet tästä reposta.
|
||||||
|
archive.issue.nocomment = Tämä repo on arkistoitu. Et voi kommentoida ongelmia.
|
||||||
|
archive.pull.nocomment = Tämä repo on arkistoitu. Et voi kommentoida vetopyyntöjä.
|
||||||
|
settings.webhook_deletion_desc = Webkoukun poistaminen poistaa sen asetukset ja toimitushistorian. Jatketaanko?
|
||||||
|
settings.discord_icon_url.exceeds_max_length = Kuvakkeen URL-osoite voi sisältää enintään 2048 merkkiä
|
||||||
|
settings.event_wiki_desc = Wiki-sivu luotu, nimetty uudelleen, muokattu tai poistettu.
|
||||||
|
settings.event_pull_request_desc = Vetopyyntö avattu, suljettu, avattu uudelleen tai muokattu.
|
||||||
|
settings.protect_branch_name_pattern = Suojatun haaran nimen kaava
|
||||||
|
issues.dependency.add_error_dep_not_same_repo = Molempien ongelmien tulee olla samassa repossa.
|
||||||
|
settings.event_release = Julkaisu
|
||||||
|
pulls.merge_pull_request = Luo yhdistämiskommitti
|
||||||
|
settings.pull_mirror_sync_quota_exceeded = Kiintiö ylitetty, ei vedetä muutoksia.
|
||||||
|
settings.wiki_rename_branch_main_notices_1 = Tätä toimintoa <strong>EI VOI</strong> perua.
|
||||||
|
settings.webhook.test_delivery_desc_disabled = Aktivoi webkoukku testataksesi sitä tekaistulla tapahtumalla.
|
||||||
|
settings.discord_icon_url = Kuvakkeen URL-osoite
|
||||||
|
settings.archive.branchsettings_unavailable = Haaran asetukset eivät ole saatavilla arkistoiduissa repoissa.
|
||||||
|
pulls.ready_for_review = Valmiina katselmointiin?
|
||||||
|
issues.time_spent_total = Käytetty kokonaisaika
|
||||||
|
settings.webhook.test_delivery_desc = Testaa tätä webkoukkua tekaistulla tapahtumalla.
|
||||||
|
pulls.switch_comparison_type = Vaihda vertailutyyppiä
|
||||||
|
settings.hooks_desc = Webkoukut tekevät automaattisesti HTTP POST -pyyntöjä palvelimelle, kun jotkin Forgejo-tapahtumat käynnistyvät. Lue lisää <a target="_blank" rel="noopener noreferrer" href="%s">webkoukkujen oppaasta</a>.
|
||||||
|
issues.num_participants_one = %d osallistuja
|
||||||
|
issues.reference_link = Viittaus: %s
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
mirror_interval = Peilauksen aikaväli (kelvolliset yksiköt ovat "h", "m", "s"). 0 poistaa käytöstä aikaan pohjautuvan synkronoinnin. (Pienin aikaväli: %s)
|
||||||
|
mirror_interval_invalid = Peilauksen aikaväli ei ole kelvollinen.
|
||||||
|
mirror_sync_on_commit = Synkronoi kun kommitit pushataan
|
||||||
|
issues.role.collaborator = Avustaja
|
||||||
|
issues.role.collaborator_helper = Tämä käyttäjä on kutsuttu avustajaksi tähän repoon.
|
||||||
|
issues.dependency.setting = Käytä riippuvuuksia ongelmiin ja vetopyyntöihin
|
||||||
|
wiki.desc = Kirjoita ja jaa dokumentaatiota avustajien kesken.
|
||||||
|
settings.collaboration = Avustajat
|
||||||
|
settings.mirror_settings.docs = Määritä reposi automaattisesti synkronoimaan kommitit, tagit ja haarat toiseen repoon.
|
||||||
|
settings.mirror_settings.docs.disabled_pull_mirror.instructions = Määritä projektisi automaattisesti pushaamaan kommitit, tagit ja haarat toiseen repoon. Pull-peilit on poistettu käytöstä tämän sivuston ylläpitäjän toimesta.
|
||||||
|
settings.mirror_settings.docs.disabled_push_mirror.instructions = Määritä projektisi automaattisesti vetämään kommitit, tagit ja haarat toisesta reposta.
|
||||||
|
settings.mirror_settings.docs.more_information_if_disabled = Löydät lisätietoja push- ja pull-peileistä täältä:
|
||||||
|
settings.mirror_settings.pushed_repository = Työnnetty repo
|
||||||
|
settings.mirror_settings.push_mirror.none = Push-peilejä ei ole määritetty
|
||||||
|
settings.mirror_settings.push_mirror.add = Lisää push-peili
|
||||||
|
settings.mirror_settings.push_mirror.edit_sync_time = Muokkaa peilin synkronoinnin aikaväliä
|
||||||
|
settings.allow_only_contributors_to_track_time = Salli vain avustajien seurata aikaa
|
||||||
|
settings.pulls_desc = Käytä repositorion vetopyyntöjä
|
||||||
|
settings.actions_desc = Käytä integroituja CI-/CD-putkia Forgejo Actionsia hyödyntäen
|
||||||
|
settings.admin_enable_health_check = Käytä repositorion terveystarkastuksia (git fsck)
|
||||||
|
settings.admin_enable_close_issues_via_commit_in_any_branch = Sulje ongelma kommitin toimesta, joka on tehty muuhun kuin oletusarvoiseen haaraan
|
||||||
|
settings.transfer_desc = Siirrä tämä repo käyttäjälle tai organisaatiolle, johon sinulla ylläpito-oikeus.
|
||||||
|
settings.signing_settings = Allekirjoituksen vahvistuksen asetukset
|
||||||
|
settings.trust_model = Allekirjoituksen luottamusmalli
|
||||||
|
settings.trust_model.default = Oletusarvoinen luottamusmalli
|
||||||
|
settings.trust_model.collaborator = Avustaja
|
||||||
|
settings.trust_model.collaborator.long = Avustaja: Luota avustajien allekirjoituksiin
|
||||||
|
settings.trust_model.collaboratorcommitter = Avustaja+kommitoija
|
||||||
|
settings.trust_model.collaboratorcommitter.long = Avustaja+kommitoija: Luota avustajien allekirjoituksiin, jotka vastaavat kommitoijaa
|
||||||
|
settings.add_collaborator = Lisää avustaja
|
||||||
|
settings.add_collaborator_success = Avustaja on lisätty.
|
||||||
|
settings.add_collaborator_owner = Omistajaa ei voi lisätä avustajaksi.
|
||||||
|
settings.add_collaborator_duplicate = Avustaja on jo lisätty tähän repoon.
|
||||||
|
settings.add_collaborator_blocked_our = Avustajaa ei voi lisätä, koska repon omistaja on estänyt hänet.
|
||||||
|
settings.add_collaborator_blocked_them = Avustajaa ei voi lisätä, koska kyseinen avustaja on estänyt repon omistajan.
|
||||||
|
settings.collaborator_deletion = Poista avustaja
|
||||||
|
settings.collaborator_deletion_desc = Avustajan poistaminen estää hänen pääsyn tähän repoon. Jatketaanko?
|
||||||
|
settings.remove_collaborator_success = Avustaja on poistettu.
|
||||||
|
settings.org_not_allowed_to_be_collaborator = Organisaatioita ei voi lisätä avustajaksi.
|
||||||
|
settings.default_branch_desc = Valitse repon oletushaara, johon vetopyynnöt ja koodikommitit kohdistetaan:
|
||||||
|
settings.archive.text = Repon arkistointi asettaa sen pelkkään lukutilaan. Se piilotetaan hallintapaneelista. Kukaan (et edes sinä!) ei pysty tehdä uusia kommitteja, avata uusia ongelmia tai avata vetopyyntöjä.
|
||||||
|
|
||||||
|
no_eol.text = Ei EOL:ää
|
||||||
|
pulls.compare_changes_desc = Valitse haara, johon yhdistetään, ja haara, josta vedetään.
|
||||||
|
|
||||||
|
new_from_template = Käytä mallipohjaa
|
||||||
|
new_from_template_description = Voit valita olemassa olevan repon mallipohjan ja toteuttaa sen asetukset.
|
||||||
|
new_advanced = Lisäasetukset
|
||||||
|
new_advanced_expand = Laajenna napsauttamalla
|
||||||
|
template_description = Repojen mallipohjat mahdollistavat uusien repojen luomisen halutulla hakemistorakenteella, tiedostoilla ja valinnaisilla asetuksilla.
|
||||||
|
auto_init_description = Aloita Git-historia README-tiedostolla ja valinnaisesti License- ja .gitignore-tiedostoilla.
|
||||||
|
settings.enter_repo_name = Kirjoita omistajan ja repon nimi täsmälleen kuten esitetty:
|
||||||
|
settings.confirmation_string = Vahvistusteksti
|
||||||
|
settings.delete_notices_2 = - Tämä toiminto poistaa pysyvästi repon <strong>%s</strong> mukaan lukien koodin, ongelmat, kommentit, wikidatan ja avustaja-asetukset.
|
||||||
|
|
||||||
[graphs]
|
[graphs]
|
||||||
component_loading_info = Tämä saattaa kestää hetken…
|
component_loading_info = Tämä saattaa kestää hetken…
|
||||||
component_failed_to_load = Odottamaton virhe.
|
component_failed_to_load = Odottamaton virhe.
|
||||||
|
@ -2102,8 +2247,8 @@ dashboard.operation_switch=Vaihda
|
||||||
dashboard.operation_run=Suorita
|
dashboard.operation_run=Suorita
|
||||||
dashboard.delete_inactive_accounts=Poista kaikki aktivoimattomat käyttäjät
|
dashboard.delete_inactive_accounts=Poista kaikki aktivoimattomat käyttäjät
|
||||||
dashboard.delete_repo_archives=Poista kaikki repojen arkistot (ZIP, TAR.GZ, jne..)
|
dashboard.delete_repo_archives=Poista kaikki repojen arkistot (ZIP, TAR.GZ, jne..)
|
||||||
dashboard.server_uptime=Palvelimen Uptime
|
dashboard.server_uptime=Palvelimen uptime
|
||||||
dashboard.current_goroutine=Nykyiset Goroutinet
|
dashboard.current_goroutine=Nykyiset goroutinet
|
||||||
dashboard.current_memory_usage=Nykyinen muistinkäyttö
|
dashboard.current_memory_usage=Nykyinen muistinkäyttö
|
||||||
dashboard.total_memory_allocated=Yhteensä muistia varattu
|
dashboard.total_memory_allocated=Yhteensä muistia varattu
|
||||||
dashboard.memory_obtained=Muistia saatu
|
dashboard.memory_obtained=Muistia saatu
|
||||||
|
@ -2123,7 +2268,7 @@ dashboard.mcache_structures_obtained=MCache rakenteita saatu
|
||||||
dashboard.profiling_bucket_hash_table_obtained=Profilointi Bucket Hash Table saatu
|
dashboard.profiling_bucket_hash_table_obtained=Profilointi Bucket Hash Table saatu
|
||||||
dashboard.gc_metadata_obtained=GC metatietoja saatu
|
dashboard.gc_metadata_obtained=GC metatietoja saatu
|
||||||
dashboard.other_system_allocation_obtained=Muita järjestestelmän varauksia saatu
|
dashboard.other_system_allocation_obtained=Muita järjestestelmän varauksia saatu
|
||||||
dashboard.next_gc_recycle=Seuraava GC kierrätys
|
dashboard.next_gc_recycle=Seuraava GC-kierrätys
|
||||||
dashboard.last_gc_time=Edellisen GC ajan jälkeen
|
dashboard.last_gc_time=Edellisen GC ajan jälkeen
|
||||||
dashboard.total_gc_time=Yhteensä GC tauko
|
dashboard.total_gc_time=Yhteensä GC tauko
|
||||||
dashboard.total_gc_pause=Yhteensä GC tauko
|
dashboard.total_gc_pause=Yhteensä GC tauko
|
||||||
|
@ -2279,7 +2424,7 @@ config.default_visibility_organization=Uuden organisaation oletusnäkyvyys
|
||||||
|
|
||||||
config.webhook_config=Webkoukkujen asetukset
|
config.webhook_config=Webkoukkujen asetukset
|
||||||
config.queue_length=Jonon pituus
|
config.queue_length=Jonon pituus
|
||||||
config.deliver_timeout=Toimitus aikakatkaisu
|
config.deliver_timeout=Toimituksen aikakatkaisu
|
||||||
|
|
||||||
config.mailer_enabled=Käytössä
|
config.mailer_enabled=Käytössä
|
||||||
config.mailer_name=Nimi
|
config.mailer_name=Nimi
|
||||||
|
@ -2426,8 +2571,14 @@ dashboard.task.unknown = Tuntematon tehtävä: %[1]s
|
||||||
dashboard.cron.error = Virhe Cronissa: %s: %[3]s
|
dashboard.cron.error = Virhe Cronissa: %s: %[3]s
|
||||||
dashboard.task.started = Käynnistetty tehtävä: %[1]s
|
dashboard.task.started = Käynnistetty tehtävä: %[1]s
|
||||||
dashboard.cron.finished = Cron: %[1]s on valmistunut
|
dashboard.cron.finished = Cron: %[1]s on valmistunut
|
||||||
|
dashboard.resync_all_sshkeys = Päivitä ".ssh/authorized_keys"-tiedosto Forgejo:n SSH-avaimilla.
|
||||||
|
dashboard.cleanup_packages = Siivoa vanhentuneet paketit
|
||||||
|
|
||||||
|
|
||||||
|
config.default_allow_only_contributors_to_track_time = Salli vain avustajien seurata aikaa
|
||||||
|
monitor.download_diagnosis_report = Lataa diagnostiikkaraportti
|
||||||
|
monitor.last_execution_result = Tulos
|
||||||
|
|
||||||
[action]
|
[action]
|
||||||
create_repo=luotu repo <a href="%s">%s</a>
|
create_repo=luotu repo <a href="%s">%s</a>
|
||||||
rename_repo=uudelleennimetty repo <code>%[1]s</code> nimelle <a href="%[2]s">%[3]s</a>
|
rename_repo=uudelleennimetty repo <code>%[1]s</code> nimelle <a href="%[2]s">%[3]s</a>
|
||||||
|
@ -2441,6 +2592,16 @@ compare_branch = Vertaa
|
||||||
review_dismissed_reason = Syy:
|
review_dismissed_reason = Syy:
|
||||||
commit_repo = työnsi haaraan <a href="%[2]s">%[3]s</a> repossa <a href="%[1]s">%[4]s</a>
|
commit_repo = työnsi haaraan <a href="%[2]s">%[3]s</a> repossa <a href="%[1]s">%[4]s</a>
|
||||||
|
|
||||||
|
create_issue = `avasi ongelman <a href="%[1]s">%[3]s#%[2]s</a>`
|
||||||
|
close_issue = `sulki ongelman <a href="%[1]s">%[3]s#%[2]s</a>`
|
||||||
|
reopen_issue = `avasi uudelleen ongelman <a href="%[1]s">%[3]s#%[2]s</a>`
|
||||||
|
create_pull_request = `loi vetopyynnön <a href="%[1]s">%[3]s#%[2]s</a>`
|
||||||
|
close_pull_request = `sulki vetopyynnön <a href="%[1]s">%[3]s#%[2]s</a>`
|
||||||
|
reopen_pull_request = `avasi uudelleen vetopyynnön <a href="%[1]s">%[3]s#%[2]s</a>`
|
||||||
|
comment_issue = `kommentoi ongelmaa <a href="%[1]s">%[3]s#%[2]s</a>`
|
||||||
|
comment_pull = `kommentoi vetopyyntöä <a href="%[1]s">%[3]s#%[2]s</a>`
|
||||||
|
merge_pull_request = `yhdisti vetopyynnön <a href="%[1]s">%[3]s#%[2]s</a>`
|
||||||
|
|
||||||
[tool]
|
[tool]
|
||||||
now=nyt
|
now=nyt
|
||||||
1s=1 sekunti
|
1s=1 sekunti
|
||||||
|
@ -2487,6 +2648,8 @@ error.extract_sign = Allekirjoituksen purkaminen epäonnistui
|
||||||
default_key = Allekirjoitettu oletusavaimella
|
default_key = Allekirjoitettu oletusavaimella
|
||||||
error.failed_retrieval_gpg_keys = Ei saatu yhtäkään kommitin tekijän tiliin liitettyä avainta
|
error.failed_retrieval_gpg_keys = Ei saatu yhtäkään kommitin tekijän tiliin liitettyä avainta
|
||||||
|
|
||||||
|
error.generate_hash = Tiivisteen luominen kommitista epäonnistui
|
||||||
|
|
||||||
[units]
|
[units]
|
||||||
unit = Yksikkö
|
unit = Yksikkö
|
||||||
|
|
||||||
|
@ -2601,6 +2764,35 @@ settings.link = Linkitä tämä paketti repositorioon
|
||||||
maven.download = Lataa riippuvuus suorittamalla komentorivillä:
|
maven.download = Lataa riippuvuus suorittamalla komentorivillä:
|
||||||
registry.documentation = Lisätietoja %s-rekisteristä on <a target="_blank" rel="noopener noreferrer" href="%s">dokumentaatiossa</a>.
|
registry.documentation = Lisätietoja %s-rekisteristä on <a target="_blank" rel="noopener noreferrer" href="%s">dokumentaatiossa</a>.
|
||||||
owner.settings.chef.keypair.description = Avainpari vaaditaan Chef-rekisteriin tunnistautumista varten. Jos olet luonut avainparin aiemmin, uuden avainparin luominen hylkää aiemman avainparin.
|
owner.settings.chef.keypair.description = Avainpari vaaditaan Chef-rekisteriin tunnistautumista varten. Jos olet luonut avainparin aiemmin, uuden avainparin luominen hylkää aiemman avainparin.
|
||||||
|
owner.settings.cleanuprules.keep.pattern = Säilytä kaavaa vastaavat versiot
|
||||||
|
owner.settings.cleanuprules.pattern_full_match = Toteuta kaavio paketin koko nimeen
|
||||||
|
owner.settings.cleanuprules.keep.title = Näitä sääntöjä vastaavat versiot säilytetään, vaikka ne vastaisivat alla olevaa poistosääntöä.
|
||||||
|
owner.settings.cleanuprules.keep.count = Säilytä viimeisimmät
|
||||||
|
owner.settings.cleanuprules.remove.pattern = Poista kaavaa vastaavat versiot
|
||||||
|
owner.settings.cleanuprules.keep.pattern.container = Viimeisin (<code>latest</code>) versio säilytetään aina Container-paketeista.
|
||||||
|
owner.settings.cleanuprules.remove.title = Näitä sääntöjä vastaavat versiot poistetaan, ellei sääntö yläpuolella käske säilyttää niitä.
|
||||||
|
owner.settings.cleanuprules.remove.days = Poista versiot, jotka ovat vanhempia kuin
|
||||||
|
arch.pacman.helper.gpg = Lisää luottamusvarmenne pacmanille:
|
||||||
|
|
||||||
|
empty.repo = Lähetitkö paketin, mutta se ei näy täällä? Siirry <a href="%[1]s">paketin asetuksiin</a> ja linkitä se tähän repoon.
|
||||||
|
published_by = Julkaistu %[1]s käyttäjän <a href="%[2]s">%[3]s</a> toimesta
|
||||||
|
alpine.registry = Määritä tämä rekisteri lisäämällä URL-osoite tiedostoon <code>/etc/apk/repositories</code>:
|
||||||
|
alpine.registry.key = Lataa rekisterin julkinen RSA-avain hakemistoon <code>/etc/apk/keys/</code> vahvistaaksesi indeksin allekirjoituksen:
|
||||||
|
alpine.registry.info = Valitse $branch ja $repository alla olevasta listasta.
|
||||||
|
arch.pacman.conf = Lisää palvelin asiaan liittyvällä jakelulla ja arkkitehtuurilla tiedostoon <code>/etc/pacman.conf</code> :
|
||||||
|
arch.pacman.sync = Synkronoi paketti pacmanin kanssa:
|
||||||
|
container.images.title = Levykuvat
|
||||||
|
debian.registry.info = Valitse $distribution ja $component alla olevasta listasta.
|
||||||
|
rpm.repository.multiple_groups = Tämä paketti on saatavilla useissa ryhmissä.
|
||||||
|
rubygems.dependencies.runtime = Ajonaikaiset riippuvuudet
|
||||||
|
owner.settings.cargo.rebuild = Rakenna indeksi uudelleen
|
||||||
|
owner.settings.cargo.rebuild.error = Cargo-indeksin rakentaminen uudelleen epäonnistui: %v
|
||||||
|
owner.settings.cargo.rebuild.success = Cargo-indeksi rakennettiin uudelleen.
|
||||||
|
owner.settings.cleanuprules.preview.none = Siivoussääntö ei vastaa yhtäkään pakettia.
|
||||||
|
|
||||||
|
settings.link.error = Repositorion linkin päivittäminen epäonnistui.
|
||||||
|
owner.settings.cargo.initialize = Alusta indeksi
|
||||||
|
owner.settings.cargo.initialize.description = Erityinen Git-repoindeksi vaaditaan Cargo-rekisterin käyttämiseksi. Tämän valinnan käyttäminen luo (tarvittaessa uudelleen) repon ja määrittää sen asetukset automaattisesti.
|
||||||
|
|
||||||
[secrets]
|
[secrets]
|
||||||
creation.failed = Salaisuuden lisääminen epäonnistui.
|
creation.failed = Salaisuuden lisääminen epäonnistui.
|
||||||
|
@ -2699,11 +2891,15 @@ workflow.disable_success = Työnkulku "%s" on poistettu käytöstä.
|
||||||
runs.no_job = Työnkulun tulee sisältää vähintään yksi työ
|
runs.no_job = Työnkulun tulee sisältää vähintään yksi työ
|
||||||
runs.invalid_workflow_helper = Työnkulun asetustiedosto on virheellinen. Tarkista asetustiedosto: %s
|
runs.invalid_workflow_helper = Työnkulun asetustiedosto on virheellinen. Tarkista asetustiedosto: %s
|
||||||
runners = Ajajat
|
runners = Ajajat
|
||||||
actions = Toimenpiteet
|
actions = Actions
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
unit.desc = Hallitse integroituja CI/CD-putkia Forgejo Actionsia hyödyntäen.
|
||||||
|
runs.pushed_by = työntänyt
|
||||||
|
runs.no_workflows.help_no_write_access = Lisätietoja Forgejo Actionsista on saatavilla <a target="_blank" rel="noopener noreferrer" href="%s">dokumentaatiosta</a>.
|
||||||
|
|
||||||
[projects]
|
[projects]
|
||||||
type-1.display_name = Yksittäinen projekti
|
type-1.display_name = Yksittäinen projekti
|
||||||
deleted.display_name = Poistettu projekti
|
deleted.display_name = Poistettu projekti
|
||||||
|
|
|
@ -641,6 +641,8 @@ Biography = Byograpya
|
||||||
Location = Lokasyon
|
Location = Lokasyon
|
||||||
visit_rate_limit = Natugunan ang limitasyon sa rate ng malayuang pagbisita.
|
visit_rate_limit = Natugunan ang limitasyon sa rate ng malayuang pagbisita.
|
||||||
|
|
||||||
|
email_domain_is_not_allowed = Sumasalungat ang domain ng email address ng user <b>%s</b> sa EMAIL_DOMAIN_ALLOWLIST o EMAIL_DOMAIN_BLOCKLIST. Siguraduhing natakda mo ang email address nang tama.
|
||||||
|
|
||||||
[user]
|
[user]
|
||||||
joined_on = Sumali noong %s
|
joined_on = Sumali noong %s
|
||||||
repositories = Mga Repositoryo
|
repositories = Mga Repositoryo
|
||||||
|
@ -748,7 +750,7 @@ social = Mga social account
|
||||||
biography_placeholder = Sabihin sa iba ng kaunti tungkol sa iyong sarili! (Sinusuportahan ang Markdown)
|
biography_placeholder = Sabihin sa iba ng kaunti tungkol sa iyong sarili! (Sinusuportahan ang Markdown)
|
||||||
change_username_prompt = Tandaan: Ang pagpalit ng username ay papalitan din ang URL ng iyong account.
|
change_username_prompt = Tandaan: Ang pagpalit ng username ay papalitan din ang URL ng iyong account.
|
||||||
organization = Mga Organisasyon
|
organization = Mga Organisasyon
|
||||||
profile_desc = Kontrolin kung paano ipinapakita ang iyong profile sa ibang mga gumagamit. Ang iyong pangunahing email address ay gagamitin para sa mga abiso, pagbawi ng password at mga Git operation na batay sa web.
|
profile_desc = Tungkol sa iyo
|
||||||
hidden_comment_types_description = Ang mga uri ng komento na naka-check dito ay hindi ipapakita sa loob ng mga pahina ng isyu. Halimbawa ang pag-check ng "Label" ay tatanggalin lahat ng mga "Idinagdag/tinanggal ni <user> ang <label>" na komento.
|
hidden_comment_types_description = Ang mga uri ng komento na naka-check dito ay hindi ipapakita sa loob ng mga pahina ng isyu. Halimbawa ang pag-check ng "Label" ay tatanggalin lahat ng mga "Idinagdag/tinanggal ni <user> ang <label>" na komento.
|
||||||
comment_type_group_milestone = Milestone
|
comment_type_group_milestone = Milestone
|
||||||
comment_type_group_issue_ref = Pagsangguni ng isyu
|
comment_type_group_issue_ref = Pagsangguni ng isyu
|
||||||
|
@ -767,7 +769,7 @@ ssh_key_deletion_desc = Ang pagtanggal ng SSH key ay matatanggihan ang pag-acces
|
||||||
no_activity = Walang kamakilang aktibidad
|
no_activity = Walang kamakilang aktibidad
|
||||||
ssh_signonly = Kasalukuyang naka-disable ang SSH kaya magagamit lang ang mga key na ito para sa pagpapatunay ng commit signature.
|
ssh_signonly = Kasalukuyang naka-disable ang SSH kaya magagamit lang ang mga key na ito para sa pagpapatunay ng commit signature.
|
||||||
gpg_desc = Ang mga pampublikong GPG key dito ay nauugnay sa iyong account at ginagamit para i-verify ang iyong mga commit. Panatilihing ligtas ang iyong mga pribadong key dahil pinapayagan nito ang pag-sign ng mga commit gamit ng iyong pagkakakilanlan.
|
gpg_desc = Ang mga pampublikong GPG key dito ay nauugnay sa iyong account at ginagamit para i-verify ang iyong mga commit. Panatilihing ligtas ang iyong mga pribadong key dahil pinapayagan nito ang pag-sign ng mga commit gamit ng iyong pagkakakilanlan.
|
||||||
keep_email_private_popup = Itatago nito ang iyong email address sa iyong profile. Hindi na ito ang magiging default para sa mga commit na ginawa sa pamamagitan ng web interface, tulad ng pag-upload ng mga file at pagbabago. Sa halip gagamitin ang isang espeyal na address na %s para i-associate ang mga commit sa iyong account. Tandaan na ang pagbabago ng opsyon na ito ay hindi makakaapekto sa mga umiiral na commit.
|
keep_email_private_popup = Ang iyong email address ay hindi ipapakita sa iyong profile at hindi magiging default para sa mga commit na ginawa sa pamamagitan ng web interface, tulad ng pag-upload ng mga file, mga pagbabago, at mga merge commit. Sa halip, gagamitin ang isang espeyal na address na %s para i-link ang mga commit sa iyong account. Ang opsyon na ito ay hindi makakaapekto sa mga umiiral na commit.
|
||||||
gpg_key_id_used = Ang isang publikong GPG key na may katulad na ID ay umiiral na.
|
gpg_key_id_used = Ang isang publikong GPG key na may katulad na ID ay umiiral na.
|
||||||
gpg_no_key_email_found = Ang GPG key na ito ay hindi tumutugma sa anumang email address na nauugnay sa iyong account. Madadagdag pa rin ito kapag i-sign mo ang ibinigay na token.
|
gpg_no_key_email_found = Ang GPG key na ito ay hindi tumutugma sa anumang email address na nauugnay sa iyong account. Madadagdag pa rin ito kapag i-sign mo ang ibinigay na token.
|
||||||
ssh_principal_deletion_success = Tinanggal na ang principal.
|
ssh_principal_deletion_success = Tinanggal na ang principal.
|
||||||
|
@ -997,6 +999,8 @@ language.title = Default na wika
|
||||||
keep_activity_private.description = Makikita mo lang at mga tagapangasiwa ng instansya ang iyong <a href="%s">pampublikong aktibidad</a>.
|
keep_activity_private.description = Makikita mo lang at mga tagapangasiwa ng instansya ang iyong <a href="%s">pampublikong aktibidad</a>.
|
||||||
language.description = Mase-save ang wika sa iyong account at gagamitin bilang default pagkatapos mong mag-log in.
|
language.description = Mase-save ang wika sa iyong account at gagamitin bilang default pagkatapos mong mag-log in.
|
||||||
language.localization_project = Tulungan kaming isalin ang Forgejo sa iyong wika! <a href="%s">Matuto pa</a>.
|
language.localization_project = Tulungan kaming isalin ang Forgejo sa iyong wika! <a href="%s">Matuto pa</a>.
|
||||||
|
pronouns_custom_label = Mga pasadyang pronoun
|
||||||
|
user_block_yourself = Hindi mo maaring harangan ang sarili mo.
|
||||||
|
|
||||||
[repo]
|
[repo]
|
||||||
template_description = Ang mga template na repositoryo ay pinapayagan ang mga gumagamit na mag-generate ng mga bagong repositoryo na may magkatulad na istraktura ng direktoryo, mga file, at opsyonal na mga setting.
|
template_description = Ang mga template na repositoryo ay pinapayagan ang mga gumagamit na mag-generate ng mga bagong repositoryo na may magkatulad na istraktura ng direktoryo, mga file, at opsyonal na mga setting.
|
||||||
|
@ -1070,7 +1074,7 @@ license_helper = Pumili ng file ng lisensya
|
||||||
license_helper_desc = Ang lisensya ay namamahala kung ano ang pwede at hindi pwedeng gawin ng mga ibang tao sa iyong code. Hindi sigurado kung alin ang wasto para sa iyong proyekto? Tignan ang <a target="_blank" rel="noopener noreferrer" href="%s">Pumili ng lisensya</a>.
|
license_helper_desc = Ang lisensya ay namamahala kung ano ang pwede at hindi pwedeng gawin ng mga ibang tao sa iyong code. Hindi sigurado kung alin ang wasto para sa iyong proyekto? Tignan ang <a target="_blank" rel="noopener noreferrer" href="%s">Pumili ng lisensya</a>.
|
||||||
object_format_helper = Object format ng repositoryo. Hindi mababago mamaya. Ang SHA1 ang pinaka-compatible.
|
object_format_helper = Object format ng repositoryo. Hindi mababago mamaya. Ang SHA1 ang pinaka-compatible.
|
||||||
readme = README
|
readme = README
|
||||||
auto_init = I-initialize ang repositoryo (Nagdadagdag ng .gitignore, Lisensya, at README)
|
auto_init = I-initialize ang repositoryo
|
||||||
trust_model_helper = Pumili ng trust model para sa signature verification. Ang mga posibleng opsyon ay:
|
trust_model_helper = Pumili ng trust model para sa signature verification. Ang mga posibleng opsyon ay:
|
||||||
trust_model_helper_collaborator = Katulong: I-trust ang mga signature batay sa mga katulong
|
trust_model_helper_collaborator = Katulong: I-trust ang mga signature batay sa mga katulong
|
||||||
trust_model_helper_committer = Commiter: I-trust ang mga signature na tumutugma sa mga commiter
|
trust_model_helper_committer = Commiter: I-trust ang mga signature na tumutugma sa mga commiter
|
||||||
|
@ -1127,8 +1131,8 @@ delete_preexisting_content = Burahin ang mga file sa %s
|
||||||
tree_path_not_found_commit = Hindi umiiral ang path na %[1]s sa commit %[2]s
|
tree_path_not_found_commit = Hindi umiiral ang path na %[1]s sa commit %[2]s
|
||||||
tree_path_not_found_branch = Hindi umiiral ang daanang %[1]s sa branch %[2]s
|
tree_path_not_found_branch = Hindi umiiral ang daanang %[1]s sa branch %[2]s
|
||||||
migrate_items_pullrequests = Mga hiling sa paghila
|
migrate_items_pullrequests = Mga hiling sa paghila
|
||||||
archive.pull.nocomment = Naka-archive ang repo na ito. Hindi ka makakakomento sa mga pull request.
|
archive.pull.nocomment = Naka-archive ang repositoryong ito. Hindi ka makakakomento sa mga pull request.
|
||||||
archive.title = Naka-archive ang repo na ito. Maari mong itignan ang mga file at i-clone ito, pero hindi makaka-push o magbukas ng mga isyu o mga pull request.
|
archive.title = Naka-archive ang repositoryong ito. Maari mong itignan ang mga file at i-clone ito, pero hindi makaka-push o magbukas ng mga isyu o mga pull request.
|
||||||
archive.title_date = Naka-archive ang repositoryo na ito noong %s. Maari mong itignan ang mga file at i-clone ito, pero hindi makaka-push o magbukas ng mga isyu o mga pull request.
|
archive.title_date = Naka-archive ang repositoryo na ito noong %s. Maari mong itignan ang mga file at i-clone ito, pero hindi makaka-push o magbukas ng mga isyu o mga pull request.
|
||||||
pulls = Mga hiling sa paghila
|
pulls = Mga hiling sa paghila
|
||||||
activity.merged_prs_count_n = Mga naisamang hiling sa paghila
|
activity.merged_prs_count_n = Mga naisamang hiling sa paghila
|
||||||
|
@ -1184,7 +1188,7 @@ migrate_items_labels = Mga label
|
||||||
migrate_items_issues = Mga isyu
|
migrate_items_issues = Mga isyu
|
||||||
migrate_items_merge_requests = Mga merge request
|
migrate_items_merge_requests = Mga merge request
|
||||||
migrate.clone_address = Magmigrate / Mag-clone mula sa URL
|
migrate.clone_address = Magmigrate / Mag-clone mula sa URL
|
||||||
archive.issue.nocomment = Naka-archive ang repo na ito. Hindi ka makakakomento sa mga isyu.
|
archive.issue.nocomment = Naka-archive ang repositoryong ito. Hindi ka makakakomento sa mga isyu.
|
||||||
migrate_items = Mga item sa pagmigrate
|
migrate_items = Mga item sa pagmigrate
|
||||||
migrate_items_releases = Mga paglabas
|
migrate_items_releases = Mga paglabas
|
||||||
migrate_repo = I-migrate ang repositoryo
|
migrate_repo = I-migrate ang repositoryo
|
||||||
|
@ -2707,6 +2711,23 @@ release.hide_archive_links = Itago ang mga awtomatikong na-generate na archive
|
||||||
release.hide_archive_links_helper = Itago ang awtomatikong na-generate na source code archive para sa release na ito. Halimbawa, kung maga-upload ka ng sarili mo.
|
release.hide_archive_links_helper = Itago ang awtomatikong na-generate na source code archive para sa release na ito. Halimbawa, kung maga-upload ka ng sarili mo.
|
||||||
branch.already_exists = Umiiral na ang branch na may pangalan na "%s".
|
branch.already_exists = Umiiral na ang branch na may pangalan na "%s".
|
||||||
diff.bin = BIN
|
diff.bin = BIN
|
||||||
|
settings.default_update_style_desc = Ang default na istilio na gagamitin sa pag-update ng mga hiling sa paghila na nalilipas sa base branch.
|
||||||
|
pulls.sign_in_require = <a href="%s">Mag-sign in</a> para gumawa ng bagong hiling sa paghila.
|
||||||
|
new_from_template = Gumamit ng template
|
||||||
|
new_from_template_description = Maari kang pumili ng umiiral na repository template sa instansya na ito at i-apply ang mga setting nito.
|
||||||
|
new_advanced = Mga advanced na setting
|
||||||
|
new_advanced_expand = I-click para i-expand
|
||||||
|
auto_init_description = Simulan ang kasaysayan ng Git gamit ang README at opsyonal na magdagdag ng mga lisensya at .gitignore na file.
|
||||||
|
issues.reaction.add = Magdagdag ng reaksyon
|
||||||
|
issues.reaction.alt_few = Nag-react si %[1]s ng %[2]s.
|
||||||
|
issues.reaction.alt_many = Sina %[1]s at %[2]d pang iba ay nag-react ng %[3]s.
|
||||||
|
issues.reaction.alt_remove = Magtanggal ng %[1]s reaksyon mula sa komento.
|
||||||
|
issues.reaction.alt_add = Magdagdag ng %[1]s reaksyon sa komento.
|
||||||
|
issues.context.menu = Menu ng komento
|
||||||
|
summary_card_alt = Pangkalahatang-ideyang card ng repositoryo na %s
|
||||||
|
release.summary_card_alt = Pangkalahatang-ideyang card ng isang release na nakapamagat na "%s" sa repositoryo na %s
|
||||||
|
|
||||||
|
editor.commit_email = Email ng commit
|
||||||
|
|
||||||
[search]
|
[search]
|
||||||
commit_kind = Maghanap ng mga commit…
|
commit_kind = Maghanap ng mga commit…
|
||||||
|
@ -2894,7 +2915,7 @@ dashboard.delete_old_system_notices = Burahin ang lahat ng mga lumang paunawa ng
|
||||||
dashboard.gc_lfs = I-garbage collect ang mga LFS meta object
|
dashboard.gc_lfs = I-garbage collect ang mga LFS meta object
|
||||||
dashboard.stop_zombie_tasks = Itigil ang mga zombie action task
|
dashboard.stop_zombie_tasks = Itigil ang mga zombie action task
|
||||||
users.user_manage_panel = Ipamahala ang mga user account
|
users.user_manage_panel = Ipamahala ang mga user account
|
||||||
users.new_account = Gumawa ng User Account
|
users.new_account = Gumawa ng user account
|
||||||
users.auth_login_name = Pangalan ng sign-in authentication
|
users.auth_login_name = Pangalan ng sign-in authentication
|
||||||
users.password_helper = Iwanang walang laman ang password upang panatilihing hindi nabago.
|
users.password_helper = Iwanang walang laman ang password upang panatilihing hindi nabago.
|
||||||
users.max_repo_creation = Pinakamataas na numero ng mga repositoryo
|
users.max_repo_creation = Pinakamataas na numero ng mga repositoryo
|
||||||
|
@ -3667,7 +3688,7 @@ approve_pull_request = `inaprubahan ang <a href="%[1]s">%[3]s#%[2]s</a>`
|
||||||
review_dismissed_reason = Dahilan:
|
review_dismissed_reason = Dahilan:
|
||||||
compare_branch = Ikumpara
|
compare_branch = Ikumpara
|
||||||
reject_pull_request = `nagmungkahi ng mga pagbabago para sa <a href="%[1]s">%[3]s#%[2]s</a>`
|
reject_pull_request = `nagmungkahi ng mga pagbabago para sa <a href="%[1]s">%[3]s#%[2]s</a>`
|
||||||
rename_repo = pinalitan ang pangalan ng repositoryo mula <code>%[1]s</code> sa <a href="%[2]s">%[3]#</a>
|
rename_repo = pinalitan ang pangalan ng repositoryo mula <code>%[1]s</code> sa <a href="%[2]s">%[3]s</a>
|
||||||
close_issue = `sinara ang isyu na <a href="%[1]s">%[3]s#%[2]s</a>`
|
close_issue = `sinara ang isyu na <a href="%[1]s">%[3]s#%[2]s</a>`
|
||||||
review_dismissed = `na-dismiss ang pagsusuri mula <b>%[4]s</b> para sa <a href="%[1]s">%[3]s#%[2]s</a>`
|
review_dismissed = `na-dismiss ang pagsusuri mula <b>%[4]s</b> para sa <a href="%[1]s">%[3]s#%[2]s</a>`
|
||||||
close_pull_request = `sinara ang hiling sa paghila na <a href="%[1]s">%[3]s#%[2]s</a>`
|
close_pull_request = `sinara ang hiling sa paghila na <a href="%[1]s">%[3]s#%[2]s</a>`
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
[common]
|
[common]
|
||||||
home=Accueil
|
home=Accueil
|
||||||
dashboard=Tableau de bord
|
dashboard=Tableau de bord
|
||||||
explore=Explorateur
|
explore=Explorer
|
||||||
help=Aide
|
help=Aide
|
||||||
logo=Logo
|
logo=Logo
|
||||||
sign_in=Connexion
|
sign_in=Connexion
|
||||||
|
@ -165,6 +165,7 @@ error413 = Votre quota est épuisé.
|
||||||
new_repo.title = Nouveau dépôt
|
new_repo.title = Nouveau dépôt
|
||||||
new_migrate.link = Nouvelle migration
|
new_migrate.link = Nouvelle migration
|
||||||
new_org.link = Nouvelle organisation
|
new_org.link = Nouvelle organisation
|
||||||
|
copy_path = Copier le chemin
|
||||||
|
|
||||||
[aria]
|
[aria]
|
||||||
navbar=Barre de navigation
|
navbar=Barre de navigation
|
||||||
|
@ -519,7 +520,7 @@ issue.action.force_push=<b>%[1]s</b> a forcé <b>%[2]s</b> de %[3]s vers %[4]s.
|
||||||
issue.action.push_1=<b>@%[1]s</b> a soumis %[3]d révision sur %[2]s
|
issue.action.push_1=<b>@%[1]s</b> a soumis %[3]d révision sur %[2]s
|
||||||
issue.action.push_n=<b>@%[1]s</b> a soumis %[3]d révisions sur %[2]s
|
issue.action.push_n=<b>@%[1]s</b> a soumis %[3]d révisions sur %[2]s
|
||||||
issue.action.close=<b>@%[1]s</b> a fermé #%[2]d.
|
issue.action.close=<b>@%[1]s</b> a fermé #%[2]d.
|
||||||
issue.action.reopen=<b>@%[1]s</b> a réouvert #%[2]d.
|
issue.action.reopen=<b>@%[1]s</b> a rouvert #%[2]d.
|
||||||
issue.action.merge=<b>@%[1]s</b> a fusionné de #%[2]d vers %[3]s.
|
issue.action.merge=<b>@%[1]s</b> a fusionné de #%[2]d vers %[3]s.
|
||||||
issue.action.approve=<b>@%[1]s</b> a approuvé cette demande d'ajout.
|
issue.action.approve=<b>@%[1]s</b> a approuvé cette demande d'ajout.
|
||||||
issue.action.reject=<b>@%[1]s</b> a demandé des modifications sur cette demande d'ajout.
|
issue.action.reject=<b>@%[1]s</b> a demandé des modifications sur cette demande d'ajout.
|
||||||
|
@ -680,6 +681,8 @@ Website = Site web
|
||||||
Location = Emplacement
|
Location = Emplacement
|
||||||
To = Nom de la branche
|
To = Nom de la branche
|
||||||
|
|
||||||
|
email_domain_is_not_allowed = Le domaine <b>%s</b> du courriel utilisateur entre en conflit avec EMAIL_DOMAIN_ALLOWLIST ou EMAIL_DOMAIN_BLOCKLIST. Veuillez vous assurer le courriel est renseigné.
|
||||||
|
|
||||||
[user]
|
[user]
|
||||||
change_avatar=Changer votre avatar…
|
change_avatar=Changer votre avatar…
|
||||||
joined_on=Inscrit le %s
|
joined_on=Inscrit le %s
|
||||||
|
@ -744,9 +747,9 @@ uid=UID
|
||||||
webauthn=Clés de sécurité à deux facteurs
|
webauthn=Clés de sécurité à deux facteurs
|
||||||
|
|
||||||
public_profile=Profil public
|
public_profile=Profil public
|
||||||
biography_placeholder=Parlez-nous un peu de vous ! (Markdown est interprété)
|
biography_placeholder=Parlez-nous un peu de vous ! (Markdown est supporté)
|
||||||
location_placeholder=Partagez votre position approximative avec d'autres personnes
|
location_placeholder=Partagez votre position approximative avec d'autres personnes
|
||||||
profile_desc=Contrôlez comment votre profil est affiché aux autres utilisateurs. Votre adresse courriel principale sera utilisée pour les notifications, la récupération de mot de passe et les opérations Git basées sur le Web.
|
profile_desc=À propos de vous
|
||||||
password_username_disabled=Les utilisateurs externes ne sont pas autorisés à modifier leur nom d'utilisateur. Veuillez contacter l'administrateur de votre site pour plus de détails.
|
password_username_disabled=Les utilisateurs externes ne sont pas autorisés à modifier leur nom d'utilisateur. Veuillez contacter l'administrateur de votre site pour plus de détails.
|
||||||
full_name=Nom complet
|
full_name=Nom complet
|
||||||
website=Site Web
|
website=Site Web
|
||||||
|
@ -811,7 +814,7 @@ manage_emails=Gérer les adresses courriels
|
||||||
manage_themes=Thème par défaut
|
manage_themes=Thème par défaut
|
||||||
manage_openid=Adresses OpenID
|
manage_openid=Adresses OpenID
|
||||||
email_desc=Votre adresse courriel principale sera utilisée pour les notifications, la récupération de mot de passe et, à condition qu'elle ne soit pas cachée, les opérations Git basées sur le Web.
|
email_desc=Votre adresse courriel principale sera utilisée pour les notifications, la récupération de mot de passe et, à condition qu'elle ne soit pas cachée, les opérations Git basées sur le Web.
|
||||||
theme_desc=Ce sera votre thème par défaut sur le site.
|
theme_desc=Ce thème sera utilisé pour l'interface web lorsque vous êtes authentifié.
|
||||||
primary=Principale
|
primary=Principale
|
||||||
activated=Activé
|
activated=Activé
|
||||||
requires_activation=Nécessite une activation
|
requires_activation=Nécessite une activation
|
||||||
|
@ -837,7 +840,7 @@ add_email_success=La nouvelle adresse e-mail a été ajoutée.
|
||||||
email_preference_set_success=L'e-mail de préférence a été défini avec succès.
|
email_preference_set_success=L'e-mail de préférence a été défini avec succès.
|
||||||
add_openid_success=La nouvelle adresse OpenID a été ajoutée.
|
add_openid_success=La nouvelle adresse OpenID a été ajoutée.
|
||||||
keep_email_private=Cacher l'adresse courriel
|
keep_email_private=Cacher l'adresse courriel
|
||||||
keep_email_private_popup=Ceci masquera votre adresse courriel de votre profil. Elle ne sera plus la valeur par défaut pour les commits créés par l'interface web, tel que des ajouts de fichiers ou des éditions, et ne sera pas utilisée pour fusionner les commits. Un courriel special %s peut être utilisé pour établir la relation entre des commits et votre compte. Notez que changer cette option n'aura pas d'effet sur les commits existants.
|
keep_email_private_popup=Ceci masquera votre adresse courriel de votre profil. Elle ne sera plus la valeur par défaut pour les commits créés par l'interface web, tel que des ajouts de fichiers ou des éditions, et ne sera pas utilisée pour fusionner les commits. Un courriel special %s peut être utilisé pour établir la relation entre des commits et votre compte. Cette option n'aura pas d'effet sur les commits existants.
|
||||||
openid_desc=OpenID vous permet de confier l'authentification à une tierce partie.
|
openid_desc=OpenID vous permet de confier l'authentification à une tierce partie.
|
||||||
|
|
||||||
manage_ssh_keys=Gérer les clés SSH
|
manage_ssh_keys=Gérer les clés SSH
|
||||||
|
@ -1053,9 +1056,12 @@ language.title = Langue par défaut
|
||||||
keep_activity_private.description = Vous seul pourrez voir votre <a href="%s">activité publique</a>, ainsi que les administrateurs de l'instance.
|
keep_activity_private.description = Vous seul pourrez voir votre <a href="%s">activité publique</a>, ainsi que les administrateurs de l'instance.
|
||||||
language.localization_project = Aidez-nous à traduire Forgejo dans votre langue ! <a href="%s">En savoir plus</a>.
|
language.localization_project = Aidez-nous à traduire Forgejo dans votre langue ! <a href="%s">En savoir plus</a>.
|
||||||
language.description = Cette langue sera enregistrée dans votre compte et utilisée comme langue par défaut après votre connexion.
|
language.description = Cette langue sera enregistrée dans votre compte et utilisée comme langue par défaut après votre connexion.
|
||||||
|
user_block_yourself = Vous ne pouvez pas vous bloquer vous même.
|
||||||
|
|
||||||
|
pronouns_custom_label = Pronoms personnalisés
|
||||||
|
|
||||||
[repo]
|
[repo]
|
||||||
new_repo_helper=Un dépôt contient tous les fichiers d’un projet, ainsi que l’historique de leurs modifications. Vous avez déjà ça ailleurs ? <a href="%s">Migrez-le ici.</a>
|
new_repo_helper=Un dépôt contient tous les fichiers d’un projet, ainsi que l’historique de leurs modifications. Vous avez déjà ça ailleurs ? <a href="%s">Migrez-le ici.</a>.
|
||||||
owner=Propriétaire
|
owner=Propriétaire
|
||||||
owner_helper=Certaines organisations peuvent ne pas apparaître dans la liste déroulante en raison d'une limite maximale du nombre de dépôts.
|
owner_helper=Certaines organisations peuvent ne pas apparaître dans la liste déroulante en raison d'une limite maximale du nombre de dépôts.
|
||||||
repo_name=Nom du dépôt
|
repo_name=Nom du dépôt
|
||||||
|
@ -1095,11 +1101,11 @@ issue_labels=Étiquettes
|
||||||
issue_labels_helper=Sélectionner un jeu d'étiquettes
|
issue_labels_helper=Sélectionner un jeu d'étiquettes
|
||||||
license=Licence
|
license=Licence
|
||||||
license_helper=Sélectionner une licence
|
license_helper=Sélectionner une licence
|
||||||
license_helper_desc=Une licence réglemente ce que les autres peuvent ou ne peuvent pas faire avec votre code. Vous ne savez pas laquelle est la bonne pour votre projet ? Comment <a target="_blank" rel="noopener noreferrer" href="%s">choisir une licence.</a>
|
license_helper_desc=Une licence réglemente ce que les autres peuvent ou ne peuvent pas faire avec votre code. Vous ne savez pas laquelle est la bonne pour votre projet ? Comment <a target="_blank" rel="noopener noreferrer" href="%s">choisir une licence.</a>.
|
||||||
readme=LISEZMOI
|
readme=LISEZMOI
|
||||||
readme_helper=Choisissez un modèle de fichier LISEZMOI
|
readme_helper=Choisissez un modèle de fichier LISEZMOI
|
||||||
readme_helper_desc=Le README est l'endroit idéal pour décrire votre projet et accueillir des contributeurs.
|
readme_helper_desc=Le README est l'endroit idéal pour décrire votre projet et accueillir des contributeurs.
|
||||||
auto_init=Initialiser le dépôt (avec un .gitignore, une Licence et un README.md)
|
auto_init=Initialiser le dépôt
|
||||||
trust_model_helper=Choisissez, parmi les éléments suivants, les règles de confiance des signatures paraphant les révisions :
|
trust_model_helper=Choisissez, parmi les éléments suivants, les règles de confiance des signatures paraphant les révisions :
|
||||||
trust_model_helper_collaborator=Collaborateur : ne se fier qu'aux signatures des collaborateurs du dépôt
|
trust_model_helper_collaborator=Collaborateur : ne se fier qu'aux signatures des collaborateurs du dépôt
|
||||||
trust_model_helper_committer=Auteur : ne se fier qu'aux signatures des auteurs de révisions
|
trust_model_helper_committer=Auteur : ne se fier qu'aux signatures des auteurs de révisions
|
||||||
|
@ -1224,7 +1230,7 @@ migrate.migrating_failed_no_addr=Échec de la migration.
|
||||||
migrate.github.description=Migrer les données depuis github.com ou GitHub Enterprise Server.
|
migrate.github.description=Migrer les données depuis github.com ou GitHub Enterprise Server.
|
||||||
migrate.git.description=Migrer uniquement un dépôt depuis n’importe quel service Git.
|
migrate.git.description=Migrer uniquement un dépôt depuis n’importe quel service Git.
|
||||||
migrate.gitlab.description=Migrer les données depuis gitlab.com ou d’autres instances de GitLab.
|
migrate.gitlab.description=Migrer les données depuis gitlab.com ou d’autres instances de GitLab.
|
||||||
migrate.gitea.description=Migrer les données depuis gitea.com ou d’autres instances de Gitea/Forgejo.
|
migrate.gitea.description=Migrer les données depuis gitea.com ou d’autres instances de Gitea.
|
||||||
migrate.gogs.description=Migrer les données depuis notabug.org ou d’autres instances de Gogs.
|
migrate.gogs.description=Migrer les données depuis notabug.org ou d’autres instances de Gogs.
|
||||||
migrate.onedev.description=Migrer les données depuis code.onedev.io ou d’autre instance de OneDev.
|
migrate.onedev.description=Migrer les données depuis code.onedev.io ou d’autre instance de OneDev.
|
||||||
migrate.codebase.description=Migrer les données depuis codebasehq.com.
|
migrate.codebase.description=Migrer les données depuis codebasehq.com.
|
||||||
|
@ -1312,6 +1318,7 @@ view_git_blame=Voir Git blame
|
||||||
video_not_supported_in_browser=Votre navigateur ne supporte pas la balise « vidéo » HTML5.
|
video_not_supported_in_browser=Votre navigateur ne supporte pas la balise « vidéo » HTML5.
|
||||||
audio_not_supported_in_browser=Votre navigateur ne supporte pas la balise « audio » HTML5.
|
audio_not_supported_in_browser=Votre navigateur ne supporte pas la balise « audio » HTML5.
|
||||||
stored_lfs=Stocké avec Git LFS
|
stored_lfs=Stocké avec Git LFS
|
||||||
|
stored_annex=Stocké avec Git Annex
|
||||||
symbolic_link=Lien symbolique
|
symbolic_link=Lien symbolique
|
||||||
executable_file=Fichier exécutable
|
executable_file=Fichier exécutable
|
||||||
vendored = Vendored
|
vendored = Vendored
|
||||||
|
@ -1337,6 +1344,7 @@ editor.upload_file=Téléverser un fichier
|
||||||
editor.edit_file=Modifier le fichier
|
editor.edit_file=Modifier le fichier
|
||||||
editor.preview_changes=Aperçu des modifications
|
editor.preview_changes=Aperçu des modifications
|
||||||
editor.cannot_edit_lfs_files=Les fichiers LFS ne peuvent pas être modifiés dans l'interface web.
|
editor.cannot_edit_lfs_files=Les fichiers LFS ne peuvent pas être modifiés dans l'interface web.
|
||||||
|
editor.cannot_edit_annex_files=Les fichiers Annex ne peuvent pas être modifiés dans l'interface web.
|
||||||
editor.cannot_edit_non_text_files=Les fichiers binaires ne peuvent pas être édités dans l'interface web.
|
editor.cannot_edit_non_text_files=Les fichiers binaires ne peuvent pas être édités dans l'interface web.
|
||||||
editor.edit_this_file=Modifier le fichier
|
editor.edit_this_file=Modifier le fichier
|
||||||
editor.this_file_locked=Le fichier est verrouillé
|
editor.this_file_locked=Le fichier est verrouillé
|
||||||
|
@ -1617,7 +1625,7 @@ issues.reopen_issue=Rouvrir
|
||||||
issues.reopen_comment_issue=Réouvrir avec le commentaire
|
issues.reopen_comment_issue=Réouvrir avec le commentaire
|
||||||
issues.create_comment=Commenter
|
issues.create_comment=Commenter
|
||||||
issues.closed_at=`a fermé ce ticket <a id="%[1]s" href="#%[1]s">%[2]s</a>.`
|
issues.closed_at=`a fermé ce ticket <a id="%[1]s" href="#%[1]s">%[2]s</a>.`
|
||||||
issues.reopened_at=`a réouvert ce ticket <a id="%[1]s" href="#%[1]s">%[2]s</a>.`
|
issues.reopened_at=`a rouvert ce ticket <a id="%[1]s" href="#%[1]s">%[2]s</a>.`
|
||||||
issues.commit_ref_at=`a référencé ce ticket depuis une révision <a id="%[1]s" href="#%[1]s"> %[2]s</a>.`
|
issues.commit_ref_at=`a référencé ce ticket depuis une révision <a id="%[1]s" href="#%[1]s"> %[2]s</a>.`
|
||||||
issues.ref_issue_from=`<a href="%[3]s">a fait référence à %[4]s</a> ce ticket <a id="%[1]s" href="#%[1]s">%[2]s</a>.`
|
issues.ref_issue_from=`<a href="%[3]s">a fait référence à %[4]s</a> ce ticket <a id="%[1]s" href="#%[1]s">%[2]s</a>.`
|
||||||
issues.ref_pull_from=`<a href="%[3]s">a fait référence</a> à cette demande d'ajout %[4]s <a id="%[1]s" href="#%[1]s">%[2]s</a>.`
|
issues.ref_pull_from=`<a href="%[3]s">a fait référence</a> à cette demande d'ajout %[4]s <a id="%[1]s" href="#%[1]s">%[2]s</a>.`
|
||||||
|
@ -1777,7 +1785,7 @@ issues.review.approve=a approuvé ces modifications %s
|
||||||
issues.review.comment=a évalué cette demande d’ajout %s
|
issues.review.comment=a évalué cette demande d’ajout %s
|
||||||
issues.review.dismissed=a révoqué l’évaluation de %s %s
|
issues.review.dismissed=a révoqué l’évaluation de %s %s
|
||||||
issues.review.dismissed_label=Révoquée
|
issues.review.dismissed_label=Révoquée
|
||||||
issues.review.left_comment=laisser un commentaire
|
issues.review.left_comment=a laissé un commentaire
|
||||||
issues.review.content.empty=Vous devez laisser un commentaire indiquant le(s) changement(s) demandé(s).
|
issues.review.content.empty=Vous devez laisser un commentaire indiquant le(s) changement(s) demandé(s).
|
||||||
issues.review.reject=a requis les changements %s
|
issues.review.reject=a requis les changements %s
|
||||||
issues.review.wait=a été sollicité pour évaluer cette demande d’ajout %s
|
issues.review.wait=a été sollicité pour évaluer cette demande d’ajout %s
|
||||||
|
@ -2508,7 +2516,7 @@ settings.archive.error=Une erreur s'est produite lors de l'archivage du dépôt.
|
||||||
settings.archive.error_ismirror=Vous ne pouvez pas archiver un dépôt en miroir.
|
settings.archive.error_ismirror=Vous ne pouvez pas archiver un dépôt en miroir.
|
||||||
settings.archive.branchsettings_unavailable=Le paramétrage des branches n'est pas disponible quand le dépôt est archivé.
|
settings.archive.branchsettings_unavailable=Le paramétrage des branches n'est pas disponible quand le dépôt est archivé.
|
||||||
settings.archive.tagsettings_unavailable=Le paramétrage des étiquettes n'est pas disponible si le dépôt est archivé.
|
settings.archive.tagsettings_unavailable=Le paramétrage des étiquettes n'est pas disponible si le dépôt est archivé.
|
||||||
settings.archive.mirrors_unavailable = Les mirroirs ne sont pas disponibles si le dépôt a été archivé.
|
settings.archive.mirrors_unavailable = Les miroirs ne sont pas disponibles si le dépôt a été archivé.
|
||||||
settings.unarchive.button=Désarchiver ce dépôt
|
settings.unarchive.button=Désarchiver ce dépôt
|
||||||
settings.unarchive.header=Réhabiliter ce dépôt
|
settings.unarchive.header=Réhabiliter ce dépôt
|
||||||
settings.unarchive.text=Réhabiliter un dépôt dégèle les actions de révisions et de soumissions, la gestion des tickets et des demandes d'ajouts.
|
settings.unarchive.text=Réhabiliter un dépôt dégèle les actions de révisions et de soumissions, la gestion des tickets et des demandes d'ajouts.
|
||||||
|
@ -2844,6 +2852,27 @@ diff.git-notes.remove-body = Cette note sera supprimée.
|
||||||
diff.git-notes.add = Ajouter une note
|
diff.git-notes.add = Ajouter une note
|
||||||
diff.git-notes.remove-header = Supprimer la note
|
diff.git-notes.remove-header = Supprimer la note
|
||||||
issues.summary_card_alt = Fiche de synthèse d'un ticket nommé "%s" dans le dépôt %s
|
issues.summary_card_alt = Fiche de synthèse d'un ticket nommé "%s" dans le dépôt %s
|
||||||
|
editor.add_tmpl.filename = fichier
|
||||||
|
issues.num_reviews_one = %d revue
|
||||||
|
issues.num_reviews_few = %d revues
|
||||||
|
settings.default_update_style_desc = Style de mise à jour des demandes de fusion qui sont en retard par rapport à la branche de base.
|
||||||
|
|
||||||
|
new_from_template = Utiliser un modèle
|
||||||
|
new_from_template_description = Vous pouvez sélectionner un modèle de dépôt existant sur cette instance et appliquer ses paramètres.
|
||||||
|
new_advanced = Options avancées
|
||||||
|
new_advanced_expand = Cliquer pour développer
|
||||||
|
auto_init_description = Débuter l'historique Git avec un README et ajouter en option les fichier de licence et .gitignore.
|
||||||
|
summary_card_alt = Carte résumé du dépôt %s
|
||||||
|
issues.reaction.add = Ajouter une réaction
|
||||||
|
issues.reaction.alt_few = %[1]s a réagit %[2]s.
|
||||||
|
issues.reaction.alt_many = %[1]s et %[2]d de plus ont réagit %[3]s.
|
||||||
|
issues.reaction.alt_remove = Enlever la réaction %[1]s du commentaire.
|
||||||
|
issues.reaction.alt_add = Ajouter la réaction %[1]s du commentaire.
|
||||||
|
issues.context.menu = Menu commentaire
|
||||||
|
pulls.sign_in_require = <a href="%s">Identifiez vous</a> pour créer une nouvelle demande d'ajout.
|
||||||
|
release.summary_card_alt = Carte résumé de la publication dont le titre est "%s" dans le dépôt %s
|
||||||
|
|
||||||
|
editor.commit_email = Courriel de commit
|
||||||
|
|
||||||
[graphs]
|
[graphs]
|
||||||
component_loading = Chargement %s...
|
component_loading = Chargement %s...
|
||||||
|
@ -3545,10 +3574,10 @@ rename_repo=a rebaptisé le dépôt <code>%[1]s</code> en <a href="%[2]s">%[3]s<
|
||||||
commit_repo=a soumis sur <a href="%[2]s">%[3]s</a> dans <a href="%[1]s">%[4]s</a>
|
commit_repo=a soumis sur <a href="%[2]s">%[3]s</a> dans <a href="%[1]s">%[4]s</a>
|
||||||
create_issue=`a ouvert le ticket <a href="%[1]s">%[3]s#%[2]s</a>`
|
create_issue=`a ouvert le ticket <a href="%[1]s">%[3]s#%[2]s</a>`
|
||||||
close_issue=`a fermé le ticket <a href="%[1]s">%[3]s#%[2]s</a>`
|
close_issue=`a fermé le ticket <a href="%[1]s">%[3]s#%[2]s</a>`
|
||||||
reopen_issue=`a réouvert le ticket <a href="%[1]s">%[3]s#%[2]s</a>`
|
reopen_issue=`a rouvert le ticket <a href="%[1]s">%[3]s#%[2]s</a>`
|
||||||
create_pull_request=`a créé la demande d’ajout <a href="%[1]s">%[3]s#%[2]s</a>`
|
create_pull_request=`a créé la demande d’ajout <a href="%[1]s">%[3]s#%[2]s</a>`
|
||||||
close_pull_request=`a fermé la demande d’ajout <a href="%[1]s">%[3]s#%[2]s</a>`
|
close_pull_request=`a fermé la demande d’ajout <a href="%[1]s">%[3]s#%[2]s</a>`
|
||||||
reopen_pull_request=`a réouvert la demande d’ajout <a href="%[1]s">%[3]s#%[2]s</a>`
|
reopen_pull_request=`a rouvert la demande d’ajout <a href="%[1]s">%[3]s#%[2]s</a>`
|
||||||
comment_issue=`a commenté le ticket <a href="%[1]s">%[3]s#%[2]s</a>`
|
comment_issue=`a commenté le ticket <a href="%[1]s">%[3]s#%[2]s</a>`
|
||||||
comment_pull=`a commenté la demande d’ajout <a href="%[1]s">%[3]s#%[2]s</a>`
|
comment_pull=`a commenté la demande d’ajout <a href="%[1]s">%[3]s#%[2]s</a>`
|
||||||
merge_pull_request=`a fusionné la demande d’ajout <a href="%[1]s">%[3]s#%[2]s</a>`
|
merge_pull_request=`a fusionné la demande d’ajout <a href="%[1]s">%[3]s#%[2]s</a>`
|
||||||
|
@ -3662,7 +3691,7 @@ alpine.registry=Configurez ce registre en ajoutant l’URL dans votre fichier <c
|
||||||
alpine.registry.key=Téléchargez la clé RSA publique du registre dans le dossier <code>/etc/apk/keys/</code> pour vérifier la signature de l'index :
|
alpine.registry.key=Téléchargez la clé RSA publique du registre dans le dossier <code>/etc/apk/keys/</code> pour vérifier la signature de l'index :
|
||||||
alpine.registry.info=Choisissez $branch et $repository dans la liste ci-dessous.
|
alpine.registry.info=Choisissez $branch et $repository dans la liste ci-dessous.
|
||||||
alpine.install=Pour installer le paquet, exécutez la commande suivante :
|
alpine.install=Pour installer le paquet, exécutez la commande suivante :
|
||||||
alpine.repository=Informations sur le Dépôt
|
alpine.repository=Informations sur le dépôt
|
||||||
alpine.repository.branches=Branches
|
alpine.repository.branches=Branches
|
||||||
alpine.repository.repositories=Dépôts
|
alpine.repository.repositories=Dépôts
|
||||||
alpine.repository.architectures=Architectures
|
alpine.repository.architectures=Architectures
|
||||||
|
@ -3682,7 +3711,7 @@ conda.install=Pour installer le paquet en utilisant Conda, exécutez la commande
|
||||||
container.details.type=Type d'image
|
container.details.type=Type d'image
|
||||||
container.details.platform=Plateforme
|
container.details.platform=Plateforme
|
||||||
container.pull=Tirez l'image depuis un terminal :
|
container.pull=Tirez l'image depuis un terminal :
|
||||||
container.digest=Empreinte :
|
container.digest=Empreinte
|
||||||
container.multi_arch=SE / Arch
|
container.multi_arch=SE / Arch
|
||||||
container.layers=Calques d'image
|
container.layers=Calques d'image
|
||||||
container.labels=Labels
|
container.labels=Labels
|
||||||
|
@ -3693,7 +3722,7 @@ cran.install=Pour installer le paquet, exécutez la commande suivante :
|
||||||
debian.registry=Configurez ce registre à partir d'un terminal :
|
debian.registry=Configurez ce registre à partir d'un terminal :
|
||||||
debian.registry.info=Choisissez $distribution et $component dans la liste ci-dessous.
|
debian.registry.info=Choisissez $distribution et $component dans la liste ci-dessous.
|
||||||
debian.install=Pour installer le paquet, exécutez la commande suivante :
|
debian.install=Pour installer le paquet, exécutez la commande suivante :
|
||||||
debian.repository=Infos sur le Dépôt
|
debian.repository=Infos sur le dépôt
|
||||||
debian.repository.distributions=Distributions
|
debian.repository.distributions=Distributions
|
||||||
debian.repository.components=Composants
|
debian.repository.components=Composants
|
||||||
debian.repository.architectures=Architectures
|
debian.repository.architectures=Architectures
|
||||||
|
@ -3797,6 +3826,7 @@ arch.version.conflicts = Conflits
|
||||||
arch.version.replaces = Remplace
|
arch.version.replaces = Remplace
|
||||||
arch.version.backup = Sauvegarde
|
arch.version.backup = Sauvegarde
|
||||||
arch.version.makedepends = Faire des dépendances
|
arch.version.makedepends = Faire des dépendances
|
||||||
|
container.images.title = Images
|
||||||
|
|
||||||
[secrets]
|
[secrets]
|
||||||
secrets=Secrets
|
secrets=Secrets
|
||||||
|
@ -3945,7 +3975,7 @@ keyword_search_unavailable = La recherche par mot-clé n'est pas disponible actu
|
||||||
fuzzy_tooltip = Inclure les résultats proches des termes recherchés
|
fuzzy_tooltip = Inclure les résultats proches des termes recherchés
|
||||||
match = Correspondance
|
match = Correspondance
|
||||||
match_tooltip = Uniquement inclure les résultats correspondant exactement aux termes recherchés
|
match_tooltip = Uniquement inclure les résultats correspondant exactement aux termes recherchés
|
||||||
repo_kind = Chercher dans les dépôt...
|
repo_kind = Chercher dans les dépôts...
|
||||||
user_kind = Chercher les utilisateurs...
|
user_kind = Chercher les utilisateurs...
|
||||||
org_kind = Chercher les organisations...
|
org_kind = Chercher les organisations...
|
||||||
team_kind = Chercher les équipes...
|
team_kind = Chercher les équipes...
|
||||||
|
|
239
options/locale/locale_he.ini
Normal file
239
options/locale/locale_he.ini
Normal file
|
@ -0,0 +1,239 @@
|
||||||
|
[common]
|
||||||
|
home = בית
|
||||||
|
dashboard = מבט על
|
||||||
|
help = עזרה
|
||||||
|
logo = לוגו
|
||||||
|
sign_in = כניסה
|
||||||
|
sign_in_with_provider = כניסה דרך %s
|
||||||
|
sign_in_or = או
|
||||||
|
sign_out = יציאה מהחשבון
|
||||||
|
sign_up = הרשמה
|
||||||
|
link_account = חיבור חשבון
|
||||||
|
register = הרשמה
|
||||||
|
version = גרסה
|
||||||
|
powered_by = רץ על %s
|
||||||
|
page = דף
|
||||||
|
template = תבנית
|
||||||
|
language = שפה
|
||||||
|
notifications = הודעות
|
||||||
|
active_stopwatch = סטופר
|
||||||
|
create_new = חדש…
|
||||||
|
user_profile_and_more = פרופיל והגדרות…
|
||||||
|
signed_in_as = שלום
|
||||||
|
enable_javascript = אתר זה משתמש בJavaScript.
|
||||||
|
toc = תוכן הענינים
|
||||||
|
licenses = רישיונות
|
||||||
|
return_to_forgejo = חזרה לפורג'ו
|
||||||
|
more_items = עוד אפשרויות
|
||||||
|
username = שם משתמש
|
||||||
|
email = כתובת אימייל
|
||||||
|
password = סיסמה
|
||||||
|
access_token = קוד גישה
|
||||||
|
captcha = CAPTCHA
|
||||||
|
twofa = אימות דו־שלבי
|
||||||
|
twofa_scratch = קוד אימות דו־שלבי
|
||||||
|
passcode = קוד כניסה
|
||||||
|
webauthn_insert_key = יש להכניס את מפתח אבטחך
|
||||||
|
webauthn_sign_in = יש ללחוץ על הכפתור שעל מפתח האבטחה. אם אין כפתור, אפשר להוציא את המפתח ולחבר אותו שוב.
|
||||||
|
webauthn_press_button = נא ללחוץ על הכפתור שעל מפתח האבטחה…
|
||||||
|
webauthn_error = קריאת מפתח האבטחה נכשלה.
|
||||||
|
webauthn_unsupported_browser = הדפדפן שלך לא תומך בWebAuthn.
|
||||||
|
webauthn_error_unknown = שגיאה לא ידועה, אפשר לנסות שוב.
|
||||||
|
webauthn_error_insecure = הפרוטוקול WebAuthn לא תומך בחיבורים לא מאובטחים, למעט דרך "localhost" או "127.0.0.1"
|
||||||
|
webauthn_error_unable_to_process = שרת זה נכשל בעיבוד בקשתך.
|
||||||
|
webauthn_error_duplicated = מפתח האבטחה לא יכול לשמש לבקשה זו. נא לוודא שהמפתח לא רשום.
|
||||||
|
webauthn_error_empty = שם המפתח הוא שדה חובה.
|
||||||
|
webauthn_error_timeout = קריאת מפתחך לקחה יותר מדי זמן. אפשר לטעון מחדש את הדף ולנסות שוב.
|
||||||
|
repository = קרפיף
|
||||||
|
organization = ארגון
|
||||||
|
mirror = מראה
|
||||||
|
new_mirror = מראה חדשה
|
||||||
|
new_fork = מזלוג חדש של קרפיף זה
|
||||||
|
new_project = פרויקט חדש
|
||||||
|
new_project_column = עמודה חדשה
|
||||||
|
admin_panel = לוח ניהול מערכת
|
||||||
|
settings = הגדרות
|
||||||
|
your_profile = פרופיל
|
||||||
|
your_starred = כיכבת
|
||||||
|
your_settings = הגדרות
|
||||||
|
new_repo.title = קרפיף חדש
|
||||||
|
new_migrate.title = יבוא קרפיף
|
||||||
|
new_org.title = ארגון חדש
|
||||||
|
new_repo.link = קרפיף חדש
|
||||||
|
new_migrate.link = יבוא קרפיף
|
||||||
|
new_org.link = ארגון חדש
|
||||||
|
all = הכל
|
||||||
|
sources = מקורות
|
||||||
|
mirrors = מראות
|
||||||
|
collaborative = שיתופי
|
||||||
|
forks = מזלוגים
|
||||||
|
activities = פעילויות
|
||||||
|
pull_requests = בקשות מיזוג
|
||||||
|
issues = סוגיות
|
||||||
|
milestones = מטרות
|
||||||
|
ok = אישור
|
||||||
|
cancel = ביטול
|
||||||
|
retry = לנסות שוב
|
||||||
|
rerun = הרצה חוזרת
|
||||||
|
save = שמירה
|
||||||
|
add = הוספה
|
||||||
|
add_all = הוספת הכל
|
||||||
|
remove = הסרה
|
||||||
|
remove_all = הסרת הכל
|
||||||
|
remove_label_str = הסרת "%s"
|
||||||
|
edit = עריכה
|
||||||
|
test = בדיקה
|
||||||
|
enabled = מופעל
|
||||||
|
disabled = כבוי
|
||||||
|
locked = נעול
|
||||||
|
copy = העתקה
|
||||||
|
copy_generic = העתקה לCtrl + C
|
||||||
|
copy_url = העתקת קישור
|
||||||
|
copy_hash = העתקת קוד גיבוב
|
||||||
|
copy_path = העתקת מיקום קובץ
|
||||||
|
copy_content = העתקת תוכן
|
||||||
|
copy_branch = העתקת שם ענף
|
||||||
|
copy_success = הועתק!
|
||||||
|
copy_error = העתקה נכשלה
|
||||||
|
copy_type_unsupported = אי אפשר להעתיק קבצים מסוג זה
|
||||||
|
write = כתיבה
|
||||||
|
preview = תצוגה מקדימה
|
||||||
|
loading = נטען…
|
||||||
|
error = שגיאה
|
||||||
|
error404 = דף זה <strong>לא קיים</strong> או ש<strong>אין לך אילו גישה</strong>.
|
||||||
|
go_back = אחורה
|
||||||
|
invalid_data = הבנת הקלט נכשלה: %v
|
||||||
|
never = אף פעם
|
||||||
|
unknown = לא ידוע
|
||||||
|
rss_feed = פיד RSS
|
||||||
|
pin = הצמדה
|
||||||
|
unpin = ביטול הצמדה
|
||||||
|
archived = ארכיון
|
||||||
|
concept_system_global = גלובלי
|
||||||
|
concept_user_individual = אישי
|
||||||
|
concept_code_repository = קרפיף
|
||||||
|
concept_user_organization = ארגון
|
||||||
|
show_timestamps = הצגת זמנים
|
||||||
|
show_log_seconds = הצגת שניות
|
||||||
|
show_full_screen = מסך מלא
|
||||||
|
download_logs = הורדת לוגים
|
||||||
|
confirm_delete_selected = למחוק את כל הפריטים המסומנים?
|
||||||
|
name = שם
|
||||||
|
value = ערך
|
||||||
|
filter = מסנן
|
||||||
|
filter.clear = ניקוי מסננים
|
||||||
|
filter.is_archived = בארכיון
|
||||||
|
filter.not_archived = מחוץ לארכיון
|
||||||
|
filter.is_fork = רק מזלוגים
|
||||||
|
filter.not_fork = להוציא מזלוגים
|
||||||
|
filter.is_mirror = רק מראות
|
||||||
|
filter.not_mirror = להוציא מראות
|
||||||
|
filter.is_template = רק תבניות
|
||||||
|
filter.not_template = להוציא תבניות
|
||||||
|
filter.public = ציבורי
|
||||||
|
filter.private = פרטי
|
||||||
|
|
||||||
|
[search]
|
||||||
|
search = חיפוש...
|
||||||
|
type_tooltip = סוג חיפוש
|
||||||
|
fuzzy = מקורב
|
||||||
|
fuzzy_tooltip = תוצאות יתאימו לתוכן תיבת החיפוש בקירוב; מומלץ כנגד שגיאות כתיב
|
||||||
|
union = מילות מפתח
|
||||||
|
union_tooltip = תוצאות יכללו לפחות מילת מפתח אחת; אפשר להפריד מילות מפתח עם רווחים
|
||||||
|
exact = מדויק
|
||||||
|
exact_tooltip = תוצאות יתאימו במדויק לתוכן תיבת החיפוש
|
||||||
|
regexp = רג'קס
|
||||||
|
repo_kind = חיפוש קרפיפים...
|
||||||
|
user_kind = חיפוש אנשים...
|
||||||
|
org_kind = חיפוש ארגונים...
|
||||||
|
team_kind = חיפוש צוותים...
|
||||||
|
code_kind = חיפוש קוד...
|
||||||
|
code_search_unavailable = חיפוש קוד לא זמין. נא לדווח למנהלי המערכת.
|
||||||
|
package_kind = חיפוש חבילות...
|
||||||
|
project_kind = חיפוש פרוייקטים...
|
||||||
|
branch_kind = חיפוש ענפים...
|
||||||
|
commit_kind = חיפוש קומיטים...
|
||||||
|
runner_kind = חיפוש מריצים...
|
||||||
|
no_results = לא נמצאו תוצאות.
|
||||||
|
issue_kind = חיפוש סוגיות...
|
||||||
|
keyword_search_unavailable = חיפוש מילות מפתח לא זמין. נא לדווח למנהלי המערכת.
|
||||||
|
|
||||||
|
[aria]
|
||||||
|
navbar = סרגל הניווט
|
||||||
|
footer.software = על תוכנה זו
|
||||||
|
footer.links = קישורים
|
||||||
|
|
||||||
|
[heatmap]
|
||||||
|
number_of_contributions_in_the_last_12_months = % תרומות ב־12 החודשים האחרונים
|
||||||
|
contributions_zero = אפס תרומות
|
||||||
|
contributions_format = {contributions} ב{day} ל{month} {year}
|
||||||
|
contributions_one = תרומה
|
||||||
|
contributions_few = תרומות
|
||||||
|
less = פחות
|
||||||
|
more = יותר
|
||||||
|
|
||||||
|
[editor]
|
||||||
|
buttons.heading.tooltip = הוספת כותרת
|
||||||
|
buttons.bold.tooltip = הדגשת טקסט
|
||||||
|
buttons.italic.tooltip = הטיית טקסט
|
||||||
|
buttons.quote.tooltip = ציטוט
|
||||||
|
buttons.code.tooltip = הוספת קוד
|
||||||
|
buttons.link.tooltip = הוספת קישור
|
||||||
|
buttons.list.unordered.tooltip = הוספת רשימה לא ממוספרת
|
||||||
|
buttons.list.ordered.tooltip = הוספת רשימה ממוספרת
|
||||||
|
buttons.list.task.tooltip = הוספת רשימת משימות
|
||||||
|
buttons.mention.tooltip = תיוג אדם או צוות
|
||||||
|
buttons.ref.tooltip = ריפרור לסוגיה או בקשת מיזוג
|
||||||
|
buttons.switch_to_legacy.tooltip = מעבר לעורך הישן
|
||||||
|
buttons.enable_monospace_font = הפעלת גופן קבוע־רוחב
|
||||||
|
buttons.disable_monospace_font = כיבוי גופן קבוע־רוחב
|
||||||
|
buttons.new_table.tooltip = הוספת טבלה
|
||||||
|
table_modal.header = הוספת טבלה
|
||||||
|
table_modal.placeholder.header = כותרת
|
||||||
|
table_modal.placeholder.content = תוכן
|
||||||
|
table_modal.label.rows = שורות
|
||||||
|
table_modal.label.columns = עמודות
|
||||||
|
|
||||||
|
[filter]
|
||||||
|
string.asc = סדר אלפבתי עולה
|
||||||
|
string.desc = סדר אלפבתי יורד
|
||||||
|
|
||||||
|
[error]
|
||||||
|
occurred = קרתה שגיאה
|
||||||
|
not_found = המטרה לא נמצאה.
|
||||||
|
network_error = שגיאת אינטרנט
|
||||||
|
server_internal = שגיאת שרת פנימית
|
||||||
|
|
||||||
|
[startpage]
|
||||||
|
install = קל להתקנה
|
||||||
|
lightweight = קל
|
||||||
|
license = קוד פתוח
|
||||||
|
|
||||||
|
[install]
|
||||||
|
install = התקנה
|
||||||
|
title = הגדרה ראשונית
|
||||||
|
db_title = הגדרות מסד מידע
|
||||||
|
db_type = סוג מסד מידע
|
||||||
|
user = שם משתמש
|
||||||
|
password = סיסמה
|
||||||
|
db_name = שם מסד המידע
|
||||||
|
db_schema = סכימה
|
||||||
|
db_schema_helper = תוכן ריק משמע ערך ברירת המחדל ("public") של מסד המידע.
|
||||||
|
ssl_mode = SSL
|
||||||
|
err_empty_admin_password = סיסמה של מנהל מערכת לא יכולה להיות ריקה.
|
||||||
|
err_empty_admin_email = כתובת אימייל של מנהל מערכת היא חובה.
|
||||||
|
general_title = הגדרות כלליות
|
||||||
|
app_name = שם שרת זה
|
||||||
|
|
||||||
|
[mail]
|
||||||
|
issue_assigned.pull = @%[1]s שייך אותך לבקשת המיזוג %[2]s בקרפיף %[3]s.
|
||||||
|
issue_assigned.issue = @%[1]s שייך אותך לסוגיה %[2]s בקרפיף %[3]s.
|
||||||
|
repo.transfer.subject_to = %s רוצה להעביר את הקרפיף "%s" ל־%s
|
||||||
|
repo.transfer.subject_to_you = %s רוצה להעביר את הקרפיף "%s" אליך
|
||||||
|
repo.collaborator.added.text = הוספת בתור פועל לקרפיף:
|
||||||
|
|
||||||
|
[form]
|
||||||
|
RepoName = שם קרפיף
|
||||||
|
repo_name_been_taken = כבר יש קרפיף בשם זה.
|
||||||
|
repository_force_private = פרטיות כפויה מופעלת: קרפיפים פרטיים לא יכולים להעשות ציבוריים.
|
||||||
|
repository_files_already_exist = כבר יש קבצים בקרפיף זה. יש לדבר עם מנהל המערכת כדי לתקן את הבעיה.
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue