mirror of
https://codeberg.org/forgejo-aneksajo/forgejo-aneksajo.git
synced 2025-07-06 17:00:04 +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: |
|
||||
export DEBIAN_FRONTEND=noninteractive
|
||||
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:
|
||||
RELEASE: ${{inputs.release}}
|
||||
- name: install packages
|
||||
|
@ -24,6 +26,7 @@ runs:
|
|||
- name: remove temporary package list to prevent using it in other steps
|
||||
run: |
|
||||
rm "/etc/apt/sources.list.d/${RELEASE}.list"
|
||||
rm "/etc/apt/sources.list.d/neurodebian.sources.list"
|
||||
apt-get update -qq
|
||||
env:
|
||||
RELEASE: ${{inputs.release}}
|
||||
|
|
|
@ -3,7 +3,7 @@ runs:
|
|||
steps:
|
||||
- run: |
|
||||
su forgejo -c 'make deps-backend'
|
||||
- uses: actions/cache@v4
|
||||
- uses: https://data.forgejo.org/actions/cache@v4
|
||||
id: cache-backend
|
||||
with:
|
||||
path: ${{github.workspace}}/gitea
|
||||
|
|
|
@ -48,7 +48,7 @@ runs:
|
|||
|
||||
- name: "Restore Go dependencies from cache or mark for later caching"
|
||||
id: cache-deps
|
||||
uses: actions/cache@v4
|
||||
uses: https://data.forgejo.org/actions/cache@v4
|
||||
with:
|
||||
key: setup-cache-go-deps-${{ runner.os }}-${{ inputs.username }}-${{ steps.go-version.outputs.go_version }}-${{ hashFiles('go.sum', 'go.mod') }}
|
||||
restore-keys: |
|
||||
|
|
|
@ -19,7 +19,7 @@ runs:
|
|||
set -ex
|
||||
toolchain=$(grep -oP '(?<=toolchain ).+' go.mod)
|
||||
version=$(go version | cut -d' ' -f3)
|
||||
if [ "$toolchain" != "$version" ]; then
|
||||
echo "go version mismatch: $toolchain <> $version"
|
||||
if dpkg --compare-versions ${version#go} lt ${toolchain#go}; then
|
||||
echo "go version too low: $toolchain >= $version"
|
||||
exit 1
|
||||
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'
|
||||
runs-on: lxc-bookworm
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: https://data.forgejo.org/actions/checkout@v4
|
||||
|
||||
- id: forgejo
|
||||
uses: https://data.forgejo.org/actions/setup-forgejo@v2.0.4
|
||||
|
|
|
@ -33,7 +33,7 @@ jobs:
|
|||
# root is used for testing, allow it
|
||||
if: vars.ROLE == 'forgejo-integration' || github.repository_owner == 'root'
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: https://data.forgejo.org/actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
|
@ -164,7 +164,7 @@ jobs:
|
|||
|
||||
- name: build container & release
|
||||
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:
|
||||
forgejo: "${{ env.GITHUB_SERVER_URL }}"
|
||||
owner: "${{ env.GITHUB_REPOSITORY_OWNER }}"
|
||||
|
@ -183,7 +183,7 @@ jobs:
|
|||
|
||||
- name: build rootless container
|
||||
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:
|
||||
forgejo: "${{ env.GITHUB_SERVER_URL }}"
|
||||
owner: "${{ env.GITHUB_REPOSITORY_OWNER }}"
|
||||
|
|
|
@ -37,11 +37,11 @@ jobs:
|
|||
container:
|
||||
image: data.forgejo.org/oci/node:20-bookworm
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: https://data.forgejo.org/actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: '0'
|
||||
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:
|
||||
origin-url: ${{ env.GITHUB_SERVER_URL }}
|
||||
origin-repo: ${{ github.repository }}
|
||||
|
|
|
@ -39,10 +39,10 @@ jobs:
|
|||
runs-on: lxc-bookworm
|
||||
if: vars.DOER != '' && vars.FORGEJO != '' && vars.TO_OWNER != '' && vars.FROM_OWNER != '' && secrets.TOKEN != ''
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: https://data.forgejo.org/actions/checkout@v4
|
||||
|
||||
- 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:
|
||||
from-forgejo: ${{ vars.FORGEJO }}
|
||||
to-forgejo: ${{ vars.FORGEJO }}
|
||||
|
|
|
@ -10,7 +10,6 @@ on:
|
|||
|
||||
jobs:
|
||||
backend-checks:
|
||||
if: vars.ROLE == 'forgejo-coding' || vars.ROLE == 'forgejo-testing'
|
||||
runs-on: docker
|
||||
container:
|
||||
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
|
||||
- uses: ./.forgejo/workflows-composite/build-backend
|
||||
frontend-checks:
|
||||
if: vars.ROLE == 'forgejo-coding' || vars.ROLE == 'forgejo-testing'
|
||||
runs-on: docker
|
||||
container:
|
||||
image: 'data.forgejo.org/oci/node:20-bookworm'
|
||||
|
@ -46,7 +44,7 @@ jobs:
|
|||
apt-get update -qq
|
||||
apt-get -q install -qq -y zstd
|
||||
- name: "Cache frontend build for playwright testing"
|
||||
uses: actions/cache/save@v4
|
||||
uses: https://data.forgejo.org/actions/cache/save@v4
|
||||
with:
|
||||
path: ${{github.workspace}}/public/assets
|
||||
key: frontend-build-${{ github.sha }}
|
||||
|
@ -104,7 +102,7 @@ jobs:
|
|||
fetch-depth: 20
|
||||
- uses: ./.forgejo/workflows-composite/setup-env
|
||||
- name: "Restore frontend build"
|
||||
uses: actions/cache/restore@v4
|
||||
uses: https://data.forgejo.org/actions/cache/restore@v4
|
||||
id: cache-frontend
|
||||
with:
|
||||
path: ${{github.workspace}}/public/assets
|
||||
|
@ -176,7 +174,6 @@ jobs:
|
|||
TAGS: bindata
|
||||
TEST_REDIS_SERVER: cacher:${{ matrix.cacher.port }}
|
||||
test-mysql:
|
||||
if: vars.ROLE == 'forgejo-coding' || vars.ROLE == 'forgejo-testing'
|
||||
runs-on: docker
|
||||
needs: [backend-checks, frontend-checks]
|
||||
container:
|
||||
|
@ -199,15 +196,13 @@ jobs:
|
|||
- name: install dependencies & git >= 2.42
|
||||
uses: ./.forgejo/workflows-composite/apt-install-from
|
||||
with:
|
||||
packages: git git-lfs
|
||||
packages: git git-annex-standalone git-lfs
|
||||
- uses: ./.forgejo/workflows-composite/build-backend
|
||||
- run: |
|
||||
su forgejo -c 'make test-mysql-migration test-mysql'
|
||||
timeout-minutes: 120
|
||||
env:
|
||||
USE_REPO_TEST_DIR: 1
|
||||
test-pgsql:
|
||||
if: vars.ROLE == 'forgejo-coding' || vars.ROLE == 'forgejo-testing'
|
||||
runs-on: docker
|
||||
needs: [backend-checks, frontend-checks]
|
||||
container:
|
||||
|
@ -236,17 +231,15 @@ jobs:
|
|||
- name: install dependencies & git >= 2.42
|
||||
uses: ./.forgejo/workflows-composite/apt-install-from
|
||||
with:
|
||||
packages: git git-lfs
|
||||
packages: git git-annex-standalone git-lfs
|
||||
- uses: ./.forgejo/workflows-composite/build-backend
|
||||
- run: |
|
||||
su forgejo -c 'make test-pgsql-migration test-pgsql'
|
||||
timeout-minutes: 120
|
||||
env:
|
||||
RACE_ENABLED: true
|
||||
USE_REPO_TEST_DIR: 1
|
||||
TEST_LDAP: 1
|
||||
test-sqlite:
|
||||
if: vars.ROLE == 'forgejo-coding' || vars.ROLE == 'forgejo-testing'
|
||||
runs-on: docker
|
||||
needs: [backend-checks, frontend-checks]
|
||||
container:
|
||||
|
@ -258,25 +251,21 @@ jobs:
|
|||
- name: install dependencies & git >= 2.42
|
||||
uses: ./.forgejo/workflows-composite/apt-install-from
|
||||
with:
|
||||
packages: git git-lfs
|
||||
packages: git git-annex-standalone git-lfs
|
||||
- uses: ./.forgejo/workflows-composite/build-backend
|
||||
- run: |
|
||||
su forgejo -c 'make test-sqlite-migration test-sqlite'
|
||||
timeout-minutes: 120
|
||||
env:
|
||||
TAGS: sqlite sqlite_unlock_notify
|
||||
RACE_ENABLED: true
|
||||
TEST_TAGS: sqlite sqlite_unlock_notify
|
||||
USE_REPO_TEST_DIR: 1
|
||||
security-check:
|
||||
if: vars.ROLE == 'forgejo-coding' || vars.ROLE == 'forgejo-testing'
|
||||
runs-on: docker
|
||||
needs:
|
||||
- test-sqlite
|
||||
- test-pgsql
|
||||
- test-mysql
|
||||
- test-remote-cacher
|
||||
- test-unit
|
||||
container:
|
||||
image: 'data.forgejo.org/oci/node:20-bookworm'
|
||||
options: --tmpfs /tmp:exec,noatime
|
||||
|
|
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -72,6 +72,7 @@ cpu.out
|
|||
/tests/e2e/reports
|
||||
/tests/e2e/test-artifacts
|
||||
/tests/e2e/test-snapshots
|
||||
/tests/e2e/.auth
|
||||
/tests/*.ini
|
||||
/tests/**/*.git/**/*.sample
|
||||
/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
|
||||
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
|
||||
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
|
||||
LABEL maintainer="contact@forgejo.org" \
|
||||
org.opencontainers.image.authors="Forgejo" \
|
||||
|
@ -78,6 +78,7 @@ RUN apk --no-cache add \
|
|||
sqlite \
|
||||
su-exec \
|
||||
gnupg \
|
||||
git-annex \
|
||||
&& rm -rf /var/cache/apk/*
|
||||
|
||||
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
|
||||
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
|
||||
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" \
|
||||
org.opencontainers.image.authors="Forgejo" \
|
||||
org.opencontainers.image.url="https://forgejo.org" \
|
||||
|
@ -71,6 +71,7 @@ RUN apk --no-cache add \
|
|||
git \
|
||||
curl \
|
||||
gnupg \
|
||||
git-annex \
|
||||
&& rm -rf /var/cache/apk/*
|
||||
|
||||
RUN addgroup \
|
||||
|
|
4
Makefile
4
Makefile
|
@ -8,7 +8,7 @@ self := $(location)
|
|||
@tmpdir=`mktemp --tmpdir -d` ; \
|
||||
echo Using temporary directory $$tmpdir for test repositories ; \
|
||||
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
|
||||
|
||||
|
@ -104,7 +104,7 @@ else
|
|||
FORGEJO_VERSION_API ?= $(GITEA_VERSION)+${GITEA_COMPATIBILITY}
|
||||
else
|
||||
# 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
|
||||
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",
|
||||
"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",
|
||||
"path": "github.com/42wim/sshsig/LICENSE",
|
||||
|
@ -292,7 +297,7 @@
|
|||
{
|
||||
"name": "github.com/cyphar/filepath-securejoin",
|
||||
"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",
|
||||
|
|
|
@ -59,9 +59,9 @@ func initRemoveTags() {
|
|||
oldnew := []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",
|
||||
"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",
|
||||
"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")
|
||||
}
|
||||
|
|
76
cmd/serv.go
76
cmd/serv.go
|
@ -38,6 +38,7 @@ import (
|
|||
|
||||
const (
|
||||
lfsAuthenticateVerb = "git-lfs-authenticate"
|
||||
gitAnnexShellVerb = "git-annex-shell"
|
||||
)
|
||||
|
||||
// CmdServ represents the available serv sub-command.
|
||||
|
@ -79,6 +80,7 @@ var (
|
|||
"git-upload-archive": perm.AccessModeRead,
|
||||
"git-receive-pack": perm.AccessModeWrite,
|
||||
lfsAuthenticateVerb: perm.AccessModeNone,
|
||||
gitAnnexShellVerb: perm.AccessModeNone, // annex permissions are enforced by GIT_ANNEX_SHELL_READONLY, rather than the Gitea API
|
||||
}
|
||||
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)
|
||||
if len(rr) != 2 {
|
||||
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.
|
||||
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) {
|
||||
return fail(ctx, "Invalid repo name", "Invalid repo name: %s", reponame)
|
||||
}
|
||||
|
@ -303,21 +339,45 @@ func runServ(c *cli.Context) error {
|
|||
return nil
|
||||
}
|
||||
|
||||
var gitcmd *exec.Cmd
|
||||
gitBinPath := filepath.Dir(git.GitExecutable) // e.g. /usr/bin
|
||||
gitBinVerb := filepath.Join(gitBinPath, verb) // e.g. /usr/bin/git-upload-pack
|
||||
if _, err := os.Stat(gitBinVerb); err != nil {
|
||||
gitBinVerb, err := exec.LookPath(verb)
|
||||
if err != nil {
|
||||
// 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: 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)
|
||||
if len(verbFields) == 2 {
|
||||
// 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)
|
||||
gitcmd = exec.CommandContext(ctx, gitBinVerb, repoPath)
|
||||
|
||||
// by default, use the verb (it has been checked above by allowedCommands)
|
||||
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)
|
||||
|
|
11
cmd/web.go
11
cmd/web.go
|
@ -9,6 +9,7 @@ import (
|
|||
"net"
|
||||
"net/http"
|
||||
"os"
|
||||
"os/exec"
|
||||
"path/filepath"
|
||||
"strconv"
|
||||
"strings"
|
||||
|
@ -247,6 +248,12 @@ func runWeb(ctx *cli.Context) error {
|
|||
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 err := serveInstall(ctx); err != nil {
|
||||
return err
|
||||
|
@ -311,6 +318,10 @@ func listen(m http.Handler, handleRedirector bool) error {
|
|||
log.Info("LFS server enabled")
|
||||
}
|
||||
|
||||
if setting.Annex.Enabled {
|
||||
log.Info("git-annex enabled")
|
||||
}
|
||||
|
||||
var err error
|
||||
switch setting.Protocol {
|
||||
case setting.HTTP:
|
||||
|
|
|
@ -2678,6 +2678,17 @@ LEVEL = Info
|
|||
;; Limit the number of concurrent upload/download operations within a batch
|
||||
;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
|
||||
|
|
22
go.mod
22
go.mod
|
@ -2,10 +2,10 @@ module code.gitea.io/gitea
|
|||
|
||||
go 1.23
|
||||
|
||||
toolchain go1.23.4
|
||||
toolchain go1.23.5
|
||||
|
||||
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/reply v1.0.2
|
||||
code.forgejo.org/go-chi/binding v1.0.0
|
||||
|
@ -19,10 +19,10 @@ require (
|
|||
gitea.com/lunny/levelqueue v0.4.2-0.20230414023320-3c0159fe0fe4
|
||||
github.com/42wim/sshsig v0.0.0-20211121163825-841cf5bbc121
|
||||
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/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/blevesearch/bleve/v2 v2.4.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-enry/go-enry/v2 v2.9.1
|
||||
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-openapi/spec v0.20.14
|
||||
github.com/go-sql-driver/mysql v1.8.1
|
||||
|
@ -89,7 +89,7 @@ require (
|
|||
github.com/robfig/cron/v3 v3.0.1
|
||||
github.com/santhosh-tekuri/jsonschema/v6 v6.0.1
|
||||
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/stretchr/testify v1.10.0
|
||||
github.com/syndtr/goleveldb v1.0.0
|
||||
|
@ -131,6 +131,7 @@ require (
|
|||
dario.cat/mergo v1.0.0 // indirect
|
||||
filippo.io/edwards25519 v1.1.0 // 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/GoogleCloudPlatform/grpc-gcp-go/grpcgcp v1.5.0 // 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/cncf/xds/go v0.0.0-20240905190251-b4127c9b8d78 // 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/davidmz/go-pageant v1.0.2 // 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/emirpasic/gods v1.18.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-enry/go-oniguruma v1.2.1 // 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-logr/logr v1.4.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/shurcooL/httpfs v0.0.0-20230704072500-f1e31cf0ba5c // 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/x448/float16 v0.8.4 // indirect
|
||||
github.com/xanzy/ssh-agent v0.3.3 // indirect
|
||||
github.com/xi2/xz v0.0.0-20171230120015-48954b6210f8 // indirect
|
||||
github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1 // 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.opencensus.io v0.24.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.9.0/go.mod h1:ZGkj1aFIOd9c8Gerkjjq7OW7I5+l6cSvT3ujaO/WwSA=
|
||||
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.7.0/go.mod h1:oNhOeqD4DZYjVcNjQXIOdDX9b/1tqxi9ITLS8H9/Csw=
|
||||
code.forgejo.org/f3/gof3/v3 v3.10.2 h1:EOlv9d8GR7l0BmvZF101O3LUuabb4g5Hw5fKYPiPZlI=
|
||||
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/go.mod h1:PphB88CPbx601QrWPMZATeorACeVmQlyv3u+uUMbSaM=
|
||||
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/xorm/sqlfiddle v0.0.0-20180821085327-62ce714f951a h1:lSA0F4e9A2NcQSqGqTOXqu2aRi/XEQxDCBwM8yJtE6s=
|
||||
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/go.mod h1:Ock8XgA7pvULhIaHGAk/cDnRfNrF9Jey81nPcc403iU=
|
||||
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/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU=
|
||||
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.0.0/go.mod h1:EjAoLdwvbIOoOQr3ihjnSoLZRtE8azugULFRteWMNc0=
|
||||
github.com/ProtonMail/go-crypto v1.1.3 h1:nRBOetoydLeUb4nHajyO2bKqMLfWQ/ZPwkXqXxPxCFk=
|
||||
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/go.mod h1:TjZZl68Q3eGHNBA8CWaxAN7rOU1EbDz3CWuolcO5Yu4=
|
||||
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/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/alecthomas/assert/v2 v2.7.0 h1:QtqSACNS3tF7oasA8CU6A6sXZSBDqnm7RfpLl9bZqbE=
|
||||
github.com/alecthomas/assert/v2 v2.7.0/go.mod h1:Bze95FyfUr7x34QZrjL+XP+0qgp/zg8yS+TtBj1WA3k=
|
||||
github.com/alecthomas/assert/v2 v2.11.0 h1:2Q9r3ki8+JYXvGsDyBXwH3LcJ+WK5D0gc5E8vS6K3D0=
|
||||
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.14.0 h1:R3+wzpnUArGcQz7fCETQBzO5n9IMNi13iIs46aU4V9E=
|
||||
github.com/alecthomas/chroma/v2 v2.14.0/go.mod h1:QolEbTfmUHIMVpBqxeDnNBj2uoeI4EbYP4i6n68SG4I=
|
||||
github.com/alecthomas/chroma/v2 v2.15.0 h1:LxXTQHFoYrstG2nnV9y2X5O94sOBzf0CIUpSTbpxvMc=
|
||||
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.4.0 h1:GhI2A8MACjfegCPVq9f1FLvIBS+DrQ2KQBFZP1iFzXc=
|
||||
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/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/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/go.mod h1:swUXjQ1T9ZtMv95qj7/InJvWLXURU85r+CfG0T+ZbDE=
|
||||
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 v1.0.0/go.mod h1:2JlltgoNkt4TW/z9V/IzDdFaMTM2JPIi26O1pF38GC8=
|
||||
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/go.mod h1:PDRU+oXvdD7KCtgKxW95M5Z8BpSCJXQORiZFnBQS5QU=
|
||||
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/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
|
||||
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.2.4/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4=
|
||||
github.com/cyphar/filepath-securejoin v0.3.6 h1:4d9N5ykBnSp5Xn2JkhocYDkOpURL/18CYMpo6xB9uWM=
|
||||
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.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
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.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.11.0 h1:G/nrcoOa7ZXlpoa/91N3X7mM3r8eIlMBBJZvsz/mxKI=
|
||||
github.com/dlclark/regexp2 v1.11.0/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8=
|
||||
github.com/dlclark/regexp2 v1.11.4 h1:rPYF9/LECdNymJufQKmri9gV604RvvABwgOA8un7yAo=
|
||||
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/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=
|
||||
|
@ -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/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/elazarl/goproxy v0.0.0-20230808193330-2592e75ae04a h1:mATvB/9r/3gvcejNsXKSkQ6lcIaNec2nyfOdlTBR2lU=
|
||||
github.com/elazarl/goproxy v0.0.0-20230808193330-2592e75ae04a/go.mod h1:Ro8st/ElPeALwNFlcTpWmkr6IoMFfkjXAvTHpevnDsM=
|
||||
github.com/elazarl/goproxy v1.2.3 h1:xwIyKHbaP5yfT6O9KIeYJR5549MXRQkoQMRXGztz8YQ=
|
||||
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/go.mod h1:Qlx1FSx2FTxjnjWpIlVNEuX+ylerZQNFE5NsmKFSejY=
|
||||
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-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/go-billy/v5 v5.5.0 h1:yEY4yhzCDuMGSv83oGxiBotRzhwhNr8VZyphhiu+mTU=
|
||||
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 h1:u+dcrgaguSSkbjzHwelEjc0Yj300NUevrrPphk/SoRA=
|
||||
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/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.11.0/go.mod h1:6GFcX2P3NM7FPBfpePbpLd21XxsgdAt+lKqXmCUiUCY=
|
||||
github.com/go-git/go-git/v5 v5.13.1 h1:DAQ9APonnlvSWpvolXWIuV6Q6zXy2wHbN4cVlNR5Q+M=
|
||||
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/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=
|
||||
|
@ -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.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.27.10 h1:naR28SdDFlqrG6kScpT8VWpu1xWY5nJRCF3XaYyBjhI=
|
||||
github.com/onsi/gomega v1.27.10/go.mod h1:RsS8tutOdbdgzbPtzzATp12yT7kM5I5aElG3evPbQ0M=
|
||||
github.com/onsi/gomega v1.34.1 h1:EUMJIKUjM8sKjYbtxQI9A4z2o+rruxnzNvpknOXie6k=
|
||||
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/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM=
|
||||
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/go.mod h1:BqMnlJP91P8d+4ibuonYZw9mfnzI9HfxselHZr5aAcs=
|
||||
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.1/go.mod h1:aMJSSKb2lpPvRNec0+w3fl7LP9IOFzdc9Pa4NFbPK1I=
|
||||
github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 h1:n661drycOFuPLCN3Uc8sB6B/s6Z4t2xvBgU1htSHuq8=
|
||||
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/go.mod h1:gawqmDU56v4yIKSwfBSFip1HdCCXN8/+DMd9qYNcwME=
|
||||
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.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ=
|
||||
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.2.1/go.mod h1:xYbVRSPxqBZFrdmDyMmsOs+uX1UZC3nTN3ThzgDxUwo=
|
||||
github.com/skeema/knownhosts v1.3.0 h1:AM+y0rI04VksttfwjkSTNQorvGqmwATnvnAHpSgc0LY=
|
||||
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/spf13/afero v1.3.3/go.mod h1:5KUK8ByomD5Ti5Artl0RtHeI5pTF7MIDuXL3yY520V4=
|
||||
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/go.mod h1:09F0S9iiKrwn9rlI5yjLkmrug154/YRW6KnnXVDM/l4=
|
||||
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/go.mod h1:zaO32+Ti0PK1ivdPtgMESzuzL2VPoIG1PCQNvOdo/dE=
|
||||
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-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.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.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4=
|
||||
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-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-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-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js=
|
||||
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.
|
||||
func DeleteRunner(ctx context.Context, id int64) error {
|
||||
runner, err := GetRunnerByID(ctx, id)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
func DeleteRunner(ctx context.Context, r *ActionRunner) error {
|
||||
// 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
|
||||
// identifier. This will prevent the deleted record's identifier from colliding with any
|
||||
// new record.
|
||||
b := make([]byte, 8)
|
||||
binary.LittleEndian.PutUint64(b, uint64(id))
|
||||
runner.UUID = fmt.Sprintf("ffffffff-ffff-ffff-%.2x%.2x-%.2x%.2x%.2x%.2x%.2x%.2x",
|
||||
binary.LittleEndian.PutUint64(b, uint64(r.ID))
|
||||
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])
|
||||
|
||||
err = UpdateRunner(ctx, runner, "UUID")
|
||||
err := UpdateRunner(ctx, r, "UUID")
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
_, err = db.DeleteByID[ActionRunner](ctx, id)
|
||||
_, err = db.DeleteByID[ActionRunner](ctx, r.ID)
|
||||
return err
|
||||
}
|
||||
|
||||
|
|
|
@ -34,7 +34,7 @@ func TestDeleteRunner(t *testing.T) {
|
|||
require.NoError(t, unittest.PrepareTestDatabase())
|
||||
before := unittest.AssertExistsAndLoadBean(t, &ActionRunner{ID: recordID})
|
||||
|
||||
err := DeleteRunner(db.DefaultContext, recordID)
|
||||
err := DeleteRunner(db.DefaultContext, &ActionRunner{ID: recordID})
|
||||
require.NoError(t, err)
|
||||
|
||||
var after ActionRunner
|
||||
|
|
|
@ -86,7 +86,7 @@ func FindVariables(ctx context.Context, opts FindVariablesOpts) ([]*ActionVariab
|
|||
}
|
||||
|
||||
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{
|
||||
Name: variable.Name,
|
||||
Data: variable.Data,
|
||||
|
@ -94,11 +94,9 @@ func UpdateVariable(ctx context.Context, variable *ActionVariable) (bool, error)
|
|||
return count != 0, err
|
||||
}
|
||||
|
||||
func DeleteVariable(ctx context.Context, id int64) error {
|
||||
if _, err := db.DeleteByID[ActionVariable](ctx, id); err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
func DeleteVariable(ctx context.Context, variableID, ownerID, repoID int64) (bool, error) {
|
||||
count, err := db.GetEngine(ctx).Table("action_variable").Where("id = ? AND owner_id = ? AND repo_id = ?", variableID, ownerID, repoID).Delete()
|
||||
return count != 0, err
|
||||
}
|
||||
|
||||
func GetVariablesOfRun(ctx context.Context, run *ActionRun) (map[string]string, error) {
|
||||
|
|
|
@ -52,10 +52,10 @@ type WebAuthnCredential struct {
|
|||
AAGUID []byte
|
||||
SignCount uint32 `xorm:"BIGINT"`
|
||||
CloneWarning bool
|
||||
BackupEligible bool `XORM:"NOT NULL DEFAULT false"`
|
||||
BackupState bool `XORM:"NOT NULL DEFAULT false"`
|
||||
BackupEligible 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.
|
||||
Legacy bool `XORM:"NOT NULL DEFAULT true"`
|
||||
Legacy bool `xorm:"NOT NULL DEFAULT true"`
|
||||
CreatedUnix timeutil.TimeStamp `xorm:"INDEX created"`
|
||||
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_closed_issues: 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
|
||||
team_id: 1
|
||||
org_id: 3
|
||||
type: 1
|
||||
access_mode: 4
|
||||
|
||||
-
|
||||
id: 2
|
||||
team_id: 1
|
||||
org_id: 3
|
||||
type: 2
|
||||
access_mode: 4
|
||||
|
||||
-
|
||||
id: 3
|
||||
team_id: 1
|
||||
org_id: 3
|
||||
type: 3
|
||||
access_mode: 4
|
||||
|
||||
-
|
||||
id: 4
|
||||
team_id: 1
|
||||
org_id: 3
|
||||
type: 4
|
||||
access_mode: 4
|
||||
|
||||
-
|
||||
id: 5
|
||||
team_id: 1
|
||||
org_id: 3
|
||||
type: 5
|
||||
access_mode: 4
|
||||
|
||||
-
|
||||
id: 6
|
||||
team_id: 1
|
||||
org_id: 3
|
||||
type: 6
|
||||
access_mode: 4
|
||||
|
||||
-
|
||||
id: 7
|
||||
team_id: 1
|
||||
org_id: 3
|
||||
type: 7
|
||||
access_mode: 4
|
||||
|
||||
|
|
|
@ -416,20 +416,6 @@ func (issue *Issue) SummaryCardURL() string {
|
|||
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.
|
||||
func (issue *Issue) Link() string {
|
||||
var path string
|
||||
|
|
|
@ -7,8 +7,10 @@ import (
|
|||
"context"
|
||||
|
||||
"code.gitea.io/gitea/models/db"
|
||||
org_model "code.gitea.io/gitea/models/organization"
|
||||
project_model "code.gitea.io/gitea/models/project"
|
||||
user_model "code.gitea.io/gitea/models/user"
|
||||
"code.gitea.io/gitea/modules/optional"
|
||||
"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
|
||||
func LoadIssuesFromColumn(ctx context.Context, b *project_model.Column) (IssueList, error) {
|
||||
issueList, err := Issues(ctx, &IssuesOptions{
|
||||
func LoadIssuesFromColumn(ctx context.Context, b *project_model.Column, doer *user_model.User, org *org_model.Organization, isClosed optional.Option[bool]) (IssueList, error) {
|
||||
issueOpts := &IssuesOptions{
|
||||
ProjectColumnID: b.ID,
|
||||
ProjectID: b.ProjectID,
|
||||
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 {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if b.Default {
|
||||
issues, err := Issues(ctx, &IssuesOptions{
|
||||
ProjectColumnID: db.NoConditionID,
|
||||
ProjectID: b.ProjectID,
|
||||
SortType: "project-column-sorting",
|
||||
})
|
||||
issueOpts.ProjectColumnID = db.NoConditionID
|
||||
|
||||
issues, err := Issues(ctx, issueOpts)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
@ -78,10 +87,10 @@ func LoadIssuesFromColumn(ctx context.Context, b *project_model.Column) (IssueLi
|
|||
}
|
||||
|
||||
// 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))
|
||||
for i := range bs {
|
||||
il, err := LoadIssuesFromColumn(ctx, bs[i])
|
||||
il, err := LoadIssuesFromColumn(ctx, bs[i], doer, org, isClosed)
|
||||
if err != nil {
|
||||
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)
|
||||
}
|
||||
|
||||
// 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
|
||||
func BuildLabelNamesIssueIDsCondition(labelNames []string) *builder.Builder {
|
||||
return builder.Select("issue_label.issue_id").
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
// Copyright 2024 The Forgejo Authors.
|
||||
// SPDX-License-Identifier: MIT
|
||||
// Copyright 2025 The Forgejo Authors.
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
package v1_23 //nolint
|
||||
|
||||
|
@ -7,26 +7,53 @@ import (
|
|||
"code.gitea.io/gitea/models/migrations/base"
|
||||
|
||||
"xorm.io/xorm"
|
||||
"xorm.io/xorm/schemas"
|
||||
)
|
||||
|
||||
func GiteaLastDrop(x *xorm.Engine) error {
|
||||
tables, err := x.DBMetas()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
sess := x.NewSession()
|
||||
defer sess.Close()
|
||||
|
||||
if err := base.DropTableColumns(sess, "badge", "slug"); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := base.DropTableColumns(sess, "oauth2_application", "skip_secondary_authorization"); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := base.DropTableColumns(sess, "repository", "default_wiki_branch"); err != nil {
|
||||
return err
|
||||
}
|
||||
// the migration v297.go that adds everyone_access_mode exists in Gitea >= v1.22 and the column must be dropped
|
||||
// but it does not exist in Forgejo and a failure to drop the column can be ignored
|
||||
base.DropTableColumns(sess, "repo_unit", "everyone_access_mode")
|
||||
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 {
|
||||
return err
|
||||
for _, drop := range []struct {
|
||||
table string
|
||||
column string
|
||||
}{
|
||||
{"badge", "slug"},
|
||||
{"oauth2_application", "skip_secondary_authorization"},
|
||||
{"repository", "default_wiki_branch"},
|
||||
{"repo_unit", "everyone_access_mode"},
|
||||
{"protected_branch", "can_force_push"},
|
||||
{"protected_branch", "enable_force_push_allowlist"},
|
||||
{"protected_branch", "force_push_allowlist_user_i_ds"},
|
||||
{"protected_branch", "force_push_allowlist_team_i_ds"},
|
||||
{"protected_branch", "force_push_allowlist_deploy_keys"},
|
||||
} {
|
||||
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()
|
||||
|
|
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
|
||||
}
|
||||
|
||||
// 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) {
|
||||
issues := make([]*ProjectIssue, 0, 5)
|
||||
if err := db.GetEngine(ctx).Where("project_id=?", c.ProjectID).
|
||||
|
|
|
@ -34,20 +34,6 @@ func deleteProjectIssuesByProjectID(ctx context.Context, projectID int64) error
|
|||
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
|
||||
func (p *Project) NumClosedIssues(ctx context.Context) int {
|
||||
c, err := db.GetEngine(ctx).Table("project_issue").
|
||||
|
|
|
@ -97,13 +97,11 @@ func init() {
|
|||
|
||||
// LoadAttributes load repo and publisher attributes for a release
|
||||
func (r *Release) LoadAttributes(ctx context.Context) error {
|
||||
var err error
|
||||
if r.Repo == nil {
|
||||
r.Repo, err = GetRepositoryByID(ctx, r.RepoID)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
err := r.LoadRepo(ctx)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if r.Publisher == nil {
|
||||
r.Publisher, err = user_model.GetUserByID(ctx, r.PublisherID)
|
||||
if err != nil {
|
||||
|
@ -123,6 +121,18 @@ func (r *Release) LoadAttributes(ctx context.Context) error {
|
|||
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
|
||||
func (r *Release) LoadArchiveDownloadCount(ctx context.Context) error {
|
||||
var err error
|
||||
|
@ -130,6 +140,25 @@ func (r *Release) LoadArchiveDownloadCount(ctx context.Context) error {
|
|||
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
|
||||
func (r *Release) APIURL() string {
|
||||
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)
|
||||
}
|
||||
|
||||
// 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.
|
||||
func IsReleaseExist(ctx context.Context, repoID int64, tagName string) (bool, error) {
|
||||
if len(tagName) == 0 {
|
||||
|
|
|
@ -9,6 +9,7 @@ import (
|
|||
"code.gitea.io/gitea/models/db"
|
||||
"code.gitea.io/gitea/models/unittest"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
|
@ -25,3 +26,26 @@ func TestMigrate_InsertReleases(t *testing.T) {
|
|||
err := InsertReleases(db.DefaultContext, r)
|
||||
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)
|
||||
}
|
||||
|
||||
// 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
|
||||
// note: won't check whether it's an right id
|
||||
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
|
||||
func GetIssuePostersWithSearch(ctx context.Context, repo *Repository, isPull bool, search string, isShowFullName bool) ([]*user_model.User, error) {
|
||||
users := make([]*user_model.User, 0, 30)
|
||||
var prefixCond builder.Cond = builder.Like{"name", search + "%"}
|
||||
prefixCond := db.BuildCaseInsensitiveLike("name", search+"%")
|
||||
if isShowFullName {
|
||||
prefixCond = prefixCond.Or(builder.Like{"full_name", "%" + search + "%"})
|
||||
prefixCond = db.BuildCaseInsensitiveLike("full_name", "%"+search+"%")
|
||||
}
|
||||
|
||||
cond := builder.In("`user`.id",
|
||||
|
|
|
@ -126,17 +126,15 @@ func (opts *SearchUserOptions) toSearchQueryBase(ctx context.Context) *xorm.Sess
|
|||
return e.Where(cond)
|
||||
}
|
||||
|
||||
// 2fa filter uses LEFT JOIN to check whether a user has a 2fa record
|
||||
// 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)
|
||||
// Check if the user has two factor enabled, which is TOTP or Webauthn.
|
||||
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 {
|
||||
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").
|
||||
Join("LEFT OUTER", "webauthn_credential", "webauthn_credential.user_id = `user`.id").
|
||||
Where(cond)
|
||||
}
|
||||
|
||||
|
|
|
@ -222,7 +222,7 @@ func TestSearchUsers(t *testing.T) {
|
|||
[]int64{1041, 37})
|
||||
|
||||
testUserSuccess(&user_model.SearchUserOptions{ListOptions: db.ListOptions{Page: 1}, IsTwoFactorEnabled: optional.Some(true)},
|
||||
[]int64{24})
|
||||
[]int64{24, 32})
|
||||
}
|
||||
|
||||
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"
|
||||
"unicode/utf8"
|
||||
|
||||
"code.gitea.io/gitea/modules/annex"
|
||||
"code.gitea.io/gitea/modules/git"
|
||||
"code.gitea.io/gitea/modules/log"
|
||||
|
||||
|
@ -101,6 +102,12 @@ func Int64sToStrings(ints []int64) []string {
|
|||
|
||||
// EntryIcon returns the octicon class for displaying files/directories
|
||||
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 {
|
||||
case entry.IsLink():
|
||||
te, _, err := entry.FollowLink()
|
||||
|
|
|
@ -5,6 +5,7 @@ package card
|
|||
|
||||
import (
|
||||
"bytes"
|
||||
"fmt"
|
||||
"image"
|
||||
"image/color"
|
||||
"io"
|
||||
|
@ -35,12 +36,19 @@ type Card struct {
|
|||
Img *image.RGBA
|
||||
Font *truetype.Font
|
||||
Margin int
|
||||
Width int
|
||||
Height int
|
||||
}
|
||||
|
||||
var fontCache = sync.OnceValues(func() (*truetype.Font, error) {
|
||||
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
|
||||
func NewCard(width, height int) (*Card, error) {
|
||||
img := image.NewRGBA(image.Rect(0, 0, width, height))
|
||||
|
@ -55,6 +63,8 @@ func NewCard(width, height int) (*Card, error) {
|
|||
Img: img,
|
||||
Font: font,
|
||||
Margin: 0,
|
||||
Width: width,
|
||||
Height: height,
|
||||
}, nil
|
||||
}
|
||||
|
||||
|
@ -67,14 +77,14 @@ func (c *Card) Split(vertical bool, percentage int) (*Card, *Card) {
|
|||
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)
|
||||
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},
|
||||
&Card{Img: subright, Font: c.Font}
|
||||
return &Card{Img: subleft, Font: c.Font, Width: subleft.Bounds().Dx(), Height: subleft.Bounds().Dy()},
|
||||
&Card{Img: subright, Font: c.Font, Width: subright.Bounds().Dx(), Height: subright.Bounds().Dy()}
|
||||
}
|
||||
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)
|
||||
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},
|
||||
&Card{Img: subbottom, Font: c.Font}
|
||||
return &Card{Img: subtop, Font: c.Font, Width: subtop.Bounds().Dx(), Height: subtop.Bounds().Dy()},
|
||||
&Card{Img: subbottom, Font: c.Font, Width: subbottom.Bounds().Dx(), Height: subbottom.Bounds().Dy()}
|
||||
}
|
||||
|
||||
// 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)
|
||||
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
|
||||
}
|
||||
defer resp.Body.Close()
|
||||
|
@ -321,3 +336,8 @@ func (c *Card) DrawExternalImage(url string) {
|
|||
}
|
||||
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
|
||||
}
|
||||
|
||||
func (b *Blob) Repo() *Repository {
|
||||
return b.repo
|
||||
}
|
||||
|
||||
// Name returns name of the tree entry this blob object was created from (or empty string)
|
||||
func (b *Blob) Name() string {
|
||||
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
|
||||
// It also re-enables git-credential(1), which is used to test git-annex's HTTP support
|
||||
func AllowLFSFiltersArgs() TrustedCmdArgs {
|
||||
// Now here we should explicitly allow lfs filters to run
|
||||
filteredLFSGlobalArgs := make(TrustedCmdArgs, len(globalCommandArgs))
|
||||
j := 0
|
||||
for _, arg := range globalCommandArgs {
|
||||
if strings.Contains(string(arg), "lfs") {
|
||||
if strings.Contains(string(arg), "lfs") || strings.Contains(string(arg), "credential") {
|
||||
j--
|
||||
} else {
|
||||
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"
|
||||
"strings"
|
||||
|
||||
"code.gitea.io/gitea/modules/annex"
|
||||
"code.gitea.io/gitea/modules/graceful"
|
||||
"code.gitea.io/gitea/modules/log"
|
||||
"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)
|
||||
args = commands[1:]
|
||||
)
|
||||
|
||||
if p.IsInputFile {
|
||||
isAnnexed, _ := annex.IsAnnexed(ctx.Blob)
|
||||
// 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
|
||||
f, err := os.CreateTemp("", "gitea_input")
|
||||
if err != nil {
|
||||
|
@ -130,6 +145,12 @@ func (p *Renderer) Render(ctx *markup.RenderContext, input io.Reader, output io.
|
|||
os.Environ(),
|
||||
"GITEA_PREFIX_SRC="+ctx.Links.SrcLink(),
|
||||
"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 {
|
||||
cmd.Stdin = input
|
||||
|
|
|
@ -8,6 +8,7 @@ import (
|
|||
"bytes"
|
||||
"html/template"
|
||||
"io"
|
||||
"net/url"
|
||||
"regexp"
|
||||
"slices"
|
||||
"strconv"
|
||||
|
@ -77,6 +78,16 @@ func newFilePreview(ctx *RenderContext, node *html.Node, locale translation.Loca
|
|||
|
||||
commitSha := node.Data[m[4]:m[5]]
|
||||
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]]
|
||||
|
||||
preview.start = m[0]
|
||||
|
@ -113,7 +124,7 @@ func newFilePreview(ctx *RenderContext, node *html.Node, locale translation.Loca
|
|||
titleBuffer.WriteString(" – ")
|
||||
}
|
||||
|
||||
err = html.Render(titleBuffer, createLink(urlFull, filePath, "muted"))
|
||||
err = html.Render(titleBuffer, createLink(urlFullSource, filePath, "muted"))
|
||||
if err != nil {
|
||||
log.Error("failed to render filepathLink: %v", err)
|
||||
}
|
||||
|
|
|
@ -1026,4 +1026,138 @@ func TestRender_FilePreview(t *testing.T) {
|
|||
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
|
||||
`, `<div class="src src-go">
|
||||
<pre><code class="chroma language-go"><span class="c1">// HelloWorld prints "Hello World"
|
||||
</span><span class="c1"></span><span class="kd">func</span> <span class="nf">HelloWorld</span><span class="p">()</span> <span class="p">{</span>
|
||||
<pre><code class="chroma language-go"><span class="c1">// HelloWorld prints "Hello World"</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="p">}</span></code></pre>
|
||||
</div>`)
|
||||
|
|
|
@ -67,14 +67,18 @@ type Header struct {
|
|||
|
||||
// RenderContext represents a render context
|
||||
type RenderContext struct {
|
||||
Ctx context.Context
|
||||
RelativePath string // relative path from tree root of the branch
|
||||
Type string
|
||||
IsWiki bool
|
||||
Links Links
|
||||
Metas map[string]string
|
||||
DefaultLink string
|
||||
GitRepo *git.Repository
|
||||
Ctx context.Context
|
||||
RelativePath string // relative path from tree root of the branch
|
||||
Type string
|
||||
IsWiki bool
|
||||
Links Links
|
||||
Metas map[string]string
|
||||
DefaultLink string
|
||||
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
|
||||
cancelFn func()
|
||||
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
|
||||
UserEmail string
|
||||
UserID int64
|
||||
UserMode perm.AccessMode
|
||||
OwnerName string
|
||||
RepoName string
|
||||
RepoID int64
|
||||
|
|
|
@ -32,7 +32,7 @@ var (
|
|||
// issueNumericPattern matches string that references to a numeric issue, e.g. #1287
|
||||
issueNumericPattern = regexp.MustCompile(`(?:\s|^|\(|\[|\'|\")([#!][0-9]+)(?:\s|$|\)|\]|\'|\"|[:;,.?!]\s|[:;,.?!]$)`)
|
||||
// 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
|
||||
// e.g. org/repo#12345
|
||||
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, unknown PR",
|
||||
}
|
||||
falseTestCases := []string{
|
||||
"RC-08",
|
||||
|
|
|
@ -47,7 +47,7 @@ func AesDecrypt(key, text []byte) ([]byte, error) {
|
|||
cfb.XORKeyStream(text, text)
|
||||
data, err := base64.StdEncoding.DecodeString(string(text))
|
||||
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
|
||||
}
|
||||
|
|
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
|
||||
}
|
||||
|
||||
// LoadServiceSetting loads the service settings
|
||||
func LoadServiceSetting() {
|
||||
loadServiceFrom(CfgProvider)
|
||||
}
|
||||
|
||||
func loadServiceFrom(rootCfg ConfigProvider) {
|
||||
sec := rootCfg.Section("service")
|
||||
Service.ActiveCodeLives = sec.Key("ACTIVE_CODE_LIVE_MINUTES").MustInt(180)
|
||||
|
|
|
@ -153,6 +153,7 @@ func loadCommonSettingsFrom(cfg ConfigProvider) error {
|
|||
loadCamoFrom(cfg)
|
||||
loadI18nFrom(cfg)
|
||||
loadGitFrom(cfg)
|
||||
loadAnnexFrom(cfg)
|
||||
loadMirrorFrom(cfg)
|
||||
loadMarkupFrom(cfg)
|
||||
loadQuotaFrom(cfg)
|
||||
|
|
|
@ -103,6 +103,10 @@ func NewFuncMap() template.FuncMap {
|
|||
"AppVer": func() string {
|
||||
return setting.AppVer
|
||||
},
|
||||
"AppVerNoMetadata": func() string {
|
||||
version, _, _ := strings.Cut(setting.AppVer, "+")
|
||||
return version
|
||||
},
|
||||
"AppDomain": func() string { // documented in mail-templates.md
|
||||
return setting.Domain
|
||||
},
|
||||
|
|
|
@ -4,7 +4,9 @@
|
|||
package util
|
||||
|
||||
import (
|
||||
"io/fs"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"runtime"
|
||||
"syscall"
|
||||
"time"
|
||||
|
@ -41,10 +43,48 @@ func Remove(name string) error {
|
|||
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 {
|
||||
var err error
|
||||
|
||||
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)
|
||||
if err == nil {
|
||||
break
|
||||
|
|
|
@ -111,6 +111,7 @@ new_migrate.link = Нова миграция
|
|||
new_org.link = Нова организация
|
||||
copy_generic = Копиране в клипборда
|
||||
copy_error = Неуспешно копиране
|
||||
copy_path = Копиране на пътя
|
||||
|
||||
[settings]
|
||||
ui = Тема
|
||||
|
@ -159,7 +160,7 @@ comment_type_group_milestone = Етап
|
|||
manage_emails = Управление на адресите на ел. поща
|
||||
permission_read = Четене
|
||||
update_password = Обновяване на паролата
|
||||
biography_placeholder = Разкажете ни малко за себе си! (Можете да използвате Markdown)
|
||||
biography_placeholder = Разкажете на другите малко за себе си! (Можете да използвате Маркдаун)
|
||||
orgs = Организации
|
||||
continue = Продължаване
|
||||
blocked_users = Блокирани потребители
|
||||
|
@ -224,7 +225,7 @@ key_signature_gpg_placeholder = Започва с „-----BEGIN PGP SIGNATURE---
|
|||
key_signature_ssh_placeholder = Започва с „-----BEGIN SSH SIGNATURE-----“
|
||||
saved_successfully = Настройките бяха запазени успешно.
|
||||
no_activity = Няма скорошна дейност
|
||||
theme_desc = Това ще бъде вашата тема по подразбиране в целия сайт.
|
||||
theme_desc = Тази тема ще се използва за уеб интерфейса, когато сте влезли.
|
||||
keep_activity_private = Скриване на дейността от профилната страница
|
||||
lookup_avatar_by_mail = Търсене на профилна снимка по адреса на ел. поща
|
||||
password_incorrect = Текущата парола е неправилна.
|
||||
|
@ -235,7 +236,7 @@ twofa_disabled = Двуфакторното удостоверяване е из
|
|||
orgs_none = Не сте участник в никакви организации.
|
||||
repos_none = Не притежавате никакви хранилища.
|
||||
blocked_users_none = Няма блокирани потребители.
|
||||
profile_desc = Контролирайте как вашият профил се показва на другите потребители. Вашият основен адрес на ел. поща ще се използва за известия, възстановяване на паролата и уеб базирани Git операции.
|
||||
profile_desc = Вашият профил
|
||||
permission_write = Четене и писане
|
||||
twofa_disable = Изключване на двуфакторното удостоверяване
|
||||
twofa_enroll = Включване на двуфакторно удостоверяване
|
||||
|
@ -252,6 +253,9 @@ gpg_token_code = echo "%s" | gpg -a --default-key %s --detach-sig
|
|||
language.title = Език по подразбиране
|
||||
language.localization_project = Помогнете ни да преведем Forgejo на вашия език! <a href="%s">Научете повече</a>.
|
||||
language.description = Този език ще бъде запазен във вашия акаунт и ще се използва като език по подразбиране, след като влезете.
|
||||
pronouns_custom = Персонализирани
|
||||
visibility.limited_tooltip = Видимо само за влезли потребители
|
||||
pronouns_custom_label = Персонализирани местоимения
|
||||
|
||||
[packages]
|
||||
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 = Публикуван %[1]s от <a href="%[2]s">%[3]s</a>
|
||||
generic.download = Изтеглете пакета от командния ред:
|
||||
container.details.type = Тип образ
|
||||
alpine.repository = За хранилището
|
||||
container.images.title = Образи
|
||||
|
||||
[tool]
|
||||
hours = %d часа
|
||||
|
@ -397,7 +404,7 @@ issues.keyword_search_unavailable = В момента търсенето по к
|
|||
repo_desc_helper = Въведете кратко описание (опционално)
|
||||
mirror_address = Клониране от URL
|
||||
owner_helper = Някои организации може да не се показват в падащото меню поради ограничение за максимален брой хранилища.
|
||||
new_repo_helper = Хранилището съдържа всички файлове на проекта, включително хронологията на ревизиите. Вече хоствате хранилище другаде? <a href="%s">Мигрирайте хранилище.</a>
|
||||
new_repo_helper = Хранилището съдържа всички файлове на проекта, включително хронологията на ревизиите. Вече хоствате хранилище другаде? <a href="%s">Мигрирайте хранилище</a>.
|
||||
repo_name_helper = Добрите имена на хранилища използват кратки, запомнящи се и уникални ключови думи.
|
||||
migrated_from = Мигрирано от <a href="%[1]s">%[2]s</a>
|
||||
visibility_description = Само притежателят или участниците в организацията, ако имат права, ще могат да го видят.
|
||||
|
@ -424,14 +431,14 @@ settings.add_webhook = Добавяне на уеб-кука
|
|||
template.webhooks = Уеб-куки
|
||||
issues.label_templates.info = Все още няма етикети. Създайте етикет с „Нов етикет“ или използвайте предварително зададен набор от етикети:
|
||||
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 = По подразбиране
|
||||
settings.hooks = Уеб-куки
|
||||
issue_labels = Етикети
|
||||
issue_labels_helper = Изберете набор от етикети
|
||||
readme_helper_desc = Това е мястото, където можете да напишете пълно описание на вашия проект.
|
||||
repo_gitignore_helper = Изберете .gitignore шаблони
|
||||
auto_init = Да се инициализира хранилище (Добавя .gitignore, License и README)
|
||||
auto_init = Да се инициализира хранилище
|
||||
template.issue_labels = Етикети за задачите
|
||||
migrate_items_labels = Етикети
|
||||
issues.label_templates.title = Зареждане на предв. зададен набор от етикети
|
||||
|
@ -815,7 +822,7 @@ diff.browse_source = Разглеждане на изходния код
|
|||
file_view_rendered = Преглед на визуализация
|
||||
issues.lock_with_reason = заключи като <strong>%s</strong> и ограничи обсъждането до сътрудници %s
|
||||
milestones.new_subheader = Етапите ви помагат да управлявате задачите и да проследявате напредъка им.
|
||||
release.edit = редактиране
|
||||
release.edit = Редактиране
|
||||
activity.published_release_label = Издание
|
||||
activity.navbar.contributors = Допринесли
|
||||
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.num_conflicting_files_1 = %d конфликтен файл
|
||||
activity.git_stats_commit_n = %d подавания
|
||||
settings.event_issues = Модификация
|
||||
settings.event_issues = Изменение
|
||||
branch.delete_head = Изтриване
|
||||
branch.delete = Изтриване на клона „%s“
|
||||
branch.delete_html = Изтриване на клона
|
||||
|
@ -1113,7 +1120,7 @@ pulls.reject_count_1 = %d поискана промяна
|
|||
issues.review.show_resolved = Показване на решено
|
||||
issues.review.hide_resolved = Скриване на решено
|
||||
issues.review.resolve_conversation = Решаване на обсъждането
|
||||
diff.comment.markdown_info = Поддържа се стилизиране с markdown.
|
||||
diff.comment.markdown_info = Поддържа се стилизиране с Маркдаун.
|
||||
diff.file_suppressed = Разликите не са показани, защото са твърде много
|
||||
pulls.reject_count_n = %d поискани промени
|
||||
settings.pulls.default_allow_edits_from_maintainers = Позволяване на редакции от поддържащите по подразбиране
|
||||
|
@ -1195,6 +1202,95 @@ issues.all_title = Общо
|
|||
issues.new.assign_to_me = Възлагане на мен
|
||||
ext_wiki = Външно уики
|
||||
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]
|
||||
confirm = Потвърждаване
|
||||
|
@ -1218,6 +1314,12 @@ buttons.italic.tooltip = Добавяне на курсив текст
|
|||
buttons.link.tooltip = Добавяне на връзка
|
||||
buttons.disable_monospace_font = Изключване на равноширокия шрифт
|
||||
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]
|
||||
teams.write_access = Писане
|
||||
|
@ -1249,7 +1351,7 @@ settings.visibility.public = Публична
|
|||
settings.visibility.limited_shortname = Ограничена
|
||||
settings.visibility.private_shortname = Частна
|
||||
settings.permission = Разрешения
|
||||
settings.visibility.limited = Ограничена (видима само за удостоверени потребители)
|
||||
settings.visibility.limited = Ограничена (видима само за влезли потребители)
|
||||
settings.visibility.private = Частна (видима само за участниците в организацията)
|
||||
org_name_helper = Имената на организациите е добре да са кратки и запомнящи се.
|
||||
org_full_name_holder = Пълно име на организацията
|
||||
|
@ -1330,6 +1432,9 @@ err_empty_admin_email = Администраторският адрес на е
|
|||
password_algorithm = Алгоритъм за хеш. на паролите
|
||||
default_keep_email_private = Скриване на адресите на ел. поща по подразбиране
|
||||
invalid_password_algorithm = Невалиден алгоритъм за хеш. на паролите
|
||||
err_admin_name_is_reserved = Потребителското име на администратора е невалидно, потребителското име е резервирано
|
||||
err_admin_name_pattern_not_allowed = Потребителското име на администратора е невалидно, потребителското име съответства с резервиран шаблон
|
||||
err_admin_name_is_invalid = Потребителското име на администратора е невалидно
|
||||
|
||||
[filter]
|
||||
string.asc = А - Я
|
||||
|
@ -1361,6 +1466,14 @@ activate_account.text_1 = Здравейте, <b>%[1]s</b>, благодарим
|
|||
activate_email.text = Моля, щракнете върху следната връзка, за да потвърдите своя адрес на ел. поща в рамките на <b>%s</b>:
|
||||
activate_email = Потвърдете своя адрес на ел. поща
|
||||
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]
|
||||
joined_on = Присъединени на %s
|
||||
|
@ -1392,6 +1505,9 @@ followers.title.one = Последовател
|
|||
following.title.one = Следван
|
||||
following.title.few = Следвани
|
||||
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]
|
||||
filter = Други филтри
|
||||
|
@ -1661,6 +1777,7 @@ variables.creation = Добавяне на променлива
|
|||
variables.deletion.failed = Неуспешно премахване на променлива.
|
||||
runners.task_list.repository = Хранилище
|
||||
runners.description = Описание
|
||||
runs.no_workflows.help_no_write_access = За да научите повече за Forgejo Actions, вижте <a target="_blank" rel="noopener noreferrer" href="%s">документацията</a>.
|
||||
|
||||
[heatmap]
|
||||
less = По-малко
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
[common]
|
||||
home = inici
|
||||
home = Inici
|
||||
dashboard = Panell de control
|
||||
explore = Explorar
|
||||
help = Ajuda
|
||||
logo = Logo
|
||||
sign_in = Entrar
|
||||
sign_in = Iniciar sessió
|
||||
sign_in_with_provider = Entra amb %s
|
||||
sign_in_or = o
|
||||
sign_out = Sortir
|
||||
|
@ -15,7 +15,7 @@ page = Pàgina
|
|||
template = Plantilla
|
||||
language = Idioma
|
||||
notifications = Notificacions
|
||||
active_stopwatch = Registre de Temps Actiu
|
||||
active_stopwatch = Registre de temps actiu
|
||||
create_new = Crear…
|
||||
user_profile_and_more = Perfil i Configuració…
|
||||
signed_in_as = Entrat com
|
||||
|
@ -140,6 +140,14 @@ filter.not_archived = No arxivats
|
|||
filter.not_fork = No és fork
|
||||
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]
|
||||
milestone_kind = Cerca fites...
|
||||
fuzzy = Difusa
|
||||
|
@ -167,6 +175,9 @@ exact = Exacte
|
|||
exact_tooltip = Inclou només resultats que són exactament el terme de cerca
|
||||
issue_kind = Cerca problemes...
|
||||
|
||||
regexp = Expressió regular
|
||||
regexp_tooltip = Interpreta el terme de cerca com una expressió regular
|
||||
|
||||
[heatmap]
|
||||
number_of_contributions_in_the_last_12_months = %s contribucions en els últims 12 mesos
|
||||
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
|
||||
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]
|
||||
buttons.indent.tooltip = Aniua 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.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]
|
||||
my_orgs = Organitzacions
|
||||
show_more_repos = Mostra més repositoris…
|
||||
|
@ -382,3 +466,14 @@ footer.software = Sobre aquest software
|
|||
footer.links = Enllaços
|
||||
navbar = Barra de navegació
|
||||
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
|
||||
help=Nápověda
|
||||
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_or=nebo
|
||||
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.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_n=<b>@%[1]s</b> nahrál/a %[3]d commity 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=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.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.
|
||||
|
@ -590,9 +590,9 @@ AuthName=Název ověření
|
|||
AdminEmail=E-mailová adresa správce
|
||||
|
||||
NewBranchName=Název nové větve
|
||||
CommitSummary=Shrnutí commity
|
||||
CommitMessage=Zpráva commitu
|
||||
CommitChoice=Výběr commitu
|
||||
CommitSummary=Shrnutí revize
|
||||
CommitMessage=Zpráva revize
|
||||
CommitChoice=Výběr revize
|
||||
TreeName=Cesta k souboru
|
||||
Content=Obsah
|
||||
|
||||
|
@ -681,6 +681,8 @@ To = Název větve
|
|||
Biography = Životopis
|
||||
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]
|
||||
change_avatar=Změnit váš avatar…
|
||||
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
|
||||
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
|
||||
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ů.
|
||||
full_name=Celé jméno
|
||||
website=Web
|
||||
|
@ -767,7 +769,7 @@ language=Jazyk
|
|||
ui=Motiv vzhledu
|
||||
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.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
|
||||
comment_type_group_reference=Reference
|
||||
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_lock=Stav zámku
|
||||
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_issue_ref=Referenční číslo problému
|
||||
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.
|
||||
delete_email=Smazat
|
||||
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.
|
||||
theme_update_success=Váš motiv vzhledu byl aktualizován.
|
||||
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.
|
||||
add_openid_success=Nová OpenID adresa byla přidána.
|
||||
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.
|
||||
|
||||
manage_ssh_keys=Správa klíčů SSH
|
||||
manage_ssh_principals=Spravovat SSH Principal certifikáty
|
||||
manage_gpg_keys=Správa klíčů GPG
|
||||
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ářů.
|
||||
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.
|
||||
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
|
||||
|
@ -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_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_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_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_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
|
||||
|
@ -874,7 +876,7 @@ gpg_token_signature=Zakódovaný podpis GPG
|
|||
key_signature_gpg_placeholder=Začíná textem „-----BEGIN PGP SIGNATURE-----“
|
||||
verify_gpg_key_success=GPG klíč „%s“ byl ověřen.
|
||||
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_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
|
||||
|
@ -896,7 +898,7 @@ ssh_key_deletion=Odebrat klíč SSH
|
|||
gpg_key_deletion=Odebrat klíč GPG
|
||||
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?
|
||||
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_key_deletion_success=SSH 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
|
||||
hide_openid=Odstranit z profilu
|
||||
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
|
||||
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.
|
||||
|
@ -966,7 +968,7 @@ oauth2_client_secret_hint=Tajný klíč se znovu nezobrazí po opuštění nebo
|
|||
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_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_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_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.
|
||||
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.
|
||||
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>.
|
||||
user_block_yourself = Nemůžete zablokovat sami sebe.
|
||||
pronouns_custom_label = Vlastní zájmena
|
||||
|
||||
[repo]
|
||||
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_helper=Vyberte šablonu souboru README
|
||||
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_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
|
||||
|
@ -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ář
|
||||
default_branch=Výchozí větev
|
||||
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_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_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_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í.
|
||||
|
@ -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>.
|
||||
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_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ář.
|
||||
|
||||
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
|
||||
tree=Strom
|
||||
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
|
||||
|
||||
milestones=Milníky
|
||||
commits=Commity
|
||||
commit=Commit
|
||||
commits=Revize
|
||||
commit=Revize
|
||||
release=Vydání
|
||||
releases=Vydání
|
||||
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“.
|
||||
audio_not_supported_in_browser=Váš prohlížeč nepodporuje značku HTML5 „audio“.
|
||||
stored_lfs=Uloženo pomocí Git LFS
|
||||
stored_annex=Uloženo pomocí Git Annex
|
||||
symbolic_link=Symbolický odkaz
|
||||
executable_file=Spustitelný soubor
|
||||
vendored = Vendorováno
|
||||
generated = Generováno
|
||||
commit_graph=Graf commitů
|
||||
commit_graph=Graf revizí
|
||||
commit_graph.select=Vybrat větve
|
||||
commit_graph.hide_pr_refs=Skrýt žádosti o sloučení
|
||||
commit_graph.monochrome=Černobílé
|
||||
commit_graph.color=Barva
|
||||
commit.contained_in=Tento commit je obsažen v:
|
||||
commit.contained_in_default_branch=Tento commit 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.contained_in=Tato revize je obsažena v:
|
||||
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 tuto revizi
|
||||
blame=Blame
|
||||
download_file=Stáhnout soubor
|
||||
normal_view=Normální zobrazení
|
||||
|
@ -1338,6 +1343,7 @@ editor.upload_file=Nahrát soubor
|
|||
editor.edit_file=Upravit soubor
|
||||
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_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.edit_this_file=Upravit soubor
|
||||
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.new_patch=Nová záplata
|
||||
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.create_new_branch=Vytvořit <strong>novou větev</strong> pro tento commit 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=Vytvořit <strong>novou větev</strong> pro tuto revizi a vytvořit žádost o sloučení.
|
||||
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.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.cancel=Zrušit
|
||||
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.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_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.commit_empty_file_header=Odeslat prázdný soubor
|
||||
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.upload_file_is_locked=Soubor „%s“ je uzamčen uživatelem %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.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.revert=Vrátit %s na:
|
||||
|
||||
commits.desc=Procházet historii změn zdrojového kódu.
|
||||
commits.commits=Commity
|
||||
commits.no_commits=Žádné společné commity. „%s“ a „%s“ mají zcela odlišnou historii.
|
||||
commits.commits=Revize
|
||||
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.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“.
|
||||
|
@ -1414,21 +1420,21 @@ commits.older=Starší
|
|||
commits.newer=Novější
|
||||
commits.signed_by=Podepsáno
|
||||
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.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.revert=Vrátit
|
||||
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-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.failure=Chyba
|
||||
commitstatus.failure=Selhání
|
||||
commitstatus.pending=Čekající
|
||||
commitstatus.success=Úspěch
|
||||
|
||||
|
@ -1611,15 +1617,15 @@ issues.context.edit=Upravit
|
|||
issues.context.delete=Smazat
|
||||
issues.no_content=K dispozici není žádný popis.
|
||||
issues.close=Zavřít problém
|
||||
issues.comment_pull_merged_at=sloučený commit %[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_pull_merged_at=sloučena revize %[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.reopen_issue=Znovu otevřít
|
||||
issues.reopen_comment_issue=Znovu otevřít s komentářem
|
||||
issues.create_comment=Okomentovat
|
||||
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.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_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>`
|
||||
|
@ -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.error_modifying_due_date=Změna termínu dokončení selhala.
|
||||
issues.error_removing_due_date=Odstranění termínu dokončení selhalo.
|
||||
issues.push_commit_1=přidal/a %d commit %s
|
||||
issues.push_commits_n=přidal/a %d commity %s
|
||||
issues.push_commit_1=přidal/a %d revizi %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_compare=Porovnat
|
||||
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.filter_branch=Filtrovat větev
|
||||
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.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.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.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_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á.
|
||||
|
@ -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.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_commits=Commity
|
||||
pulls.tab_commits=Revize
|
||||
pulls.tab_files=Změněné soubory
|
||||
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.
|
||||
|
@ -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.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_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_missing=Některé požadované kontroly chybí.
|
||||
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.waiting_count_1=%d čekající 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_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_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.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_commit_pull_request=Rebase a poté vytvořit slučovací commit
|
||||
pulls.squash_merge_pull_request=Vytvořit squash 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 revizi
|
||||
pulls.merge_manually=Sloučeno ručně
|
||||
pulls.merge_commit_id=ID slučovacího commitu
|
||||
pulls.require_signed_wont_sign=Větev vyžaduje podepsané commity, ale toto sloučení nebude podepsáno
|
||||
pulls.merge_commit_id=ID slučovací revize
|
||||
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.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.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.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.
|
||||
|
@ -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_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_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.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
|
||||
|
||||
milestones.new=Nový milník
|
||||
milestones.closed=Zavřen dne %s
|
||||
milestones.closed=Uzavřeno %s
|
||||
milestones.update_ago=Aktualizováno %s
|
||||
milestones.no_due_date=Bez lhůty dokončení
|
||||
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.least_issues=Nejméně problémů
|
||||
|
||||
signing.will_sign=Tento commit 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.nokey=Tato instance nemá žádný klíč k podepsání tohoto commitu.
|
||||
signing.wont_sign.never=Commity nejsou nikdy podepsány.
|
||||
signing.wont_sign.always=Commity jsou 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.twofa=Pro podepisování commitů 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.basesigned=Sloučení nebude podepsáno, protože základní commit není podepsaný.
|
||||
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 revize podepsána.
|
||||
signing.wont_sign.nokey=Tato instance nemá žádný klíč k podepsání této revize.
|
||||
signing.wont_sign.never=Revize nebudou nikdy podepsány.
|
||||
signing.wont_sign.always=Revize budou vždy podepsány.
|
||||
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í revizí musíte mít zapnuto dvoufázové ověření.
|
||||
signing.wont_sign.parentsigned=Revize nebude podepsána, protože nadřazená revize není podepsána.
|
||||
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.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.
|
||||
|
@ -2013,9 +2019,9 @@ wiki.filter_page=Filtr stránky
|
|||
wiki.new_page=Stránka
|
||||
wiki.page_title=Název 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.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.new_page_button=Nová stránka
|
||||
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_published_by=%s publikoval %s
|
||||
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_author_1=%d autor
|
||||
activity.git_stats_author_n=%d autoři
|
||||
activity.git_stats_pushed_1=nahrál
|
||||
activity.git_stats_pushed_n=nahrály
|
||||
activity.git_stats_commit_1=%d commit
|
||||
activity.git_stats_commit_n=%d commity
|
||||
activity.git_stats_commit_1=%d revize
|
||||
activity.git_stats_commit_n=%d revizí
|
||||
activity.git_stats_push_to_branch=do %s a
|
||||
activity.git_stats_push_to_all_branches=do všech větví.
|
||||
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í
|
||||
|
||||
contributors.contribution_type.filter_label = Typ přispění:
|
||||
contributors.contribution_type.commits=Commity
|
||||
contributors.contribution_type.commits=Revize
|
||||
|
||||
search=Vyhledat
|
||||
search.search_repo=Hledat repozitář
|
||||
|
@ -2123,9 +2129,9 @@ settings.hooks=Webhooky
|
|||
settings.githooks=Git hooky
|
||||
settings.basic_settings=Základní nastavení
|
||||
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.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_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=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í 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é 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.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:
|
||||
|
@ -2186,11 +2192,11 @@ settings.admin_settings=Administrátorská nastavení
|
|||
settings.admin_enable_health_check=Povolit kontrolu stavu repozitáře (git fsck)
|
||||
settings.admin_code_indexer=Indexování 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.reindex_button=Přidat do fronty reindexace
|
||||
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.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ář
|
||||
|
@ -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.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.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.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.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 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.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_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.
|
||||
|
@ -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_success=Klíč pro nasazení byl odstraněn.
|
||||
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.delete_rule=Odstranit pravidlo
|
||||
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_merge=Povolit sloučení
|
||||
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_users=Povolení uživatelé pro nahrávání
|
||||
settings.protect_whitelist_search_users=Hledat uživatele…
|
||||
settings.protect_whitelist_teams=Povolené týmy pro nahrávání
|
||||
settings.protect_whitelist_search_teams=Vyhledat týmy…
|
||||
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_teams=Povolené týmy pro slučování
|
||||
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.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.require_signed_commits=Vyžadovat podepsané commity
|
||||
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=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.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_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_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.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.default_merge_style_desc=Výchozí styl sloučení
|
||||
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.protected_branch_required_rule_name=Požadovaný název pravidla
|
||||
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.archive.button=Archivovat 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.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ář.
|
||||
|
@ -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.unarchive.button=Zrušit archivaci repozitáře
|
||||
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.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.
|
||||
|
@ -2500,7 +2506,7 @@ settings.lfs=LFS
|
|||
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_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_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?
|
||||
|
@ -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.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.committed_by=odevzdal
|
||||
diff.committed_by=autor:
|
||||
diff.protected=Chráněno
|
||||
diff.image.side_by_side=Vedle sebe
|
||||
diff.image.swipe=Posunout
|
||||
|
@ -2618,7 +2624,7 @@ release.edit_release=Aktualizovat vydání
|
|||
release.delete_release=Smazat vydání
|
||||
release.delete_tag=Smazat značku
|
||||
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_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.
|
||||
|
@ -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.deletion_success=Větev „%s“ byla smazána.
|
||||
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_from=z „%s“
|
||||
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.
|
||||
commits.browse_further = Procházet dále
|
||||
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
|
||||
activity.navbar.recent_commits = Nedávné commity
|
||||
activity.navbar.recent_commits = Nedávné revize
|
||||
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.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.
|
||||
contributors.contribution_type.deletions = Odstranění
|
||||
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.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.
|
||||
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_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é
|
||||
|
@ -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.event_pull_request_merge = Sloučení žádosti 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
|
||||
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.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.
|
||||
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.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
|
||||
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í?
|
||||
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ý.
|
||||
stars = Oblíbení
|
||||
n_commit_one = %s commit
|
||||
n_commit_few = %s commitů
|
||||
n_commit_one = %s revize
|
||||
n_commit_few = %s revizí
|
||||
n_branch_one = %s větev
|
||||
n_tag_one = %s značka
|
||||
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í.
|
||||
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.
|
||||
activity.commit = Aktivita commitů
|
||||
activity.commit = Aktivita revizí
|
||||
milestones.filter_sort.name = Název
|
||||
release.type_attachment = 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.summary_card_alt = Souhrn problému s názvem „%s“ v repozitáři %s
|
||||
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]
|
||||
component_loading_info = Tohle může chvíli trvat…
|
||||
component_failed_to_load = Došlo k neočekávané chybě.
|
||||
code_frequency.what = frekvence kódu
|
||||
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_failed = Nepodařilo se načíst %s
|
||||
|
||||
|
@ -3003,7 +3026,7 @@ last_page=Poslední
|
|||
total=Celkem: %d
|
||||
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.operations=Operace údržby
|
||||
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_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.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)
|
||||
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_commits=Porovnat %d revizí
|
||||
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_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>`
|
||||
|
@ -3618,13 +3641,13 @@ no_subscriptions=Žádné odběry
|
|||
[gpg]
|
||||
default_key=Podepsáno výchozím klíčem
|
||||
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_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.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_default_signature=VAROVÁNÍ! Ačkoli výchozí klíč má toto ID, neověřuje tento commit! 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Í! Přestože má výchozí klíč toto ID, tato revize jím není ověřena! Tato revize je PODEZŘELÁ.
|
||||
|
||||
[units]
|
||||
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.status=Status
|
||||
runners.task_list.repository=Repozitář
|
||||
runners.task_list.commit=Commit
|
||||
runners.task_list.commit=Revize
|
||||
runners.task_list.done_at=Dokončeno v
|
||||
runners.edit_runner=Upravit Runner
|
||||
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
|
||||
|
||||
runs.all_workflows=Všechny workflowy
|
||||
runs.commit=Commit
|
||||
runs.commit=Revize
|
||||
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.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.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.empty_commit_message=(prázdná zpráva commitu)
|
||||
runs.empty_commit_message=(prázdná zpráva revize)
|
||||
|
||||
workflow.disable=Zakázat workflow
|
||||
workflow.disable_success=Workflow „%s“ byl úspěšně deaktivován.
|
||||
|
@ -3952,7 +3975,7 @@ code_kind = Hledat kód...
|
|||
package_kind = Hledat balíčky...
|
||||
project_kind = Hledat projekty...
|
||||
branch_kind = Hledat větve...
|
||||
commit_kind = Hledat commity...
|
||||
commit_kind = Hledat revize...
|
||||
runner_kind = Hledat runnery...
|
||||
no_results = Nenalezeny žádné odpovídající výsledky.
|
||||
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
|
||||
|
||||
|
||||
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]
|
||||
change_avatar=Profilbild ändern …
|
||||
joined_on=Beigetreten am %s
|
||||
|
@ -749,7 +751,7 @@ webauthn=Hardware-Sicherheitsschlüssel
|
|||
public_profile=Öffentliches Profil
|
||||
biography_placeholder=Erzähle anderen ein wenig über dich selbst! (Markdown wird unterstützt)
|
||||
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.
|
||||
full_name=Vollständiger Name
|
||||
website=Webseite
|
||||
|
@ -814,7 +816,7 @@ manage_emails=E-Mail-Adressen verwalten
|
|||
manage_themes=Standard-Theme
|
||||
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.
|
||||
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
|
||||
activated=Aktiviert
|
||||
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.
|
||||
add_openid_success=Die neue OpenID-Adresse wurde hinzugefügt.
|
||||
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.
|
||||
|
||||
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.
|
||||
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.
|
||||
user_block_yourself = Du kannst dich nicht selbst blockieren.
|
||||
pronouns_custom_label = Individuelle Pronomen
|
||||
|
||||
[repo]
|
||||
owner=Besitzer
|
||||
|
@ -1097,11 +1101,11 @@ issue_labels=Labels
|
|||
issue_labels_helper=Wähle eine Label-Sammlung
|
||||
license=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_helper=Wähle eine README-Vorlage
|
||||
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_collaborator=Mitarbeiter: Vertraue Signaturen von Mitarbeitern am Projekt
|
||||
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_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.pull.nocomment=Dieses Repo ist archiviert. Du kannst Pull-Requests nicht kommentieren.
|
||||
archive.issue.nocomment=Dieses Repository ist archiviert. Du kannst Issues 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_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.
|
||||
audio_not_supported_in_browser=Dein Browser unterstützt das HTML5-„audio“-Tag nicht.
|
||||
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
|
||||
executable_file=Ausführbare Datei
|
||||
commit_graph=Commit-Graph
|
||||
|
@ -1336,6 +1342,7 @@ editor.upload_file=Datei hochladen
|
|||
editor.edit_file=Datei bearbeiten
|
||||
editor.preview_changes=Vorschau der Änderungen
|
||||
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.edit_this_file=Datei bearbeiten
|
||||
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.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.branchsettings_unavailable=Branch-Einstellungen sind nicht verfügbar wenn das Repo archiviert ist.
|
||||
settings.archive.tagsettings_unavailable=Tag Einstellungen sind nicht verfügbar, wenn das Repo archiviert wurde.
|
||||
settings.archive.branchsettings_unavailable=Branch-Einstellungen sind nicht verfügbar in archivierten Repos.
|
||||
settings.archive.tagsettings_unavailable=Tag-Einstellungen sind nicht verfügbar in archivierten Repos.
|
||||
settings.unarchive.button=Archivierung 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.
|
||||
|
@ -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.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.
|
||||
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.
|
||||
clone_in_vscodium = In VSCodium klonen
|
||||
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.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.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.
|
||||
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.
|
||||
|
@ -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.num_reviews_few = %d Reviews
|
||||
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]
|
||||
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
|
||||
|
||||
users.user_manage_panel=Benutzerkonten verwalten
|
||||
users.new_account=Benutzerkonto erstellen
|
||||
users.new_account=Benutzeraccount erstellen
|
||||
users.name=Benutzername
|
||||
users.full_name=Vollständiger Name
|
||||
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`
|
||||
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>
|
||||
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_branch=hat Branch %[2]s in <a href="%[1]s">%[3]s</a> gelöscht
|
||||
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:
|
||||
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:
|
||||
container.details.type=Container-Image Typ
|
||||
container.details.type=Abbildtyp
|
||||
container.details.platform=Plattform
|
||||
container.pull=Downloade das Container-Image aus der Kommandozeile:
|
||||
container.digest=Digest
|
||||
container.multi_arch=Betriebsystem / Architektur
|
||||
container.layers=Container-Image Ebenen
|
||||
container.layers=Abbildebenen
|
||||
container.labels=Labels
|
||||
container.labels.key=Schlüssel
|
||||
container.labels.value=Wert
|
||||
|
@ -3958,7 +3982,7 @@ package_kind = Pakete suchen …
|
|||
project_kind = Projekte suchen …
|
||||
branch_kind = Branches suchen …
|
||||
commit_kind = Commits suchen …
|
||||
runner_kind = Runners suchen …
|
||||
runner_kind = Runner suchen …
|
||||
no_results = Keine passenden Ergebnisse gefunden.
|
||||
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.
|
||||
|
|
|
@ -166,6 +166,7 @@ new_org.link = Νέος οργανισμός
|
|||
new_migrate.title = Νέα μεταφορά
|
||||
new_repo.title = Νέο repository
|
||||
new_org.title = Νέος οργανισμός
|
||||
copy_path = Αντιγραφή τοποθεσίας
|
||||
|
||||
[aria]
|
||||
navbar=Μπάρα πλοήγησης
|
||||
|
@ -197,8 +198,14 @@ buttons.ref.tooltip=Μνημόνευση ενός θέματος ή pull request
|
|||
buttons.switch_to_legacy.tooltip=Χρήση του κλασσικού κειμενογράφου
|
||||
buttons.enable_monospace_font=Ενεργοποίηση σταθερής γραμματοσειράς
|
||||
buttons.disable_monospace_font=Απενεργοποίηση σταθερής γραμματοσειράς
|
||||
buttons.unindent.tooltip = Αναίρεση στοιχείων κατά ένα επίπεδο
|
||||
buttons.indent.tooltip = Στοιχεία φωλιών κατά ένα επίπεδο
|
||||
buttons.unindent.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]
|
||||
string.asc=A - Z
|
||||
|
@ -249,9 +256,9 @@ err_empty_db_path=Η διαδρομή της βάσης δεδομένων SQLit
|
|||
no_admin_and_disable_registration=Δεν μπορείτε να απενεργοποιήσετε την ιδιο-εγγραφή χρήστη χωρίς να έχετε δημιουργήσει διαχειριστικό λογαριασμό.
|
||||
err_empty_admin_password=Ο κωδικός πρόσβασης του διαχειριστή δεν μπορεί να είναι κενός.
|
||||
err_empty_admin_email=Το email του διαχειριστή δεν μπορεί να είναι κενό.
|
||||
err_admin_name_is_reserved=Το Όνομα χρήστη του Διαχειριστή δεν είναι έγκυρο, είναι δεσμευμένο
|
||||
err_admin_name_is_reserved=Το όνομα χρήστη του Διαχειριστή δεν είναι έγκυρο, αυτό το όνομα είναι δεσμευμένο
|
||||
err_admin_name_pattern_not_allowed=Το Όνομα χρήστη του Διαχειριστή δεν είναι έγκυρο, ταιριάζει σε μια δεσμευμένη μορφή
|
||||
err_admin_name_is_invalid=Το Όνομα Χρήστη του Διαχειριστή δεν είναι έγκυρο
|
||||
err_admin_name_is_invalid=Το όνομα χρήστη του Διαχειριστή δεν είναι έγκυρο
|
||||
|
||||
general_title=Γενικές ρυθμίσεις
|
||||
app_name=Τίτλος διακομιστή
|
||||
|
@ -476,6 +483,8 @@ hint_register = Χρειάζεστε έναν λογαριασμό; <a href="%s"
|
|||
sign_up_button = Δημιουργία λογαριασμού.
|
||||
back_to_sign_in = Επιστροφή στην σελίδα εισόδου
|
||||
sign_in_openid = Συνέχεια με OpenID
|
||||
unauthorized_credentials = Τα διαπιστευτήρια σύνδεσης είναι λανθασμένα ή έχουν λήξει. Προσπαθήστε ξανά την ενέργεια ή δείτε %s για περισσότερες πληροφορίες
|
||||
use_onetime_code = Χρήση κωδικού μίας χρήσης
|
||||
|
||||
[mail]
|
||||
view_it_on=Δείτε το στο %s
|
||||
|
@ -553,7 +562,7 @@ password_change.text_1 = Μόλις άλλαξε ο κωδικός πρόσβα
|
|||
primary_mail_change.subject = Η κύρια διεύθυνση email σας άλλαξε
|
||||
primary_mail_change.text_1 = Η κύρια διεύθυνση email του λογαριασμού σας μόλις άλλαξε στην %[1]s. Αυτό σημαίνει πως η διεύθυνση στην οποία λαμβάνετε αυτό το μήνυμα δεν θα λαμβάνει ειδοποιήσεις email για τον λογαριασμό σας πια.
|
||||
totp_disabled.subject = Το TOTP απενεργοποιήθηκε
|
||||
totp_disabled.text_1 = Το TOTP στο λογαριασμό σας μόλις απενεργοποιήθηκε.
|
||||
totp_disabled.text_1 = Ο κωδικός μίας χρήσης (TOTP) για το λογαριασμό σας μόλις απενεργοποιήθηκε.
|
||||
removed_security_key.subject = Καταργήθηκε ένα κλειδί ασφαλείας
|
||||
removed_security_key.text_1 = Το κλειδί ασφαλείας «%[1]s» μόλις αφαιρέθηκε από τον λογαριασμό σας.
|
||||
totp_disabled.no_2fa = Δεν έχετε ρυθμίσει κάποια άλλη μέθοδο σύνδεσης δευτέρου παράγοντα (2FA), άρα δεν χρειάζεται να συνδεθείτε στον λογαριασμό σας μέσω 2FA.
|
||||
|
@ -715,6 +724,7 @@ following.title.one = ακολουθεί
|
|||
public_activity.visibility_hint.admin_public = Η δραστηριότητα είναι ορατή σε όλους, αλλά ως διαχειριστής μπορείτε να δείτε και τις αλληλεπιδράσεις σε ιδιωτικούς χώρους.
|
||||
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_profile = Η δραστηριότητά σας είναι ορατή μόνο σε εσάς και τους διαχειριστές του διακομιστή καθώς το προφίλ σας είναι ιδιωτικό <a href="%s">Αλλαγή ορατότητας</a>.
|
||||
|
||||
[settings]
|
||||
profile=Προφίλ
|
||||
|
@ -736,9 +746,9 @@ uid=UID
|
|||
webauthn=Πιστοποίηση δύο παραγόντων (Κλειδιά Ασφαλείας)
|
||||
|
||||
public_profile=Δημόσιο προφίλ
|
||||
biography_placeholder=Πείτε μας λίγο για τον εαυτό σας! (Μπορείτε να γράψετε με Markdown)
|
||||
biography_placeholder=Πείτε λίγα πράγματα για τον εαυτό σας! (Μπορείτε να γράψετε με Markdown)
|
||||
location_placeholder=Μοιραστείτε την κατά προσέγγιση τοποθεσία σας με άλλους
|
||||
profile_desc=Ελέγξτε πώς εμφανίζεται το προφίλ σας σε άλλους χρήστες. Η κύρια διεύθυνση email σας θα χρησιμοποιηθεί για ειδοποιήσεις, ανάκτηση κωδικού πρόσβασης και λειτουργίες Git που βασίζονται στο web.
|
||||
profile_desc=Σχετικά με εσάς
|
||||
password_username_disabled=Οι μη τοπικοί χρήστες δεν επιτρέπεται να αλλάξουν το όνομα χρήστη τους. Επικοινωνήστε με το διαχειριστή σας για περισσότερες λεπτομέρειες.
|
||||
full_name=Πλήρες όνομα
|
||||
website=Ιστοσελίδα
|
||||
|
@ -803,7 +813,7 @@ manage_emails=Διαχείριση διευθύνσεων email
|
|||
manage_themes=Προεπιλεγμένο θέμα
|
||||
manage_openid=Διευθύνσεις OpenID
|
||||
email_desc=Η κύρια διεύθυνση ηλεκτρονικού ταχυδρομείου σας θα χρησιμοποιηθεί για ειδοποιήσεις, ανάκτηση του κωδικού πρόσβασης και, εφόσον δεν είναι κρυμμένη, λειτουργίες Git στον ιστότοπο.
|
||||
theme_desc=Αυτό θα είναι το προεπιλεγμένο θέμα διεπαφής σας σε όλη την ιστοσελίδα.
|
||||
theme_desc=Αυτό θα είναι το προεπιλεγμένο θέμα διεπαφής σας όταν είστε συνδεδεμένοι.
|
||||
primary=Κύριο
|
||||
activated=Ενεργό
|
||||
requires_activation=Απαιτείται ενεργοποίηση
|
||||
|
@ -1038,13 +1048,14 @@ pronouns = Αντωνυμίες
|
|||
pronouns_custom = κάτι άλλο
|
||||
pronouns_unspecified = Απροσδιόριστες
|
||||
hints = Συμβουλές
|
||||
additional_repo_units_hint_description = Εμφάνιση κουμπιού «Προσθήκη μονάδων...» σε αποθετήρια που δεν έχουν ενεργοποιημένες όλες τις διαθέσιμες μονάδες.
|
||||
additional_repo_units_hint_description = Εμφάνιση υπόδειξης «Προσθήκη μονάδων...» σε αποθετήρια που δεν έχουν ενεργοποιημένες όλες τις διαθέσιμες μονάδες.
|
||||
update_hints = Ενημέρωση συμβουλών
|
||||
update_hints_success = Οι συμβουλές ενημερώθηκαν.
|
||||
language.title = Προεπιλεγμένη γλώσσα
|
||||
keep_activity_private.description = Η <a href="%s">δημόσια δραστηριότητά σας</a> θα είναι ορατή μόνο σε εσάς και στους διαχειριστές.
|
||||
language.localization_project = Βοηθήστε μας να μεταφράσουμε το Forgejo στην γλώσσα σας! <a href="%s">Περισσότερες πληροφορίες</a>.
|
||||
language.description = Από εδώ και στο εξής, αυτή η γλώσσα θα χρησιμοποιείται από προεπιλογή για τον λογαριασμό σας.
|
||||
pronouns_custom_label = Ειδικές αντωνυμίες
|
||||
|
||||
[repo]
|
||||
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.git.description=Μεταφορά μόνο του αποθετηρίου από μια οποιαδήποτε υπηρεσία Git.
|
||||
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.onedev.description=Μεταφορά δεδομένων από το code.onedev.io ή άλλες εγκαταστάσεις OneDev.
|
||||
migrate.codebase.description=Μεταφορά δεδομένων από το codebasehq.com.
|
||||
|
@ -1303,6 +1314,7 @@ view_git_blame=Προβολή git blame
|
|||
video_not_supported_in_browser=Το πρόγραμμα περιήγησής σας δεν υποστηρίζει την ετικέτα HTML5 «video».
|
||||
audio_not_supported_in_browser=Το πρόγραμμα περιήγησής σας δεν υποστηρίζει την ετικέτα HTML5 «audio».
|
||||
stored_lfs=Αποθηκεύτηκε με το Git LFS
|
||||
stored_annex=Αποθηκεύτηκε με το Git Annex
|
||||
symbolic_link=Symbolic link
|
||||
executable_file=Εκτελέσιμο αρχείο
|
||||
commit_graph=Γράφημα υποβολών
|
||||
|
@ -1326,6 +1338,7 @@ editor.upload_file=Ανέβασμα αρχείου
|
|||
editor.edit_file=Επεξεργασία αρχείου
|
||||
editor.preview_changes=Προεπισκόπηση αλλαγών
|
||||
editor.cannot_edit_lfs_files=Τα αρχεία LFS δεν μπορούν να επεξεργαστούν στη διεπαφή web.
|
||||
editor.cannot_edit_annex_files=Τα αρχεία Annex δεν μπορούν να επεξεργαστούν στη διεπαφή web.
|
||||
editor.cannot_edit_non_text_files=Τα δυαδικά αρχεία δεν μπορούν να επεξεργαστούν στη διεπαφή web.
|
||||
editor.edit_this_file=Επεξεργασία αρχείου
|
||||
editor.this_file_locked=Το αρχείο είναι κλειδωμένο
|
||||
|
@ -1924,7 +1937,7 @@ pulls.cmd_instruction_hint=Προβολή οδηγιών γραμμής εντο
|
|||
pulls.cmd_instruction_checkout_title=Έλεγχος
|
||||
pulls.cmd_instruction_checkout_desc=Από το repository του έργου σας, ελέγξτε έναν νέο κλάδο και δοκιμάστε τις αλλαγές.
|
||||
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_hint=Η εκκαθάριση του μηνύματος συγχώνευσης θα αφαιρέσει μόνο το περιεχόμενο του μηνύματος υποβολής και θα διατηρήσει τα παραγόμενα git trailers όπως "Co-Authored-By …".
|
||||
|
||||
|
@ -2619,7 +2632,7 @@ release.edit_release=Ενημέρωση κυκλοφορίας
|
|||
release.delete_release=Διαγραφή κυκλοφορίας
|
||||
release.delete_tag=Διαγραφή ετικέτας
|
||||
release.deletion=Διαγραφή κυκλοφορίας
|
||||
release.deletion_desc=Διαγράφοντας μια κυκλοφορία, αυτή αφαιρείται μόνο από το Gitea. Δε θα επηρεάσει την ετικέτα Git, τα περιεχόμενα του αποθετηρίου σας ή το ιστορικό της. Συνέχεια;
|
||||
release.deletion_desc=Διαγράφοντας μια κυκλοφορία, αυτή αφαιρείται μόνο από το Forgejo. Δε θα επηρεάσει την ετικέτα Git, τα περιεχόμενα του αποθετηρίου σας ή το ιστορικό της. Συνέχεια;
|
||||
release.deletion_success=Η κυκλοφορία έχει διαγραφεί.
|
||||
release.deletion_tag_desc=Θα διαγράψει αυτή την ετικέτα από το repository. Τα περιεχόμενα του repository και το ιστορικό δεν θα πειραχτούν. Να γίνει συνέχεια;
|
||||
release.deletion_tag_success=Η ετικέτα έχει διαγραφεί.
|
||||
|
@ -3161,12 +3174,12 @@ packages.size=Μέγεθος
|
|||
packages.published=Δημοσιευμένα
|
||||
|
||||
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.update_webhook=Ενημέρωση Προεπιλεγμένου Webhook
|
||||
|
||||
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.update_webhook=Ενημέρωση Webhook Συστήματος
|
||||
|
||||
|
@ -3929,6 +3942,8 @@ exact = Ακριβής
|
|||
milestone_kind = Αναζήτηση ορόσημων...
|
||||
union = Ένωση
|
||||
union_tooltip = Να συμπεριληφθούν αποτελέσματα που περιέχουν οποιαδήποτε από τις λέξεις που έχουν εισαχθεί και διαχωριστεί με κενό
|
||||
regexp = Κανονική Έκφραση
|
||||
regexp_tooltip = Ερμηνεία του όρου αναζήτησης ως κανονική έκφραση
|
||||
|
||||
[munits.data]
|
||||
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.
|
||||
email_been_used = The email address is already used.
|
||||
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.
|
||||
username_password_incorrect = Username or password is incorrect.
|
||||
password_complexity = Password does not pass complexity requirements:
|
||||
|
@ -748,13 +749,14 @@ blocked_users = Blocked users
|
|||
public_profile = Public profile
|
||||
biography_placeholder = Tell others a little bit about yourself! (Markdown is supported)
|
||||
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.
|
||||
full_name = Full name
|
||||
website = Website
|
||||
location = Location
|
||||
pronouns = Pronouns
|
||||
pronouns_custom = Custom
|
||||
pronouns_custom_label = Custom pronouns
|
||||
pronouns_unspecified = Unspecified
|
||||
update_theme = Change theme
|
||||
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.
|
||||
add_openid_success = The new OpenID address has been added.
|
||||
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.
|
||||
|
||||
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
|
||||
|
||||
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_helper = Some organizations may not show up in the dropdown due to a maximum repository count limit.
|
||||
repo_name = Repository name
|
||||
|
@ -1099,7 +1105,8 @@ object_format_helper = Object format of the repository. Cannot be changed later.
|
|||
readme = README
|
||||
readme_helper = Select a README file template
|
||||
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
|
||||
default_branch = Default branch
|
||||
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.failed = Failed to ignore revisions in <a href="%s">.git-blame-ignore-revs</a>.
|
||||
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_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.
|
||||
audio_not_supported_in_browser = Your browser does not support the HTML5 "audio" tag.
|
||||
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
|
||||
executable_file = Executable file
|
||||
vendored = Vendored
|
||||
|
@ -1356,6 +1366,7 @@ editor.upload_file = Upload file
|
|||
editor.edit_file = Edit file
|
||||
editor.preview_changes = Preview changes
|
||||
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.edit_this_file = Edit file
|
||||
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.cherry_pick = Cherry-pick %s onto:
|
||||
editor.revert = Revert %s onto:
|
||||
editor.commit_email = Commit email
|
||||
|
||||
commits.desc = Browse source code change history.
|
||||
commits.commits = Commits
|
||||
|
@ -1628,6 +1640,12 @@ issues.num_reviews_one = %d review
|
|||
issues.num_reviews_few = %d reviews
|
||||
issues.commented_at = `commented <a href="#%s">%s</a>`
|
||||
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.quote_reply = Quote reply
|
||||
issues.context.reference_issue = Reference in a new issue
|
||||
|
@ -1845,6 +1863,7 @@ pulls.new = New 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.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_desc = Users with write access to the base branch can also push to this branch
|
||||
pulls.allow_edits_from_maintainers_err = Updating failed
|
||||
|
@ -2741,6 +2760,7 @@ release.asset_name = Asset name
|
|||
release.asset_external_url = External URL
|
||||
release.add_external_asset = Add external asset
|
||||
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.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.id_not_exist = Variable with ID %d does not exist.
|
||||
variables.edit = Edit Variable
|
||||
variables.not_found = Failed to find the variable.
|
||||
variables.deletion.failed = Failed to remove variable.
|
||||
variables.deletion.success = The variable has been removed.
|
||||
variables.creation.failed = Failed to add variable.
|
||||
|
|
|
@ -56,7 +56,7 @@ mirror=Réplica
|
|||
new_repo=Nuevo repositorio
|
||||
new_migrate=Nueva migración
|
||||
new_mirror=Nueva réplica
|
||||
new_fork=Nuevo fork de repositorio
|
||||
new_fork=Nueva bifurcación del repositorio
|
||||
new_org=Nueva organización
|
||||
new_project=Nuevo proyecto
|
||||
new_project_column=Nueva columna
|
||||
|
@ -75,7 +75,7 @@ collaborative=Colaborativo
|
|||
forks=Forks
|
||||
|
||||
activities=Actividades
|
||||
pull_requests=Pull requests
|
||||
pull_requests=Solicitudes de incorporación de cambios
|
||||
issues=Incidencias
|
||||
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"?
|
||||
more_items = Mas cosas
|
||||
copy_generic = Copiar al portapapeles
|
||||
filter.not_fork = No forks
|
||||
filter.is_fork = Forks
|
||||
filter.not_fork = No hay bifurcaciones
|
||||
filter.is_fork = Bifurcaciones
|
||||
test = Test
|
||||
error413 = Has agotado tu cuota.
|
||||
new_repo.title = Nuevo repositorio
|
||||
|
@ -229,7 +229,7 @@ platform_desc=Se ha confirmado que Forgejo funciona en sistemas operativos libre
|
|||
lightweight=Ligero
|
||||
lightweight_desc=Forgejo tiene pocos requisitos y puede funcionar en una Raspberry Pi barata. ¡Ahorra energía!
|
||||
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=Instalación
|
||||
|
@ -397,8 +397,8 @@ code_search_results=Resultados de búsqueda para «%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=Solo se muestran repositorios relevantes, <a href="%s">mostrar resultados sin filtrar</a>.
|
||||
forks_few = %d forks
|
||||
forks_one = %d fork
|
||||
forks_few = %d bifurcaciones
|
||||
forks_one = %d bifurcación
|
||||
stars_few = %d estrellas
|
||||
stars_one = %d estrella
|
||||
|
||||
|
@ -746,7 +746,7 @@ webauthn=Autenticación de dos factores (claves de seguridad)
|
|||
public_profile=Perfil público
|
||||
biography_placeholder=¡Cuenta a otros un poco sobre ti! (Se admite Markdown)
|
||||
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.
|
||||
full_name=Nombre completo
|
||||
website=Página web
|
||||
|
@ -811,7 +811,7 @@ manage_emails=Administrar direcciones de correo electrónico
|
|||
manage_themes=Tema por defecto
|
||||
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.
|
||||
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
|
||||
activated=Activado
|
||||
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.
|
||||
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_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.
|
||||
|
||||
manage_ssh_keys=Gestionar claves SSH
|
||||
manage_ssh_principals=Administrar Principales de Certificado SSH
|
||||
manage_gpg_keys=Gestionar claves GPG
|
||||
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.
|
||||
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.
|
||||
|
@ -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.localization_project = ¡Ayúdanos a traducir Forgejo a tu idioma! <a href="%s">Más información</a>.
|
||||
|
||||
pronouns_custom_label = Pronombres personalizados
|
||||
|
||||
[repo]
|
||||
owner=Propietario
|
||||
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_helper=Hacer el repositorio privado
|
||||
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>.
|
||||
fork_repo=Hacer fork del repositorio
|
||||
fork_from=Crear un fork desde
|
||||
fork_repo=Hacer una bifurcación del repositorio
|
||||
fork_from=Crear una bifurcación desde
|
||||
already_forked=Ya ha forkeado %s
|
||||
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.
|
||||
|
@ -1094,11 +1096,11 @@ issue_labels=Etiquetas
|
|||
issue_labels_helper=Selecciona un conjunto de etiquetas
|
||||
license=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_helper=Selecciona una plantilla de archivo README
|
||||
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_collaborator=Colaborador: Confiar en firmas de colaboradores
|
||||
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.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.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.onedev.description=Migrar datos desde code.onedev.io u otra instancia de OneDev.
|
||||
migrate.codebase.description=Migrar datos desde codebasehq.com.
|
||||
|
@ -1233,7 +1235,7 @@ migrate.migrating_milestones=Migrando hitos
|
|||
migrate.migrating_labels=Migrando etiquetas
|
||||
migrate.migrating_releases=Migrando lanzamientos
|
||||
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_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.
|
||||
audio_not_supported_in_browser=Su navegador no soporta el tag "audio" de HTML5.
|
||||
stored_lfs=Almacenados con Git LFS
|
||||
stored_annex=Almacenados con Git Annex
|
||||
symbolic_link=Enlace simbólico
|
||||
executable_file=Archivo ejecutable
|
||||
commit_graph=Gráfico de commits
|
||||
|
@ -1333,6 +1336,7 @@ editor.upload_file=Subir archivo
|
|||
editor.edit_file=Editar archivo
|
||||
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_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.edit_this_file=Editar archivo
|
||||
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.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.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_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.
|
||||
|
@ -2039,8 +2043,8 @@ activity.opened_prs_count_1=Pull request propuesta
|
|||
activity.opened_prs_count_n=Pull requests propuestas
|
||||
activity.title.user_1=%d usuario
|
||||
activity.title.user_n=%d usuarios
|
||||
activity.title.prs_1=%d pull request
|
||||
activity.title.prs_n=%d pull requests
|
||||
activity.title.prs_1=%d solicitud de incorporación de cambios
|
||||
activity.title.prs_n=%d solicitudes de incorporación de cambios
|
||||
activity.title.prs_merged_by=%s fusionado por %s
|
||||
activity.title.prs_opened_by=%s propuesto por %s
|
||||
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_n=%d eliminaciones
|
||||
|
||||
contributors.contribution_type.commits=Commits
|
||||
contributors.contribution_type.commits=Confirmaciones
|
||||
|
||||
search=Buscar
|
||||
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_desc=Pull Request asignado o no asignado.
|
||||
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_desc=Hitos añadidos, eliminados o modificados.
|
||||
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.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.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.protect_branch_name_pattern=Patrón de nombre de ramas protegidas
|
||||
settings.protect_patterns=Patrones
|
||||
|
@ -2464,7 +2468,7 @@ settings.choose_branch=Elija una rama…
|
|||
settings.no_protected_branch=No hay ramas protegidas.
|
||||
settings.edit_protected_branch=Editar
|
||||
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.tags=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.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.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.unarchive.button=Desarchivar 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.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.
|
||||
|
@ -2563,7 +2567,7 @@ diff.generated=generado
|
|||
diff.vendored=vendido
|
||||
diff.comment.add_line_comment=Añadir comentario en línea
|
||||
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_review_comment=Añadir comentario
|
||||
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.flags_replaced = Indicadores del repositorio sustituidos
|
||||
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.
|
||||
commits.browse_further = Seguir explorando
|
||||
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
|
||||
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.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_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
|
||||
|
@ -2813,7 +2817,32 @@ release.download_count_one = %s descarga
|
|||
diff.git-notes.add = Añadir nota
|
||||
diff.git-notes.remove-header = Eliminar nota
|
||||
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]
|
||||
component_loading = Cargando %s...
|
||||
|
@ -2822,6 +2851,9 @@ contributors.what = contribuciones
|
|||
recent_commits.what = commits recientes
|
||||
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_name_holder=Nombre 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.
|
||||
follow_blocked_user = No puedes seguir a esta organización porque esta organización te ha bloqueado.
|
||||
|
||||
open_dashboard = Abrir panel de control
|
||||
|
||||
[admin]
|
||||
dashboard=Panel de control
|
||||
identity_access=Identidad y acceso
|
||||
|
@ -3474,6 +3508,20 @@ notices.op=Operación
|
|||
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]
|
||||
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>
|
||||
|
@ -3617,7 +3665,7 @@ conda.install=Para instalar el paquete usando Conda, ejecute el siguiente comand
|
|||
container.details.type=Tipo de imagen
|
||||
container.details.platform=Plataforma
|
||||
container.pull=Arrastra la imagen desde la línea de comandos:
|
||||
container.digest=Resumen:
|
||||
container.digest=Resumen
|
||||
container.multi_arch=SO / Arquitectura
|
||||
container.layers=Capas de imagen
|
||||
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.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=Secretos
|
||||
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=Acciones
|
||||
|
||||
unit.desc=Gestionar acciones
|
||||
unit.desc=Gestione procesos CI/CD integrados con Forgejo Actions.
|
||||
|
||||
status.unknown=Desconocido
|
||||
status.waiting=Esperando
|
||||
|
@ -3816,6 +3877,9 @@ variables.update.failed=Error al editar la variable.
|
|||
variables.update.success=La variable ha sido editada.
|
||||
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]
|
||||
type-1.display_name=Proyecto individual
|
||||
type-2.display_name=Proyecto repositorio
|
||||
|
@ -3837,7 +3901,7 @@ search = Buscar...
|
|||
type_tooltip = Tipo de búsqueda
|
||||
project_kind = Buscar proyectos...
|
||||
branch_kind = Buscar ramas...
|
||||
commit_kind = Buscar commits...
|
||||
commit_kind = Buscar confirmaciones...
|
||||
repo_kind = Buscar repositorios...
|
||||
user_kind = Buscar usuarios...
|
||||
org_kind = Buscar organizaciones...
|
||||
|
@ -3860,6 +3924,8 @@ fuzzy = Difusa
|
|||
runner_kind = Buscar ejecutores…
|
||||
regexp_tooltip = Interpretar los términos de búsqueda como una expresión regular
|
||||
|
||||
regexp = Expresión Regular
|
||||
|
||||
[markup]
|
||||
filepreview.lines = Líneas %[1]d a %[2]d en %[3]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.
|
||||
wiki.read = <b>Lectura:</b> Leer la wiki integrada y su historial.
|
||||
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.
|
||||
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.
|
||||
|
|
|
@ -881,7 +881,7 @@ migrate.migrating_failed=مهاجرت از <b>%s</b> ناموفق بود.
|
|||
migrate.migrating_failed_no_addr=مهاجرت ناموفق بود.
|
||||
migrate.git.description=کوچ یک مخزن فقط از یک سرویس Git.
|
||||
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.onedev.description=مهاجرت داده از code.onedev.io یا پیادهسازیهای دیگر OneDev.
|
||||
migrate.codebase.description=مهاجر داده ها از codebasehq.com.
|
||||
|
@ -951,6 +951,7 @@ file_copy_permalink=پرمالینک را کپی کنید
|
|||
video_not_supported_in_browser=مرورگر شما از تگ video که در HTML5 تعریف شده است، پشتیبانی نمی کند.
|
||||
audio_not_supported_in_browser=مرورگر شما از تگ audio که در HTML5 تعریف شده است، پشتیبانی نمی کند.
|
||||
stored_lfs=ذخیره شده با GIT LFS
|
||||
stored_annex=ذخیره شده با GIT Annex
|
||||
symbolic_link=پیوند نمادین
|
||||
commit_graph=نمودار کامیت
|
||||
commit_graph.select=انتخاب برنچها
|
||||
|
@ -968,6 +969,7 @@ editor.upload_file=بارگذاری پرونده
|
|||
editor.edit_file=ویرایش پرونده
|
||||
editor.preview_changes=پیش نمایش تغییرات
|
||||
editor.cannot_edit_lfs_files=پرونده های LFS در صحفه وب قابل تغییر نیست.
|
||||
editor.cannot_edit_annex_files=پرونده های Annex در صحفه وب قابل تغییر نیست.
|
||||
editor.cannot_edit_non_text_files=پروندههای دودویی در صفحه وب قابل تغییر نیست.
|
||||
editor.edit_this_file=ویرایش پرونده
|
||||
editor.this_file_locked=پرونده قفل شده است
|
||||
|
@ -2291,7 +2293,7 @@ auths.bind_password=اتصال گذرواژه
|
|||
auths.user_base=پایگاه جستجوی کاربر
|
||||
auths.user_dn=کاربر DN
|
||||
auths.attribute_username=ویژگی نام کاربری
|
||||
auths.attribute_username_placeholder=نام کاربری را خالی بگذارید برای انتخاب نام کاربری gitea انتخاب شود.
|
||||
auths.attribute_username_placeholder=نام کاربری را خالی بگذارید برای انتخاب نام کاربری Forgejo انتخاب شود.
|
||||
auths.attribute_name=ویژگی نام
|
||||
auths.attribute_surname=ویژگی نام خانوادگی
|
||||
auths.attribute_mail=ویژگی ایمیل
|
||||
|
|
|
@ -119,7 +119,7 @@ new_project_column = Uusi sarake
|
|||
retry = Yritä uudelleen
|
||||
copy_type_unsupported = Tätä tiedostotyyppiä ei voi kopioida
|
||||
locked = Lukittu
|
||||
filter = Suodatin
|
||||
filter = Suodata
|
||||
filter.is_archived = Arkistoitu
|
||||
filter.not_archived = Ei arkistoitu
|
||||
filter.public = Julkinen
|
||||
|
@ -167,6 +167,8 @@ filter.not_template = Ei mallipohjat
|
|||
filter.not_mirror = Ei peilattu
|
||||
copy_path = Kopioi polku
|
||||
|
||||
concept_user_individual = Yksittäinen
|
||||
|
||||
[aria]
|
||||
footer.links = Linkit
|
||||
navbar = Navigaatiopalkki
|
||||
|
@ -205,6 +207,8 @@ table_modal.placeholder.content = Sisältö
|
|||
table_modal.label.rows = Rivit
|
||||
table_modal.label.columns = Sarakkeet
|
||||
|
||||
buttons.unindent.tooltip = Vähennä sisennystä yhden tason verran
|
||||
|
||||
[filter]
|
||||
string.asc = A - Ö
|
||||
string.desc = Ö - A
|
||||
|
@ -231,7 +235,7 @@ install_desc = Suorita alustallesi suunnattu <a target="_blank" rel="noopener no
|
|||
|
||||
[install]
|
||||
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.
|
||||
require_db_desc=Forgejo tarvitsee toimiakseen MySQL-, PostgreSQL-, SQLite3- tai TiDB- (MySQL-protokolla) tietokannan.
|
||||
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.description=Käytä Libravatar-palvelua profiilikuvien hakemiseen.
|
||||
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.
|
||||
openid_signin=Ota OpenID-kirjautuminen käyttöön
|
||||
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_enable_timetracking=Ota ajanseuranta oletusarvoisesti käyttöön
|
||||
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'.
|
||||
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 .
|
||||
|
@ -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.
|
||||
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]
|
||||
uname_holder=Käyttäjätunnus tai sähköpostiosoite
|
||||
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.
|
||||
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.
|
||||
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]
|
||||
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.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.
|
||||
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]
|
||||
yes=Kyllä
|
||||
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:
|
||||
show_on_map = Näytä paikka kartalla
|
||||
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]
|
||||
profile=Profiili
|
||||
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
|
||||
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
|
||||
update_avatar=Päivitä 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
|
||||
manage_emails=Hallitse sähköpostiosoitteita
|
||||
manage_themes=Valitse oletusteema
|
||||
manage_openid=Hallitse OpenID osoitteita
|
||||
theme_desc=Tämä on sivuston oletusteemasi.
|
||||
manage_themes=Oletusteema
|
||||
manage_openid=OpenID-osoitteet
|
||||
theme_desc=Tätä teemaa käytetään verkkosivuston käyttöliittymässä, kun olet sisäänkirjautuneena.
|
||||
primary=Ensisijainen
|
||||
activated=Aktivoitu
|
||||
requires_activation=Vaatii aktivoinnin
|
||||
|
@ -717,7 +750,7 @@ theme_update_error=Valittua teemaa ei löydy.
|
|||
openid_deletion=Poista OpenID-osoite
|
||||
openid_deletion_success=OpenID-osoite on poistettu.
|
||||
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_openid=Lisää OpenID URI
|
||||
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_gpg_keys=Hallitse GPG-avaimia
|
||||
add_key=Lisää avain
|
||||
ssh_desc=Nämä julkiset SSH-avaimet on liitetty tiliisi. Vastaavat yksityiset avaimet antavat täyden pääsyn repoihisi.
|
||||
gpg_desc=Nämä julkiset GPG-avaimet on liitetty tiliisi. Pidä yksityiset avaimet turvassa, koska ne mahdollistavat committien todentamisen.
|
||||
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, 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.
|
||||
gpg_helper=<strong>Tarvitsetko apua?</strong> Katso GitHubin opas <a href="%s">GPG</a>:stä.
|
||||
add_new_key=Lisää SSH 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_gpg_placeholder=Alkaa sanoilla '-----BEGIN PGP PUBLIC KEY BLOCK-----'
|
||||
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-----"
|
||||
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_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_code=echo "%s" | gpg -a --default-key %s --detach-sig
|
||||
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_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
|
||||
|
@ -756,7 +789,7 @@ ssh_token_required=Sinun täytyy antaa allekirjoitus alla olevalle pääsymerkil
|
|||
ssh_token=Pääsymerkki
|
||||
ssh_token_help=Voit luoda allekirjoituksen käyttäen:
|
||||
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
|
||||
key_id=Avain ID
|
||||
key_name=Avaimen nimi
|
||||
|
@ -774,7 +807,7 @@ can_read_info=Luku
|
|||
can_write_info=Kirjoitus
|
||||
show_openid=Näytä profiilissa
|
||||
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_access_token=Hallitse pääsymerkkejä
|
||||
|
@ -795,7 +828,7 @@ create_oauth2_application=Luo uusi OAuth2-sovellus
|
|||
create_oauth2_application_button=Luo sovellus
|
||||
oauth2_application_name=Sovelluksen nimi
|
||||
save_application=Tallenna
|
||||
oauth2_regenerate_secret=Luo secret uudelleen
|
||||
oauth2_regenerate_secret=Luo salaisuus uudelleen
|
||||
oauth2_regenerate_secret_hint=Kadotitko secretin?
|
||||
oauth2_application_edit=Muokkaa
|
||||
|
||||
|
@ -811,10 +844,10 @@ twofa_enrolled=Tiliisi on otettu käyttöön kaksivaiheinen vahvistus. Ota palau
|
|||
|
||||
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.
|
||||
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_success=Linkitetty tili on poistettu.
|
||||
|
||||
|
@ -854,11 +887,11 @@ location_placeholder = Jaa likimääräinen sijaintisi muiden kanssa
|
|||
retype_new_password = Vahvista uusi salasana
|
||||
create_oauth2_application_success = Loit uuden OAuth2-sovelluksen.
|
||||
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ä
|
||||
webauthn_register_key = Lisää turva-avain
|
||||
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.
|
||||
manage_oauth2_applications = Hallitse OAuth2-sovelluksia
|
||||
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?
|
||||
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.
|
||||
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]
|
||||
owner=Omistaja
|
||||
|
@ -917,7 +980,7 @@ repo_gitignore_helper=Valitse .gitignore-mallit
|
|||
issue_labels=Ongelmien tunnisteet
|
||||
issue_labels_helper=Valitse pohja ongelmien nimilapuille.
|
||||
license=Lisenssi
|
||||
license_helper=Valitse lisenssitiedosto.
|
||||
license_helper=Valitse lisenssitiedosto
|
||||
readme=README
|
||||
auto_init=Alusta repo (Luo .gitignore, License ja README)
|
||||
create_repo=Luo repo
|
||||
|
@ -1316,7 +1379,7 @@ activity.new_issues_count_1=Uusi ongelma
|
|||
activity.new_issues_count_n=uutta ongelmaa
|
||||
activity.new_issue_label=Avoinna
|
||||
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_file_1=%d tiedosto
|
||||
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_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.wiki_delete=Poista Wiki data
|
||||
settings.wiki_delete=Poista wikidata
|
||||
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.delete=Poista tämä repo
|
||||
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_name=Koukun nimi
|
||||
settings.githook_content=Koukun sisältö
|
||||
settings.update_githook=Päivitys koukku
|
||||
settings.update_githook=Päivitä koukku
|
||||
settings.payload_url=Kohde URL
|
||||
settings.http_method=HTTP-menetelmä
|
||||
settings.secret=Salaus
|
||||
|
@ -1406,7 +1469,7 @@ settings.event_push_desc=Git push repoon.
|
|||
settings.event_repository=Repo
|
||||
settings.event_repository_desc=Repo luotu tai poistettu.
|
||||
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_issue_assign=Ongelma määritetty
|
||||
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_comment_desc=Ongelman kommentti luotu, muokattu tai poistettu.
|
||||
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.active_helper=Tiedot käynnistetyistä tapahtumista lähetetään tähän webkoukun URL-osoitteeseen.
|
||||
settings.add_hook_success=Uusi webkoukku on lisätty.
|
||||
|
@ -1573,7 +1636,7 @@ release.ahead.commits = <strong>%d</strong> kommittia
|
|||
all_branches = Kaikki haarat
|
||||
n_tag_few = %s tagia
|
||||
settings.event_fork_desc = Repo forkattu.
|
||||
actions = Toimenpiteet
|
||||
actions = Actions
|
||||
fork_guest_user = Kirjaudu sisään forkataksesi tämän repon.
|
||||
fork_from_self = Et voi forkata omistamaasi repoa.
|
||||
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.
|
||||
wiki.page_content = Sivun sisältö
|
||||
wiki.page_title = Sivun otsikko
|
||||
activity.navbar.contributors = Kontribuuttorit
|
||||
activity.navbar.contributors = Avustajat
|
||||
n_release_few = %s julkaisua
|
||||
n_release_one = %s julkaisu
|
||||
symbolic_link = Symbolinen linkki
|
||||
|
@ -1659,7 +1722,7 @@ milestones.deletion_success = Merkkipaalu on poistettu.
|
|||
project = Projektit
|
||||
pulls.delete.title = Poistetaanko tämä vetopyyntö?
|
||||
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.archive.success = Repo arkistoitiin onnistuneesti.
|
||||
diff.comment.placeholder = Jätä kommentti
|
||||
|
@ -1703,7 +1766,7 @@ issues.close = Sulje ongelma
|
|||
issues.no_content = Ei kuvausta.
|
||||
pulls.reject_count_1 = %d muutospyyntö
|
||||
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.deletions = Poistot
|
||||
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.
|
||||
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ä
|
||||
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ä
|
||||
issues.filter_type.reviewed_by_you = Katselmoitu toimestasi
|
||||
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
|
||||
pulls.status_checks_details = Yksityiskohdat
|
||||
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]
|
||||
component_loading_info = Tämä saattaa kestää hetken…
|
||||
component_failed_to_load = Odottamaton virhe.
|
||||
|
@ -2102,8 +2247,8 @@ dashboard.operation_switch=Vaihda
|
|||
dashboard.operation_run=Suorita
|
||||
dashboard.delete_inactive_accounts=Poista kaikki aktivoimattomat käyttäjät
|
||||
dashboard.delete_repo_archives=Poista kaikki repojen arkistot (ZIP, TAR.GZ, jne..)
|
||||
dashboard.server_uptime=Palvelimen Uptime
|
||||
dashboard.current_goroutine=Nykyiset Goroutinet
|
||||
dashboard.server_uptime=Palvelimen uptime
|
||||
dashboard.current_goroutine=Nykyiset goroutinet
|
||||
dashboard.current_memory_usage=Nykyinen muistinkäyttö
|
||||
dashboard.total_memory_allocated=Yhteensä muistia varattu
|
||||
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.gc_metadata_obtained=GC metatietoja 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.total_gc_time=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.queue_length=Jonon pituus
|
||||
config.deliver_timeout=Toimitus aikakatkaisu
|
||||
config.deliver_timeout=Toimituksen aikakatkaisu
|
||||
|
||||
config.mailer_enabled=Käytössä
|
||||
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.task.started = Käynnistetty tehtävä: %[1]s
|
||||
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]
|
||||
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>
|
||||
|
@ -2441,6 +2592,16 @@ compare_branch = Vertaa
|
|||
review_dismissed_reason = Syy:
|
||||
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]
|
||||
now=nyt
|
||||
1s=1 sekunti
|
||||
|
@ -2487,6 +2648,8 @@ error.extract_sign = Allekirjoituksen purkaminen epäonnistui
|
|||
default_key = Allekirjoitettu oletusavaimella
|
||||
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]
|
||||
unit = Yksikkö
|
||||
|
||||
|
@ -2601,6 +2764,35 @@ settings.link = Linkitä tämä paketti repositorioon
|
|||
maven.download = Lataa riippuvuus suorittamalla komentorivillä:
|
||||
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.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]
|
||||
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.invalid_workflow_helper = Työnkulun asetustiedosto on virheellinen. Tarkista asetustiedosto: %s
|
||||
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]
|
||||
type-1.display_name = Yksittäinen projekti
|
||||
deleted.display_name = Poistettu projekti
|
||||
|
|
|
@ -641,6 +641,8 @@ Biography = Byograpya
|
|||
Location = Lokasyon
|
||||
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]
|
||||
joined_on = Sumali noong %s
|
||||
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)
|
||||
change_username_prompt = Tandaan: Ang pagpalit ng username ay papalitan din ang URL ng iyong account.
|
||||
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.
|
||||
comment_type_group_milestone = Milestone
|
||||
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
|
||||
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.
|
||||
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_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.
|
||||
|
@ -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>.
|
||||
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>.
|
||||
pronouns_custom_label = Mga pasadyang pronoun
|
||||
user_block_yourself = Hindi mo maaring harangan ang sarili mo.
|
||||
|
||||
[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.
|
||||
|
@ -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>.
|
||||
object_format_helper = Object format ng repositoryo. Hindi mababago mamaya. Ang SHA1 ang pinaka-compatible.
|
||||
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_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
|
||||
|
@ -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_branch = Hindi umiiral ang daanang %[1]s sa branch %[2]s
|
||||
migrate_items_pullrequests = Mga hiling sa paghila
|
||||
archive.pull.nocomment = Naka-archive ang repo na 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.pull.nocomment = Naka-archive ang repositoryong ito. Hindi ka makakakomento sa 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.
|
||||
pulls = Mga 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_merge_requests = Mga merge request
|
||||
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_releases = Mga paglabas
|
||||
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.
|
||||
branch.already_exists = Umiiral na ang branch na may pangalan na "%s".
|
||||
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]
|
||||
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.stop_zombie_tasks = Itigil ang mga zombie action task
|
||||
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.password_helper = Iwanang walang laman ang password upang panatilihing hindi nabago.
|
||||
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:
|
||||
compare_branch = Ikumpara
|
||||
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>`
|
||||
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>`
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
[common]
|
||||
home=Accueil
|
||||
dashboard=Tableau de bord
|
||||
explore=Explorateur
|
||||
explore=Explorer
|
||||
help=Aide
|
||||
logo=Logo
|
||||
sign_in=Connexion
|
||||
|
@ -165,6 +165,7 @@ error413 = Votre quota est épuisé.
|
|||
new_repo.title = Nouveau dépôt
|
||||
new_migrate.link = Nouvelle migration
|
||||
new_org.link = Nouvelle organisation
|
||||
copy_path = Copier le chemin
|
||||
|
||||
[aria]
|
||||
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_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.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.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.
|
||||
|
@ -680,6 +681,8 @@ Website = Site web
|
|||
Location = Emplacement
|
||||
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]
|
||||
change_avatar=Changer votre avatar…
|
||||
joined_on=Inscrit le %s
|
||||
|
@ -744,9 +747,9 @@ uid=UID
|
|||
webauthn=Clés de sécurité à deux facteurs
|
||||
|
||||
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
|
||||
profile_desc=Contrôlez comment votre profil est affiché aux autres utilisateurs. Votre adresse courriel principale sera utilisée pour les notifications, la récupération de mot de passe et les opérations Git basées sur le Web.
|
||||
profile_desc=À propos de vous
|
||||
password_username_disabled=Les utilisateurs externes ne sont pas autorisés à modifier leur nom d'utilisateur. Veuillez contacter l'administrateur de votre site pour plus de détails.
|
||||
full_name=Nom complet
|
||||
website=Site Web
|
||||
|
@ -811,7 +814,7 @@ manage_emails=Gérer les adresses courriels
|
|||
manage_themes=Thème par défaut
|
||||
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.
|
||||
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
|
||||
activated=Activé
|
||||
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.
|
||||
add_openid_success=La nouvelle adresse OpenID a été ajoutée.
|
||||
keep_email_private=Cacher l'adresse courriel
|
||||
keep_email_private_popup=Ceci masquera votre adresse courriel de votre profil. Elle ne sera plus la valeur par défaut pour les commits créés par l'interface web, tel que des ajouts de fichiers ou des éditions, et ne sera pas utilisée pour fusionner les commits. Un courriel special %s peut être utilisé pour établir la relation entre des commits et votre compte. Notez que changer cette option n'aura pas d'effet sur les commits existants.
|
||||
keep_email_private_popup=Ceci masquera votre adresse courriel de votre profil. Elle ne sera plus la valeur par défaut pour les commits créés par l'interface web, tel que des ajouts de fichiers ou des éditions, et ne sera pas utilisée pour fusionner les commits. Un courriel special %s peut être utilisé pour établir la relation entre des commits et votre compte. Cette option n'aura pas d'effet sur les commits existants.
|
||||
openid_desc=OpenID vous permet de confier l'authentification à une tierce partie.
|
||||
|
||||
manage_ssh_keys=Gérer les clés SSH
|
||||
|
@ -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.
|
||||
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.
|
||||
user_block_yourself = Vous ne pouvez pas vous bloquer vous même.
|
||||
|
||||
pronouns_custom_label = Pronoms personnalisés
|
||||
|
||||
[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_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
|
||||
|
@ -1095,11 +1101,11 @@ issue_labels=Étiquettes
|
|||
issue_labels_helper=Sélectionner un jeu d'étiquettes
|
||||
license=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_helper=Choisissez un modèle de fichier LISEZMOI
|
||||
readme_helper_desc=Le README est l'endroit idéal pour décrire votre projet et accueillir des contributeurs.
|
||||
auto_init=Initialiser le dépôt (avec un .gitignore, une Licence et un README.md)
|
||||
auto_init=Initialiser le dépôt
|
||||
trust_model_helper=Choisissez, parmi les éléments suivants, les règles de confiance des signatures paraphant les révisions :
|
||||
trust_model_helper_collaborator=Collaborateur : ne se fier qu'aux signatures des collaborateurs du dépôt
|
||||
trust_model_helper_committer=Auteur : ne se fier qu'aux signatures des auteurs de révisions
|
||||
|
@ -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.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.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.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.
|
||||
|
@ -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.
|
||||
audio_not_supported_in_browser=Votre navigateur ne supporte pas la balise « audio » HTML5.
|
||||
stored_lfs=Stocké avec Git LFS
|
||||
stored_annex=Stocké avec Git Annex
|
||||
symbolic_link=Lien symbolique
|
||||
executable_file=Fichier exécutable
|
||||
vendored = Vendored
|
||||
|
@ -1337,6 +1344,7 @@ editor.upload_file=Téléverser un fichier
|
|||
editor.edit_file=Modifier le fichier
|
||||
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_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.edit_this_file=Modifier le fichier
|
||||
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.create_comment=Commenter
|
||||
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.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>.`
|
||||
|
@ -1777,7 +1785,7 @@ issues.review.approve=a approuvé ces modifications %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_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.reject=a requis les changements %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.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.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.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.
|
||||
|
@ -2844,6 +2852,27 @@ diff.git-notes.remove-body = Cette note sera supprimée.
|
|||
diff.git-notes.add = Ajouter une 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
|
||||
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]
|
||||
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>
|
||||
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>`
|
||||
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>`
|
||||
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_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>`
|
||||
|
@ -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.info=Choisissez $branch et $repository dans la liste ci-dessous.
|
||||
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.repositories=Dépôts
|
||||
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.platform=Plateforme
|
||||
container.pull=Tirez l'image depuis un terminal :
|
||||
container.digest=Empreinte :
|
||||
container.digest=Empreinte
|
||||
container.multi_arch=SE / Arch
|
||||
container.layers=Calques d'image
|
||||
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.info=Choisissez $distribution et $component dans la liste ci-dessous.
|
||||
debian.install=Pour installer le paquet, exécutez la commande suivante :
|
||||
debian.repository=Infos sur le Dépôt
|
||||
debian.repository=Infos sur le dépôt
|
||||
debian.repository.distributions=Distributions
|
||||
debian.repository.components=Composants
|
||||
debian.repository.architectures=Architectures
|
||||
|
@ -3797,6 +3826,7 @@ arch.version.conflicts = Conflits
|
|||
arch.version.replaces = Remplace
|
||||
arch.version.backup = Sauvegarde
|
||||
arch.version.makedepends = Faire des dépendances
|
||||
container.images.title = Images
|
||||
|
||||
[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
|
||||
match = Correspondance
|
||||
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...
|
||||
org_kind = Chercher les organisations...
|
||||
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