Compare commits

..

123 commits

Author SHA1 Message Date
matrss
b5ee78a3d0 Forgejo-aneksajo branding (#71)
Some checks failed
/ build-oci-image (rootful) (push) Has been cancelled
/ build-oci-image (rootless) (push) Has been cancelled
/ release (push) Has been cancelled
testing / backend-checks (push) Has been cancelled
testing / frontend-checks (push) Has been cancelled
testing / test-unit (push) Has been cancelled
testing / test-e2e (push) Has been cancelled
testing / test-remote-cacher (redis) (push) Has been cancelled
testing / test-remote-cacher (valkey) (push) Has been cancelled
testing / test-remote-cacher (garnet) (push) Has been cancelled
testing / test-remote-cacher (redict) (push) Has been cancelled
testing / test-mysql (push) Has been cancelled
testing / test-pgsql (push) Has been cancelled
testing / test-sqlite (push) Has been cancelled
testing / security-check (push) Has been cancelled
The original logo was created by Caesar Schinas and is licensed under
the Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA
4.0) license.

This implies permission to remix.

Source: https://codeberg.org/forgejo/governance/src/branch/main/branding#logo

The git-annex logo is covered by

```
Copyright: 2007 Henrik Nyh <http://henrik.nyh.se/>
           2010 Joey Hess <id@joeyh.name>
           2013 John Lawrence
           2024 Yann Büchau <nobodyinperson at posteo de>
License: other
  Free to modify and redistribute with due credit, and obviously free to use.
```

Source: https://git-annex.branchable.com/logo/
Co-authored-by: Michael Hanke <michael.hanke@gmail.com>
Reviewed-on: https://codeberg.org/forgejo-aneksajo/forgejo-aneksajo/pulls/71
2025-04-10 12:52:29 +00:00
Matthias Riße
cc83c8c289 fix: set git identity for p2phttp processes (#70)
Some checks failed
/ build-oci-image (rootful) (push) Has been cancelled
/ build-oci-image (rootless) (push) Has been cancelled
Integration tests for the release process / release-simulation (push) Has been cancelled
/ release (push) Has been cancelled
testing / backend-checks (push) Has been cancelled
testing / frontend-checks (push) Has been cancelled
testing / test-unit (push) Has been cancelled
testing / test-e2e (push) Has been cancelled
testing / test-remote-cacher (redis) (push) Has been cancelled
testing / test-remote-cacher (valkey) (push) Has been cancelled
testing / test-remote-cacher (garnet) (push) Has been cancelled
testing / test-remote-cacher (redict) (push) Has been cancelled
testing / test-mysql (push) Has been cancelled
testing / test-pgsql (push) Has been cancelled
testing / test-sqlite (push) Has been cancelled
testing / security-check (push) Has been cancelled
In some situations it could happen that `git annex p2phttp` needs some
kind of maintenance work resulting in a commit, but without a configured
git identity p2phttp would refuse to run. This could break p2phttp
support.

Setting `GIT_AUTHOR_{NAME,EMAIL}` should remedy this issue.

Fixes #69.

## Checklist

The [contributor guide](https://forgejo.org/docs/next/contributor/) contains information that will be helpful to first time contributors. There also are a few [conditions for merging Pull Requests in Forgejo repositories](https://codeberg.org/forgejo/governance/src/branch/main/PullRequestsAgreement.md). You are also welcome to join the [Forgejo development chatroom](https://matrix.to/#/#forgejo-development:matrix.org).

### Tests

- I added test coverage for Go changes...
  - [ ] in their respective `*_test.go` for unit tests.
  - [ ] in the `tests/integration` directory if it involves interactions with a live Forgejo server.
- I added test coverage for JavaScript changes...
  - [ ] in `web_src/js/*.test.js` if it can be unit tested.
  - [ ] in `tests/e2e/*.test.e2e.js` if it requires interactions with a live Forgejo server (see also the [developer guide for JavaScript testing](https://codeberg.org/forgejo/forgejo/src/branch/forgejo/tests/e2e/README.md#end-to-end-tests)).

### Documentation

- [ ] I created a pull request [to the documentation](https://codeberg.org/forgejo/docs) to explain to Forgejo users how to use this change.
- [x] I did not document these changes and I do not expect someone else to do it.

### Release notes

- [x] I do not want this change to show in the release notes.
- [ ] I want the title to show in the release notes with a link to this pull request.
- [ ] I want the content of the `release-notes/<pull request number>.md` to be be used for the release notes instead of the title.

Reviewed-on: https://codeberg.org/forgejo-aneksajo/forgejo-aneksajo/pulls/70
Co-authored-by: Matthias Riße <m.risse@fz-juelich.de>
Co-committed-by: Matthias Riße <m.risse@fz-juelich.de>
2025-03-24 09:06:59 +01:00
Matthias Riße
be84c51de7 feat: copy annexed files on pull request merge (#62)
This changes the PR merge process such that annexed files contained in the to-be-merged commits are copied from the head repository to the base repository as part of the merge, similar to how it is done for LFS files.

Fixes #11.

## Checklist

The [contributor guide](https://forgejo.org/docs/next/contributor/) contains information that will be helpful to first time contributors. There also are a few [conditions for merging Pull Requests in Forgejo repositories](https://codeberg.org/forgejo/governance/src/branch/main/PullRequestsAgreement.md). You are also welcome to join the [Forgejo development chatroom](https://matrix.to/#/#forgejo-development:matrix.org).

### Tests

- I added test coverage for Go changes...
  - [ ] in their respective `*_test.go` for unit tests.
  - [x] in the `tests/integration` directory if it involves interactions with a live Forgejo server.
- I added test coverage for JavaScript changes...
  - [ ] in `web_src/js/*.test.js` if it can be unit tested.
  - [ ] in `tests/e2e/*.test.e2e.js` if it requires interactions with a live Forgejo server (see also the [developer guide for JavaScript testing](https://codeberg.org/forgejo/forgejo/src/branch/forgejo/tests/e2e/README.md#end-to-end-tests)).

### Documentation

- [ ] I created a pull request [to the documentation](https://codeberg.org/forgejo/docs) to explain to Forgejo users how to use this change.
- [ ] I did not document these changes and I do not expect someone else to do it.

### Release notes

- [x] I do not want this change to show in the release notes.
- [ ] I want the title to show in the release notes with a link to this pull request.
- [ ] I want the content of the `release-notes/<pull request number>.md` to be be used for the release notes instead of the title.

Reviewed-on: https://codeberg.org/forgejo-aneksajo/forgejo-aneksajo/pulls/62
Co-authored-by: Matthias Riße <m.risse@fz-juelich.de>
Co-committed-by: Matthias Riße <m.risse@fz-juelich.de>
2025-03-24 09:06:59 +01:00
Matthias Riße
5f1f4f7a87 fix: improve git-annex UUID cache update times (#65)
Globbing for the config files is marginally faster than walking the
directory and checking for config files. Replacing the expensive calls
to `git config` for each repository with reading the repository's config
as an ini file is two orders of magnitude faster.

All in all this reduces the required time initializing the cache for
approx. 3000 repositories from approx. 5s to 50ms.

The server startup now also logs how long the cache update took and the
cache update is only done if p2phttp support is not disabled, because
p2phttp support is currently the only feature that requires the UUID
cache.

Fixes #63, fixes #64.

## Checklist

The [contributor guide](https://forgejo.org/docs/next/contributor/) contains information that will be helpful to first time contributors. There also are a few [conditions for merging Pull Requests in Forgejo repositories](https://codeberg.org/forgejo/governance/src/branch/main/PullRequestsAgreement.md). You are also welcome to join the [Forgejo development chatroom](https://matrix.to/#/#forgejo-development:matrix.org).

### Tests

- I added test coverage for Go changes...
  - [ ] in their respective `*_test.go` for unit tests.
  - [ ] in the `tests/integration` directory if it involves interactions with a live Forgejo server.
- I added test coverage for JavaScript changes...
  - [ ] in `web_src/js/*.test.js` if it can be unit tested.
  - [ ] in `tests/e2e/*.test.e2e.js` if it requires interactions with a live Forgejo server (see also the [developer guide for JavaScript testing](https://codeberg.org/forgejo/forgejo/src/branch/forgejo/tests/e2e/README.md#end-to-end-tests)).

### Documentation

- [ ] I created a pull request [to the documentation](https://codeberg.org/forgejo/docs) to explain to Forgejo users how to use this change.
- [x] I did not document these changes and I do not expect someone else to do it.

### Release notes

- [x] I do not want this change to show in the release notes.
- [ ] I want the title to show in the release notes with a link to this pull request.
- [ ] I want the content of the `release-notes/<pull request number>.md` to be be used for the release notes instead of the title.

Reviewed-on: https://codeberg.org/forgejo-aneksajo/forgejo-aneksajo/pulls/65
Co-authored-by: Matthias Riße <m.risse@fz-juelich.de>
Co-committed-by: Matthias Riße <m.risse@fz-juelich.de>
2025-03-24 09:06:59 +01:00
Matthias Riße
e741b44667 Use annexed content for comparison in diffs (#57)
This makes it such that annexed files are treated like plain git files
in comparisons (e.g. the diff of a commit).

It also changes the image diff viewer to show a more reasonable error
message when one of the annexed files under comparison is missing.

Fixes #56.

Reviewed-on: https://codeberg.org/forgejo-aneksajo/forgejo-aneksajo/pulls/57
Co-authored-by: Matthias Riße <m.risse@fz-juelich.de>
Co-committed-by: Matthias Riße <m.risse@fz-juelich.de>
2025-03-24 09:06:59 +01:00
Matthias Riße
85812d8b01 Invalidate outdated annex UUID cache entries (#60)
The previous implementation could lead to errors e.g. when a repository
was removed and a new one with a new UUID was created under the same
name. This now checks the validity of the retrieved cache entry every
time and invalidates the cache if necessary.

Reviewed-on: https://codeberg.org/forgejo-aneksajo/forgejo-aneksajo/pulls/60
Co-authored-by: Matthias Riße <m.risse@fz-juelich.de>
Co-committed-by: Matthias Riße <m.risse@fz-juelich.de>
2025-03-24 09:06:59 +01:00
Matthias Riße
24e2a6f41d Pre-populate the git-annex UUID cache at startup (#59)
This eliminates the wait time for the first p2phttp connection since
server startup at the cost of adding that time to the startup itself.

Reviewed-on: https://codeberg.org/forgejo-aneksajo/forgejo-aneksajo/pulls/59
Co-authored-by: Matthias Riße <m.risse@fz-juelich.de>
Co-committed-by: Matthias Riße <m.risse@fz-juelich.de>
2025-03-24 09:06:59 +01:00
Matthias Riße
4521f8f35c Cache git-annex UUID to repository path mappings (#54)
Always walking the filesystem and searching for UUIDs slowed p2phttp
operations down significantly on a production server with more than a
handful of repositories. This caching strategy ensures that only the
first call is rather slow, and subsequent ones should be much faster.

This should better be implemented as a background job, but for now this
is a simple solution to the problem.

Fixes #53.

Reviewed-on: https://codeberg.org/forgejo-aneksajo/forgejo-aneksajo/pulls/54
Co-authored-by: Matthias Riße <m.risse@fz-juelich.de>
Co-committed-by: Matthias Riße <m.risse@fz-juelich.de>
2025-03-24 09:06:59 +01:00
Matthias Riße
ea1ba91e6e Explicitly set http(s) default ports in annex.url (#55)
Otherwise, git-annex tries to use its own default port (9417) and fails.

Fixes #52.

Reviewed-on: https://codeberg.org/forgejo-aneksajo/forgejo-aneksajo/pulls/55
Co-authored-by: Matthias Riße <m.risse@fz-juelich.de>
Co-committed-by: Matthias Riße <m.risse@fz-juelich.de>
2025-03-24 09:06:59 +01:00
Matthias Riße
0e5e06f75a Fix Forgejo version in published OCI images (#51)
The Forgejo version is derived from the git history, so the image build
needs to happen in the context of a full repository clone.

Also, the post-processing of the version string needs to remove the
second occurrence of "-g", as the first one is now part of the added
"-git-annex" part.

Reviewed-on: https://codeberg.org/forgejo-aneksajo/forgejo-aneksajo/pulls/51
Co-authored-by: Matthias Riße <m.risse@fz-juelich.de>
Co-committed-by: Matthias Riße <m.risse@fz-juelich.de>
2025-03-24 09:06:59 +01:00
Matthias Riße
b1c7251690 Add an OCI image build and publish workflow (#50)
Fixes #49.

Reviewed-on: https://codeberg.org/forgejo-aneksajo/forgejo-aneksajo/pulls/50
Co-authored-by: Matthias Riße <m.risse@fz-juelich.de>
Co-committed-by: Matthias Riße <m.risse@fz-juelich.de>
2025-03-24 09:06:59 +01:00
Matthias Riße
795047adac Simplify git blob to annex key lookup (#43)
Fixes #27.

Reviewed-on: https://codeberg.org/matrss/forgejo-aneksajo/pulls/43
Co-authored-by: Matthias Riße <m.risse@fz-juelich.de>
Co-committed-by: Matthias Riße <m.risse@fz-juelich.de>
2025-03-24 09:06:59 +01:00
Matthias Riße
18df280fc1 Add git-annex p2phttp support (#42)
This adds a new endpoint under `/git-annex-p2phttp` which acts as an
authenticating proxy to git-annex' p2phttp server. This makes it
possible to set `annex+<server-url>/git-annex-p2phttp` as
`remote.<name>.annexurl` and use git-annex fully over http(s) with the
normal credentials and access tokens provided by Forgejo.

Fixes #25.

Reviewed-on: https://codeberg.org/matrss/forgejo-aneksajo/pulls/42
Co-authored-by: Matthias Riße <m.risse@fz-juelich.de>
Co-committed-by: Matthias Riße <m.risse@fz-juelich.de>
2025-03-24 09:06:59 +01:00
Matthias Riße
26ecdc330b Add tests for git annex drop (#47)
This adds some rudimentary tests that drop files in a repository's clone
as well as from a repository on Forgejo.

Fixes #4.

Reviewed-on: https://codeberg.org/matrss/forgejo-aneksajo/pulls/47
Co-authored-by: Matthias Riße <m.risse@fz-juelich.de>
Co-committed-by: Matthias Riße <m.risse@fz-juelich.de>
2025-03-24 09:06:59 +01:00
Matthias Riße
9d950c48a0 Add git-annex' testremote to the test suite (#48)
The `git annex testremote` command runs a built-in set of tests against
a remote. It cannot hurt to check our implementation of a git-annex
remote against it too.

Reviewed-on: https://codeberg.org/matrss/forgejo-aneksajo/pulls/48
Co-authored-by: Matthias Riße <m.risse@fz-juelich.de>
Co-committed-by: Matthias Riße <m.risse@fz-juelich.de>
2025-03-24 09:06:59 +01:00
Matthias Riße
90fea4b901 Only upload to annex in doAnnexUploadTest (#46)
The previous implementation both uploaded to the annex and pushed to the
git repository. This meant that the tests checking that uploads without
permission fail actually could pass when the git push failed but the
git-annex upload didn't. The tests didn't catch the situation where
unauthorized users could modify the annex.

Reviewed-on: https://codeberg.org/matrss/forgejo-aneksajo/pulls/46
Co-authored-by: Matthias Riße <m.risse@fz-juelich.de>
Co-committed-by: Matthias Riße <m.risse@fz-juelich.de>
2025-03-24 09:06:59 +01:00
Matthias Riße
1e539805da Use PATH when looking for git commands (#44)
This fixes some issues when using a git-annex that is installed in a
different location than where git is installed, e.g. when using the
git-annex-standalone release or one installed with nix.

Reviewed-on: https://codeberg.org/matrss/forgejo-aneksajo/pulls/44
Co-authored-by: Matthias Riße <m.risse@fz-juelich.de>
Co-committed-by: Matthias Riße <m.risse@fz-juelich.de>
2025-03-24 09:06:59 +01:00
Matthias Riße
66e54e33fe Allow anonymous HEAD requests to annex/objects (#41)
Git-annex emits HEAD requests for keys while trying to drop them from a
repository that was cloned via http. Forgejo asked for authentication
for these HEAD requests. This meant that cloning and getting files was
possible without authentication, but dropping was not.

Since the response to a HEAD request is a subset of the response to a
GET request it is safe to make those unauthenticated as well. That is
what this change does, although limited to the
:username/:reponame/annex/objects endpoint.

Fixes #40.

Reviewed-on: https://codeberg.org/matrss/forgejo-aneksajo/pulls/41
Co-authored-by: Matthias Riße <m.risse@fz-juelich.de>
Co-committed-by: Matthias Riße <m.risse@fz-juelich.de>
2025-03-24 09:06:59 +01:00
Michael Hanke
195388ba62 Elevate external markup renderer interface for annexed file content (#36)
Previously, an external renderer that matched on an annexed file would
only see its content streamed via `STDIN`, or a temporary file with a copy
of its content would be generated and passed-by-filepath (with
`IS_INPUT_FILE=true`). Whether that happens, is also subject to
`MAX_DISPLAY_FILE_SIZE` (which defaults to 8MB).

This was problematic, because annexed files tend to be large. Moreover,
if present, they already exist as write-protected files on the
file-system. Creating a copy is both expensive and serves no particular
purpose.

This commit changes how external renderers are called.

1) With `IS_INPUT_FILE=true`, the renderer is passed the true location
   of an annex key, if present, and an empty path, if not.
2) The original, repository-relative path of the rendering target is
   made available to the renderer via the `GITEA_RELATIVE_PATH`
   environment variable.

To achieve a lean implementation, the `Blob` of the rendering target
is passed on to the `RenderContext` (because the implementation of
the annex-related functionality is centered on this dtype.

This change makes it less costly to increase `MAX_DISPLAY_FILE_SIZE`,
in order to make large, annexed files eligible for markup rendering,
because no content copies will be made any longer.

External renderers can now use the original file path, with the full
original filename, including extensions, for decision making. For
example, to detect particular compression formats based in a file name
extension, or to alter the rendering based on contextual information
encoded in the file path (e.g., a multi-file data structure with a
particular organization pattern).

Apart from the additional environment variable, there is no change to
the handling of renderers that take their input via `STDIN` (i.e.,
`IS_INPUT_FILE=false`).

Fixes #35.

Reviewed-on: https://codeberg.org/matrss/forgejo-aneksajo/pulls/36
Reviewed-by: matrss <matrss@noreply.codeberg.org>
Co-authored-by: Michael Hanke <michael.hanke@gmail.com>
Co-committed-by: Michael Hanke <michael.hanke@gmail.com>
2025-03-24 09:06:59 +01:00
Matthias Riße
57a8ac3a31 Change the icon for annexed files to file-binary (#29)
Fixes #26.

Reviewed-on: https://codeberg.org/matrss/forgejo-aneksajo/pulls/29
Co-authored-by: Matthias Riße <m.risse@fz-juelich.de>
Co-committed-by: Matthias Riße <m.risse@fz-juelich.de>
2025-03-24 09:06:59 +01:00
Matthias Riße
a9528fcdbd Improve views for annexed but missing files (#28)
Previously, trying to view files that were annexed, but missing, just
led to an uninformative error 500. This was rather confusing.

With these changes it now shows the pointer target instead of the
(missing) content of the file, and also indicates this situation in the
"stored with git-annex" message. For semantic correctness views for
missing files return a 404 instead of a 200, as they would with the
content present.

Fixes #7, fixes #13.

Reviewed-on: https://codeberg.org/matrss/forgejo-aneksajo/pulls/28
Co-authored-by: Matthias Riße <m.risse@fz-juelich.de>
Co-committed-by: Matthias Riße <m.risse@fz-juelich.de>
2025-03-24 09:06:59 +01:00
Michael Hanke
1c7e2bce53 Add git-annex also to the rootless container (#24)
Same as 89f8aa0bf5, but for the rootless container.

Reviewed-on: https://codeberg.org/matrss/forgejo-aneksajo/pulls/24
Reviewed-by: matrss <matrss@noreply.codeberg.org>
Co-authored-by: Michael Hanke <michael.hanke@gmail.com>
Co-committed-by: Michael Hanke <michael.hanke@gmail.com>
2025-03-24 09:06:59 +01:00
Matthias Riße
2d00e46560 Git-annex web uploads (#21)
This implements support for uploading files into the annex using the web
interface.

If a repository is a git-annex-enabled repository all files will be
added to it using git annex add. This means that the repository's
configuration for what to put into the annex (annex.largefiles in
gitattributes) will be respected.

Plain git repositories without git-annex will work as before, directly
uploading to git.

Fixes #5.

Reviewed-on: https://codeberg.org/matrss/forgejo-aneksajo/pulls/21
Co-authored-by: Matthias Riße <m.risse@fz-juelich.de>
Co-committed-by: Matthias Riße <m.risse@fz-juelich.de>
2025-03-24 09:06:12 +01:00
Matthias Riße
a3b7d9242e Error if git-annex is enabled but missing (#16)
Copied from https://github.com/neuropoly/gitea/pull/47

This adds a check so that if `setting.Annex.Enabled` is true and git-annex is not in the PATH Forgejo will abort on startup with a reasonable error message.

Fixes #15.

Reviewed-on: https://codeberg.org/matrss/forgejo-aneksajo/pulls/16
Co-authored-by: Matthias Riße <m.risse@fz-juelich.de>
Co-committed-by: Matthias Riße <m.risse@fz-juelich.de>
2025-03-24 09:06:12 +01:00
Matthias Riße
34af470aa8 Add git-annex to docker image 2025-03-24 09:06:12 +01:00
Matthias Riße
21bf0a8fe0 Adapt patch to upstream changes
Test with different objectFormats.
2025-03-24 09:06:12 +01:00
Nick
65028f6abf git-annex: views for annex files
This updates the repo index/file view endpoints so annex files match the way
LFS files are rendered, making annexed files accessible via the web instead of
being black boxes only accessible by git clone.

This mostly just duplicates the existing LFS logic. It doesn't try to combine itself
with the existing logic, to make merging with upstream easier. If upstream ever
decides to accept, I would like to try to merge the redundant logic.

The one bit that doesn't directly copy LFS is my choice to hide annex-symlinks.
LFS files are always _pointer files_ and therefore always render with the "file"
icon and no special label, but annex files come in two flavours: symlinks or
pointer files. I've conflated both kinds to try to give a consistent experience.

The tests in here ensure the correct download link (/media, from the last PR)
renders in both the toolbar and, if a binary file (like most annexed files will be),
in the main pane, but it also adds quite a bit of code to make sure text files
that happen to be annexed are dug out and rendered inline like LFS files are.
2025-03-24 09:06:12 +01:00
Matthias Riße
d2c9ac7697 Adapt patch to upstream changes
Use tests.FileCmp instead of util.FileCmp.
2025-03-24 09:02:04 +01:00
Matthias Riße
e335b49274 Adapt patch to upstream changes
Test with different objectFormats.
2025-03-24 09:02:04 +01:00
Nick
ae30c0fa0e git-annex: make /media/ download annexed content
Previously, Gitea's LFS support allowed direct-downloads of LFS content,
via http://$HOSTNAME:$PORT/$USER/$REPO/media/branch/$BRANCH/$FILE
Expand that grace to git-annex too. Now /media should provide the
relevant *content* from the .git/annex/objects/ folder.

This adds tests too. And expands the tests to try symlink-based annexing,
since /media implicitly supports both that and pointer-file-based annexing.
2025-03-24 09:02:04 +01:00
Matthias Riße
62390abab9 Adapt patch to upstream changes
The git repository must be closed after using it. Without this change
some tests started to fail due to the lingering repository running into
a timeout.
2025-03-24 09:02:04 +01:00
Nick
096cd1a6c8 git-annex: create modules/annex
This moves the `annexObjectPath()` helper out of the tests and into a
dedicated sub-package as `annex.ContentLocation()`, and expands it with
`.Pointer()` (which validates using `git annex examinekey`),
`.IsAnnexed()` and `.Content()` to make it a more useful module.

The tests retain their own wrapper version of `ContentLocation()`
because I tried to follow close to the API modules/lfs uses, which in
terms of abstract `git.Blob` and `git.TreeEntry` objects, not in terms
of `repoPath string`s which are more convenient for the tests.
2025-03-24 09:02:04 +01:00
Matthias Riße
75794e1ab9 Adapt patch to upstream changes
The "context_service" import was changed to use the default name of just
"context". The patch set had to be adapted for that.
2025-03-24 09:02:03 +01:00
Matthias Riße
383164e808 Adapt patch to upstream changes
Usage of `path` was replaced by `path/filepath` in upstream forgejo, and
it made sense to use that as well where `path` was previously used. The
`setHeaderCacheForever` function and the `sendFile` method had their
signature changed.
2025-03-24 09:02:03 +01:00
Matthias Riße
e05f96cfaf Fix exit code check for git command
The err.IsExitCode method was changed to a function IsErrorExitCode
taking err as its first argument in
1e7a6483b8.
2025-03-24 09:02:03 +01:00
Matthias Riße
1c84972565 Replace m.GetOptions with m.Methods
This applies the same changes that were done in
265cd70bdb to the git-annex specific
routes as well.
2025-03-24 09:02:03 +01:00
Nick
9d902d16c6 git-annex: support downloading over HTTP
This makes HTTP symmetric with SSH clone URLs.

This gives us the fancy feature of _anonymous_ downloads,
so people can access datasets without having to set up an
account or manage ssh keys.

Previously, to access "open access" data shared this way,
users would need to:

  1. Create an account on gitea.example.com
  2. Create ssh keys
  3. Upload ssh keys (and make sure to find and upload the correct file)
  4. `git clone git@gitea.example.com:user/dataset.git`
  5. `cd dataset`
  6. `git annex get`

This cuts that down to just the last three steps:

  1. `git clone https://gitea.example.com/user/dataset.git`
  2. `cd dataset`
  3. `git annex get`

This is significantly simpler for downstream users, especially for those
unfamiliar with the command line.

Unfortunately there's no uploading. While git-annex supports uploading
over HTTP to S3 and some other special remotes, it seems to fail on a
_plain_ HTTP remote. See https://github.com/neuropoly/gitea/issues/7
and https://git-annex.branchable.com/forum/HTTP_uploads/#comment-ce28adc128fdefe4c4c49628174d9b92.

This is not a major loss since no one wants uploading to be anonymous anyway.

To support private repos, I had to hunt down and patch a secret extra security
corner that Gitea only applies to HTTP for some reason (services/auth/basic.go).

This was guided by https://git-annex.branchable.com/tips/setup_a_public_repository_on_a_web_site/

Fixes https://github.com/neuropoly/gitea/issues/3

Co-authored-by: Mathieu Guay-Paquet <mathieu.guaypaquet@polymtl.ca>
2025-03-24 09:02:03 +01:00
Nick
fc675b2ede git-annex: add configuration setting [annex].ENABLED
Fixes https://github.com/neuropoly/gitea/issues/8

Co-authored-by: Mathieu Guay-Paquet <mathieu.guaypaquet@gmail.com>
2025-03-24 09:02:03 +01:00
Matthias Riße
48fdf7540d Fix failing tests
Multiple tests that worked fine on v1.20.4-1 started to fail after the
rebase onto v1.20.5-1. These tests are:
- TestGitAnnexPermissions/Private/Owner/HTTP/Init
- TestGitAnnexPermissions/Private/Owner/HTTP/Download
- TestGitAnnexPermissions/Private/Writer/HTTP/Init
- TestGitAnnexPermissions/Private/Writer/HTTP/Download
- TestGitAnnexPermissions/Private/Reader/HTTP/Init
- TestGitAnnexPermissions/Private/Reader/HTTP/Download

What these tests have in common is that they all operate on a private
repository via http with authentication.

They broke at some point between v1.20.4-1 and v1.20.5-1, so I did a
bisect between these two points running the offending tests. This
brought me to the conclusion that
ee48c0d5ea introduced the issue.

The thing is, this commit does not change any code, it only changes the
test environment. Among other things that didn't look as suspicious, it
changes the container image from a bespoke test_env image based on
debian bullseye to a node image based on debian bookworm. Obviously,
this means that there are many version differences between the two.

The first one I looked at was git. The previous bullseye image used a
manually installed git version 2.40.0, while the bookworm image has
2.39.2 installed. Updating git in the new image did not fix the issue,
however.

The next thing I looked at was the git-annex version. Bullseye had
8.20210223 installed and worked, while bookworm used 10.20230126 when
the tests broke. So I tried my luck upgrading to a more recent version
via neurodebian (10.20240227-1~ndall+1). This still worked fine on
bullseye and now also works fine on bookworm.

I have no idea why this specific version of git-annex broke the tests,
but at least there was a commit to pinpoint this to, which isn't always
the case with docker images silently changing beneath you...

Below are the versions as they are reported by git and git-annex:

bullseye (works):

    git version 2.30.2
    git-annex version: 8.20210223
    build flags: Assistant Webapp Pairing Inotify DBus DesktopNotify TorrentParser MagicMime Feeds Testsuite S3 WebDAV
    dependency versions: aws-0.22 bloomfilter-2.0.1.0 cryptonite-0.26 DAV-1.3.4 feed-1.3.0.1 ghc-8.8.4 http-client-0.6.4.1 persistent-sqlite-2.10.6.2 torrent-10000.1.1 uuid-1.3.13 yesod-1.6.1.0
    key/value backends: SHA256E SHA256 SHA512E SHA512 SHA224E SHA224 SHA384E SHA384 SHA3_256E SHA3_256 SHA3_512E SHA3_512 SHA3_224E SHA3_224 SHA3_384E SHA3_384 SKEIN256E SKEIN256 SKEIN512E SKEIN512 BLAKE2B256E BLAKE2B256 BLAKE2B512E BLAKE2B512 BLAKE2B160E BLAKE2B160 BLAKE2B224E BLAKE2B224 BLAKE2B384E BLAKE2B384 BLAKE2BP512E BLAKE2BP512 BLAKE2S256E BLAKE2S256 BLAKE2S160E BLAKE2S160 BLAKE2S224E BLAKE2S224 BLAKE2SP256E BLAKE2SP256 BLAKE2SP224E BLAKE2SP224 SHA1E SHA1 MD5E MD5 WORM URL X*
    remote types: git gcrypt p2p S3 bup directory rsync web bittorrent webdav adb tahoe glacier ddar git-lfs httpalso borg hook external
    operating system: linux x86_64
    supported repository versions: 8
    upgrade supported from repository versions: 0 1 2 3 4 5 6 7

bullseye + git-annex from neurodebian (works):

    git version 2.30.2
    git-annex version: 10.20240227-1~ndall+1
    build flags: Assistant Webapp Pairing Inotify DBus DesktopNotify TorrentParser MagicMime Benchmark Feeds Testsuite S3 WebDAV
    dependency versions: aws-0.22.1 bloomfilter-2.0.1.0 cryptonite-0.29 DAV-1.3.4 feed-1.3.2.1 ghc-9.0.2 http-client-0.7.13.1 persistent-sqlite-2.13.1.0 torrent-10000.1.1 uuid-1.3.15 yesod-1.6.2.1
    key/value backends: SHA256E SHA256 SHA512E SHA512 SHA224E SHA224 SHA384E SHA384 SHA3_256E SHA3_256 SHA3_512E SHA3_512 SHA3_224E SHA3_224 SHA3_384E SHA3_384 SKEIN256E SKEIN256 SKEIN512E SKEIN512 BLAKE2B256E BLAKE2B256 BLAKE2B512E BLAKE2B512 BLAKE2B160E BLAKE2B160 BLAKE2B224E BLAKE2B224 BLAKE2B384E BLAKE2B384 BLAKE2BP512E BLAKE2BP512 BLAKE2S256E BLAKE2S256 BLAKE2S160E BLAKE2S160 BLAKE2S224E BLAKE2S224 BLAKE2SP256E BLAKE2SP256 BLAKE2SP224E BLAKE2SP224 SHA1E SHA1 MD5E MD5 WORM URL X*
    remote types: git gcrypt p2p S3 bup directory rsync web bittorrent webdav adb tahoe glacier ddar git-lfs httpalso borg hook external
    operating system: linux x86_64
    supported repository versions: 8 9 10
    upgrade supported from repository versions: 0 1 2 3 4 5 6 7 8 9 10

bookworm (fails):

    git version 2.39.2
    git-annex version: 10.20230126
    build flags: Assistant Webapp Pairing Inotify DBus DesktopNotify TorrentParser MagicMime Benchmark Feeds Testsuite S3 WebDAV
    dependency versions: aws-0.22.1 bloomfilter-2.0.1.0 cryptonite-0.29 DAV-1.3.4 feed-1.3.2.1 ghc-9.0.2 http-client-0.7.13.1 persistent-sqlite-2.13.1.0 torrent-10000.1.1 uuid-1.3.15 yesod-1.6.2.1
    key/value backends: SHA256E SHA256 SHA512E SHA512 SHA224E SHA224 SHA384E SHA384 SHA3_256E SHA3_256 SHA3_512E SHA3_512 SHA3_224E SHA3_224 SHA3_384E SHA3_384 SKEIN256E SKEIN256 SKEIN512E SKEIN512 BLAKE2B256E BLAKE2B256 BLAKE2B512E BLAKE2B512 BLAKE2B160E BLAKE2B160 BLAKE2B224E BLAKE2B224 BLAKE2B384E BLAKE2B384 BLAKE2BP512E BLAKE2BP512 BLAKE2S256E BLAKE2S256 BLAKE2S160E BLAKE2S160 BLAKE2S224E BLAKE2S224 BLAKE2SP256E BLAKE2SP256 BLAKE2SP224E BLAKE2SP224 SHA1E SHA1 MD5E MD5 WORM URL X*
    remote types: git gcrypt p2p S3 bup directory rsync web bittorrent webdav adb tahoe glacier ddar git-lfs httpalso borg hook external
    operating system: linux x86_64
    supported repository versions: 8 9 10
    upgrade supported from repository versions: 0 1 2 3 4 5 6 7 8 9 10

bookworm + git-annex from neurodebian (works):

    git version 2.39.2
    git-annex version: 10.20240227-1~ndall+1
    build flags: Assistant Webapp Pairing Inotify DBus DesktopNotify TorrentParser MagicMime Benchmark Feeds Testsuite S3 WebDAV
    dependency versions: aws-0.22.1 bloomfilter-2.0.1.0 cryptonite-0.29 DAV-1.3.4 feed-1.3.2.1 ghc-9.0.2 http-client-0.7.13.1 persistent-sqlite-2.13.1.0 torrent-10000.1.1 uuid-1.3.15 yesod-1.6.2.1
    key/value backends: SHA256E SHA256 SHA512E SHA512 SHA224E SHA224 SHA384E SHA384 SHA3_256E SHA3_256 SHA3_512E SHA3_512 SHA3_224E SHA3_224 SHA3_384E SHA3_384 SKEIN256E SKEIN256 SKEIN512E SKEIN512 BLAKE2B256E BLAKE2B256 BLAKE2B512E BLAKE2B512 BLAKE2B160E BLAKE2B160 BLAKE2B224E BLAKE2B224 BLAKE2B384E BLAKE2B384 BLAKE2BP512E BLAKE2BP512 BLAKE2S256E BLAKE2S256 BLAKE2S160E BLAKE2S160 BLAKE2S224E BLAKE2S224 BLAKE2SP256E BLAKE2SP256 BLAKE2SP224E BLAKE2SP224 SHA1E SHA1 MD5E MD5 WORM URL X*
    remote types: git gcrypt p2p S3 bup directory rsync web bittorrent webdav adb tahoe glacier ddar git-lfs httpalso borg hook external
    operating system: linux x86_64
    supported repository versions: 8 9 10
    upgrade supported from repository versions: 0 1 2 3 4 5 6 7 8 9 10
2025-03-24 09:02:03 +01:00
Matthias Riße
d8d5ad4a19 Install git-annex in the testing workflow 2025-03-24 09:02:03 +01:00
Matthias Riße
28a9ce0083 Adapt patch to upstream changes 2025-03-24 09:02:03 +01:00
Matthias Riße
5da96c5f43 Adapt patch to upstream changes
A dead code check started to complain because FileCmp was only used in
tests. Moved the function to test_utils.
2025-03-24 09:02:03 +01:00
Matthias Riße
917375146a Adapt patch to upstream changes
Repository creation now expects an objectFormat to be specified for git.
2025-03-24 09:02:03 +01:00
Nick
c4cb418f57 git-annex tests
Fixes https://github.com/neuropoly/gitea/issues/11

Tests:

* `git annex init`
* `git annex copy --from origin`
* `git annex copy --to origin`

over:

* ssh

for:

* the owner
* a collaborator
* a read-only collaborator
* a stranger

in a

* public repo
* private repo

And then confirms:

* Deletion of the remote repo (to ensure lockdown isn't messing with us: https://git-annex.branchable.com/internals/lockdown/#comment-0cc5225dc5abe8eddeb843bfd2fdc382)

------

To support all this:

* Add util.FileCmp()
* Patch withKeyFile() so it can be nested in other copies of itself

-------

Many thanks to Mathieu for giving style tips and catching several bugs,
including a subtle one in util.filecmp() which neutered it.

Co-authored-by: Mathieu Guay-Paquet <mathieu.guay-paquet@polymtl.ca>
Co-authored-by: Matthias Riße <m.risse@fz-juelich.de>
2025-03-24 09:02:03 +01:00
Nick Guenther
b2dee3ca0e git-annex support
[git-annex](https://git-annex.branchable.com/) is a more complicated cousin to
git-lfs, storing large files in an optional-download side content.  Unlike lfs,
it allows mixing and matching storage remotes, so the content remote(s) doesn't
need to be on the same server as the git remote, making it feasible to scatter
a collection across cloud storage, old harddrives, or anywhere else storage can
be scavenged.  Since this can get complicated, fast, it has a content-tracking
database (`git annex whereis`) to help find everything later.

The use-case we imagine for including it in Gitea is just the simple case, where
we're primarily emulating git-lfs: each repo has its large content at the same URL.

Our motivation is so we can self-host https://www.datalad.org/ datasets, which
currently are only hostable by fragilely scrounging together cloud storage --
and having to manage all the credentials associated with all the pieces -- or at
https://openneuro.org which is fragile in its own ways.

Supporting git-annex also allows multiple Gitea instance to be annex remotes for
each other, mirroring the content or otherwise collaborating the split up the
hosting costs.

Enabling
--------

TODO

HTTP
----

TODO

Permission Checking
-------------------

This tweaks the API in routers/private/serv.go to expose the calling user's
computed permission, instead of just returning HTTP 403.

This doesn't fit in super well. It's the opposite from how the git-lfs support is
done, where there's a complete list of possible subcommands and their matching
permission levels, and then the API compares the requested with the actual level
and returns HTTP 403 if the check fails.

But it's necessary. The main git-annex verbs, 'git-annex-shell configlist' and
'git-annex-shell p2pstdio' are both either read-only or read-write operations,
depending on the state on disk on either end of the connection and what the user
asked it to ask for, with no way to know before git-annex examines the situation.
So tell the level via GIT_ANNEX_READONLY and trust it to handle itself.

In the older Gogs version, the permission was directly read in cmd/serv.go:

```
mode, err = db.UserAccessMode(user.ID, repo)
```
- 966e925cf3/internal/cmd/serv.go (L334)

but in Gitea permission enforcement has been centralized in the API layer.
(perhaps so the cmd layer can avoid making direct DB connections?)

Deletion
--------

git-annex has this "lockdown" feature where it tries
really quite very hard to prevent you deleting its
data, to the point that even an rm -rf won't do it:
each file in annex/objects/ is nested inside a
folder with read-only permissions.

The recommended workaround is to run chmod -R +w when
you're sure you actually want to delete a repo. See
https://git-annex.branchable.com/internals/lockdown

So we edit util.RemoveAll() to do just that, so now
it's `chmod -R +w && rm -rf` instead of just `rm -rf`.
2025-03-24 09:02:03 +01:00
Matthias Riße
cafb54ba55 Fix name in package-lock.json
The frontend-checks job started failing because the declared name does
not match the repository name.
2025-03-24 09:02:03 +01:00
Matthias Riße
0b04df9ef4 Run testing workflow unconditionally 2025-03-24 09:02:03 +01:00
forgejo-backport-action
dde3f51c72 [v10.0/forgejo] fix: use correct input for strip slashes middleware (#7306)
**Backport:** https://codeberg.org/forgejo/forgejo/pulls/7295

- The router must use the escaped path in order to ensure correct functionality (at least, that is what they say). However `req.URL.Path` shouldn't be set to the escaped path, which is fixed in this patch.
- Simplify the logic and no longer try to use `rctx.RoutePath`, this is only useful if the middleware was placed after some routing parsing was done.
- Resolves forgejo/forgejo#7294
- Resolves forgejo/forgejo#7292
- Add unit test

<!--start release-notes-assistant-->

## Release notes
<!--URL:https://codeberg.org/forgejo/forgejo-->
- Bug fixes
  - [PR](https://codeberg.org/forgejo/forgejo/pulls/7295): <!--number 7295 --><!--line 0 --><!--description dXNlIGNvcnJlY3QgaW5wdXQgZm9yIHN0cmlwIHNsYXNoZXMgbWlkZGxld2FyZQ==-->use correct input for strip slashes middleware<!--description-->
<!--end release-notes-assistant-->

Co-authored-by: Gusted <postmaster@gusted.xyz>
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/7306
Co-authored-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
Co-committed-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
2025-03-22 17:30:28 +00:00
Renovate Bot
0f5182d0c6 Update module golang.org/x/net to v0.36.0 [SECURITY] (v10.0/forgejo) (#7303)
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [golang.org/x/net](https://pkg.go.dev/golang.org/x/net) | require | minor | [`v0.33.0` -> `v0.36.0`](https://cs.opensource.google/go/x/net/+/refs/tags/v0.33.0...refs/tags/v0.36.0) |

---

> ⚠️ **Warning**
>
> Some dependencies could not be looked up. Check the Dependency Dashboard for more information.

---

### HTTP Proxy bypass using IPv6 Zone IDs in golang.org/x/net
[CVE-2025-22870](https://nvd.nist.gov/vuln/detail/CVE-2025-22870) / [GHSA-qxp5-gwg8-xv66](https://github.com/advisories/GHSA-qxp5-gwg8-xv66) / [GO-2025-3503](https://pkg.go.dev/vuln/GO-2025-3503)

<details>
<summary>More information</summary>

#### Details
Matching of hosts against proxy patterns can improperly treat an IPv6 zone ID as a hostname component. For example, when the NO_PROXY environment variable is set to "*.example.com", a request to "[::1%25.example.com]:80` will incorrectly match and not be proxied.

#### Severity
Unknown

#### References
- [https://go.dev/cl/654697](https://go.dev/cl/654697)
- [https://go.dev/issue/71984](https://go.dev/issue/71984)

This data is provided by [OSV](https://osv.dev/vulnerability/GO-2025-3503) and the [Go Vulnerability Database](https://github.com/golang/vulndb) ([CC-BY 4.0](https://github.com/golang/vulndb#license)).
</details>

---

### HTTP Proxy bypass using IPv6 Zone IDs in golang.org/x/net
[CVE-2025-22870](https://nvd.nist.gov/vuln/detail/CVE-2025-22870) / [GHSA-qxp5-gwg8-xv66](https://github.com/advisories/GHSA-qxp5-gwg8-xv66) / [GO-2025-3503](https://pkg.go.dev/vuln/GO-2025-3503)

<details>
<summary>More information</summary>

#### Details
Matching of hosts against proxy patterns can improperly treat an IPv6 zone ID as a hostname component. For example, when the NO_PROXY environment variable is set to "*.example.com", a request to "[::1%25.example.com]:80` will incorrectly match and not be proxied.

#### Severity
- CVSS Score: 4.4 / 10 (Medium)
- Vector String: `CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:L`

#### References
- [https://nvd.nist.gov/vuln/detail/CVE-2025-22870](https://nvd.nist.gov/vuln/detail/CVE-2025-22870)
- [https://go-review.googlesource.com/q/project:net](https://go-review.googlesource.com/q/project:net)
- [https://go.dev/cl/654697](https://go.dev/cl/654697)
- [https://go.dev/issue/71984](https://go.dev/issue/71984)
- [https://pkg.go.dev/vuln/GO-2025-3503](https://pkg.go.dev/vuln/GO-2025-3503)
- [http://www.openwall.com/lists/oss-security/2025/03/07/2](http://www.openwall.com/lists/oss-security/2025/03/07/2)

This data is provided by [OSV](https://osv.dev/vulnerability/GHSA-qxp5-gwg8-xv66) and the [GitHub Advisory Database](https://github.com/github/advisory-database) ([CC-BY 4.0](https://github.com/github/advisory-database/blob/main/LICENSE.md)).
</details>

---

### Configuration

📅 **Schedule**: Branch creation - "" (UTC), Automerge - "* 0-3 * * *" (UTC).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4yMDUuMSIsInVwZGF0ZWRJblZlciI6IjM5LjIwNS4xIiwidGFyZ2V0QnJhbmNoIjoidjEwLjAvZm9yZ2VqbyIsImxhYmVscyI6WyJkZXBlbmRlbmN5LXVwZ3JhZGUiLCJ0ZXN0L25vdC1uZWVkZWQiXX0=-->

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/7303
Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org>
Co-authored-by: Renovate Bot <forgejo-renovate-action@forgejo.org>
Co-committed-by: Renovate Bot <forgejo-renovate-action@forgejo.org>
2025-03-22 16:47:19 +00:00
Renovate Bot
a35a3b6731 Update module golang.org/x/oauth2 to v0.27.0 [SECURITY] (v10.0/forgejo) (#7304)
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [golang.org/x/oauth2](https://pkg.go.dev/golang.org/x/oauth2) | require | minor | [`v0.23.0` -> `v0.27.0`](https://cs.opensource.google/go/x/oauth2/+/refs/tags/v0.23.0...refs/tags/v0.27.0) |

---

> ⚠️ **Warning**
>
> Some dependencies could not be looked up. Check the Dependency Dashboard for more information.

---

### Unexpected memory consumption during token parsing in golang.org/x/oauth2
[CVE-2025-22868](https://nvd.nist.gov/vuln/detail/CVE-2025-22868) / [GO-2025-3488](https://pkg.go.dev/vuln/GO-2025-3488)

<details>
<summary>More information</summary>

#### Details
An attacker can pass a malicious malformed token which causes unexpected memory to be consumed during parsing.

#### Severity
Unknown

#### References
- [https://go.dev/cl/652155](https://go.dev/cl/652155)
- [https://go.dev/issue/71490](https://go.dev/issue/71490)

This data is provided by [OSV](https://osv.dev/vulnerability/GO-2025-3488) and the [Go Vulnerability Database](https://github.com/golang/vulndb) ([CC-BY 4.0](https://github.com/golang/vulndb#license)).
</details>

---

### Configuration

📅 **Schedule**: Branch creation - "" (UTC), Automerge - "* 0-3 * * *" (UTC).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4yMDUuMSIsInVwZGF0ZWRJblZlciI6IjM5LjIwNS4xIiwidGFyZ2V0QnJhbmNoIjoidjEwLjAvZm9yZ2VqbyIsImxhYmVscyI6WyJkZXBlbmRlbmN5LXVwZ3JhZGUiLCJ0ZXN0L25vdC1uZWVkZWQiXX0=-->

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/7304
Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org>
Co-authored-by: Renovate Bot <forgejo-renovate-action@forgejo.org>
Co-committed-by: Renovate Bot <forgejo-renovate-action@forgejo.org>
2025-03-22 15:53:21 +00:00
Renovate Bot
76dfc75ed2 Update module github.com/golang-jwt/jwt/v5 to v5.2.2 [SECURITY] (v10.0/forgejo) (#7302)
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [github.com/golang-jwt/jwt/v5](https://github.com/golang-jwt/jwt) | require | patch | `v5.2.1` -> `v5.2.2` |

---

> ⚠️ **Warning**
>
> Some dependencies could not be looked up. Check the Dependency Dashboard for more information.

---

### jwt-go allows excessive memory allocation during header parsing
[CVE-2025-30204](https://nvd.nist.gov/vuln/detail/CVE-2025-30204) / [GHSA-mh63-6h87-95cp](https://github.com/advisories/GHSA-mh63-6h87-95cp)

<details>
<summary>More information</summary>

#### Details
##### Summary

Function [`parse.ParseUnverified`](c035977d9e/parser.go (L138-L139)) currently splits (via a call to [strings.Split](https://pkg.go.dev/strings#Split)) its argument (which is untrusted data) on periods.

As a result, in the face of a malicious request whose _Authorization_ header consists of `Bearer ` followed by many period characters, a call to that function incurs allocations to the tune of O(n) bytes (where n stands for the length of the function's argument), with a constant factor of about 16. Relevant weakness: [CWE-405: Asymmetric Resource Consumption (Amplification)](https://cwe.mitre.org/data/definitions/405.html)

##### Details

See [`parse.ParseUnverified`](c035977d9e/parser.go (L138-L139))

##### Impact

Excessive memory allocation

#### Severity
- CVSS Score: 7.5 / 10 (High)
- Vector String: `CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H`

#### References
- [https://github.com/golang-jwt/jwt/security/advisories/GHSA-mh63-6h87-95cp](https://github.com/golang-jwt/jwt/security/advisories/GHSA-mh63-6h87-95cp)
- [0951d18428)
- [https://github.com/golang-jwt/jwt](https://github.com/golang-jwt/jwt)

This data is provided by [OSV](https://osv.dev/vulnerability/GHSA-mh63-6h87-95cp) and the [GitHub Advisory Database](https://github.com/github/advisory-database) ([CC-BY 4.0](https://github.com/github/advisory-database/blob/main/LICENSE.md)).
</details>

---

### Release Notes

<details>
<summary>golang-jwt/jwt (github.com/golang-jwt/jwt/v5)</summary>

### [`v5.2.2`](https://github.com/golang-jwt/jwt/releases/tag/v5.2.2)

[Compare Source](https://github.com/golang-jwt/jwt/compare/v5.2.1...v5.2.2)

#### What's Changed

-   Fixed https://github.com/golang-jwt/jwt/security/advisories/GHSA-mh63-6h87-95cp by [@&#8203;mfridman](https://github.com/mfridman)
-   Fixed some typos by [@&#8203;Ashikpaul](https://github.com/Ashikpaul) in https://github.com/golang-jwt/jwt/pull/382
-   build: add go1.22 to ci workflows by [@&#8203;mfridman](https://github.com/mfridman) in https://github.com/golang-jwt/jwt/pull/383
-   Bump golangci/golangci-lint-action from 4 to 5 by [@&#8203;dependabot](https://github.com/dependabot) in https://github.com/golang-jwt/jwt/pull/387
-   Bump golangci/golangci-lint-action from 5 to 6 by [@&#8203;dependabot](https://github.com/dependabot) in https://github.com/golang-jwt/jwt/pull/389
-   chore: bump ci tests to include go1.23 by [@&#8203;mfridman](https://github.com/mfridman) in https://github.com/golang-jwt/jwt/pull/405
-   Fix jwt -show by [@&#8203;AlexanderYastrebov](https://github.com/AlexanderYastrebov) in https://github.com/golang-jwt/jwt/pull/406
-   docs: typo by [@&#8203;kvii](https://github.com/kvii) in https://github.com/golang-jwt/jwt/pull/407
-   Update SECURITY.md by [@&#8203;oxisto](https://github.com/oxisto) in https://github.com/golang-jwt/jwt/pull/416
-   Update `jwt.Parse` example to use `jwt.WithValidMethods` by [@&#8203;mattt](https://github.com/mattt) in https://github.com/golang-jwt/jwt/pull/425

#### New Contributors

-   [@&#8203;Ashikpaul](https://github.com/Ashikpaul) made their first contribution in https://github.com/golang-jwt/jwt/pull/382
-   [@&#8203;kvii](https://github.com/kvii) made their first contribution in https://github.com/golang-jwt/jwt/pull/407
-   [@&#8203;mattt](https://github.com/mattt) made their first contribution in https://github.com/golang-jwt/jwt/pull/425

**Full Changelog**: https://github.com/golang-jwt/jwt/compare/v5.2.1...v5.2.2

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "" (UTC), Automerge - "* 0-3 * * *" (UTC).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4yMDUuMSIsInVwZGF0ZWRJblZlciI6IjM5LjIwNS4xIiwidGFyZ2V0QnJhbmNoIjoidjEwLjAvZm9yZ2VqbyIsImxhYmVscyI6WyJkZXBlbmRlbmN5LXVwZ3JhZGUiLCJ0ZXN0L25vdC1uZWVkZWQiXX0=-->

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/7302
Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org>
Co-authored-by: Renovate Bot <forgejo-renovate-action@forgejo.org>
Co-committed-by: Renovate Bot <forgejo-renovate-action@forgejo.org>
2025-03-22 15:52:32 +00:00
Renovate Bot
5ec1f7f363 Update module github.com/redis/go-redis/v9 to v9.7.3 (v10.0/forgejo) (#7284)
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/7284
Reviewed-by: Gusted <gusted@noreply.codeberg.org>
Co-authored-by: Renovate Bot <forgejo-renovate-action@forgejo.org>
Co-committed-by: Renovate Bot <forgejo-renovate-action@forgejo.org>
2025-03-21 10:04:58 +00:00
Earl Warren
fc5a303b70 [v10.0/forgejo] i18n: update of translations from Codeberg Translate (#7277)
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/7277
Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org>
2025-03-20 21:59:32 +00:00
0ko
8a7dc4ea06 [v10.0/forgejo] i18n: update of translations from Codeberg Translate
Translation updates that are applicable to v10 strings were picked from this commit: 5a7af0dae2ef1c7d18ea5ac53ae8682d9d0c28df

Changes to strings that are only present in the v11 branch were not picked.

Below is a list of co-authors of the ported commit. It may contain co-authors who's changes were not picked due to being v11-only.

Co-authored-by: 0ko <0ko@noreply.codeberg.org>
Co-authored-by: Baempaieo <baempaieo@noreply.codeberg.org>
Co-authored-by: Codeberg Translate <translate@codeberg.org>
Co-authored-by: Edgarsons <edgarsons@noreply.codeberg.org>
Co-authored-by: EssGeeEich <essgeeeich@noreply.codeberg.org>
Co-authored-by: Juno Takano <jutty@noreply.codeberg.org>
Co-authored-by: Zughy <zughy@noreply.codeberg.org>
Co-authored-by: banaanihillo <banaanihillo@noreply.codeberg.org>
Co-authored-by: httpsterio <httpsterio@noreply.codeberg.org>
Co-authored-by: ozgur <ozgur@noreply.codeberg.org>
Co-authored-by: tacaly <frederick@tacaly.com>
2025-03-20 20:39:26 +05:00
0ko
4b3135a859 [v10.0/forgejo] i18n: update of translations from Codeberg Translate
Translation updates that are applicable to v10 strings were picked from this commit: 1132fde45fb010ae79e1324d000e1f4b76b11c09

Changes to strings that are only present in the v11 branch were not picked.

Below is a list of co-authors of the ported commit. It may contain co-authors who's changes were not picked due to being v11-only.

Co-authored-by: 0ko <0ko@noreply.codeberg.org>
Co-authored-by: Adolfo Jayme Barrientos <fito@noreply.codeberg.org>
Co-authored-by: Anonymous <anonymous@noreply.codeberg.org>
Co-authored-by: Atalanttore <atalanttore@noreply.codeberg.org>
Co-authored-by: Benedikt Straub <benedikt-straub@web.de>
Co-authored-by: Codeberg Translate <translate@codeberg.org>
Co-authored-by: Dirk <dirk@noreply.codeberg.org>
Co-authored-by: Edgarsons <edgarsons@noreply.codeberg.org>
Co-authored-by: Fjuro <fjuro@noreply.codeberg.org>
Co-authored-by: Gusted <postmaster@gusted.xyz>
Co-authored-by: Kita Ikuyo <kitakita@disroot.org>
Co-authored-by: Outbreak2096 <outbreak2096@noreply.codeberg.org>
Co-authored-by: SomeTr <sometr@noreply.codeberg.org>
Co-authored-by: justbispo <justbispo@noreply.codeberg.org>
Co-authored-by: nykula <nykula@noreply.codeberg.org>
Co-authored-by: tacaly <frederick@tacaly.com>
Co-authored-by: xtex <xtexchooser@duck.com>
2025-03-20 20:37:45 +05:00
0ko
c082731211 [v10.0/forgejo] i18n: update of translations from Codeberg Translate
Translation updates that are applicable to v10 strings were picked from this commit: b2d01fdde6

Changes to strings that are only present in the v11 branch were not picked.

Below is a list of co-authors of the ported commit. It may contain co-authors who's changes were not picked due to being v11-only.

Co-authored-by: lordwektabyte <lordwektabyte@users.noreply.translate.codeberg.org>
Co-authored-by: Marti <marti@noreply.codeberg.org>
Co-authored-by: 0ko <0ko@noreply.codeberg.org>
Co-authored-by: alanmena <alanmena@noreply.codeberg.org>
Co-authored-by: Juno Takano <jutty@noreply.codeberg.org>
Co-authored-by: Benedikt Straub <benedikt-straub@web.de>
Co-authored-by: Edgarsons <edgarsons@noreply.codeberg.org>
Co-authored-by: Wuzzy <wuzzy@disroot.org>
Co-authored-by: justbispo <justbispo@noreply.codeberg.org>
Co-authored-by: Kita Ikuyo <kitakita@disroot.org>
Co-authored-by: Fjuro <fjuro@noreply.codeberg.org>
Co-authored-by: Gusted <postmaster@gusted.xyz>
Co-authored-by: kwoot <kwoot@noreply.codeberg.org>
Co-authored-by: SomeTr <sometr@noreply.codeberg.org>
Co-authored-by: monty24 <monty24@noreply.codeberg.org>
Co-authored-by: Sampo Harjula <sahtor@noreply.codeberg.org>
Co-authored-by: tacaly <frederick@tacaly.com>
Co-authored-by: artnay <artnay@noreply.codeberg.org>
Co-authored-by: Outbreak2096 <outbreak2096@noreply.codeberg.org>
2025-03-20 20:36:26 +05:00
Gusted
c1e9fd738b fix: consider issues in repository accessible via access table (#7270)
- Consider the following scenario: a private repository in an organization with a team that has no specific access to that repository. Members of that team are still able to visit the repository because of entries in the `access` table.
- Consider this specific scenario for the gathering of issues for project tables.
- Unit test added
- Resolves forgejo/forgejo#7217
- Ref: forgejo/forgejo#6843

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/7270
Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org>
Reviewed-by: 0ko <0ko@noreply.codeberg.org>
Co-authored-by: Gusted <postmaster@gusted.xyz>
Co-committed-by: Gusted <postmaster@gusted.xyz>
(cherry picked from commit 72ee7f3b006f8cb5c1031a5607c87618e0609242)
2025-03-19 16:46:20 +00:00
forgejo-backport-action
400bd08cfe [v10.0/forgejo] fix: discard v25 secrets migrations errors instead of failing (#7255)
**Backport:** https://codeberg.org/forgejo/forgejo/pulls/7251

Failing the migration when a corrupted record is found is problematic because there is no transaction and the database may need to be restored from a backup to attempt the migration again, after deleting the corrupted records.

Each documented case of failed migration was resolved by removing the corrupted records. There is no instance of a failed migration that was caused by non corrupted record.

In the unlikely event of a false negative where a two_factor record is discarded although it is in use, the only consequence is that the user will have to enroll again. Detailed logs are displayed so the Forgejo admin can file a bug report if that happens.

Refs: https://codeberg.org/forgejo/forgejo/issues/6637

<!--start release-notes-assistant-->

## Release notes
<!--URL:https://codeberg.org/forgejo/forgejo-->
- Bug fixes
  - [PR](https://codeberg.org/forgejo/forgejo/pulls/7251): <!--number 7251 --><!--line 0 --><!--description V2hlbiBtaWdyYXRpbmcgZnJvbSBhIEZvcmdlam8gdmVyc2lvbiBsb3dlciB0aGFuIHYxMCwgdGhlIFRPVFAgc2VjcmV0cyBmb3VuZCB0byBiZSBjb3JydXB0ZWQgYXJlIG5vdyB0cmFuc3BhcmVudGx5IHJlbW92ZWQgZnJvbSB0aGUgZGF0YWJhc2UgaW5zdGVhZCBvZiBmYWlsaW5nIHRoZSBtaWdyYXRpb24uIFRPVFAgaXMgbm8gbG9uZ2VyIHJlcXVpcmVkIHRvIGxvZ2luIHdpdGggdGhlIGFzc29jaWF0ZWQgdXNlcnMuIFRoZXkgc2hvdWxkIGJlIGluZm9ybWVkIGJlY2F1c2UgdGhleSB3aWxsIG5lZWQgdG8gdmlzaXQgdGhlaXIgc2VjdXJpdHkgc2V0dGluZ3MgYW5kIGNvbmZpZ3VyZSBUT1RQIGFnYWluLiBObyBvdGhlciBhY3Rpb24gaXMgcmVxdWlyZWQu-->When migrating from a Forgejo version lower than v10, the TOTP secrets found to be corrupted are now transparently removed from the database instead of failing the migration. TOTP is no longer required to login with the associated users. They should be informed because they will need to visit their security settings and configure TOTP again. No other action is required.<!--description-->
<!--end release-notes-assistant-->

Co-authored-by: Earl Warren <contact@earl-warren.org>
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/7255
Reviewed-by: Gusted <gusted@noreply.codeberg.org>
Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org>
Co-authored-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
Co-committed-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
2025-03-17 17:55:32 +00:00
forgejo-backport-action
e7d103319e [v10.0/forgejo] fix(api): typo in API description for repoSearch (#7202)
**Backport:** https://codeberg.org/forgejo/forgejo/pulls/7199

Corrected miss-spelled description for the `is_private` field on `repoSearch`, in which 'public' was spelled as 'pubic'.

Co-authored-by: luxzi <lesson085@gmail.com>
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/7202
Reviewed-by: Gusted <gusted@noreply.codeberg.org>
Co-authored-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
Co-committed-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
2025-03-11 14:03:19 +00:00
forgejo-backport-action
0c0155daf7 [v10.0/forgejo] fix: no notification for replies to pending comments (#7178)
**Backport:** https://codeberg.org/forgejo/forgejo/pulls/7167

- Replies to pending review comments no longer generate a notification, this was caused by an incomplete determination if the comment was part of the pending review or not.
- The logic was reworked to do the following if it's part of a pending review: It is not a single review and if it's a reply then the comment it is replying to is part of a pending review.
- Added integration test.
- Resolves forgejo/forgejo#7151

Co-authored-by: Gusted <postmaster@gusted.xyz>
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/7178
Reviewed-by: Gusted <gusted@noreply.codeberg.org>
Co-authored-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
Co-committed-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
2025-03-09 16:06:01 +00:00
forgejo-backport-action
40f1e0b1ff [v10.0/forgejo] fix: revert issue rendering for <a> element (#7177)
**Backport:** https://codeberg.org/forgejo/forgejo/pulls/7171

- Issue title rendering can lead to nested `<a>` which is incorrect. So
revert a portion of forgejo/forgejo#6715.
- Integration test adjusted
- Resolves forgejo/forgejo#7076

Co-authored-by: Gusted <postmaster@gusted.xyz>
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/7177
Reviewed-by: Gusted <gusted@noreply.codeberg.org>
Co-authored-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
Co-committed-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
2025-03-09 15:50:23 +00:00
forgejo-backport-action
c2158b2a1f [v10.0/forgejo] fix: consider public issues for project boards (#7144)
**Backport:** https://codeberg.org/forgejo/forgejo/pulls/7143

- The security patch of forgejo/forgejo#6843 fixed the issue where project boards loaded all issues without considering if the doer actually had permission to view that issue. Within that patch the call to `Issues` was modified to include this permission checking.
- The query being generated was not entirely correct. Issues in public repositories weren't considered correctly (partly the fault of not setting `AllPublic` unconditionally) in the cause an authenticated user loaded the project.
- This is now fixed by setting `AllPublic` unconditionally and subsequently fixing the `Issue` function to ensure that the combination of setting `AllPublic` and `User` generates the correct query, by combining the permission check and issues in public repositories as one `AND` query.
- Added unit testing.
- Added integration testing.
- Resolves Codeberg/Community#1809
- Regression of https://codeberg.org/forgejo/forgejo/pulls/6843

Co-authored-by: Gusted <postmaster@gusted.xyz>
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/7144
Reviewed-by: Gusted <gusted@noreply.codeberg.org>
Co-authored-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
Co-committed-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
2025-03-07 00:51:07 +00:00
Renovate Bot
6e0f449fb9 Update module golang.org/x/crypto to v0.35.0 (v10.0/forgejo) (#7072)
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/7072
Reviewed-by: Michael Kriese <michael.kriese@gmx.de>
Co-authored-by: Renovate Bot <forgejo-renovate-action@forgejo.org>
Co-committed-by: Renovate Bot <forgejo-renovate-action@forgejo.org>
2025-03-02 17:09:15 +00:00
forgejo-backport-action
a830b4de6b [v10.0/forgejo] chore(ci): ensure the manually cached Go can be run (#7079)
**Backport:** https://codeberg.org/forgejo/forgejo/pulls/7078

```
go version go1.24.0 linux/amd64
go env
drwx------ 1 root root 4096 Feb 28 15:52 /root/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.24.0.linux-amd64/../../../../..
drwxr-xr-x 4 root root 4096 Feb 28 15:52 /root/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.24.0.linux-amd64/../../../..
drwxr-xr-x 4 root root 4096 Feb 28 15:52 /root/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.24.0.linux-amd64/../../..
drwxr-xr-x 4 root root 4096 Feb 28 15:52 /root/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.24.0.linux-amd64/../..
drwxr-xr-x 3 root root 4096 Feb 28 15:52 /root/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.24.0.linux-amd64/..
dr-xr-xr-x 6 root root 4096 Feb 28 15:52 /root/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.24.0.linux-amd64
-r-xr-xr-x 1 root root 14314681 Feb 28 15:52 /root/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.24.0.linux-amd64/bin/go
-r-xr-xr-x 1 root root 14314681 Feb 28 15:52 /root/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.24.0.linux-amd64/bin/go
bash: line 1: /root/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.24.0.linux-amd64/bin/go: Permission denied
bash: line 1: /root/go/pkg/mod/golang.org/toolchain@v0.0.1-go1.24.0.linux-amd64/bin/go: Permission denied
mkdir: cannot create directory ‘’: No such file or directory
mkdir: cannot create directory ‘’: No such file or directory
```

Refs: https://codeberg.org/forgejo/forgejo/actions/runs/61591#jobstep-3-22
Co-authored-by: Earl Warren <contact@earl-warren.org>
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/7079
Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org>
Co-authored-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
Co-committed-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
2025-02-28 16:21:28 +00:00
Earl Warren
6fcb8f646f [v10.0/forgejo] chore(ci): Get Go binary from GOROOT instead of hardcoded path (#7073)
Backport: https://codeberg.org/forgejo/forgejo/pulls/6590
Co-authored-by: fnetX <otto@codeberg.org>
Co-authored-by: Michael Kriese <michael.kriese@visualon.de>
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/7073
Reviewed-by: Otto <otto@codeberg.org>
2025-02-28 15:36:13 +00:00
0ko
c7bd6f4a3d [v10.0/forgejo] i18n: update of translations from multiple sources (#7067)
Translation updates that are applicable to v10 strings were picked from these commits:
* 94e782038d
* 75b9bd82e8
* 7296f11288
* 535408143a

Changes to strings that are only present in the v11 branch were not picked.

New locales ga-IE and ro were not picked because they're not used even in the v11 branch yet and languages are usually to be added in major versions.

This commit contains chanes backported from Gitea, but attribution is not possible due to it being missing in the origin repo commits in the first place. You might have luck finding transators responsible for these changes in Gitea project on Crowdin: https://crowdin.com/project/gitea.

Changes from Gitea are up to commit fc1b383da9/options/locale

Below is a list of co-authors of the ported commits. It may contain co-authors who's changes were not picked due to being v11-only.

Co-authored-by: 0ko <0ko@users.noreply.translate.codeberg.org>
Co-authored-by: adriand <adriand@users.noreply.translate.codeberg.org>
Co-authored-by: amearb <amearb@users.noreply.translate.codeberg.org>
Co-authored-by: Anonymous <anonymous@users.noreply.translate.codeberg.org>
Co-authored-by: anze <anze@users.noreply.translate.codeberg.org>
Co-authored-by: artnay <artnay@users.noreply.translate.codeberg.org>
Co-authored-by: be4zad <be4zad@users.noreply.translate.codeberg.org>
Co-authored-by: Benedikt Straub <benedikt-straub@web.de>
Co-authored-by: Coral Pink <coralpink@users.noreply.translate.codeberg.org>
Co-authored-by: Dirk <dirk@users.noreply.translate.codeberg.org>
Co-authored-by: DKMellow <dkmellow@users.noreply.translate.codeberg.org>
Co-authored-by: earl-warren <earl-warren@users.noreply.translate.codeberg.org>
Co-authored-by: Edgarsons <edgarsons@users.noreply.translate.codeberg.org>
Co-authored-by: Fjuro <fjuro@users.noreply.translate.codeberg.org>
Co-authored-by: gedankenstuecke <gedankenstuecke@users.noreply.translate.codeberg.org>
Co-authored-by: Gitea translators on Crowdin <teabot@gitea.io>
Co-authored-by: Gusted <postmaster@gusted.xyz>
Co-authored-by: hugoalh <hugoalh@users.noreply.translate.codeberg.org>
Co-authored-by: IndieHum <indiehum@users.noreply.translate.codeberg.org>
Co-authored-by: Juno Takano <jutty@users.noreply.translate.codeberg.org>
Co-authored-by: kbruen <kbruen@users.noreply.translate.codeberg.org>
Co-authored-by: Kenneth Bruen <kbruen@users.noreply.translate.codeberg.org>
Co-authored-by: Kenneth Bruen <kenny@kbruen.ro>
Co-authored-by: Kita Ikuyo <searinminecraft@courvix.com>
Co-authored-by: laegnur <laegnur@users.noreply.translate.codeberg.org>
Co-authored-by: Laxystem <laxystem@users.noreply.translate.codeberg.org>
Co-authored-by: Laxystem <the@laxla.quest>
Co-authored-by: Lzebulon <lzebulon@users.noreply.translate.codeberg.org>
Co-authored-by: marat2509 <marat2509@users.noreply.translate.codeberg.org>
Co-authored-by: noiro <noiro@users.noreply.translate.codeberg.org>
Co-authored-by: nykula <nykula@users.noreply.translate.codeberg.org>
Co-authored-by: otf31 <otf31@users.noreply.translate.codeberg.org>
Co-authored-by: Outbreak2096 <outbreak2096@users.noreply.translate.codeberg.org>
Co-authored-by: Panagiotis \"Ivory\" Vasilopoulos <git@n0toose.net>
Co-authored-by: RealEnder <realender@users.noreply.translate.codeberg.org>
Co-authored-by: Ricky-Tigg <ricky-tigg@users.noreply.translate.codeberg.org>
Co-authored-by: SomeTr <sometr@users.noreply.translate.codeberg.org>
Co-authored-by: tacaly <frederick@tacaly.com>
Co-authored-by: Wuzzy <wuzzy@disroot.org>
Co-authored-by: xtex <xtexchooser@duck.com>
Co-authored-by: yeager <yeager@users.noreply.translate.codeberg.org>
Co-authored-by: yorunin <yorunin@users.noreply.translate.codeberg.org>
Co-authored-by: Zughy <zughy@users.noreply.translate.codeberg.org>

<!--start release-notes-assistant-->

## Release notes
<!--URL:https://codeberg.org/forgejo/forgejo-->
- Localization
  - [PR](https://codeberg.org/forgejo/forgejo/pulls/7067): <!--number 7067 --><!--line 0 --><!--description aTE4bjogdXBkYXRlIG9mIHRyYW5zbGF0aW9ucyBmcm9tIG11bHRpcGxlIHNvdXJjZXM=-->i18n: update of translations from multiple sources<!--description-->
<!--end release-notes-assistant-->

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/7067
Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org>
Co-authored-by: 0ko <0ko@noreply.codeberg.org>
Co-committed-by: 0ko <0ko@noreply.codeberg.org>
2025-02-28 05:19:31 +00:00
Renovate Bot
2e76237e26 Update https://data.forgejo.org/forgejo/forgejo-build-publish action to v5.3.4 (v10.0/forgejo) (#7052)
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [https://data.forgejo.org/forgejo/forgejo-build-publish](https://data.forgejo.org/forgejo/forgejo-build-publish) | action | patch | `v5.3.1` -> `v5.3.4` |

---

> ⚠️ **Warning**
>
> Some dependencies could not be looked up. Check the Dependency Dashboard for more information.

---

### Release Notes

<details>
<summary>forgejo/forgejo-build-publish (https://data.forgejo.org/forgejo/forgejo-build-publish)</summary>

### [`v5.3.4`](https://code.forgejo.org/forgejo/forgejo-build-publish/compare/v5.3.3...v5.3.4)

[Compare Source](https://data.forgejo.org/forgejo/forgejo-build-publish/compare/v5.3.3...v5.3.4)

### [`v5.3.3`](https://code.forgejo.org/forgejo/forgejo-build-publish/compare/v5.3.2...v5.3.3)

[Compare Source](https://data.forgejo.org/forgejo/forgejo-build-publish/compare/v5.3.2...v5.3.3)

### [`v5.3.2`](https://code.forgejo.org/forgejo/forgejo-build-publish/compare/v5.3.1...v5.3.2)

[Compare Source](https://data.forgejo.org/forgejo/forgejo-build-publish/compare/v5.3.1...v5.3.2)

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - "* 0-3 * * *" (UTC).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4xNzguMSIsInVwZGF0ZWRJblZlciI6IjM5LjE3OC4xIiwidGFyZ2V0QnJhbmNoIjoidjEwLjAvZm9yZ2VqbyIsImxhYmVscyI6WyJkZXBlbmRlbmN5LXVwZ3JhZGUiLCJ0ZXN0L25vdC1uZWVkZWQiXX0=-->

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/7052
Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org>
Co-authored-by: Renovate Bot <forgejo-renovate-action@forgejo.org>
Co-committed-by: Renovate Bot <forgejo-renovate-action@forgejo.org>
2025-02-24 10:51:56 +00:00
Earl Warren
a6a1b11670 [v10.0/forgejo] fix(release): the rootless image version label is not set (#7046)
Backport: https://codeberg.org/forgejo/forgejo/pulls/7038

There is a test for that but it was a false positive.

Refs: https://code.forgejo.org/forgejo/forgejo-build-publish/pulls/27
(cherry picked from commit 078ca85d876994c9198ba057af3aa5928c19f77d)

```
Conflicts:
	Dockerfile.rootless
  trivial context conflict
```

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/7046
Reviewed-by: Michael Kriese <michael.kriese@gmx.de>
Co-authored-by: Earl Warren <contact@earl-warren.org>
Co-committed-by: Earl Warren <contact@earl-warren.org>
2025-02-24 09:07:14 +00:00
Renovate Bot
b2c3f99901 Update dependency go to v1.23.6 (v10.0/forgejo) (#6812)
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [go](https://go.dev/) ([source](https://github.com/golang/go)) | toolchain | patch | `1.23.5` -> `1.23.6` |

---

> ⚠️ **Warning**
>
> Some dependencies could not be looked up. Check the Dependency Dashboard for more information.

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - "* 0-3 * * *" (UTC).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4xNTguMiIsInVwZGF0ZWRJblZlciI6IjM5LjE1OC4yIiwidGFyZ2V0QnJhbmNoIjoidjEwLjAvZm9yZ2VqbyIsImxhYmVscyI6WyJkZXBlbmRlbmN5LXVwZ3JhZGUiLCJ0ZXN0L25vdC1uZWVkZWQiXX0=-->

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6812
Reviewed-by: Michael Kriese <michael.kriese@gmx.de>
Co-authored-by: Renovate Bot <forgejo-renovate-action@forgejo.org>
Co-committed-by: Renovate Bot <forgejo-renovate-action@forgejo.org>
2025-02-23 08:29:21 +00:00
forgejo-backport-action
52fb476fb1 [v10.0/forgejo] fix: do not allow SSH url for migration (#7018)
**Backport:** https://codeberg.org/forgejo/forgejo/pulls/7004

- Add a new function `IsPushMirrorURLAllowed` that will allow `ssh://` url and make the existing `IsMigrateURLAllowed` not allow such URLs anymore.
- Resolves forgejo/forgejo#6960
- Existing integration tests make sure that SSH urls are still allowed for the push mirror feature and added unit test to ensure that `IsMigrateURLAllowed` no longer allows SSH urls.

Co-authored-by: Gusted <postmaster@gusted.xyz>
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/7018
Reviewed-by: Gusted <gusted@noreply.codeberg.org>
Co-authored-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
Co-committed-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
2025-02-21 11:46:08 +00:00
forgejo-backport-action
3eacbfead9 [v10.0/forgejo] fix: return 404 for empty repositories (#7014)
**Backport:** https://codeberg.org/forgejo/forgejo/pulls/7003

Some endpoints (`/api/v1/repos/*/*/raw`, `/api/v1/repos/*/*/media`, ...;
anything that uses both `context.ReferencesGitRepo()` and
`context.RepoRefForAPI` really) returned a 500 when the repository was
completely empty. This resulted in some confusion in
https://github.com/datalad/datalad-usage-dashboard/issues/47 because the
same request for a non-existent file in a repository could sometimes
generate a 404 and sometimes a 500, depending on if the git repository
is initialized at all or not.

Returning a 404 seems more appropriate here, since this isn't an
unexpected internal error, but just another way of not finding the
requested data.

Co-authored-by: Matthias Riße <m.risse@fz-juelich.de>
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/7014
Reviewed-by: Gusted <gusted@noreply.codeberg.org>
Co-authored-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
Co-committed-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
2025-02-20 22:26:30 +00:00
forgejo-backport-action
932afb2036 [v10.0/forgejo] fix: delay deleting authorization token (#6976)
**Backport:** https://codeberg.org/forgejo/forgejo/pulls/6937

- 1ce33aa38d extended the LTA table with a purpose column so it could be extended to other tokens. However some are single-use tokens and should be deleted after use.
- This did not result in a good UX for activating user as they needed to also fill in their passwords and in the case that the password was incorrect the token would no longer be usable.
- This patch modifies the code to allow for a little delay before deleting authorization tokens to do additional verification such as the password check. This cannot be done before the authorization token check as that the authorization token determines who the user is.
- Resolves forgejo/forgejo#6912
- Adjusted existing unit test.

Co-authored-by: Gusted <postmaster@gusted.xyz>
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6976
Reviewed-by: Gusted <gusted@noreply.codeberg.org>
Co-authored-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
Co-committed-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
2025-02-19 07:06:01 +00:00
forgejo-backport-action
cc8a05f693 [v10.0/forgejo] fix: native parsing of ssh certificate key (#6954)
**Backport:** https://codeberg.org/forgejo/forgejo/pulls/6953

- In the case of parsing an public SSH certificate key, use the underlying key type instead of the certificate type. This means `ed25519-cert-v01` would be seen as `ed25519` type and thus correctly parsed. Certificates do not
change the keysize or otherwise parsing of the key.
- Add unit test.

Co-authored-by: Gusted <postmaster@gusted.xyz>
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6954
Reviewed-by: Gusted <gusted@noreply.codeberg.org>
Co-authored-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
Co-committed-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
2025-02-15 17:28:48 +00:00
forgejo-backport-action
0fe56e6059 [v10.0/forgejo] fix: disable forgotten password for external signin only (#6930)
**Backport:** https://codeberg.org/forgejo/forgejo/pulls/6680

- Make it such that `[service].ENABLE_INTERNAL_SIGNIN = false` disables the forgotten password prompt on the login page.

Co-authored-by: davrot <davrot@noreply.codeberg.org>
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6930
Reviewed-by: Gusted <gusted@noreply.codeberg.org>
Co-authored-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
Co-committed-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
2025-02-14 13:37:46 +00:00
forgejo-backport-action
4802c33acb [v10.0/forgejo] fix: show internal login prompt for account linking (#6929)
**Backport:** https://codeberg.org/forgejo/forgejo/pulls/6920

Fixes #6878.

Co-authored-by: Matthias Riße <m.risse@fz-juelich.de>
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6929
Reviewed-by: Gusted <gusted@noreply.codeberg.org>
Co-authored-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
Co-committed-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
2025-02-14 13:25:46 +00:00
forgejo-backport-action
c56bbddf62 [v10.0/forgejo] enable ssh mirrors in rootless images (#6915)
**Backport:** https://codeberg.org/forgejo/forgejo/pulls/6896

This mini-PR fixes mirror feature on docker rootless images, as discussed in #6894.

Thank you, regards

## Testing

- 24h After the PR is merged
- Visit https://v11.next.forgejo.org and create a ssh based mirror

Co-authored-by: Alessandro Ogier <alessandro.ogier@gmail.com>
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6915
Reviewed-by: Otto <otto@codeberg.org>
Co-authored-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
Co-committed-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
2025-02-13 00:56:48 +00:00
forgejo-backport-action
a7ae98ff93 [v10.0/forgejo] fix(ui): hide extra PR property labels on title edit (#6905)
**Backport:** https://codeberg.org/forgejo/forgejo/pulls/6898

* hide labels [AGit](https://codeberg.org/forgejo/forgejo/pulls/2444) and [Editable](https://codeberg.org/forgejo/forgejo/pulls/6863) on title edit mode: they make layout broken and are not really needed at edit state
* make the code slightly less boring

Co-authored-by: 0ko <0ko@noreply.codeberg.org>
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6905
Reviewed-by: Gusted <gusted@noreply.codeberg.org>
Co-authored-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
Co-committed-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
2025-02-12 09:05:43 +00:00
forgejo-backport-action
0aa872c4e3 [v10.0/forgejo] fix: always set stripped slashes on http request (#6884)
**Backport:** https://codeberg.org/forgejo/forgejo/pulls/6866

- The middleware that takes care of normalizing `//user2/////repo1` to `/user2/repo1` would only set the normalized value to the Chi (Forgejo's http router) `RoutePath` field, so Chi would correctly do the routing. However not all components in Forgejo (like Forgejo's `context` module) rely on Chi to get this updated path and some still rely on the value of `(http.Request).URL.Path`, so always set the normalized value to the http request.
- Adjusted unit test.
- Resolves forgejo/forgejo#6822
- The related issue was caused by
751a3da979/services/context/context.go (L115)
using the value of the http request on not that was set in the Chi context.

Co-authored-by: Gusted <postmaster@gusted.xyz>
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6884
Reviewed-by: Otto <otto@codeberg.org>
Co-authored-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
Co-committed-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
2025-02-10 20:00:25 +00:00
forgejo-backport-action
ee49a62bed [v10.0/forgejo] fix(ui): hide 'New migration' button on org pages with migrations disabled (#6850) (#6860)
**Backport:** https://codeberg.org/forgejo/forgejo/pulls/6851

When migrations are disabled via `[repository].DISABLE_MIGRATIONS = true`, on organisation pages next to the 'New repository' button, the 'New migration' button is still shown.

This is caused by a logic error in the templates: instead of checking for disabled migrations, it checks for disabled pull mirrors. This patch fixes that to use `DisableMigrations` instead of `DisableNewPullMirrors`.

Signed-off-by: Daniel Baumann <daniel@debian.org>
Co-authored-by: Daniel Baumann <daniel@debian.org>
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6860
Reviewed-by: Gusted <gusted@noreply.codeberg.org>
Co-authored-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
Co-committed-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
2025-02-08 15:45:58 +00:00
forgejo-backport-action
89c4c9c477 [v10.0/forgejo] fix: render link in heading correctly in TOC (#6859)
**Backport:** https://codeberg.org/forgejo/forgejo/pulls/6853

- When you use a link in a heading such as `# [Text](link)` (instead of the conventional `# Text`) the TOC should only show `Text` and not `[Text](link)`.
- Use the `mdutil.Text` to only get the text from actual text nodes and not the text that was provided in the markdown input.
- Regression of e2fddcf681
- Resolves forgejo/forgejo#6847
- Added integration test.

Co-authored-by: Gusted <postmaster@gusted.xyz>
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6859
Reviewed-by: Gusted <gusted@noreply.codeberg.org>
Co-authored-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
Co-committed-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
2025-02-08 14:33:01 +00:00
forgejo-backport-action
bdb78d42b6 [v10.0/forgejo] ui: update language stats layout and click behavior (#6854)
**Backport:** https://codeberg.org/forgejo/forgejo/pulls/6700

Fix regression of https://codeberg.org/forgejo/forgejo/pulls/6344. It was reported by @Beowulf.

JS toggle [used](49c5102b40/templates/repo/sub_menu.tmpl (L38)) a selector which was broken by that PR, which caused the legend to appear separately instead of replacing the primary repo info.

## Changes

* use clear IDs `language-stats-bar` and `language-stats-legend`
* add simple e2e test

Instead of restoring the previous behavior, I moved the legend under the stats bar. To me it didn't make a lot of sense in the first place to replace the information in the primary bar with with completely different information. It did not save much space either.

Co-authored-by: 0ko <0ko@noreply.codeberg.org>
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6854
Reviewed-by: Gusted <gusted@noreply.codeberg.org>
Co-authored-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
Co-committed-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
2025-02-08 13:52:03 +00:00
Earl Warren
6ef900899e fix(sec): Forgejo Actions web routes (#6839)
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6839
2025-02-08 06:21:18 +00:00
Earl Warren
a9f0bb9f68 fix(sec): permission check for project issue (#6838)
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6838
2025-02-08 06:20:29 +00:00
Gusted
3b4f1b3469
fix(sec): add tests for private issues on projects
- Add integration and unit tests to ensure that private issues on
projects are not shown in any way, shape or form when the doer has no
access to it.

(cherry picked from commit 55dcc1d06cb12ddb750a0289fbb6e212f93957a8)
2025-02-08 06:06:06 +00:00
Gusted
77fc232e5b
fix(sec): permission check for project issue
- Do an access check when loading issues for a project column, currently
this is not done and exposes the title, labels and existence of a
private issue that the viewer of the project board may not have access
to.
- The number of issues cannot be calculated in a efficient manner
and stored in the database because their number may vary depending on
the visibility of the repositories participating in the project. The
previous implementation used the pre-calculated numbers stored in each
project, which did not reflect that potential variation.
- The code is derived from https://github.com/go-gitea/gitea/pull/22865

(cherry picked from commit 2193afaeb9954a5778f5a47aafd0e6fbbf48d000)
2025-02-08 06:06:03 +00:00
Gusted
5a7d70658d
fix(sec): web route test edit and delete variable
Exhaustively test each combination of deleting and updating a action
action variable via the web route.
2025-02-08 06:04:14 +00:00
Gusted
5046a10aec
fix(sec): add tests for web route delete runner
Exhaustively test each combination of deleting and updating a action
runner via the web route. Although updating an action runner was not
impacted, its good to have a test nonetheless.
2025-02-08 06:04:14 +00:00
Gusted
77db7655e0
fix(sec): web route update and delete runner variables
The web route to update and delete variables of runners did not check if
the ID that was given belonged to the context it was requested in, this
made it possible to update and delete every existing runner variable of
a instance for any authenticated user.

The code has been reworked to always take into account the context of
the request (owner and repository ID).
2025-02-08 06:04:14 +00:00
Gusted
c324910c31
fix(sec): web route delete runner
The web route to delete action runners did not check if the ID that was
given belonged to the context it was requested in, this made it possible
to delete every existing runner of a instance by a authenticated user.

The code was reworked to ensure that the caller of the delete
runner function retrieved the runner by ID and then checks if it belongs
to the context it was requested in, although this is not an optimal
solution it is consistent with the context checking of other code for
runners.
2025-02-08 06:04:14 +00:00
0ko
57ad0b868d [v10.0/forgejo] i18n: update of translations from Codeberg Translate (#6834)
Backport: https://codeberg.org/forgejo/forgejo/pulls/6745

Feel free to leave merge to me. My strategy is to use squash-merge, but copy the description of the actual commit into squash description, so attribution is preserved.

https://codeberg.org/forgejo/forgejo/pulls/6745 was quite large, so I decided it will be ok to backport just one PR before a new release.

<!--start release-notes-assistant-->

## Release notes
<!--URL:https://codeberg.org/forgejo/forgejo-->
- Localization
  - [PR](https://codeberg.org/forgejo/forgejo/pulls/6834): <!--number 6834 --><!--line 0 --><!--description aTE4bjogdXBkYXRlIG9mIHRyYW5zbGF0aW9ucyBmcm9tIENvZGViZXJnIFRyYW5zbGF0ZQ==-->i18n: update of translations from Codeberg Translate<!--description-->
<!--end release-notes-assistant-->

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6834
Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org>
Co-authored-by: 0ko <0ko@noreply.codeberg.org>
Co-committed-by: 0ko <0ko@noreply.codeberg.org>
2025-02-08 00:01:24 +00:00
forgejo-backport-action
34d2a8531c [v10.0/forgejo] fix(ui): display verified icon for default gpg key (#6833)
**Backport:** https://codeberg.org/forgejo/forgejo/pulls/6803

## Description
Thank you for this amazing project!

I recently noticed that the icon next to the GPG key reference appears to be incorrect for commits signed by the default GPG key:

| Default GPG Key  | User GPG Key  |
|---------|---------|
| ![image](/attachments/ff27597a-d38c-48fc-8284-e16d4fd3ea2d) | ![image](/attachments/3c8c5540-dd29-45c9-a9f0-dc3b69677ef3) |

Looking into the commit history of the template file, I noticed that Forgejo-signed commits originally had a distinct icon:
[gitea-unlock-cog](b918609acc) --> [octicon-shield-lock](12ddc48c5c) --> octicon-unverified (current)

Since `octicon-unverified` is also used when a commit cannot be verified (.Verification.Warning), I find it misleading for successfully signed commits. This PR changes the icon to the verified variant for better clarity.

### Tests

1. Set up automatic commit signing by Forgejo ([guide](https://forgejo.org/docs/latest/admin/signing/#automatic-signing))
2. Trigger automatic commit signing in any of the following scenarios:
    - Repository Initialisation (should be the easiest)
    - Wiki Changes
    - CRUD actions using the editor or the API
    - Merges from Pull Requests
3. Open the commit signed by Forgejo
4. Verify that the icon next to the GPG key id is `octicon-verified`:
![image](/attachments/7b4eb81c-d33c-4daf-84dd-9f99ebb0b99d)

### Documentation

- [x] I did not document these changes and I do not expect someone else to do it.

### Release notes

- [x] I want the title to show in the release notes with a link to this pull request.

<!--start release-notes-assistant-->

## Release notes
<!--URL:https://codeberg.org/forgejo/forgejo-->
- User Interface bug fixes
  - [PR](https://codeberg.org/forgejo/forgejo/pulls/6803): <!--number 6803 --><!--line 0 --><!--description Zml4KHVpKTogZGlzcGxheSB2ZXJpZmllZCBpY29uIGZvciBkZWZhdWx0IGdwZyBrZXk=-->fix(ui): display verified icon for default gpg key<!--description-->
<!--end release-notes-assistant-->

Co-authored-by: shgew <shgew@noreply.codeberg.org>
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6833
Reviewed-by: Gusted <gusted@noreply.codeberg.org>
Reviewed-by: Beowulf <beowulf@beocode.eu>
Co-authored-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
Co-committed-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
2025-02-07 13:16:23 +00:00
forgejo-backport-action
d260013a51 [v10.0/forgejo] fix: avoid y-axis clipping for branch name (#6832)
**Backport:** https://codeberg.org/forgejo/forgejo/pulls/6817

- `gt-ellipsis` is set on elements to avoid overflowing its text contents and in the case of overflowing it would show an ellipsis. To force it to not overflow `overflow: hidden` is set, however this also hides the overflow on the y-axis, `overflow-x: hidden` has the same behavior.
- To avoid avoid the branch name from being clipped, add a very small amount of padding on the y-axis. This is a workaround and not a proper solution. There does not seem a good cross-platform solution available to fix this in a proper way.
- Resolves forgejo/forgejo#6811

Co-authored-by: Gusted <postmaster@gusted.xyz>
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6832
Reviewed-by: Gusted <gusted@noreply.codeberg.org>
Co-authored-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
Co-committed-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
2025-02-07 10:46:08 +00:00
forgejo-backport-action
3168330425 [v10.0/forgejo] chore(i18n): lint errors (#6809)
**Backport:** https://codeberg.org/forgejo/forgejo/pulls/6808

settings.hidden_comment_types_description: Rodzaje komentarzy zaznaczone tutaj nie będą wyświetlały się na stronach zgłoszeń. Zaznaczenie "Etykieta" na przykład usunie wszystkie komentarze "<użytkownik> dodał/usunął <etykieta>".
repo.settings.add_web_hook_desc: Zintegruj <a target="_black" rel="noreferrer" href="https://TO-BE-REPLACED.COM">%s</a> ze swoim repozytorium.

Add user & label in Polish.

Co-authored-by: Earl Warren <contact@earl-warren.org>
Co-authored-by: Michael Kriese <michael.kriese@gmx.de>
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6809
Reviewed-by: Michael Kriese <michael.kriese@gmx.de>
Co-authored-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
Co-committed-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
2025-02-06 12:37:53 +00:00
forgejo-backport-action
2491bbfa69 [v10.0/forgejo] ci: fix go version check (#6810)
**Backport:** https://codeberg.org/forgejo/forgejo/pulls/6646

Allow ci go version to be higher than the tool chain. This will fix the current build issues on forgejo branch

Co-authored-by: Michael Kriese <michael.kriese@visualon.de>
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6810
Reviewed-by: Michael Kriese <michael.kriese@gmx.de>
Co-authored-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
Co-committed-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
2025-02-06 08:15:36 +00:00
forgejo-backport-action
ac01c7a384 [v10.0/forgejo] fix: make author search case insenstive (#6783)
**Backport:** https://codeberg.org/forgejo/forgejo/pulls/6782

- Make the author search in the issues and pull request list case
insenstive.
- Background: Forgejo mandates that all columns are case senstive and
only SQLite ignores this for ASCII characters with the `LIKE` operator
any other database will indeed do case senstive searching. Codeberg
recently made all columns case senstive, hence why this issue now surfaces.
- Added integration test.
- Resolves forgejo/forgejo#6744

Co-authored-by: Gusted <postmaster@gusted.xyz>
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6783
Reviewed-by: Beowulf <beowulf@beocode.eu>
Reviewed-by: Gusted <gusted@noreply.codeberg.org>
Co-authored-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
Co-committed-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
2025-02-04 17:06:20 +00:00
forgejo-backport-action
b615d41457 [v10.0/forgejo] fix(ui): add triangle down octicon to code search options dropdown (#6770)
**Backport:** https://codeberg.org/forgejo/forgejo/pulls/6620

This adds the triangle down oction to the code search options dropdown to match the other search option dropdowns (issue, pull).

Co-authored-by: Beowulf <beowulf@beocode.eu>
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6770
Reviewed-by: 0ko <0ko@noreply.codeberg.org>
Reviewed-by: Otto <otto@codeberg.org>
Co-authored-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
Co-committed-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
2025-02-03 08:35:41 +00:00
0ko
184bdef340 [v10.0/forgejo] i18n: backport of translation updates 6565 and 6665 (#6764)
Translation updates that are applicable to v10 strings were picked from these commits:
* dac7d5e73b
* 7678386138

Changes to strings that are only present in the v11 branch were not picked.

Below is a list of co-authors of the ported commits. It may contain co-authors who's changes were not picked due to being v11-only.

Co-authored-by: 0ko <0ko@users.noreply.translate.codeberg.org>
Co-authored-by: artnay <artnay@users.noreply.translate.codeberg.org>
Co-authored-by: Atul_Eterno <atul_eterno@users.noreply.translate.codeberg.org>
Co-authored-by: Dirk <dirk@users.noreply.translate.codeberg.org>
Co-authored-by: earl-warren <earl-warren@users.noreply.translate.codeberg.org>
Co-authored-by: Edgarsons <edgarsons@users.noreply.translate.codeberg.org>
Co-authored-by: Fjuro <fjuro@alius.cz>
Co-authored-by: Fjuro <fjuro@users.noreply.translate.codeberg.org>
Co-authored-by: Gusted <postmaster@gusted.xyz>
Co-authored-by: Ikuyo Mita <searinminecraft@outlook.ph>
Co-authored-by: jedik <jedik@users.noreply.translate.codeberg.org>
Co-authored-by: Juno Takano <jutty@users.noreply.translate.codeberg.org>
Co-authored-by: justbispo <justbispo@users.noreply.translate.codeberg.org>
Co-authored-by: killawabbit <killawabbit@users.noreply.translate.codeberg.org>
Co-authored-by: Kita Ikuyo <searinminecraft@courvix.com>
Co-authored-by: mahlzahn <mahlzahn@posteo.de>
Co-authored-by: Miguel P.L <miguel_pl@users.noreply.translate.codeberg.org>
Co-authored-by: Outbreak2096 <outbreak2096@users.noreply.translate.codeberg.org>
Co-authored-by: Ricky-Tigg <ricky-tigg@users.noreply.translate.codeberg.org>
Co-authored-by: SomeTr <sometr@users.noreply.translate.codeberg.org>
Co-authored-by: tacaly <frederick@tacaly.com>
Co-authored-by: Wuzzy <wuzzy@disroot.org>
Co-authored-by: xtex <xtexchooser@duck.com>

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6764
Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org>
2025-02-02 18:38:07 +00:00
forgejo-backport-action
27276ff26e [v10.0/forgejo] fix: set explore pages to configurable default sort (#6749)
**Backport:** https://codeberg.org/forgejo/forgejo/pulls/6708

- Currently, the explore/organizations page always defaults to using "newest" as its sort. Instead, use the pre-existing config option (`setting.UI.ExploreDefaultSort`) so server administrators can change the default sort order.

## Checklist

The [contributor guide](https://forgejo.org/docs/next/contributor/) contains information that will be helpful to first time contributors. There also are a few [conditions for merging Pull Requests in Forgejo repositories](https://codeberg.org/forgejo/governance/src/branch/main/PullRequestsAgreement.md). You are also welcome to join the [Forgejo development chatroom](https://matrix.to/#/#forgejo-development:matrix.org).

### Tests

(Sorry, not sure how to add a test for this change)

- I added test coverage for Go changes...
  - [ ] in their respective `*_test.go` for unit tests.
  - [x] in the `tests/integration` directory if it involves interactions with a live Forgejo server.

### Documentation

- [ ] I created a pull request [to the documentation](https://codeberg.org/forgejo/docs) to explain to Forgejo users how to use this change.
- [x] I did not document these changes and I do not expect someone else to do it.

### Release notes

I don't mind either way.

- [ ] I do not want this change to show in the release notes.
- [x] I want the title to show in the release notes with a link to this pull request.
- [ ] I want the content of the `release-notes/<pull request number>.md` to be be used for the release notes instead of the title.

Co-authored-by: John Moon <john.moon@vts-i.com>
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6749
Reviewed-by: Gusted <gusted@noreply.codeberg.org>
Co-authored-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
Co-committed-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
2025-01-31 11:12:01 +00:00
forgejo-backport-action
1b00bf2d26 [v10.0/forgejo] fix: Remove autofocus on the dashboard repository search box (#6748)
- No longer autofocus on the searchbox for the repository list that is on the dashboard. There is no justification for doing so.
- Fixes #6653
Co-authored-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
Co-committed-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
2025-01-31 10:40:23 +00:00
forgejo-backport-action
69bc17ea35 [v10.0/forgejo] fix inline file preview for files with encoded URL, fix #5069 (#6739)
**Backport:** https://codeberg.org/forgejo/forgejo/pulls/6525

### Screenshot
#### Before
See #5069.
#### After
![image](/attachments/d57c2ff8-d29e-41b8-9280-c884ac43f12e)
### Tests

- I added test coverage for Go changes...
  - [x] in their respective `*_test.go` for unit tests.
  - [ ] in the `tests/integration` directory if it involves interactions with a live Forgejo server.
- I added test coverage for JavaScript changes...
  - [ ] in `web_src/js/*.test.js` if it can be unit tested.
  - [ ] in `tests/e2e/*.test.e2e.js` if it requires interactions with a live Forgejo server (see also the [developer guide for JavaScript testing](https://codeberg.org/forgejo/forgejo/src/branch/forgejo/tests/e2e/README.md#end-to-end-tests)).
- Manual testing: see https://codeberg.org/forgejo/forgejo/pulls/6525#issuecomment-2578814. Thanks @earl-warren.

### Documentation

- [ ] I created a pull request [to the documentation](https://codeberg.org/forgejo/docs) to explain to Forgejo users how to use this change.
- [x] I did not document these changes and I do not expect someone else to do it.

### Release notes

- [ ] I do not want this change to show in the release notes.
- [ ] I want the title to show in the release notes with a link to this pull request.
- [ ] I want the content of the `release-notes/<pull request number>.md` to be be used for the release notes instead of the title.

Co-authored-by: Robert Wolff <mahlzahn@posteo.de>
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6739
Reviewed-by: Robert Wolff <mahlzahn@posteo.de>
Co-authored-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
Co-committed-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
2025-01-30 11:49:16 +00:00
forgejo-backport-action
0db9a24a4b [v10.0/forgejo] fix: check for webauthn in 2fa user search (#6730)
**Backport:** https://codeberg.org/forgejo/forgejo/pulls/6726

- Check for webauthn credentials in the user search when the two factor
filter is enabled.
- Resolves forgejo/forgejo#6524

Co-authored-by: Gusted <postmaster@gusted.xyz>
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6730
Reviewed-by: Otto <otto@codeberg.org>
Reviewed-by: Gusted <gusted@noreply.codeberg.org>
Co-authored-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
Co-committed-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
2025-01-29 19:28:12 +00:00
forgejo-backport-action
4016f2890d [v10.0/forgejo] fix: disallow blame on directories (#6720)
**Backport:** https://codeberg.org/forgejo/forgejo/pulls/6716

- Don't allow the blame operation on directories.
- Added integration test.
- Resolves forgejo/forgejo#6533

Co-authored-by: Gusted <postmaster@gusted.xyz>
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6720
Reviewed-by: Gusted <gusted@noreply.codeberg.org>
Co-authored-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
Co-committed-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
2025-01-29 09:34:03 +00:00
forgejo-backport-action
c198cb6e65 [v10.0/forgejo] fix(i18n): add forgotten translatable string (#6718)
**Backport:** https://codeberg.org/forgejo/forgejo/pulls/6701

- Regression of 75ce1e2ac1

Co-authored-by: Gusted <postmaster@gusted.xyz>
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6718
Reviewed-by: Gusted <gusted@noreply.codeberg.org>
Co-authored-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
Co-committed-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
2025-01-29 08:28:25 +00:00
forgejo-backport-action
114d8975b5 [v10.0/forgejo] fix: render issue titles consistently (#6717)
**Backport:** https://codeberg.org/forgejo/forgejo/pulls/6715

- Render the issue titles in dashboard feed in consistent manner, by using the existing `RenderIssueTitle`.
- Added integration tests (not exhaustive for all comment types, but exhaustive enough for the current code where some comment types are grouped together).
- Resolves forgejo/forgejo#6705

Co-authored-by: Gusted <postmaster@gusted.xyz>
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6717
Reviewed-by: Gusted <gusted@noreply.codeberg.org>
Co-authored-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
Co-committed-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
2025-01-29 08:24:37 +00:00
Michael Kriese
7ee19b4c6c chore: consistent docker image and action references (#6704)
backport of #6703
- replace `code.forgejo.org` ->`data.forgejo.org` on docker images
- add `https://data.forgejo.org/` to actions where missing

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6704
Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org>
Co-authored-by: Michael Kriese <michael.kriese@visualon.de>
Co-committed-by: Michael Kriese <michael.kriese@visualon.de>
2025-01-28 15:46:07 +00:00
Renovate Bot
faa263d54a Update dependency katex to v0.16.21 [SECURITY] (v10.0/forgejo) (#6694)
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [katex](https://katex.org) ([source](https://github.com/KaTeX/KaTeX)) | dependencies | patch | [`0.16.18` -> `0.16.21`](https://renovatebot.com/diffs/npm/katex/0.16.18/0.16.21) |

---

> ⚠️ **Warning**
>
> Some dependencies could not be looked up. Check the Dependency Dashboard for more information.

---

### KaTeX \htmlData does not validate attribute names
[CVE-2025-23207](https://nvd.nist.gov/vuln/detail/CVE-2025-23207) / [GHSA-cg87-wmx4-v546](https://github.com/advisories/GHSA-cg87-wmx4-v546)

<details>
<summary>More information</summary>

#### Details
##### Impact
KaTeX users who render untrusted mathematical expressions with `renderToString` could encounter malicious input using `\htmlData` that runs arbitrary JavaScript, or generate invalid HTML.

##### Patches
Upgrade to KaTeX v0.16.21 to remove this vulnerability.

##### Workarounds
- Avoid use of or turn off the `trust` option, or set it to forbid `\htmlData` commands.
- Forbid inputs containing the substring `"\\htmlData"`.
- Sanitize HTML output from KaTeX.

##### Details
`\htmlData` did not validate its attribute name argument, allowing it to generate invalid or malicious HTML that runs scripts.

##### For more information
If you have any questions or comments about this advisory:

- Open an issue or security advisory in the [KaTeX repository](https://github.com/KaTeX/KaTeX/)
- Email us at [katex-security@mit.edu](mailto:katex-security@mit.edu)

#### Severity
- CVSS Score: 6.3 / 10 (Medium)
- Vector String: `CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:L`

#### References
- [https://github.com/KaTeX/KaTeX/security/advisories/GHSA-cg87-wmx4-v546](https://github.com/KaTeX/KaTeX/security/advisories/GHSA-cg87-wmx4-v546)
- [https://nvd.nist.gov/vuln/detail/CVE-2025-23207](https://nvd.nist.gov/vuln/detail/CVE-2025-23207)
- [ff289955e8)
- [https://github.com/KaTeX/KaTeX](https://github.com/KaTeX/KaTeX)

This data is provided by [OSV](https://osv.dev/vulnerability/GHSA-cg87-wmx4-v546) and the [GitHub Advisory Database](https://github.com/github/advisory-database) ([CC-BY 4.0](https://github.com/github/advisory-database/blob/main/LICENSE.md)).
</details>

---

### Release Notes

<details>
<summary>KaTeX/KaTeX (katex)</summary>

### [`v0.16.21`](https://github.com/KaTeX/KaTeX/blob/HEAD/CHANGELOG.md#01621-2025-01-17)

[Compare Source](https://github.com/KaTeX/KaTeX/compare/v0.16.20...v0.16.21)

##### Bug Fixes

-   escape \htmlData attribute name ([57914ad](57914ad91e))

### [`v0.16.20`](https://github.com/KaTeX/KaTeX/blob/HEAD/CHANGELOG.md#01620-2025-01-12)

[Compare Source](https://github.com/KaTeX/KaTeX/compare/v0.16.19...v0.16.20)

##### Bug Fixes

-   \providecommand does not overwrite existing macro ([#&#8203;4000](https://github.com/KaTeX/KaTeX/issues/4000)) ([6d30fe4](6d30fe47b0)), closes [#&#8203;3928](https://github.com/KaTeX/KaTeX/issues/3928)

### [`v0.16.19`](https://github.com/KaTeX/KaTeX/blob/HEAD/CHANGELOG.md#01619-2024-12-29)

[Compare Source](https://github.com/KaTeX/KaTeX/compare/v0.16.18...v0.16.19)

##### Bug Fixes

-   **types:** improve `strict` function type ([#&#8203;4009](https://github.com/KaTeX/KaTeX/issues/4009)) ([4228b4e](4228b4eb52))

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "" (UTC), Automerge - "* 0-3 * * *" (UTC).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4xMzYuMCIsInVwZGF0ZWRJblZlciI6IjM5LjEzNi4xIiwidGFyZ2V0QnJhbmNoIjoidjEwLjAvZm9yZ2VqbyIsImxhYmVscyI6WyJkZXBlbmRlbmN5LXVwZ3JhZGUiLCJ0ZXN0L25vdC1uZWVkZWQiXX0=-->

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6694
Reviewed-by: Gusted <gusted@noreply.codeberg.org>
Co-authored-by: Renovate Bot <forgejo-renovate-action@forgejo.org>
Co-committed-by: Renovate Bot <forgejo-renovate-action@forgejo.org>
2025-01-28 11:34:32 +00:00
forgejo-backport-action
0ecf28f37f [v10.0/forgejo] Fix inline file preview for rendered files (#6685)
**Backport:** https://codeberg.org/forgejo/forgejo/pulls/6572

### What?

This fixes the inline file preview for rendered files (e.g., markdown). [Here, a live issue in v11](https://v11.next.forgejo.org/mahlzahn/test-inline-file-preview/issues/1) and [the same in v7 (with even more bugs)](https://v7.next.forgejo.org/mahlzahn/test-inline-file-preview/issues/1).

It fixes
1. the inline preview for possibly rendered files, when the link is specified with `?display=source`. This happens, e.g., if you are watching a (e.g., markdown) file in source and then want to link some of its lines.
2. the link to the source file inside the inline preview for possible rendered files (currently it links to the rendered version and then the `#L…` cannot point to the correct lines). This is done by always adding `?display=source` to the link.

### Screenshots
<details><summary>

#### Before

</summary>

![image](/attachments/898f82d5-d116-465a-89e2-ed83da189762)

</details>
<details><summary>

#### After

</summary>

![image](/attachments/41058620-47f3-4f6a-b427-66ef33c1a07f)

</details>

### Tests

- I added test coverage for Go changes...
  - [x] in their respective `*_test.go` for unit tests.
  - [ ] in the `tests/integration` directory if it involves interactions with a live Forgejo server.
- I added test coverage for JavaScript changes...
  - [ ] in `web_src/js/*.test.js` if it can be unit tested.
  - [ ] in `tests/e2e/*.test.e2e.js` if it requires interactions with a live Forgejo server (see also the [developer guide for JavaScript testing](https://codeberg.org/forgejo/forgejo/src/branch/forgejo/tests/e2e/README.md#end-to-end-tests)).

I think that this minor edit does not need special tests. Some backend tests have been updated to reflect the addition of URL parameters.

#### Manual testing
- create a repository with a file that can be rendered with couple of lines inside, e.g., a markdown README.md
- go to the source of this file (e.g., `…/src/branch/main/README.md`)
- click on the `<> View Source` button (or add `?display=source` to the URL)
- click on one of the lines, then on the three dots, then on ”Reference in a new issue“
- continue creating the issue

### Documentation

- [ ] I created a pull request [to the documentation](https://codeberg.org/forgejo/docs) to explain to Forgejo users how to use this change.
- [x] I did not document these changes and I do not expect someone else to do it.

### Release notes

- [ ] I do not want this change to show in the release notes.
- [ ] I want the title to show in the release notes with a link to this pull request.
- [ ] I want the content of the `release-notes/<pull request number>.md` to be be used for the release notes instead of the title.

Co-authored-by: Robert Wolff <mahlzahn@posteo.de>
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6685
Reviewed-by: Gusted <gusted@noreply.codeberg.org>
Co-authored-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
Co-committed-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
2025-01-25 11:38:02 +00:00
forgejo-backport-action
d10034f4d8 [v10.0/forgejo] fix: add non allowed domain translation (#6684)
**Backport:** https://codeberg.org/forgejo/forgejo/pulls/6677

- Was added in 2559c80bec and accidentally removed in 5a16c9d9c0.
- Reworded for clarity.
- Resolves #6661

Co-authored-by: Gusted <postmaster@gusted.xyz>
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6684
Reviewed-by: Otto <otto@codeberg.org>
Co-authored-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
Co-committed-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
2025-01-25 01:15:27 +00:00
forgejo-backport-action
553fc3cc42 [v10.0/forgejo] fix: load settings for valid user and email check (#6678)
**Backport:** https://codeberg.org/forgejo/forgejo/pulls/6674

- The doctor commands to check the validity of existing usernames and
email addresses depend on functionality that have configurable behavior
depending on the values of the `[service]` settings, so load them when
running the doctor command.
- Resolves #6664
- No unit test due to the architecture of doctor commands.

Co-authored-by: Gusted <postmaster@gusted.xyz>
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6678
Reviewed-by: Gusted <gusted@noreply.codeberg.org>
Co-authored-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
Co-committed-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
2025-01-24 12:25:00 +00:00
Earl Warren
6d7bf7369d [v10.0/forgejo] chore(security): update security.txt with new expiration date (#6668)
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6668
2025-01-23 17:28:46 +00:00
Earl Warren
eb83b05430 chore(security): update security.txt with new expiration date
Same as https://forgejo.org/.well-known/security.txt

(cherry picked from commit 955f99b6a4)
2025-01-23 16:20:44 +00:00
forgejo-backport-action
61e345cd36 [v10.0/forgejo] fix: teach the doctor about orphaned two_factor rows (#6651)
**Backport:** https://codeberg.org/forgejo/forgejo/pulls/6639

If a row in the two_factor table references a non existent user, it may contain a secret that has an invalid format. Such an orphaned row is never used and should be removed.

Improve the error message to suggest using the doctor to remove it.

Fixes: https://codeberg.org/forgejo/forgejo/issues/6637

## Testing

- make TAGS='sqlite sqlite_unlock_notify' watch
- make TAGS='sqlite  sqlite_unlock_notify' forgejo
- sqlite3 data/gitea.db 'INSERT INTO two_factor VALUES( 0, 500, "", "", "", "", 0, 0)'
- ./forgejo doctor check --run check-db-consistency
  ```
   [1] Check consistency of database
    - [W] Found 1 Orphaned TwoFactor without existing User
   OK

   All done (checks: 1).
   ```
-  ./forgejo doctor check --run check-db-consistency --fix
   ```
   [1] Check consistency of database
    - [I] Deleted 1 Orphaned TwoFactor without existing User
   OK

   All done (checks: 1).
   ```

## Checklist

The [contributor guide](https://forgejo.org/docs/next/contributor/) contains information that will be helpful to first time contributors. There also are a few [conditions for merging Pull Requests in Forgejo repositories](https://codeberg.org/forgejo/governance/src/branch/main/PullRequestsAgreement.md). You are also welcome to join the [Forgejo development chatroom](https://matrix.to/#/#forgejo-development:matrix.org).

### Tests

- I added test coverage for Go changes...
  - [ ] in their respective `*_test.go` for unit tests.
  - [x] in the `tests/integration` directory if it involves interactions with a live Forgejo server.
- I added test coverage for JavaScript changes...
  - [ ] in `web_src/js/*.test.js` if it can be unit tested.
  - [ ] in `tests/e2e/*.test.e2e.js` if it requires interactions with a live Forgejo server (see also the [developer guide for JavaScript testing](https://codeberg.org/forgejo/forgejo/src/branch/forgejo/tests/e2e/README.md#end-to-end-tests)).

### Documentation

- [ ] I created a pull request [to the documentation](https://codeberg.org/forgejo/docs) to explain to Forgejo users how to use this change.
- [x] I did not document these changes and I do not expect someone else to do it.

### Release notes

- [ ] I do not want this change to show in the release notes.
- [x] I want the title to show in the release notes with a link to this pull request.
- [ ] I want the content of the `release-notes/<pull request number>.md` to be be used for the release notes instead of the title.

<!--start release-notes-assistant-->

## Release notes
<!--URL:https://codeberg.org/forgejo/forgejo-->
- Bug fixes
  - [PR](https://codeberg.org/forgejo/forgejo/pulls/6651): <!--number 6651 --><!--line 0 --><!--description Zml4OiB0ZWFjaCB0aGUgZG9jdG9yIGFib3V0IG9ycGhhbmVkIHR3b19mYWN0b3Igcm93cw==-->fix: teach the doctor about orphaned two_factor rows<!--description-->
<!--end release-notes-assistant-->

Co-authored-by: Earl Warren <contact@earl-warren.org>
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6651
Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org>
Co-authored-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
Co-committed-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
2025-01-22 07:47:34 +00:00
forgejo-backport-action
5c5e1c87ba [v10.0/forgejo] fix: listing tokens must not require basic auth (#6643)
**Backport:** https://codeberg.org/forgejo/forgejo/pulls/6633

When the change is reverted, the test fails as follows:

```sh
=== TestAPIGetTokens (tests/integration/api_token_test.go:34)
--- FAIL: TestAPIGetTokens (0.17s)
    testlogger.go:405: 2025/01/20 14:05:22 ...les/storage/local.go:33:NewLocalStorage() [I] Creating new Local Storage at /home/earl-warren/software/forgejo/tests/gitea-lfs-meta
    testlogger.go:405: 2025/01/20 14:05:22 ...eb/routing/logger.go:102:func1() [I] router: completed GET /api/v1/users/user2/tokens for test-mock:12345, 200 OK in 2.5ms @ user/app.go:24(user.ListAccessTokens)
    testlogger.go:405: 2025/01/20 14:05:22 ...eb/routing/logger.go:102:func1() [I] router: completed POST /api/v1/users/user1/tokens for test-mock:12345, 201 Created in 4.7ms @ user/app.go:75(user.CreateAccessToken)
    testlogger.go:405: 2025/01/20 14:05:22 ...eb/routing/logger.go:102:func1() [I] router: completed GET /api/v1/users/user2/tokens for test-mock:12345, 401 Unauthorized in 4.9ms @ v1/api.go:413(v1.Routes.func2.5.1.reqBasicOrRevProxyAuth.6)
    api_token_test.go:46:
        	Error Trace:	/home/earl-warren/software/forgejo/tests/integration/integration_test.go:556
        	            				/home/earl-warren/software/forgejo/tests/integration/api_token_test.go:46
        	Error:      	Not equal:
        	            	expected: 200
        	            	actual  : 401
        	Test:       	TestAPIGetTokens
        	Messages:   	Request: GET /api/v1/users/user2/tokens
    api_token_test.go:46: Response:  {"message":"auth required","url":"http://localhost:3003/api/swagger"}

    testlogger.go:405: 2025/01/20 14:05:22 ...eb/routing/logger.go:102:func1() [I] router: completed DELETE /api/v1/users/user1/tokens/94 for test-mock:12345, 204 No Content in 1.4ms @ user/app.go:145(user.DeleteAccessToken)
```

## Checklist

The [contributor guide](https://forgejo.org/docs/next/contributor/) contains information that will be helpful to first time contributors. There also are a few [conditions for merging Pull Requests in Forgejo repositories](https://codeberg.org/forgejo/governance/src/branch/main/PullRequestsAgreement.md). You are also welcome to join the [Forgejo development chatroom](https://matrix.to/#/#forgejo-development:matrix.org).

### Tests

- I added test coverage for Go changes...
  - [ ] in their respective `*_test.go` for unit tests.
  - [x] in the `tests/integration` directory if it involves interactions with a live Forgejo server.
- I added test coverage for JavaScript changes...
  - [ ] in `web_src/js/*.test.js` if it can be unit tested.
  - [ ] in `tests/e2e/*.test.e2e.js` if it requires interactions with a live Forgejo server (see also the [developer guide for JavaScript testing](https://codeberg.org/forgejo/forgejo/src/branch/forgejo/tests/e2e/README.md#end-to-end-tests)).

### Documentation

- [ ] I created a pull request [to the documentation](https://codeberg.org/forgejo/docs) to explain to Forgejo users how to use this change.
- [x] I did not document these changes and I do not expect someone else to do it.

### Release notes

- [x] I do not want this change to show in the release notes.
- [ ] I want the title to show in the release notes with a link to this pull request.
- [ ] I want the content of the `release-notes/<pull request number>.md` to be be used for the release notes instead of the title.

<!--start release-notes-assistant-->

## Release notes
<!--URL:https://codeberg.org/forgejo/forgejo-->
- Bug fixes
  - [PR](https://codeberg.org/forgejo/forgejo/pulls/6633): <!--number 6633 --><!--line 0 --><!--description bGlzdGluZyB0b2tlbnMgbXVzdCBub3QgcmVxdWlyZSBiYXNpYyBhdXRo-->listing tokens must not require basic auth<!--description-->
<!--end release-notes-assistant-->

Co-authored-by: Earl Warren <contact@earl-warren.org>
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6643
Reviewed-by: Michael Kriese <michael.kriese@gmx.de>
Co-authored-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
Co-committed-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
2025-01-21 10:40:00 +00:00
Renovate Bot
7546c4acf3 Update dependency go to v1.23.5 (v10.0/forgejo) (#6644)
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [go](https://go.dev/) ([source](https://github.com/golang/go)) | toolchain | patch | `1.23.4` -> `1.23.5` |

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - "* 0-3 * * *" (UTC).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4xMDYuMCIsInVwZGF0ZWRJblZlciI6IjM5LjEwNi4wIiwidGFyZ2V0QnJhbmNoIjoidjEwLjAvZm9yZ2VqbyIsImxhYmVscyI6WyJkZXBlbmRlbmN5LXVwZ3JhZGUiLCJ0ZXN0L25vdC1uZWVkZWQiXX0=-->

Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6644
Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org>
Co-authored-by: Renovate Bot <forgejo-renovate-action@forgejo.org>
Co-committed-by: Renovate Bot <forgejo-renovate-action@forgejo.org>
2025-01-21 09:32:40 +00:00
Otto
25e81d05f0 [v10.0/forgejo] Fix mention and emoji expansion & Improve leaving list completion (#6632)
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6632
Reviewed-by: Beowulf <beowulf@beocode.eu>
2025-01-20 20:34:31 +00:00
forgejo-backport-action
054537989f [v10.0/forgejo] fix(ui): prevent overflow of branch selector in commit graph (#6636)
**Backport:** https://codeberg.org/forgejo/forgejo/pulls/6617

Fix that the branch selector in the commit graph can overflow

| Previous | Now |
| :----: | :----: |
| ![grafik](/attachments/ab303490-2abc-46d8-8715-0750886fd111) | ![grafik](/attachments/63f919a9-bcc2-4969-8c8c-d265c1917e07) |
| ![grafik](/attachments/c0e6636f-52eb-4bf0-bf07-0139ec407e33) | ![grafik](/attachments/752aef87-9250-4bf6-b74a-5a1813394dbe) |
| ![grafik](/attachments/e61842dd-29c1-4517-86db-f068de9ff6e8) | ![grafik](/attachments/bf251b43-80fa-4e1a-9fbe-fd27e5f8d195) |

Fixes #6615

Co-authored-by: Beowulf <beowulf@beocode.eu>
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6636
Reviewed-by: Otto <otto@codeberg.org>
Reviewed-by: Beowulf <beowulf@beocode.eu>
Co-authored-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
Co-committed-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
2025-01-20 20:28:39 +00:00
Beowulf
348e0e1fac Leave list/quote expanison with double enter
When editing a list or similar syntax elements, pressing enter starts a
new line with the line introducer (e.g. `- ` for a plain list).
But currently it's uncomfortable when someone wants to leave the list.
Pressing enter again simply adds more and more lines with the prefix.

With this change the list is terminated if enter is pressed on a line
which contains the introducer but nothing else. This behavior is known
from other markdown editors like the on used by GitLab or GitHub.

Additionally I changed the regex for detecting a prefix.
- Why: With the change you can add a single whitespace at the end if you
  want to keep an "empty" line. So if you want to write:
  ```
  - First
  -
  - Third
  ```
  You just need to add a whitespace in the second line to prevent that
  the prefix will be removed.
- Changes in detail:
  - ordered bullet list prefix detection:
    nothing changed
  - todo list and unordered list prefix detection:
    have been split up:
    - todo list: Changed that only 1 to 4 whitespaces can be between the
      list char (`-`,`*`,`+`) and the checkbox (`[ ]`,`[x]`) - Why? If
      more then 4 spaces are between the list char and the checkbox,
      this is no longer detected as a prefix for a todo item based on
      the markdown standard. Due to the amount of spaces it is instead
      parsed as code.
    - unordered list: The prefix now needs to have exactly one space
      after the list char (`-`,`*`,`+`). More spaces will not be taken
      into account for detecting the prefix.
  - quote prefix detection:
    nothing changed

The current e2e-tests where simplified and duplicated tests where
removed. Test cases for the new functionality where added.

(cherry picked from commit 7ea62c5ce4)
2025-01-20 12:52:20 +00:00
Beowulf
627634a76e Prevent prefix continuation if currently a text expander popup is open
This fixes that mentions and emoji autocompletion was broken in e.g. a
list, because the list handling take presidency over the text expansion.

(cherry picked from commit 276ef10dd5)
2025-01-20 12:52:20 +00:00
forgejo-backport-action
28db11f2e7 [v10.0/forgejo] fix(ui): hide git note add button for commit if commit already has a note (#6614)
Backport: https://codeberg.org/forgejo/forgejo/pulls/6613

Regression from f5c0570533

Co-authored-by: Beowulf <beowulf@beocode.eu>
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6614
Reviewed-by: Beowulf <beowulf@beocode.eu>
Reviewed-by: 0ko <0ko@noreply.codeberg.org>
Co-authored-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
Co-committed-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
2025-01-18 19:43:08 +00:00
forgejo-backport-action
6d0bf55f05 [v10.0/forgejo] fix: Reset content of comment edit field on cancel (#6601)
**Backport:** https://codeberg.org/forgejo/forgejo/pulls/6595

Currently, the content of the text field is not reset when you cancel editing. This change resets the content of the text field when editing is canceled.

If this is not done and you click on cancel and then on edit again, you can no longer return to the initial content without completely reloading the page.

Co-authored-by: Beowulf <beowulf@beocode.eu>
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6601
Reviewed-by: Gusted <gusted@noreply.codeberg.org>
Reviewed-by: Beowulf <beowulf@beocode.eu>
Co-authored-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
Co-committed-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
2025-01-17 20:48:35 +00:00
forgejo-backport-action
2d1e163913 [v10.0/forgejo] fix: reduce noise for the v303 migration (#6594)
**Backport:** https://codeberg.org/forgejo/forgejo/pulls/6591

Using SELECT `%s` FROM `%s` WHERE 0 = 1 to assert the existence of a column is simple but noisy: it shows errors in the migrations that are confusing for Forgejo admins because they are not actual errors.

Use introspection instead, which is more complicated but leads to the same result.

Add a test that ensures it works as expected, for all database types. Although the migration is run for all database types, it does not account for various scenarios and is never tested in the case a column does not exist.

Refs: https://codeberg.org/forgejo/forgejo/issues/6583

Co-authored-by: Earl Warren <contact@earl-warren.org>
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6594
Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org>
Co-authored-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
Co-committed-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
2025-01-17 08:15:16 +00:00
forgejo-backport-action
26b7c6b86a [v10.0/forgejo] tests(e2e): Various fixes to visual testing (#6587)
**Backport:** https://codeberg.org/forgejo/forgejo/pulls/6569

Co-authored-by: Otto Richter <git@otto.splvs.net>
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6587
Reviewed-by: Otto <otto@codeberg.org>
Co-authored-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
Co-committed-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
2025-01-17 01:07:22 +00:00
forgejo-backport-action
05056b8aa2 [v10.0/forgejo] Refactor e2e tests to simplify authentication setup (#6585)
**Backport:** https://codeberg.org/forgejo/forgejo/pulls/6400

Replaced manual login and context loading across tests with Playwright's `test.use` configuration for user authentication. This simplifies test setup, improves readability, and reduces repetition.

#6362 first part

## Checklist

The [contributor guide](https://forgejo.org/docs/next/contributor/) contains information that will be helpful to first time contributors. There also are a few [conditions for merging Pull Requests in Forgejo repositories](https://codeberg.org/forgejo/governance/src/branch/main/PullRequestsAgreement.md). You are also welcome to join the [Forgejo development chatroom](https://matrix.to/#/#forgejo-development:matrix.org).

### Tests

- I added test coverage for Go changes...
  - [ ] in their respective `*_test.go` for unit tests.
  - [ ] in the `tests/integration` directory if it involves interactions with a live Forgejo server.
- I added test coverage for JavaScript changes...
  - [ ] in `web_src/js/*.test.js` if it can be unit tested.
  - [ ] in `tests/e2e/*.test.e2e.js` if it requires interactions with a live Forgejo server (see also the [developer guide for JavaScript testing](https://codeberg.org/forgejo/forgejo/src/branch/forgejo/tests/e2e/README.md#end-to-end-tests)).

### Documentation

- [x] I created a pull request [to the documentation](https://codeberg.org/forgejo/docs) to explain to Forgejo users how to use this change.
- [ ] I did not document these changes and I do not expect someone else to do it.

### Release notes

- [x] I do not want this change to show in the release notes.
- [ ] I want the title to show in the release notes with a link to this pull request.
- [ ] I want the content of the `release-notes/<pull request number>.md` to be be used for the release notes instead of the title.

Co-authored-by: Julian Schlarb <julian.schlarb@denktmit.de>
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6585
Reviewed-by: Otto <otto@codeberg.org>
Co-authored-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
Co-committed-by: forgejo-backport-action <forgejo-backport-action@noreply.codeberg.org>
2025-01-16 13:37:06 +00:00
212 changed files with 8197 additions and 2175 deletions

View file

@ -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

View file

@ -27,8 +27,10 @@ runs:
- name: "Get go environment information"
id: go-environment
run: |
echo "modcache=$(su ${RUN_AS_USER} -c '/opt/hostedtoolcache/go/${GO_VERSION}/x64/bin/go env GOMODCACHE')" >> "$GITHUB_OUTPUT"
echo "cache=$(su ${RUN_AS_USER} -c '/opt/hostedtoolcache/go/${GO_VERSION}/x64/bin/go env GOCACHE')" >> "$GITHUB_OUTPUT"
chmod 755 $HOME # ensure ${RUN_AS_USER} has permission when go is located in $HOME
export GOROOT="$(go env GOROOT)"
echo "modcache=$(su ${RUN_AS_USER} -c '${GOROOT}/bin/go env GOMODCACHE')" >> "$GITHUB_OUTPUT"
echo "cache=$(su ${RUN_AS_USER} -c '${GOROOT}/bin/go env GOCACHE')" >> "$GITHUB_OUTPUT"
env:
RUN_AS_USER: ${{ inputs.username }}
GO_VERSION: ${{ steps.go-version.outputs.go-version }}
@ -48,7 +50,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: |

View file

@ -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

View file

@ -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.3.1
uses: https://data.forgejo.org/forgejo/forgejo-build-publish/build@v5.3.4
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.3.1
uses: https://data.forgejo.org/forgejo/forgejo-build-publish/build@v5.3.4
with:
forgejo: "${{ env.GITHUB_SERVER_URL }}"
owner: "${{ env.GITHUB_REPOSITORY_OWNER }}"

View file

@ -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 }}

View file

@ -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.3.1
uses: https://data.forgejo.org/forgejo/forgejo-build-publish/publish@v5.3.4
with:
from-forgejo: ${{ vars.FORGEJO }}
to-forgejo: ${{ vars.FORGEJO }}

View file

@ -44,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 }}
@ -102,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

1
.gitignore vendored
View file

@ -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

View file

@ -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" \

View file

@ -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,8 @@ 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
ARG RELEASE_VERSION
LABEL maintainer="contact@forgejo.org" \
org.opencontainers.image.authors="Forgejo" \
org.opencontainers.image.url="https://forgejo.org" \
@ -71,6 +72,7 @@ RUN apk --no-cache add \
git \
curl \
gnupg \
openssh-client \
git-annex \
&& rm -rf /var/cache/apk/*

View file

@ -1,27 +1,33 @@
<svg viewBox="0 0 212 212" xmlns="http://www.w3.org/2000/svg">
<style type="text/css">
circle {
fill: none;
stroke: #000;
stroke-width: 15;
}
path {
fill: none;
stroke: #000;
stroke-width: 25;
}
.orange {
stroke:#ff6600;
}
.red {
stroke:#d40000;
}
</style>
<g transform="translate(6,6)">
<path d="M58 168 v-98 a50 50 0 0 1 50-50 h20" class="orange" />
<path d="M58 168 v-30 a50 50 0 0 1 50-50 h20" class="red" />
<circle cx="142" cy="20" r="18" class="orange" />
<circle cx="142" cy="88" r="18" class="red" />
<circle cx="58" cy="180" r="18" class="red" />
<!--
This logo was created by Michael Hanke <mih@ngln.eu> from
the original Forgejo logo by Caesar Schinas and the git-annex
logo by Henrik Nyh <http://henrik.nyh.se/>, Joey Hess <id@joeyh.name>,
John Lawrence, and Yann Büchau <nobodyinperson at posteo de>.
It is licensed under the Creative Commons Attribution-ShareAlike 4.0
International (CC BY-SA 4.0) license.
-->
<svg xmlns="http://www.w3.org/2000/svg" width="212" height="212"
viewBox="0 0 56.092 56.092" xmlns:v="https://vecta.io/nano">
<g transform="matrix(1.003855 0 0 1.003855 -155.52693 -24.929635)"
fill="none">
<g stroke-width="6.615">
<path d="M168.804 70.908V44.979a13.229 13.229 0 0 1 13.229-13.229h5.292"
stroke="#f60" />
<path d="M168.804 70.908v-7.937a13.229 13.229 0 0 1 13.229-13.229h5.292"
stroke="#d40000" />
</g>
<g stroke-width="3.969">
<circle cx="191.029" cy="31.75" r="4.762" stroke="#f60" />
<g stroke="#d40000">
<circle cx="191.029" cy="49.742" r="4.762" />
<circle cx="168.804" cy="74.083" r="4.762" />
</g>
</g>
</g>
<g fill="#777">
<path d="M34.648 56.182c-2.089-.269-4.238-2.244-4.538-4.561-.288-1.937.128-4.198 1.729-5.476.702-.479 1.658-1.015 2.5-.951v2.757c-1.003.112-1.975 1.252-1.954 2.296.025 1.359.626 2.607 1.933 3.014 1.446.487 3.102.348 4.44-.461 1.106-.862 1.208-2.466.63-3.687-.26-.672-.821-1.165-1.582-1.163v2.392H35.66v-5.149h6.5v1.852l-1.78.016c1.661.947 1.832 2.991 1.747 4.409.06 2.436-2.347 4.422-4.734 4.688-.864.065-1.594.068-2.743.023zm-4.644-12.011l-.014-2.702h12.185l-.001 2.715-12.17-.013zm4.645-3.651v-2.892h-4.724v-2.516h4.724v-3.245h2.826v3.245h4.702v2.516h-4.702l-.047 2.886-2.779.006z" />
<path d="M22.23 24.801l-2.819 3.94h1.565a9.01 9.01 0 0 0 .103 1.283l2.488-.377c-.044-.296-.071-.599-.075-.906h1.556zm1.531 5.732l-2.405.724a8.9 8.9 0 0 0 .447 1.18l2.281-1.055a6.36 6.36 0 0 1-.323-.848zm.753 1.622L22.4 33.518a8.99 8.99 0 0 0 3.949 3.365l1.006-2.305a6.45 6.45 0 0 1-2.839-2.421zm3.675 2.715l-.679 2.425a8.94 8.94 0 0 0 1.18.244l.348-2.492a6.52 6.52 0 0 1-.848-.178zm21.673-10.069l-2.819 3.94h1.565c-.003.308-.03.61-.075.906l2.488.377a9.01 9.01 0 0 0 .103-1.283h1.556zm-1.523 5.732a6.36 6.36 0 0 1-.323.848l2.281 1.055c.176-.379.325-.774.447-1.18zm-.753 1.622a6.45 6.45 0 0 1-2.839 2.421l1.006 2.305a8.99 8.99 0 0 0 3.949-3.365zm-3.675 2.715a6.52 6.52 0 0 1-.848.178l.348 2.492a8.94 8.94 0 0 0 1.18-.244z"
fill-rule="evenodd" />
</g>
</svg>

Before

Width:  |  Height:  |  Size: 677 B

After

Width:  |  Height:  |  Size: 2.4 KiB

View file

@ -1,27 +1,33 @@
<svg viewBox="0 0 212 212" xmlns="http://www.w3.org/2000/svg">
<style type="text/css">
circle {
fill: none;
stroke: #000;
stroke-width: 15;
}
path {
fill: none;
stroke: #000;
stroke-width: 25;
}
.orange {
stroke:#ff6600;
}
.red {
stroke:#d40000;
}
</style>
<g transform="translate(6,6)">
<path d="M58 168 v-98 a50 50 0 0 1 50-50 h20" class="orange" />
<path d="M58 168 v-30 a50 50 0 0 1 50-50 h20" class="red" />
<circle cx="142" cy="20" r="18" class="orange" />
<circle cx="142" cy="88" r="18" class="red" />
<circle cx="58" cy="180" r="18" class="red" />
<!--
This logo was created by Michael Hanke <mih@ngln.eu> from
the original Forgejo logo by Caesar Schinas and the git-annex
logo by Henrik Nyh <http://henrik.nyh.se/>, Joey Hess <id@joeyh.name>,
John Lawrence, and Yann Büchau <nobodyinperson at posteo de>.
It is licensed under the Creative Commons Attribution-ShareAlike 4.0
International (CC BY-SA 4.0) license.
-->
<svg xmlns="http://www.w3.org/2000/svg" width="212" height="212"
viewBox="0 0 56.092 56.092" xmlns:v="https://vecta.io/nano">
<g transform="matrix(1.003855 0 0 1.003855 -155.52693 -24.929635)"
fill="none">
<g stroke-width="6.615">
<path d="M168.804 70.908V44.979a13.229 13.229 0 0 1 13.229-13.229h5.292"
stroke="#f60" />
<path d="M168.804 70.908v-7.937a13.229 13.229 0 0 1 13.229-13.229h5.292"
stroke="#d40000" />
</g>
<g stroke-width="3.969">
<circle cx="191.029" cy="31.75" r="4.762" stroke="#f60" />
<g stroke="#d40000">
<circle cx="191.029" cy="49.742" r="4.762" />
<circle cx="168.804" cy="74.083" r="4.762" />
</g>
</g>
</g>
<g fill="#777">
<path d="M34.648 56.182c-2.089-.269-4.238-2.244-4.538-4.561-.288-1.937.128-4.198 1.729-5.476.702-.479 1.658-1.015 2.5-.951v2.757c-1.003.112-1.975 1.252-1.954 2.296.025 1.359.626 2.607 1.933 3.014 1.446.487 3.102.348 4.44-.461 1.106-.862 1.208-2.466.63-3.687-.26-.672-.821-1.165-1.582-1.163v2.392H35.66v-5.149h6.5v1.852l-1.78.016c1.661.947 1.832 2.991 1.747 4.409.06 2.436-2.347 4.422-4.734 4.688-.864.065-1.594.068-2.743.023zm-4.644-12.011l-.014-2.702h12.185l-.001 2.715-12.17-.013zm4.645-3.651v-2.892h-4.724v-2.516h4.724v-3.245h2.826v3.245h4.702v2.516h-4.702l-.047 2.886-2.779.006z" />
<path d="M22.23 24.801l-2.819 3.94h1.565a9.01 9.01 0 0 0 .103 1.283l2.488-.377c-.044-.296-.071-.599-.075-.906h1.556zm1.531 5.732l-2.405.724a8.9 8.9 0 0 0 .447 1.18l2.281-1.055a6.36 6.36 0 0 1-.323-.848zm.753 1.622L22.4 33.518a8.99 8.99 0 0 0 3.949 3.365l1.006-2.305a6.45 6.45 0 0 1-2.839-2.421zm3.675 2.715l-.679 2.425a8.94 8.94 0 0 0 1.18.244l.348-2.492a6.52 6.52 0 0 1-.848-.178zm21.673-10.069l-2.819 3.94h1.565c-.003.308-.03.61-.075.906l2.488.377a9.01 9.01 0 0 0 .103-1.283h1.556zm-1.523 5.732a6.36 6.36 0 0 1-.323.848l2.281 1.055c.176-.379.325-.774.447-1.18zm-.753 1.622a6.45 6.45 0 0 1-2.839 2.421l1.006 2.305a8.99 8.99 0 0 0 3.949-3.365zm-3.675 2.715a6.52 6.52 0 0 1-.848.178l.348 2.492a8.94 8.94 0 0 0 1.18-.244z"
fill-rule="evenodd" />
</g>
</svg>

Before

Width:  |  Height:  |  Size: 677 B

After

Width:  |  Height:  |  Size: 2.4 KiB

View file

@ -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", "bruger",
"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", "etiket", "iezīme",
"label", "etichetta", "etiķete", "rótulo", "Label", "utilizador", "etiket", "iezīme", "etykieta",
} {
oldnew = append(oldnew, "<"+el+">", "REPLACED-TAG")
}

20
go.mod
View file

@ -1,8 +1,8 @@
module code.gitea.io/gitea
go 1.23
go 1.23.0
toolchain go1.23.4
toolchain go1.23.6
require (
code.forgejo.org/f3/gof3/v3 v3.10.2
@ -53,7 +53,7 @@ require (
github.com/gobwas/glob v0.2.3
github.com/gogs/chardet v0.0.0-20211120154057-b7413eaefb8f
github.com/gogs/go-gogs-client v0.0.0-20210131175652-1d7215cd8d85
github.com/golang-jwt/jwt/v5 v5.2.1
github.com/golang-jwt/jwt/v5 v5.2.2
github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0
github.com/google/go-github/v64 v64.0.0
github.com/google/pprof v0.0.0-20241017200806-017d972448fc
@ -85,7 +85,7 @@ require (
github.com/opencontainers/image-spec v1.1.0
github.com/pquerna/otp v1.4.0
github.com/prometheus/client_golang v1.20.5
github.com/redis/go-redis/v9 v9.7.0
github.com/redis/go-redis/v9 v9.7.3
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
@ -101,13 +101,13 @@ require (
github.com/yuin/goldmark v1.7.8
github.com/yuin/goldmark-highlighting/v2 v2.0.0-20230729083705-37449abec8cc
go.uber.org/mock v0.4.0
golang.org/x/crypto v0.31.0
golang.org/x/crypto v0.35.0
golang.org/x/image v0.23.0
golang.org/x/net v0.33.0
golang.org/x/oauth2 v0.23.0
golang.org/x/sync v0.10.0
golang.org/x/sys v0.28.0
golang.org/x/text v0.21.0
golang.org/x/net v0.36.0
golang.org/x/oauth2 v0.27.0
golang.org/x/sync v0.11.0
golang.org/x/sys v0.30.0
golang.org/x/text v0.22.0
google.golang.org/grpc v1.69.2
google.golang.org/protobuf v1.36.1
gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df

36
go.sum
View file

@ -981,8 +981,8 @@ github.com/gogs/go-gogs-client v0.0.0-20210131175652-1d7215cd8d85 h1:UjoPNDAQ5JP
github.com/gogs/go-gogs-client v0.0.0-20210131175652-1d7215cd8d85/go.mod h1:fR6z1Ie6rtF7kl/vBYMfgD5/G5B1blui7z426/sj2DU=
github.com/golang-jwt/jwt/v4 v4.5.0 h1:7cYmW1XlMY7h7ii7UhUyChSgS5wUJEnm9uZVTGqOWzg=
github.com/golang-jwt/jwt/v4 v4.5.0/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0=
github.com/golang-jwt/jwt/v5 v5.2.1 h1:OuVbFODueb089Lh128TAcimifWaLhJwVflnrgM17wHk=
github.com/golang-jwt/jwt/v5 v5.2.1/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk=
github.com/golang-jwt/jwt/v5 v5.2.2 h1:Rl4B7itRWVtYIHFrSNd7vhTiz9UpLdi6gZhZ3wEeDy8=
github.com/golang-jwt/jwt/v5 v5.2.2/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk=
github.com/golang-sql/civil v0.0.0-20220223132316-b832511892a9 h1:au07oEsX2xN0ktxqI+Sida1w446QrXBRJ0nee3SNZlA=
github.com/golang-sql/civil v0.0.0-20220223132316-b832511892a9/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0=
github.com/golang-sql/sqlexp v0.1.0 h1:ZCD6MBpcuOVfGVqsEmY5/4FtYiKz6tSyUv9LPEDei6A=
@ -1342,8 +1342,8 @@ github.com/prometheus/common v0.55.0 h1:KEi6DK7lXW/m7Ig5i47x0vRzuBsHuvJdi5ee6Y3G
github.com/prometheus/common v0.55.0/go.mod h1:2SECS4xJG1kd8XF9IcM1gMX6510RAEL65zxzNImwdc8=
github.com/prometheus/procfs v0.15.1 h1:YagwOFzUgYfKKHX6Dr+sHT7km/hxC76UB0learggepc=
github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoGhij/e3PBqk=
github.com/redis/go-redis/v9 v9.7.0 h1:HhLSs+B6O021gwzl+locl0zEDnyNkxMtf/Z3NNBMa9E=
github.com/redis/go-redis/v9 v9.7.0/go.mod h1:f6zhXITC7JUJIlPEiBOTXxJgPLdZcA93GewI7inzyWw=
github.com/redis/go-redis/v9 v9.7.3 h1:YpPyAayJV+XErNsatSElgRZZVCwXX9QzkKYNvO7x0wM=
github.com/redis/go-redis/v9 v9.7.3/go.mod h1:bGUrSggJ9X9GUmZpZNEOQKaANxSGgOEBRltRTZHSvrA=
github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0 h1:OdAsTTz6OkFY5QxjkYwrChwuRruF69c169dPK26NUlk=
github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo=
github.com/rhysd/actionlint v1.6.27 h1:xxwe8YmveBcC8lydW6GoHMGmB6H/MTqUU60F2p10wjw=
@ -1505,8 +1505,8 @@ golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5y
golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
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=
golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk=
golang.org/x/crypto v0.35.0 h1:b15kiHdrGCHrP6LvwaQ3c03kgNhhiMgvlhxHQhmg2Xs=
golang.org/x/crypto v0.35.0/go.mod h1:dy7dXNW32cAb/6/PRuTNsix8T+vJAqvuIy5Bli/x0YQ=
golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
@ -1631,8 +1631,8 @@ golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc=
golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns=
golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg=
golang.org/x/net v0.33.0 h1:74SYHlV8BIgHIFC/LrYkOGIwL19eTYXQ5wc6TBuO36I=
golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4=
golang.org/x/net v0.36.0 h1:vWF2fRbw4qslQsQzgFqZff+BItCvGFQqKzKIzx1rmoA=
golang.org/x/net v0.36.0/go.mod h1:bFmbeoIPfrw4sMHNhb4J9f6+tPziuGjq7Jk/38fxi1I=
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
@ -1662,8 +1662,8 @@ golang.org/x/oauth2 v0.4.0/go.mod h1:RznEsdpjGAINPTOF0UH/t+xJ75L18YO3Ho6Pyn+uRec
golang.org/x/oauth2 v0.5.0/go.mod h1:9/XBHVqLaWO3/BRHs5jbpYCnOZVjj5V0ndyaAM7KB4I=
golang.org/x/oauth2 v0.6.0/go.mod h1:ycmewcwgD4Rpr3eZJLSB4Kyyljb3qDh40vJ8STE5HKw=
golang.org/x/oauth2 v0.7.0/go.mod h1:hPLQkd9LyjfXTiRohC/41GhcFqxisoUQ99sCUOHO9x4=
golang.org/x/oauth2 v0.23.0 h1:PbgcYx2W7i4LvjJWEbf0ngHV6qJYr86PkAV3bXdLEbs=
golang.org/x/oauth2 v0.23.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI=
golang.org/x/oauth2 v0.27.0 h1:da9Vo7/tDv5RH/7nZDz1eMGS/q1Vv1N/7FCrBhI9I3M=
golang.org/x/oauth2 v0.27.0/go.mod h1:onh5ek6nERTohokkhCD/y2cV4Do3fxFHFuAejCkRWT8=
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
@ -1680,8 +1680,8 @@ golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJ
golang.org/x/sync v0.0.0-20220819030929-7fc1605a5dde/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20220929204114-8fcdb60fdcc0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ=
golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
golang.org/x/sync v0.11.0 h1:GGz8+XQP4FvTTrjZPzNKTMFtSXH80RAzG+5ghFPgK9w=
golang.org/x/sync v0.11.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
@ -1771,8 +1771,8 @@ golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA=
golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc=
golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc=
@ -1784,8 +1784,8 @@ golang.org/x/term v0.7.0/go.mod h1:P32HKFT3hSsZrRxla30E9HqToFYAQPCMs/zFMBUFqPY=
golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo=
golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU=
golang.org/x/term v0.15.0/go.mod h1:BDl952bC7+uMoWR75FIrCDx79TPU9oHkTZ9yRbYOrX0=
golang.org/x/term v0.27.0 h1:WP60Sv1nlK1T6SupCHbXzSaN0b9wUmsPoRS9b61A23Q=
golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM=
golang.org/x/term v0.29.0 h1:L6pJp37ocefwRRtYPKSWOWzOtWSxVajvz2ldH/xi3iU=
golang.org/x/term v0.29.0/go.mod h1:6bl4lRlvVuDgSf3179VpIxBF0o10JUpXWOnI7nErv7s=
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
@ -1804,8 +1804,8 @@ golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo=
golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ=
golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM=
golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY=
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=

View file

@ -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
}

View file

@ -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

View file

@ -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) {

View file

@ -219,8 +219,13 @@ func SSHNativeParsePublicKey(keyLine string) (string, int, error) {
return "", 0, fmt.Errorf("ParsePublicKey: %w", err)
}
pkeyType := pkey.Type()
if certPkey, ok := pkey.(*ssh.Certificate); ok {
pkeyType = certPkey.Key.Type()
}
// The ssh library can parse the key, so next we find out what key exactly we have.
switch pkey.Type() {
switch pkeyType {
case ssh.KeyAlgoDSA:
rawPub := struct {
Name string

View file

@ -35,6 +35,7 @@ func Test_SSHParsePublicKey(t *testing.T) {
{"ecdsa-384", false, "ecdsa", 384, "ecdsa-sha2-nistp384 AAAAE2VjZHNhLXNoYTItbmlzdHAzODQAAAAIbmlzdHAzODQAAABhBINmioV+XRX1Fm9Qk2ehHXJ2tfVxW30ypUWZw670Zyq5GQfBAH6xjygRsJ5wWsHXBsGYgFUXIHvMKVAG1tpw7s6ax9oA+dJOJ7tj+vhn8joFqT+sg3LYHgZkHrfqryRasQ== nocomment"},
{"ecdsa-sk", true, "ecdsa-sk", 256, "sk-ecdsa-sha2-nistp256@openssh.com AAAAInNrLWVjZHNhLXNoYTItbmlzdHAyNTZAb3BlbnNzaC5jb20AAAAIbmlzdHAyNTYAAABBBGXEEzWmm1dxb+57RoK5KVCL0w2eNv9cqJX2AGGVlkFsVDhOXHzsadS3LTK4VlEbbrDMJdoti9yM8vclA8IeRacAAAAEc3NoOg== nocomment"},
{"ed25519-sk", true, "ed25519-sk", 256, "sk-ssh-ed25519@openssh.com AAAAGnNrLXNzaC1lZDI1NTE5QG9wZW5zc2guY29tAAAAIE7kM1R02+4ertDKGKEDcKG0s+2vyDDcIvceJ0Gqv5f1AAAABHNzaDo= nocomment"},
{"ed25519-cert-v01", true, "ed25519", 256, "ssh-ed25519-cert-v01@openssh.com AAAAIHNzaC1lZDI1NTE5LWNlcnQtdjAxQG9wZW5zc2guY29tAAAAIAlIAPlEj0mYQzQo8Ks0Nm/Ct8ceNkyJSf4DLuF5l7+5AAAAIEuWAoaBo2tT29/oMNnoDfdAPRCIdM2RGapKUhY4nDfLRgPQwfnRoc0AAAABAAAAcHZhdWx0LW9pZGMtNmRhYjdiZDgtNDg5YS00MDFkLTg3ZmItNjdjNTlhMDZkZDkxLTNjNTk2M2YyMGRmMDM3MDkyMzc1YmNiYmNiNzkxY2EyZWIxM2I0NGZhMzc2NTcwMWI0MjMwODU0MWFmNjhkNTgAAAALAAAAB2Zvcmdlam8AAAAAZ6/RUQAAAABn115vAAAAAAAAAAAAAAAAAAACFwAAAAdzc2gtcnNhAAAAAwEAAQAAAgEAySnM/TvD117GyKgOgMatDB2t+fCHORFaWVmH5SaadAzNJ2DfDAauRSLfnim1xdgAOMTzsPEEHH47zyYMjE85o2AiJxrfUBMw3O/7AbNc6+HyLr/txH4+vD9tWQknKnpVWM+3Z9wiHDcOdKRoXCmFZKJH1vxs16GNWjwbrfNiimv7Oi0fadgvTDKX603gpLTuVDXqs9eQFLCONptei86JYBAJqaHvg51k8YUCKt9WFqKAj7BJUWmrDvhv5VFMOsnZieJjqxkoxnpsQNlXfPzxK0vIpJofbYfWwscv/g9WZypHwO1ZR2PqzKm99YrSdr8w5256l0f44vsF0NSP0N7bDQEfYYnRGj8zWTYCBFD+uYF7AxIeaRUpZoTQO8MvCHOLMIDinNgEeCUvNA2v9zHl4BGq+PQjzUKAgJiKj0MZeiCDAmQ22g83ggQlB6BOrBb1fNa/S1cmTbGHQ2oAN358aqkmHVCBhPOyA2Rf65D2M2vzDlUdOsNDUIWAHk7GbwSNGDgcYfTWqtR5fTzp2MJovMh1dDUDXjOvojbhzjJtSy9+rzUYIv18aXdOitzVBgPMWdeVCZFZv4OKF+5MiqxQvedUvfiSjsdxZWLxyT1CJ88G3MzxNMS/Djm86T8h/Oa55bdvFtqpsLfvpIqq0pnXq1V/vF2j1MWwRB5z5Xh/HtEAAAIUAAAADHJzYS1zaGEyLTI1NgAAAgB2I2gzqemQl8/ETxtakALlm/2BpUcbhADcFWuoH6BCPnWHuTSwf3OayM6KXv1PQfL3YFRoi9Afrp8kVFL6DePsmKH+0BUEMz71sZ7v1ty7pwfzibItGnpTbQXhzbEiNYAFoz77rl7oaXF7pV6JNZhj3DVAB5gVA2oN5KRNVxijz+6uyuFJEw1HIl1C7GworvGwZcN7BThTEh3i72/Vntejy9Z8uGVjSFjS0rjRo2oXK1LKN0rVt66p3TmCWHouLkVnOTk0qrhLGlL2HVyo24OYHbkAAObD9b6aMDYlmluk6NsaiTKsSTsvMrbIbjtFQlh7nNyoPhZ0VMwaT1l10pDQ5uxWWZjKGIkz4xM1ZfpBszjJNPo+ivYQnTSjj9LwkbLAT9a/5LawSj80TGcLEMO+0eyPdJsP0wYmOVRFAZeRiBgwb3HrzcF6Wqr8icj1EjYkKSy9YFHGTnFBGknpdh3HGwghRXrCUwAnSM76db9pv4/qowT8LthtJ3dY5Epe0OJ1Tqm+q8bkGH4gB+7uqLSqM5pIHSKLp7lfHQBt1J6xa7H2saiweaWjU+QGTgQ2Lg+uUC5DXJrmm60CeFJ4BoGhUenDlgijbQpjH/l6330PbwefgjWtUK/pqaEA4lCoPyvJ+eF2DbYfPiAIBAFQnhVJJae4AH+XoCt29nb2j30ztg== nocomment"},
}
for _, tc := range testCases {

View file

@ -0,0 +1,23 @@
-
id: 1001
title: Org project that contains private and public 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 and public issues
owner_id: 2
repo_id: 0
is_closed: false
creator_id: 2
board_type: 1
type: 1
created_unix: 1738000000
updated_unix: 1738000000

View 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

View file

@ -0,0 +1,23 @@
-
id: 1001
issue_id: 6
project_id: 1001
project_board_id: 1001
-
id: 1002
issue_id: 7
project_id: 1002
project_board_id: 1002
-
id: 1003
issue_id: 16
project_id: 1001
project_board_id: 1001
-
id: 1004
issue_id: 1
project_id: 1002
project_board_id: 1002

View file

@ -0,0 +1,5 @@
-
id: 1001
user_id: 29
repo_id: 3
mode: 1

View file

@ -0,0 +1,11 @@
-
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

View file

@ -0,0 +1,8 @@
-
id: 1001
project_id: 1001
title: Triage
creator_id: 2
default: true
created_unix: 1738000000
updated_unix: 1738000000

View file

@ -0,0 +1,11 @@
-
id: 1001
issue_id: 6
project_id: 1001
project_board_id: 1001
-
id: 1002
issue_id: 15
project_id: 1001
project_board_id: 1001

View file

@ -64,6 +64,7 @@
base_branch: branch2
merge_base: 985f0301dba5e7b34be866819cd15ad3d8f508ee
has_merged: false
allow_maintainer_edit: true
-
id: 6

View file

@ -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

View file

@ -7,9 +7,11 @@ import (
"context"
"crypto/md5"
"encoding/base64"
"fmt"
"code.gitea.io/gitea/models/auth"
"code.gitea.io/gitea/models/db"
"code.gitea.io/gitea/modules/log"
"code.gitea.io/gitea/modules/secret"
"code.gitea.io/gitea/modules/setting"
@ -57,19 +59,38 @@ func MigrateTwoFactorToKeying(x *xorm.Engine) error {
oldEncryptionKey := md5.Sum([]byte(setting.SecretKey))
return db.Iterate(context.Background(), nil, func(ctx context.Context, bean *auth.TwoFactor) error {
messages := make([]string, 0, 100)
ids := make([]int64, 0, 100)
err = db.Iterate(context.Background(), nil, func(ctx context.Context, bean *auth.TwoFactor) error {
decodedStoredSecret, err := base64.StdEncoding.DecodeString(string(bean.Secret))
if err != nil {
return err
messages = append(messages, fmt.Sprintf("two_factor.id=%d, two_factor.uid=%d: base64.StdEncoding.DecodeString: %v", bean.ID, bean.UID, err))
ids = append(ids, bean.ID)
return nil
}
secretBytes, err := secret.AesDecrypt(oldEncryptionKey[:], decodedStoredSecret)
if err != nil {
return err
messages = append(messages, fmt.Sprintf("two_factor.id=%d, two_factor.uid=%d: secret.AesDecrypt: %v", bean.ID, bean.UID, err))
ids = append(ids, bean.ID)
return nil
}
bean.SetSecret(string(secretBytes))
_, err = db.GetEngine(ctx).Cols("secret").ID(bean.ID).Update(bean)
return err
})
if err == nil {
if len(ids) > 0 {
log.Error("Forgejo migration[25]: The following TOTP secrets were found to be corrupted and removed from the database. TOTP is no longer required to login with the associated users. They should be informed because they will need to visit their security settings and configure TOTP again. No other action is required. See https://codeberg.org/forgejo/forgejo/issues/6637 for more context on the various causes for such a corruption.")
for _, message := range messages {
log.Error("Forgejo migration[25]: %s", message)
}
_, err = db.GetEngine(context.Background()).In("id", ids).NoAutoCondition().NoAutoTime().Delete(&auth.TwoFactor{})
}
}
return err
}

View file

@ -36,10 +36,14 @@ func Test_MigrateTwoFactorToKeying(t *testing.T) {
cnt, err := x.Table("two_factor").Count()
require.NoError(t, err)
assert.EqualValues(t, 1, cnt)
assert.EqualValues(t, 2, cnt)
require.NoError(t, MigrateTwoFactorToKeying(x))
cnt, err = x.Table("two_factor").Count()
require.NoError(t, err)
assert.EqualValues(t, 1, cnt)
var twofactor auth.TwoFactor
_, err = x.Table("two_factor").ID(1).Get(&twofactor)
require.NoError(t, err)

View file

@ -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,28 @@ 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,
AllPublic: true,
}
if doer != nil {
issueOpts.User = doer
issueOpts.Org = org
}
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 +86,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 +168,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
}

View file

@ -0,0 +1,173 @@
// 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, 2)
assert.EqualValues(t, 16, issueList[0].ID)
assert.EqualValues(t, 6, issueList[1].ID)
issuesNum, err := issues.NumIssuesInProject(db.DefaultContext, orgProject, user2, org, optional.None[bool]())
require.NoError(t, err)
assert.EqualValues(t, 2, 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, 2, 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.Len(t, issueList, 1)
assert.EqualValues(t, 16, issueList[0].ID)
issuesNum, err := issues.NumIssuesInProject(db.DefaultContext, orgProject, nil, org, optional.None[bool]())
require.NoError(t, err)
assert.EqualValues(t, 1, issuesNum)
issuesNum, err = issues.NumIssuesInProject(db.DefaultContext, orgProject, nil, org, optional.Some(true))
require.NoError(t, err)
assert.EqualValues(t, 0, issuesNum)
issuesNum, err = issues.NumIssuesInProject(db.DefaultContext, orgProject, nil, org, optional.Some(false))
require.NoError(t, err)
assert.EqualValues(t, 1, 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, 2)
assert.EqualValues(t, 7, issueList[0].ID)
assert.EqualValues(t, 1, issueList[1].ID)
issuesNum, err := issues.NumIssuesInProject(db.DefaultContext, userProject, user2, nil, optional.None[bool]())
require.NoError(t, err)
assert.EqualValues(t, 2, 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, 2, 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.Len(t, issueList, 1)
assert.EqualValues(t, 1, issueList[0].ID)
issuesNum, err := issues.NumIssuesInProject(db.DefaultContext, userProject, nil, nil, optional.None[bool]())
require.NoError(t, err)
assert.EqualValues(t, 1, issuesNum)
issuesNum, err = issues.NumIssuesInProject(db.DefaultContext, userProject, nil, nil, optional.Some(true))
require.NoError(t, err)
assert.EqualValues(t, 0, issuesNum)
issuesNum, err = issues.NumIssuesInProject(db.DefaultContext, userProject, nil, nil, optional.Some(false))
require.NoError(t, err)
assert.EqualValues(t, 1, issuesNum)
})
})
}
func TestPrivateRepoProjects(t *testing.T) {
defer tests.AddFixtures("models/fixtures/TestPrivateRepoProjects/")()
require.NoError(t, unittest.PrepareTestDatabase())
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("Partial access", func(t *testing.T) {
defer tests.PrintCurrentTest(t)()
user29 := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 29})
issueList, err := issues.LoadIssuesFromColumn(db.DefaultContext, column, user29, 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, user29, org, optional.None[bool]())
require.NoError(t, err)
assert.EqualValues(t, 1, issuesNum)
issuesNum, err = issues.NumIssuesInProject(db.DefaultContext, orgProject, user29, org, optional.Some(true))
require.NoError(t, err)
assert.EqualValues(t, 0, issuesNum)
issuesNum, err = issues.NumIssuesInProject(db.DefaultContext, orgProject, user29, org, optional.Some(false))
require.NoError(t, err)
assert.EqualValues(t, 1, issuesNum)
})
t.Run("Full access", func(t *testing.T) {
defer tests.PrintCurrentTest(t)()
user2 := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 2})
issueList, err := issues.LoadIssuesFromColumn(db.DefaultContext, column, user2, org, optional.None[bool]())
require.NoError(t, err)
assert.Len(t, issueList, 2)
assert.EqualValues(t, 15, issueList[0].ID)
assert.EqualValues(t, 6, issueList[1].ID)
issuesNum, err := issues.NumIssuesInProject(db.DefaultContext, orgProject, user2, org, optional.None[bool]())
require.NoError(t, err)
assert.EqualValues(t, 2, 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, 2, issuesNum)
})
}

View file

@ -49,9 +49,13 @@ type IssuesOptions struct { //nolint
// prioritize issues from this repo
PriorityRepoID int64
IsArchived optional.Option[bool]
Org *organization.Organization // issues permission scope
Team *organization.Team // issues permission scope
User *user_model.User // issues permission scope
// If combined with AllPublic, then private as well as public issues
// that matches the criteria will be returned, if AllPublic is false
// only the private issues will be returned.
Org *organization.Organization // issues permission scope
Team *organization.Team // issues permission scope
User *user_model.User // issues permission scope
}
// applySorts sort an issues-related session based on the provided
@ -196,7 +200,8 @@ func applyRepoConditions(sess *xorm.Session, opts *IssuesOptions) {
} else if len(opts.RepoIDs) > 1 {
opts.RepoCond = builder.In("issue.repo_id", opts.RepoIDs)
}
if opts.AllPublic {
// If permission scoping is set, then we set this condition at a later stage.
if opts.AllPublic && opts.User == nil {
if opts.RepoCond == nil {
opts.RepoCond = builder.NewCond()
}
@ -268,7 +273,14 @@ func applyConditions(sess *xorm.Session, opts *IssuesOptions) {
applyLabelsCondition(sess, opts)
if opts.User != nil {
sess.And(issuePullAccessibleRepoCond("issue.repo_id", opts.User.ID, opts.Org, opts.Team, opts.IsPull.Value()))
cond := issuePullAccessibleRepoCond("issue.repo_id", opts.User.ID, opts.Org, opts.Team, opts.IsPull.Value())
// If AllPublic was set, then also consider all issues in public
// repositories in addition to the private repositories the user has access
// to.
if opts.AllPublic {
cond = cond.Or(builder.In("issue.repo_id", builder.Select("id").From("repository").Where(builder.Eq{"is_private": false})))
}
sess.And(cond)
}
}
@ -329,6 +341,9 @@ func issuePullAccessibleRepoCond(repoIDstr string, userID int64, org *organizati
builder.Or(
repo_model.UserOrgUnitRepoCond(repoIDstr, userID, org.ID, unitType), // team member repos
repo_model.UserOrgPublicUnitRepoCond(userID, org.ID), // user org public non-member repos, TODO: check repo has issues
builder.And(
builder.In("issue.repo_id", builder.Select("id").From("repository").Where(builder.Eq{"owner_id": org.ID})),
repo_model.UserAccessRepoCond(repoIDstr, userID)), // user can access org repo in a unit independent way
),
)
}

View file

@ -7,3 +7,12 @@
last_used_passcode:
created_unix: 1564253724
updated_unix: 1564253724
-
id: 2
uid: 23
secret: badbad
scratch_salt: badbad
scratch_hash: badbad
last_used_passcode:
created_unix: 1564253724
updated_unix: 1564253724

View file

@ -1,23 +1,27 @@
// 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
import (
"fmt"
"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()
for _, drop := range []struct {
table string
field string
table string
column string
}{
{"badge", "slug"},
{"oauth2_application", "skip_secondary_authorization"},
@ -29,10 +33,25 @@ func GiteaLastDrop(x *xorm.Engine) error {
{"protected_branch", "force_push_allowlist_team_i_ds"},
{"protected_branch", "force_push_allowlist_deploy_keys"},
} {
if _, err := sess.Exec(fmt.Sprintf("SELECT `%s` FROM `%s` WHERE 0 = 1", drop.field, drop.table)); err != nil {
var table *schemas.Table
found := false
for _, table = range tables {
if table.Name == drop.table {
found = true
break
}
}
if !found {
continue
}
if err := base.DropTableColumns(sess, drop.table, drop.field); err != nil {
if table.GetColumn(drop.column) == nil {
continue
}
if err := base.DropTableColumns(sess, drop.table, drop.column); err != nil {
return err
}
}

View 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))
}

View file

@ -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).

View file

@ -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").

View file

@ -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",

View file

@ -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)
}

View file

@ -842,48 +842,46 @@ func countUsers(ctx context.Context, opts *CountUserFilter) int64 {
// VerifyUserActiveCode verifies that the code is valid for the given purpose for this user.
// If delete is specified, the token will be deleted.
func VerifyUserAuthorizationToken(ctx context.Context, code string, purpose auth.AuthorizationPurpose, delete bool) (*User, error) {
func VerifyUserAuthorizationToken(ctx context.Context, code string, purpose auth.AuthorizationPurpose) (user *User, deleteToken func() error, err error) {
lookupKey, validator, found := strings.Cut(code, ":")
if !found {
return nil, nil
return nil, nil, nil
}
authToken, err := auth.FindAuthToken(ctx, lookupKey, purpose)
if err != nil {
if errors.Is(err, util.ErrNotExist) {
return nil, nil
return nil, nil, nil
}
return nil, err
return nil, nil, err
}
if authToken.IsExpired() {
return nil, auth.DeleteAuthToken(ctx, authToken)
return nil, nil, auth.DeleteAuthToken(ctx, authToken)
}
rawValidator, err := hex.DecodeString(validator)
if err != nil {
return nil, err
return nil, nil, err
}
if subtle.ConstantTimeCompare([]byte(authToken.HashedValidator), []byte(auth.HashValidator(rawValidator))) == 0 {
return nil, errors.New("validator doesn't match")
return nil, nil, errors.New("validator doesn't match")
}
u, err := GetUserByID(ctx, authToken.UID)
if err != nil {
if IsErrUserNotExist(err) {
return nil, nil
return nil, nil, nil
}
return nil, err
return nil, nil, err
}
if delete {
if err := auth.DeleteAuthToken(ctx, authToken); err != nil {
return nil, err
}
deleteToken = func() error {
return auth.DeleteAuthToken(ctx, authToken)
}
return u, nil
return u, deleteToken, nil
}
// ValidateUser check if user is valid to insert / update into database

View file

@ -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) {
@ -741,13 +741,13 @@ func TestVerifyUserAuthorizationToken(t *testing.T) {
assert.True(t, ok)
t.Run("Wrong purpose", func(t *testing.T) {
u, err := user_model.VerifyUserAuthorizationToken(db.DefaultContext, code, auth.PasswordReset, false)
u, _, err := user_model.VerifyUserAuthorizationToken(db.DefaultContext, code, auth.PasswordReset)
require.NoError(t, err)
assert.Nil(t, u)
})
t.Run("No delete", func(t *testing.T) {
u, err := user_model.VerifyUserAuthorizationToken(db.DefaultContext, code, auth.UserActivation, false)
u, _, err := user_model.VerifyUserAuthorizationToken(db.DefaultContext, code, auth.UserActivation)
require.NoError(t, err)
assert.EqualValues(t, user.ID, u.ID)
@ -757,9 +757,10 @@ func TestVerifyUserAuthorizationToken(t *testing.T) {
})
t.Run("Delete", func(t *testing.T) {
u, err := user_model.VerifyUserAuthorizationToken(db.DefaultContext, code, auth.UserActivation, true)
u, deleteToken, err := user_model.VerifyUserAuthorizationToken(db.DefaultContext, code, auth.UserActivation)
require.NoError(t, err)
assert.EqualValues(t, user.ID, u.ID)
require.NoError(t, deleteToken())
authToken, err := auth.FindAuthToken(db.DefaultContext, lookupKey, auth.UserActivation)
require.ErrorIs(t, err, util.ErrNotExist)

View file

@ -10,24 +10,39 @@
package annex
import (
"bytes"
"context"
"errors"
"fmt"
"io/fs"
"io"
"os"
"path"
"path/filepath"
"regexp"
"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 {
@ -37,6 +52,42 @@ func LookupKey(blob *git.Blob) (string, error) {
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 {
@ -89,14 +140,18 @@ func IsAnnexed(blob *git.Blob) (bool, error) {
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 repoConfigFileRe = regexp.MustCompile("[^/]+/[^/]+.git/config$")
var (
uuid2repoPathCache = make(map[string]string)
repoPath2uuidCache = make(map[string]string)
@ -106,30 +161,39 @@ func Init() error {
if !setting.Annex.Enabled {
return nil
}
log.Info("Populating the git-annex UUID cache with existing repositories")
return updateUUID2RepoPathCache()
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 {
return filepath.WalkDir(setting.RepoRootPath, func(path string, d fs.DirEntry, err error) error {
if err == nil && repoConfigFileRe.MatchString(path) {
thisRepoPath := strings.TrimSuffix(path, "/config")
_, ok := repoPath2uuidCache[thisRepoPath]
if ok {
return nil
}
stdout, _, err := git.NewCommand(git.DefaultContext, "config", "annex.uuid").RunStdString(&git.RunOpts{Dir: thisRepoPath})
if err != nil {
return nil
}
repoUUID := strings.TrimSpace(stdout)
if repoUUID != "" {
uuid2repoPathCache[repoUUID] = thisRepoPath
repoPath2uuidCache[thisRepoPath] = repoUUID
}
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
}
return nil
})
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) {

View file

@ -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:]
}
}
}

View file

@ -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(" &ndash; ")
}
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)
}

View file

@ -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,
)
})
}

View file

@ -7,6 +7,7 @@ import (
"fmt"
"code.gitea.io/gitea/modules/markup"
mdutil "code.gitea.io/gitea/modules/markup/markdown/util"
"code.gitea.io/gitea/modules/util"
"github.com/yuin/goldmark/ast"
@ -19,7 +20,7 @@ func (g *ASTTransformer) transformHeading(_ *markup.RenderContext, v *ast.Headin
v.SetAttribute(attr.Name, []byte(fmt.Sprintf("%v", attr.Value)))
}
}
txt := v.Lines().Value(reader.Source())
txt := mdutil.Text(v, reader.Source())
header := markup.Header{
Text: util.UnsafeBytesToString(txt),
Level: v.Level,

View file

@ -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Ñ

View file

@ -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¸üÂÿi.x-o³ò"›úŒLÌ

View file

@ -1 +1 @@
4c1aaf56bcb9f39dcf65f3f250726850aed13cd6
eeb243c3395e1921c5d90e73bd739827251fc99d

View file

@ -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
}

View file

@ -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)

View file

@ -1779,6 +1779,10 @@ runners.task_list.repository = Хранилище
runners.description = Описание
runs.no_workflows.help_no_write_access = За да научите повече за Forgejo Actions, вижте <a target="_blank" rel="noopener noreferrer" href="%s">документацията</a>.
variables.management = Управление на променливи
variables.id_not_exist = Променлива с идентификатор %d не съществува.
variables.not_found = Променливата не е открита.
[heatmap]
less = По-малко
number_of_contributions_in_the_last_12_months = %s приноса през последните 12 месеца
@ -1815,6 +1819,8 @@ code_frequency.what = честота на промените
type-1.display_name = Индивидуален проект
deleted.display_name = Изтрит проект
[search]
no_results = Няма намерени съответстващи резултати.
team_kind = Търсене на екипи...

View file

@ -175,7 +175,7 @@ exact = Exacte
exact_tooltip = Inclou només resultats que són exactament el terme de cerca
issue_kind = Cerca problemes...
regexp = Expressió regular
regexp = RegExp
regexp_tooltip = Interpreta el terme de cerca com una expressió regular
[heatmap]
@ -215,7 +215,7 @@ reinstall_error = Estas intentant instaŀlar sobre una base de dades existent de
reinstall_confirm_message = Reinstaŀlar amb una base de dades existent de Forgejo pot causar diferents problemes. En la majoria de casos, s'hauria d'utilitzar l'"app.ini" existent per executar Forgejo. Si saps el que estàs fent, confirma el seguent:
no_admin_and_disable_registration = No pot deshabilitar l'autoregistre d'usuaris sense crear un compte d'administrador.
err_admin_name_is_reserved = El nom d'usuari "Administrador" no es vàlid: està reservat
smtp_addr = Hoste SMPT
smtp_addr = Hoste SMTP
smtp_port = Port SMPT
smtp_from = Enviar correu com a
mailer_user = Nom d'usuari SMTP
@ -414,6 +414,10 @@ 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
openid_connect_desc = No s'ha reconegut la URI OpenID. Vinculeu-la amb un compte nou aquí.
openid_register_desc = No s'ha reconegut la URI OpenID. Vinculeu-la amb un compte nou aquí.
sign_in_openid = Accediu amb OpenID
[editor]
buttons.indent.tooltip = Aniua els elements un nivell
buttons.unindent.tooltip = Desaniuna els elements un nivell
@ -476,4 +480,8 @@ 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
register_notify = Benvinguts a %s
activate_account.text_2 = Si us plau, cliqueu l'enllaç següent per activar el vostre compte en <b>%s</b>:
activate_email = Verifica la teva adreça de correu electrònic
activate_email.text = Si us plau, cliqueu el següent enllaç per verificar la vostra adreça de correu electrònic en <b>%s</b>
admin.new_user.subject = Nou usuari %s s'acaba d'enregistrar

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -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
@ -2872,6 +2874,8 @@ 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
component_loading_info = Dies könnte einen Moment dauern …
@ -3112,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
@ -3581,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
@ -3946,6 +3950,8 @@ runs.expire_log_message = Logs wurden gelöscht, weil sie zu alt waren.
runs.no_workflows.help_write_access = Keine Ahnung, wie man mit Forgejo Actions anfangen soll? Schau im <a target="_blank" rel="noopener noreferrer" href="%s">Schnellstart in der Benutzerdokumentation</a> vorbei, um deinen ersten Workflow zu schreiben, dann <a target="_blank" rel="noopener noreferrer" href="%s">setze einen Forgejo-Runner auf</a>, um deine Jobs auszuführen.
runs.no_workflows.help_no_write_access = Um über Forgejo Actions zu lernen, siehe <a target="_blank" rel="noopener noreferrer" href="%s">die Dokumentation</a>.
variables.not_found = Die Variable wurde nicht gefunden.
[projects]
type-1.display_name=Individuelles Projekt
type-2.display_name=Repository-Projekt
@ -3978,7 +3984,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.

View file

@ -518,15 +518,15 @@ issue_assigned.issue=Ο/Η @%[1]s σας ανέθεσε το ζήτημα %[2]s
issue.x_mentioned_you=Ο/Η <b>@%s</b> σας ανέφερε:
issue.action.force_push=Ο/Η <b>%[1]s</b> έκανε force-push το <b>%[2]s</b> από %[3]s σε %[4]s.
issue.action.push_1=Ο/Η <b>@%[1]s</b> έκανε push την υποβολή %[3]d στο %[2]s
issue.action.push_n=Ο/Η <b>@%[1]s</b> έκανε push τις υποβολές %[3]d στο %[2]s
issue.action.push_1=Ο/Η <b>@%[1]s</b> έκανε push το commit %[3]d στο %[2]s
issue.action.push_n=Ο/Η <b>@%[1]s</b> έκανε push τα commits %[3]d στο %[2]s
issue.action.close=Ο/Η <b>@%[1]s</b> έκλεισε το #%[2]d.
issue.action.reopen=Ο/Η <b>@%[1]s</b> άνοιξε ξανά το #%[2]d.
issue.action.merge=Ο/Η <b>@%[1]s</b> συγχώνευσε το #%[2]d στο %[3]s.
issue.action.approve=<b>@%[1]s</b> ενέκρινε αυτό το pull request.
issue.action.reject=<b>@%[1]s</b> ζήτησε αλλαγές σε αυτό το pull request.
issue.action.review=<b>@%[1]s</b> άφησε σχόλιο σε αυτό το pull request.
issue.action.review_dismissed=<b>@%[1]s</b> απέρριψε την τελευταία αναθεώρηση από %[2]s για αυτό το pull request.
issue.action.review_dismissed=<b>@%[1]s</b> απέρριψε την τελευταία αξιολόγηση από %[2]s για αυτό το pull request.
issue.action.ready_for_review=Ο/Η <b>@%[1]s</b> επισήμανε πως αυτό το pull request είναι έτοιμο για αξιολόγηση.
issue.action.new=Ο/Η <b>@%[1]s</b> δημιούργησε το #%[2]d.
issue.in_tree_path=Σε %s:
@ -591,9 +591,9 @@ AuthName=Όνομα εξουσιοδότησης
AdminEmail=Email διαχειριστή
NewBranchName=Όνομα νέου κλάδου
CommitSummary=Περίληψη υποβολών
CommitMessage=Μήνυμα υποβολής
CommitChoice=Επιλογή υποβολής
CommitSummary=Περίληψη commit
CommitMessage=Μήνυμα commit
CommitChoice=Επιλογή commit
TreeName=Διαδρομή αρχείου
Content=Περιεχόμενο
@ -682,6 +682,8 @@ Website = Ιστοσελίδα
Location = Τοποθεσία
email_domain_is_not_allowed = Το domain του email χρήστη <b>%s</b> έρχεται σε σύγκρουση είτε με την ρύθμιση EMAIL_DOMAIN_ALLOWLIST ή με την ρύθμιση EMAIL_DOMAIN_BLOCKLIST. Βεβαιωθείτε ότι η διεύθυνση email έχει οριστεί σωστά.
[user]
change_avatar=Αλλαγή εικόνας προφίλ…
joined_on=Εγγράφηκε στις %s
@ -768,7 +770,7 @@ language=Γλώσσα
ui=Θέμα Διεπαφής
hidden_comment_types=Κρυμμένοι τύποι σχολίων
hidden_comment_types_description=Οι τύποι σχολίων που επιλέγονται εδώ δε θα εμφανίζονται μέσα στις σελίδες ζητημάτων. Επιλέγοντας π.χ τις "Ταμπέλες", θα αφαιρεθούν όλα τα σχόλια σαν το "<user> πρόσθεσε/αφαίρεσε τα σήματα <label>".
hidden_comment_types.ref_tooltip=Σχόλια όπου αυτό το ζήτημα αναφέρθηκε από άλλο ζήτημα/υποβολή/…
hidden_comment_types.ref_tooltip=Σχόλια όπου αυτό το ζήτημα αναφέρθηκε από άλλο ζήτημα/commit/…
hidden_comment_types.issue_ref_tooltip=Σχόλια όπου ο χρήστης αλλάζει τον κλάδο/ετικέτα που σχετίζεται με το ζήτημα
comment_type_group_reference=Αναφορά
comment_type_group_label=Σήμα
@ -781,7 +783,7 @@ comment_type_group_deadline=Προθεσμία
comment_type_group_dependency=Εξάρτηση
comment_type_group_lock=Κατάσταση κλειδώματος
comment_type_group_review_request=Αίτηση αξιολόγησης
comment_type_group_pull_request_push=Προστέθηκαν υποβολές
comment_type_group_pull_request_push=Προστέθηκαν commits
comment_type_group_project=Έργο
comment_type_group_issue_ref=Αναφορά ζητήματος
saved_successfully=Οι ρυθμίσεις σας αποθηκεύτηκαν επιτυχώς.
@ -823,7 +825,7 @@ activations_pending=Εκκρεμεί ενεργοποίηση
can_not_add_email_activations_pending=Εκκρεμεί μια ενεργοποίηση, δοκιμάστε ξανά σε λίγα λεπτά αν θέλετε να προσθέσετε ένα νέο email.
delete_email=Αφαίρεση
email_deletion=Αφαίρεση διεύθυνσης email
email_deletion_desc=Η διεύθυνση ηλεκτρονικού ταχυδρομείου και οι σχετικές πληροφορίες θα αφαιρεθούν από τον λογαριασμό σας. Οι υποβολές Git από αυτή τη διεύθυνση email θα παραμείνουν αμετάβλητες. Συνέχεια;
email_deletion_desc=Η διεύθυνση email και οι πληροφορίες που συσχετίζονται με αυτήν θα αφαιρεθούν από τον λογαριασμό σας. Τα Git commit που περιλαμβάνουν το email δεν θα επηρεαστούν. Συνέχεια;
email_deletion_success=Η διεύθυνση email σας έχει καταργηθεί.
theme_update_success=Το θέμα διεπαφής σας ενημερώθηκε.
theme_update_error=Το επιλεγμένο θέμα διεπαφής δεν υπάρχει.
@ -839,16 +841,16 @@ add_email_success=Η νέα διεύθυνση email έχει προστεθεί
email_preference_set_success=Οι προτιμήσεις email έχουν οριστεί επιτυχώς.
add_openid_success=Προστέθηκε η νέα διεύθυνση OpenID.
keep_email_private=Απόκρυψη διεύθυνσης email
keep_email_private_popup=Αυτό θα κρύψει το email σας από το προφίλ σας, καθώς και όταν κάνετε ένα pull request ή επεξεργάζεστε ένα αρχείο μέσω της ιστοσελίδας. Οι υποβολές που έχετε ήδη ωθήσει δεν θα τροποποιηθούν. Χρησιμοποιήστε το %s στις υποβολές για να τις συσχετίσετε με το λογαριασμό σας.
keep_email_private_popup=Η διεύθυνση email σας δεν θα εμφανίζεται στο προφίλ σας και δεν θα χρησιμοποιείται για commits που γίνονται μέσω του web UI, όπως σε ανεβασμένα αρχεία, αλλαγές ή merge commits. Για τον συσχετισμό commit με τον λογαριασμό σας, θα χρησιμοποιηθεί αντί αυτού η ειδική διεύθυνση %s. Αυτή η ρύθμιση δεν επηρεάζει commit που υπάρχουν ήδη.
openid_desc=Το OpenID σας επιτρέπει να αναθέσετε τον έλεγχο ταυτότητας σε έναν εξωτερικό πάροχο.
manage_ssh_keys=Διαχείριση κλειδιών SSH
manage_ssh_principals=Διαχείριση Των Αρχών Πιστοποιητικού SSH
manage_gpg_keys=Διαχείριση κλειδιών GPG
add_key=Προσθήκη κλειδιού
ssh_desc=Αυτά τα δημόσια κλειδιά SSH θα συσχετιθούν με το λογαριασμό σας. Τα ιδιωτικά κλειδιά που τους αντιστοιχούν θα επιτρέπουν πλήρη πρόσβαση στα αποθετήριά σας. Ένα επιβεβαιωμένο κλειδί SSH μπορεί να χρησιμοποιηθεί για την υπογραφή των υποβολών (commits) σας.
ssh_desc=Αυτά τα δημόσια κλειδιά SSH θα συσχετιθούν με το λογαριασμό σας. Τα ιδιωτικά κλειδιά που τους αντιστοιχούν θα επιτρέπουν πλήρη πρόσβαση στα αποθετήριά σας. Ένα επιβεβαιωμένο κλειδί SSH μπορεί να χρησιμοποιηθεί για την υπογραφή των commit σας.
principal_desc=Αυτές οι αρχές πιστοποιητικών SSH συνδέονται με το λογαριασμό σας και επιτρέπουν την πλήρη πρόσβαση στα αποθετήριά σας.
gpg_desc=Αυτά τα δημόσια κλειδιά GPG συσχετίζονται με το λογαριασμό σας και επιτρέπουν την επικύρωση των υποβολών (commits) σας. Κρατήστε τα ιδιωτικά κλειδιά σας ασφαλή, καθώς επιτρέπουν την υπογραφή των υποβολών (commits) εκ μέρους σας.
gpg_desc=Αυτά τα δημόσια κλειδιά GPG συσχετίζονται με το λογαριασμό σας και επιτρέπουν την επικύρωση των commit σας. Κρατήστε τα ιδιωτικά κλειδιά σας ασφαλή, καθώς επιτρέπουν την υπογραφή των commits εκ μέρους σας.
ssh_helper=<strong>Χρειάζεστε βοήθεια;</strong> Συμβουλευτείτε τον οδηγό του GitHub για να <a href="%s">δημιουργήσετε τα δικά σας κλειδιά SSH</a> ή να επιλύσετε <a href="%s">κοινά προβλήματα</a> που ίσως αντιμετωπίσετε με τη χρήση του SSH.
gpg_helper=<strong>Χρειάζεστε βοήθεια;</strong> Συμβουλευτείτε τον οδηγό του GitHub <a href="%s">για το GPG</a>.
add_new_key=Προσθήκη κλειδιού SSH
@ -862,9 +864,9 @@ ssh_principal_been_used=Αυτή η αρχή πιστοποίησης (principal
gpg_key_id_used=Υπάρχει ήδη δημόσιο κλειδί GPG με το ίδιο ID.
gpg_no_key_email_found=Αυτό το κλειδί GPG δεν ταιριάζει με οποιαδήποτε ενεργοποιημένη διεύθυνση ηλεκτρονικού ταχυδρομείου που σχετίζεται με το λογαριασμό σας. Μπορεί ακόμα να προστεθεί, αν υπογράψετε το παρεχόμενο διακριτικό (token).
gpg_key_matched_identities=Ταυτότητες που ταιριάζουν:
gpg_key_matched_identities_long=Οι ενσωματωμένες ταυτότητες σε αυτό το κλειδί ταιριάζουν με τις ακόλουθες ενεργοποιημένες διευθύνσεις email για αυτόν το χρήστη. Οι υποβολές που ταιριάζουν με αυτές τις διευθύνσεις email μπορούν να επαληθευτούν με αυτό το κλειδί.
gpg_key_matched_identities_long=Οι ενσωματωμένες ταυτότητες σε αυτό το κλειδί ταιριάζουν με τις ακόλουθες ενεργοποιημένες διευθύνσεις email για αυτόν το χρήστη. Τα commit που περιέχουν αυτές τις διευθύνσεις email μπορούν να επαληθευτούν με αυτό το κλειδί.
gpg_key_verified=Επαληθευμένο κλειδί
gpg_key_verified_long=Το κλειδί έχει επαληθευτεί με ένα διακριτικό (token) και μπορεί να χρησιμοποιηθεί για να επαληθεύσει τις υποβολές που ταιριάζουν με οποιεσδήποτε ενεργοποιημένες διευθύνσεις email για αυτόν το χρήστη εκτός από οποιαδήποτε αντιστοιχισμένη ταυτότητα για αυτό το κλειδί.
gpg_key_verified_long=Το κλειδί έχει επαληθευτεί με ένα διακριτικό (token) και μπορεί να χρησιμοποιηθεί για να επαληθεύσει τα commit που ταιριάζουν με οποιεσδήποτε ενεργοποιημένες διευθύνσεις email για αυτόν το χρήστη εκτός από οποιαδήποτε αντιστοιχισμένη ταυτότητα για αυτό το κλειδί.
gpg_key_verify=Επαλήθευση
gpg_invalid_token_signature=Το κλειδί GPG, η υπογραφή και το διακριτικό (token) δεν ταιριάζουν ή το διακριτικό (token) είναι παρωχημένο.
gpg_token_required=Πρέπει να δώσετε μια υπογραφή για το παρακάτω διακριτικό
@ -875,7 +877,7 @@ gpg_token_signature=Θωρακισμένη υπογραφή GPG
key_signature_gpg_placeholder=Αρχίζει με «-----BEGIN PGP SIGNATURE-----»
verify_gpg_key_success=Το κλειδί GPG «%s» επαληθεύτηκε.
ssh_key_verified=Επαληθευμένο κλειδί
ssh_key_verified_long=Το κλειδί έχει επαληθευτεί με ένα διακριτικό και μπορεί να χρησιμοποιηθεί για να επαληθεύσει τα commits που ταιριάζουν με οποιεσδήποτε ενεργοποιημένες διευθύνσεις ηλεκτρονικού ταχυδρομείου για αυτόν το χρήστη.
ssh_key_verified_long=Το κλειδί έχει επαληθευτεί με ένα διακριτικό και μπορεί να χρησιμοποιηθεί για να επαληθεύσει τα commit που ταιριάζουν με οποιεσδήποτε ενεργοποιημένες διευθύνσεις ηλεκτρονικού ταχυδρομείου για αυτόν το χρήστη.
ssh_key_verify=Επαλήθευση
ssh_invalid_token_signature=Το παρεχόμενο κλειδί SSH, υπογραφή ή διακριτικό δεν ταιριάζει ή το διακριτικό έληξε.
ssh_token_required=Πρέπει να δώσετε μια υπογραφή για το παρακάτω διακριτικό
@ -897,7 +899,7 @@ ssh_key_deletion=Διαγραφή κλειδιού SSH
gpg_key_deletion=Διαγραφή κλειδιού GPG
ssh_principal_deletion=Διαγραφή Αρχών Πιστοποιητικού SSH
ssh_key_deletion_desc=Η διαγραφή ενός κλειδιού SSH ανακαλεί την πρόσβασή του στο λογαριασμό σας. Συνέχεια;
gpg_key_deletion_desc=Η διαγραφή ενός κλειδιού GPG απο-επαληθεύει τις υποβολές που έχουν υπογραφεί από αυτό. Συνέχεια;
gpg_key_deletion_desc=Η διαγραφή ενός κλειδιού GPG αφαιρεί τις επαληθεύσεις των commit που έχουν υπογραφεί από αυτό το κλειδί. Συνέχεια;
ssh_principal_deletion_desc=Η διαγραφή μιας αρχής πιστοποιητικού SSH ανακαλεί την πρόσβασή της στο λογαριασμό σας. Συνέχεια;
ssh_key_deletion_success=Το SSH κλειδί έχει διαγραφεί.
gpg_key_deletion_success=Το κλειδί GPG έχει διαγραφεί.
@ -915,7 +917,7 @@ principal_state_desc=Αυτή η αρχή πιστοποιητικού έχει
show_openid=Εμφάνιση στο προφίλ
hide_openid=Απόκρυψη από το προφίλ
ssh_disabled=Το SSH είναι απενεργοποιημένο
ssh_signonly=Το SSH είναι απενεργοποιημένο αυτή τη στιγμή, έτσι αυτά τα κλειδιά είναι μόνο για την επαλήθευση υπογραφής των υποβολών.
ssh_signonly=Το SSH είναι απενεργοποιημένο αυτή τη στιγμή, έτσι αυτά τα κλειδιά είναι μόνο για την επαλήθευση υπογραφών των commit.
ssh_externally_managed=Αυτό το κλειδί SSH διαχειρίζεται εξωτερικά για αυτόν το χρήστη
manage_social=Διαχείριση Συσχετιζόμενων Λογαριασμών Κοινωνικών Δικτύων
social_desc=Αυτοί οι λογαριασμοί κοινωνικών δικτύων μπορούν να χρησιμοποιηθούν για να συνδεθείτε στο λογαριασμό σας. Βεβαιωθείτε ότι τους αναγνωρίζετε όλους.
@ -1111,7 +1113,7 @@ trust_model_helper_default=Προεπιλογή: Χρήση προεπιλεγμ
create_repo=Δημιουργία αποθετηρίου
default_branch=Προεπιλεγμένος κλάδος
default_branch_label=προεπιλογή
default_branch_helper=Ο προεπιλεγμένος κλάδος είναι ο βασικός κλάδος για pull requests και υποβολές κώδικα.
default_branch_helper=Ο προεπιλεγμένος κλάδος είναι ο βασικός κλάδος για pull requests και commits.
mirror_prune=Καθαρισμός
mirror_prune_desc=Αφαίρεση παρωχημένων αναφορών απομακρυσμένης-παρακολούθησης
mirror_interval=Διάστημα ανανέωσης ειδώλου (έγκυρες μονάδες ώρας είναι "h", "m", "s"). 0 για απενεργοποίηση του αυτόματου συγχρονισμού. (Ελάχιστο διάστημα: %s)
@ -1150,7 +1152,7 @@ blame.ignore_revs=Αγνόηση των αναθεωρήσεων στο <a href=
blame.ignore_revs.failed=Αποτυχία αγνόησης των αναθεωρήσεων στο <a href="%s">.git-blame-ignore-revs</a>.
author_search_tooltip=Εμφάνιση το πολύ 30 χρηστών
tree_path_not_found_commit=Η διαδρομή %[1]s δεν υπάρχει στην υποβολή %[2]s
tree_path_not_found_commit=Η διαδρομή %[1]s δεν υπάρχει στο commit %[2]s
tree_path_not_found_branch=Η διαδρομή %[1]s δεν υπάρχει στον κλάδο %[2]s
tree_path_not_found_tag=Η διαδρομή %[1]s δεν υπάρχει στην ετικέτα %[2]s
@ -1226,7 +1228,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.
@ -1266,7 +1268,7 @@ empty_message=Αυτό το repository δεν έχει περιεχόμενο.
broken_message=Τα δεδομένα Git που διέπουν αυτό το αποθετήριο δεν μπορούν να διαβαστούν. Επικοινωνήστε με το διαχειριστή ή διαγράψτε αυτό το repository.
code=Κώδικας
code.desc=Πρόσβαση στον πηγαίο κώδικα, αρχεία, υποβολές και κλάδους.
code.desc=Πρόσβαση στον πηγαίο κώδικα, αρχεία, commits και κλάδους.
branch=Κλάδος
tree=Δέντρο
clear_ref=`Καθαρισμός τρέχουσας αναφοράς`
@ -1284,8 +1286,8 @@ org_labels_desc=Οι ταμπέλες, που ισχύουν για ολόκλη
org_labels_desc_manage=διαχείριση
milestones=Ορόσημα
commits=Υποβολές
commit=Υποβολή
commits=Commits
commit=Commit
release=Κυκλοφορία
releases=Κυκλοφορίες
tag=Ετικέτα
@ -1317,14 +1319,14 @@ stored_lfs=Αποθηκεύτηκε με το Git LFS
stored_annex=Αποθηκεύτηκε με το Git Annex
symbolic_link=Symbolic link
executable_file=Εκτελέσιμο αρχείο
commit_graph=Γράφημα υποβολών
commit_graph=Γράφημα commit
commit_graph.select=Επιλογή κλάδων
commit_graph.hide_pr_refs=Απόκρυψη pull request
commit_graph.monochrome=Μονόχρωμο
commit_graph.color=Έγχρωμο
commit.contained_in=Αυτή η υποβολή περιλαμβάνεται σε:
commit.contained_in_default_branch=Αυτή η υποβολή είναι μέρος του προεπιλεγμένου κλάδου
commit.load_referencing_branches_and_tags=Φόρτωση κλάδων και ετικετών που παραπέμπουν σε αυτήν την υποβολή
commit.contained_in=Αυτό το commit περιλαμβάνεται σε:
commit.contained_in_default_branch=Αυτό το commit αποτελεί μέρος του προεπιλεγμένου κλάδου
commit.load_referencing_branches_and_tags=Φόρτωση κλάδων και ετικετών που παραπέμπουν σε αυτό το commit
blame=Ευθύνη
download_file=Λήψη αρχείου
normal_view=Κανονική Προβολή
@ -1362,12 +1364,12 @@ editor.patching=Επιδιόρθωση:
editor.fail_to_apply_patch=`Αδυναμία εφαρμογής της επιδιόρθωσης "%s"`
editor.new_patch=Νέο patch
editor.commit_message_desc=Προσθήκη προαιρετικής εκτενούς περιγραφής…
editor.signoff_desc=Προσθέστε ένα πρόσθετο Signed-off-by στο τέλος του μηνύματος καταγραφής της υποβολής.
editor.commit_directly_to_this_branch=Υποβολή απευθείας στο κλάδο <strong class="%[2]s">%[1]s</strong>.
editor.create_new_branch=Δημιουργήστε έναν <strong>νέο κλάδο</strong> για αυτή την υποβολή και ξεκινήστε ένα pull request.
editor.create_new_branch_np=Δημιουργήστε έναν <strong>νέο κλάδο</strong> για αυτή την υποβολή.
editor.signoff_desc=Προσθέστε ένα πρόσθετο Signed-off-by στο τέλος του μηνύματος καταγραφής του commit.
editor.commit_directly_to_this_branch=Υποβολή commit απευθείας στο κλάδο <strong class="%[2]s">%[1]s</strong>.
editor.create_new_branch=Δημιουργήστε έναν <strong>νέο κλάδο</strong> για αυτό το commit και δημιουργήστε ένα pull request.
editor.create_new_branch_np=Δημιουργήστε έναν <strong>νέο κλάδο</strong> για αυτό το commit.
editor.propose_file_change=Πρόταση αλλαγής αρχείου
editor.new_branch_name=Ονόμασε τον νέο κλάδο για αυτήν την υποβολή
editor.new_branch_name=Ονόμασε τον νέο κλάδο για αυτό το commit
editor.new_branch_name_desc=Όνομα νέου κλάδου…
editor.cancel=Ακύρωση
editor.filename_cannot_be_empty=Το όνομα αρχείου δεν μπορεί να είναι κενό.
@ -1379,9 +1381,9 @@ editor.file_is_a_symlink=`Το «%s» είναι συμβολικός σύνδε
editor.filename_is_a_directory=Το όνομα αρχείου «%s» χρησιμοποιείται ήδη ως όνομα φακέλου σε αυτό το repository.
editor.file_editing_no_longer_exists=Το αρχείο «%s», το οποίο επεξεργάζεστε, δεν υπάρχει πλέον σε αυτό το repository.
editor.file_deleting_no_longer_exists=Το αρχείο «%s», το οποίο διαγράφεται, δεν υπάρχει πλέον σε αυτό το repository.
editor.file_changed_while_editing=Προέκυψαν κάποιες αλλαγές στα περιεχόμενα του αρχείου από τότε που ξεκινήσατε να τα επεξεργάζεστε. <a target="_blank" rel="noopener noreferrer" href="%s">Κάντε κλικ εδώ</a> για να τα δείτε ή <strong>ξανακάντε μία υποβολή των αλλαγών σας</strong> για να τις αντικαταστήσετε.
editor.file_changed_while_editing=Προέκυψαν κάποιες αλλαγές στα περιεχόμενα του αρχείου από τότε που ξεκινήσατε να τα επεξεργάζεστε. <a target="_blank" rel="noopener noreferrer" href="%s">Κάντε κλικ εδώ</a> για να τα δείτε ή <strong>ξανακάνετε μία υποβολή των αλλαγών σας</strong> για να τις αντικαταστήσετε.
editor.file_already_exists=Υπάρχει ήδη ένα αρχείο με το όνομα «%s» σε αυτό το repository.
editor.commit_empty_file_header=Υποβολή ενός κενού αρχείου
editor.commit_empty_file_header=Commit κενού αρχείου
editor.commit_empty_file_text=Το αρχείο που πρόκειται να υποβληθεί είναι κενό. Συνέχεια;
editor.no_changes_to_show=Δεν υπάρχουν αλλαγές για εμφάνιση.
editor.fail_to_update_file=Αποτυχία ενημέρωσης/δημιουργίας του αρχείου «%s».
@ -1401,8 +1403,8 @@ editor.cherry_pick=Ανθολόγηση (cherry-pick) του %s σε:
editor.revert=Απόσυρση του %s στο:
commits.desc=Δείτε το ιστορικό αλλαγών του πηγαίου κώδικα.
commits.commits=Υποβολές
commits.no_commits=Δεν υπάρχουν κοινές υποβολές. Τα «%s» και «%s» έχουν εντελώς διαφορετικές ιστορίες.
commits.commits=Commits
commits.no_commits=Δεν υπάρχουν κοινά commit. Τα «%s» και «%s» έχουν εντελώς διαφορετικές ιστορίες.
commits.nothing_to_compare=Αυτοί οι κλάδοι είναι όμοιοι.
commits.search=Αναζήτηση υποβολών…
commits.search.tooltip=Μπορείτε να προθέτετε τις λέξεις-κλειδιά με "author:", "committer:", "after:", ή "before:", π.χ. "επαναφορά author:Alice before:2019-01-13".
@ -1837,9 +1839,9 @@ pulls.show_all_commits=Εμφάνιση όλων των υποβολών
pulls.show_changes_since_your_last_review=Εμφάνιση αλλαγών από την τελευταία αξιολόγηση
pulls.showing_only_single_commit=Εμφάνιση μόνο αλλαγών της υποβολής %[1]s
pulls.showing_specified_commit_range=Εμφάνιση μόνο των αλλαγών μεταξύ %[1]s..%[2]s
pulls.select_commit_hold_shift_for_range=Επιλέξτε υποβολή. Κρατήστε πατημένο το shift + κάντε κλικ για να επιλέξετε ένα εύρος
pulls.select_commit_hold_shift_for_range=Επιλέξτε commit. Κρατήστε πατημένο το shift + κάντε κλικ για να επιλέξετε ένα εύρος
pulls.review_only_possible_for_full_diff=Η αξιολόγηση είναι δυνατή μόνο κατά την προβολή της πλήρης διαφοράς
pulls.filter_changes_by_commit=Φιλτράρισμα κατά υποβολή
pulls.filter_changes_by_commit=Φιλτράρισμα κατά commit
pulls.nothing_to_compare=Αυτοί οι κλάδοι είναι ίδιοι. Δεν χρειάζεται να δημιουργήσετε ένα pull request.
pulls.nothing_to_compare_and_allow_empty_pr=Αυτοί οι κλάδοι είναι ίδιοι. Αυτό το PR θα είναι κενό.
pulls.has_pull_request=`Υπάρχει ήδη pull request μεταξύ αυτών των κλάδων: <a href="%[1]s">%[2]s#%[3]d</a>`
@ -1848,7 +1850,7 @@ pulls.title_desc_few=θέλει να συγχωνεύσει %[1]d υποβολέ
pulls.merged_title_desc_few=συγχώνευσε %[1]d υποβολές από <code>%[2]s</code> σε <code>%[3]s</code> %[4]s
pulls.change_target_branch_at=`άλλαξε τον κλάδο προορισμού από <b>%s</b> σε <b>%s</b> %s`
pulls.tab_conversation=Συζήτηση
pulls.tab_commits=Υποβολές
pulls.tab_commits=Commits
pulls.tab_files=Αλλαγμένα αρχεία
pulls.reopen_to_merge=Παρακαλώ ανοίξτε ξανά αυτό το pull request για να εκτελέσετε μια συγχώνευση.
pulls.cant_reopen_deleted_branch=Αυτό το pull request δεν μπορεί να ανοίξει ξανά επειδή ο κλάδος διαγράφηκε.
@ -1867,7 +1869,7 @@ pulls.data_broken=Αυτό το pull request είναι κατεστραμμέν
pulls.files_conflicted=Αυτό το pull request περιέχει αλλαγές που συγκρούονται με το κλάδο προορισμού.
pulls.is_checking=Ο έλεγχος συγκρούσεων κατά την συγχώνευση βρίσκεται σε εξέλιξη. Δοκιμάστε ξανά σε λίγα λεπτά.
pulls.is_ancestor=Αυτός ο κλάδος δεν περιέχει κάτι καινούργιο που δεν έχει ο κλάδος προορισμού ήδη. Δεν υπάρχει τίποτα που θα μπορούσε να συγχωνευτεί.
pulls.is_empty=Οι αλλαγές σε αυτόν τον κλάδο βρίσκονται ήδη στον κλάδο προορισμού. Θα είναι μια κενή υποβολή.
pulls.is_empty=Οι αλλαγές σε αυτόν τον κλάδο βρίσκονται ήδη στον κλάδο προορισμού. Θα είναι ένα κενό commit.
pulls.required_status_check_failed=Ορισμένοι απαιτούμενοι έλεγχοι δεν ήταν επιτυχείς.
pulls.required_status_check_missing=Λείπουν ορισμένοι απαιτούμενοι έλεγχοι.
pulls.required_status_check_administrator=Ως διαχειριστής, μπορείτε ακόμα να συγχωνεύσετε αυτό το pull request.
@ -1888,25 +1890,25 @@ pulls.reject_count_1=%d αίτημα αλλαγής
pulls.reject_count_n=%d αιτήματα αλλαγής
pulls.waiting_count_1=%d αναμονή αξιολόγησης
pulls.waiting_count_n=%d αναμονές αξιολόγησης
pulls.wrong_commit_id=Το αναγνωριστικό της υποβολής πρέπει να αντιστοιχεί σε μία υποβολή στον κλάδο προορισμού
pulls.wrong_commit_id=Το αναγνωριστικό του commit πρέπει να αντιστοιχεί σε μία υποβολή στον κλάδο προορισμού
pulls.no_merge_desc=Αυτό το pull request δεν μπορεί να συγχωνευθεί επειδή όλες οι επιλογές συγχώνευσης αποθετηρίων είναι απενεργοποιημένες.
pulls.no_merge_helper=Ενεργοποιήστε τις επιλογές συγχώνευσης στις ρυθμίσεις αποθετηρίου ή συγχωνεύστε το pull request χειροκίνητα.
pulls.no_merge_wip=Αυτό το pull request δεν μπορεί να συγχωνευθεί, επειδή έχει επισημανθεί ως μια εργασία σε εξέλιξη.
pulls.no_merge_not_ready=Αυτό το pull request δεν είναι έτοιμο για συγχώνευση, ελέγξτε την κατάσταση εξέτασης και τους ελέγχους κατάστασης.
pulls.no_merge_access=Δεν είστε εξουσιοδοτημένοι να συγχωνεύσετε αυτό το pull request.
pulls.merge_pull_request=Δημιουργία υποβολής συγχώνευσης
pulls.merge_pull_request=Δημιουργία commit συγχώνευσης
pulls.rebase_merge_pull_request=Αλλαγή βάσης και μετά γρήγορα-μπροστά
pulls.rebase_merge_commit_pull_request=Αλλαγής βάσης και δημιουργία υποβολής συγχώνευσης
pulls.squash_merge_pull_request=Δημιουργία υποβολής squash
pulls.rebase_merge_commit_pull_request=Αλλαγής βάσης και δημιουργία commit συγχώνευσης
pulls.squash_merge_pull_request=Δημιουργία squash commit
pulls.merge_manually=Συγχωνεύτηκαν χειροκίνητα
pulls.merge_commit_id=Το ID της υποβολής συγχώνευσης
pulls.require_signed_wont_sign=Ο κλάδος απαιτεί υπογεγραμμένες υποβολές αλλά αυτή η συγχώνευση δεν θα υπογραφεί
pulls.merge_commit_id=Το ID του commit συγχώνευσης
pulls.require_signed_wont_sign=Ο κλάδος απαιτεί υπογεγραμμένες commits αλλά αυτή η συγχώνευση δεν θα υπογραφεί
pulls.invalid_merge_option=Δεν μπορείτε να χρησιμοποιήσετε αυτήν την επιλογή συγχώνευσης για αυτό το pull request.
pulls.merge_conflict=Η συγχώνευση απέτυχε: Υπήρξε μια σύγκρουση κατά τη συγχώνευση. Συμβουλή: Δοκιμάστε μια διαφορετική στρατηγική
pulls.merge_conflict_summary=Μήνυμα σφάλματος
pulls.rebase_conflict=Η συγχώνευση απέτυχε: Υπήρξε μια σύγκρουση κατά την αλλαγή βάσης της υποβολής: %[1]s. Συμβουλή: Δοκιμάστε μια διαφορετική στρατηγική
pulls.rebase_conflict=Η συγχώνευση απέτυχε: Προέκυψε σύγκρουση κατά το rebase του commit: %[1]s. Συμβουλή: Δοκιμάστε μία διαφορετική στρατηγική
pulls.rebase_conflict_summary=Μήνυμα σφάλματος
pulls.unrelated_histories=H συγχώνευση απέτυχε: Η κεφαλή και η βάση της συγχώνευσης δεν έχουν κοινή ιστορία. Συμβουλή: Δοκιμάστε μια διαφορετική στρατηγική
pulls.merge_out_of_date=Η συγχώνευση απέτυχε: Κατά τη δημιουργία της συγχώνευσης, η βάση ενημερώθηκε. Συμβουλή: Προσπαθήστε πάλι.
@ -1937,9 +1939,9 @@ 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 …".
pulls.clear_merge_message_hint=Η εκκαθάριση του μηνύματος συγχώνευσης θα αφαιρέσει μόνο το περιεχόμενο του μηνύματος commit και θα διατηρήσει τα παραγόμενα git trailers όπως "Co-Authored-By …".
pulls.auto_merge_button_when_succeed=(Όταν οι έλεγχοι πετύχουν)
pulls.auto_merge_when_succeed=Αυτόματη συγχώνευση όταν όλοι οι έλεγχοι πετύχουν
@ -1990,14 +1992,14 @@ milestones.filter_sort.most_complete=Περισσότερο πλήρη
milestones.filter_sort.most_issues=Περισσότερα ζητήματα
milestones.filter_sort.least_issues=Λιγότερα ζητήματα
signing.will_sign=Αυτή η υποβολή θα υπογραφεί με το κλειδί «%s».
signing.wont_sign.error=Παρουσιάστηκε σφάλμα κατά τον έλεγχο για το αν η υποβολή μπορεί να υπογραφεί.
signing.wont_sign.nokey=Ο διακομιστής δεν παρέχει κάποιο κλειδί για την υπογραφή αυτής της υποβολής (commit).
signing.wont_sign.never=Οι υποβολές δεν υπογράφονται ποτέ.
signing.wont_sign.always=Οι υποβολές υπογράφονται πάντα.
signing.wont_sign.pubkey=Η υποβολή δε θα υπογραφεί επειδή δεν υπάρχει δημόσιο κλειδί που να συνδέεται με το λογαριασμό σας.
signing.wont_sign.twofa=Πρέπει να έχετε ενεργοποιημένη την ταυτοποίηση δύο παραγόντων για να υπογράφεται υποβολές.
signing.wont_sign.parentsigned=Η υποβολή δε θα υπογραφεί καθώς η γονική υποβολή δεν έχει υπογραφεί.
signing.will_sign=Αυτό το commit θα υπογραφεί με το κλειδί «%s».
signing.wont_sign.error=Παρουσιάστηκε σφάλμα κατά τον έλεγχο για το αν το commit μπορεί να υπογραφεί.
signing.wont_sign.nokey=Ο διακομιστής δεν παρέχει κάποιο κλειδί για την υπογραφή αυτού του commit.
signing.wont_sign.never=Τα commits δεν υπογράφονται ποτέ.
signing.wont_sign.always=Τα commit υπογράφονται πάντα.
signing.wont_sign.pubkey=To ψομμιτ δε θα υπογραφεί επειδή δεν υπάρχει δημόσιο κλειδί που συσχετίζεται με τον λογαριασμό σας.
signing.wont_sign.twofa=Πρέπει να έχετε ενεργοποιημένη την ταυτοποίηση δύο παραγόντων για την υπογραφή commit.
signing.wont_sign.parentsigned=To commit δεν θα υπογραφεί καθώς το προηγούμενο commit δεν έχει υπογραφεί.
signing.wont_sign.basesigned=Η συγχώνευση δε θα υπογραφεί καθώς η βασική υποβολή δεν έχει υπογραφή της βάσης.
signing.wont_sign.headsigned=Η συγχώνευση δε θα υπογραφεί καθώς δεν έχει υπογραφή η υποβολή της κεφαλής.
signing.wont_sign.commitssigned=Η συγχώνευση δε θα υπογραφεί καθώς όλες οι σχετικές υποβολές δεν έχουν υπογραφεί.
@ -2019,7 +2021,7 @@ wiki.page_title=Τίτλος σελίδας
wiki.page_content=Περιεχόμενο σελίδας
wiki.default_commit_message=Γράψτε μια σημείωση σχετικά με αυτή την ενημέρωση σελίδας (προαιρετικό).
wiki.save_page=Αποθήκευση σελίδας
wiki.last_commit_info=%s επεξεργάστηκε αυτή τη σελίδα %s
wiki.last_commit_info=%s επεξεργάστηκε την σελίδα %s
wiki.edit_page_button=Επεξεργασία
wiki.new_page_button=Νέα σελίδα
wiki.file_revision=Έκδοση σελίδας
@ -2078,14 +2080,14 @@ activity.title.releases_1=%d κυκλοφορία
activity.title.releases_n=%d εκδόσεις
activity.title.releases_published_by=%s δημοσιεύτηκε από %s
activity.published_release_label=Δημοσίευση
activity.no_git_activity=Δεν έχει υπάρξει καμία δραστηριότητα υποβολών σε αυτήν την περίοδο.
activity.no_git_activity=Δεν έχει υπάρξει καμία δραστηριότητα commit σε αυτήν την περίοδο.
activity.git_stats_exclude_merges=Εκτός τις συγχωνεύσεις,
activity.git_stats_author_1=%d συγγραφέας
activity.git_stats_author_n=%d συγγραφείς
activity.git_stats_pushed_1=έχει ωθήσει
activity.git_stats_pushed_n=έχουν ωθήσει
activity.git_stats_commit_1=%d υποβολή
activity.git_stats_commit_n=%d υποβολές
activity.git_stats_commit_1=%d commit
activity.git_stats_commit_n=%d commits
activity.git_stats_push_to_branch=στο %s και
activity.git_stats_push_to_all_branches=σε όλους τους κλάδους.
activity.git_stats_on_default_branch=Στο %s,
@ -2100,7 +2102,7 @@ activity.git_stats_and_deletions=και
activity.git_stats_deletion_1=%d διαγραφή
activity.git_stats_deletion_n=%d διαγραφές
contributors.contribution_type.commits=Υποβολές
contributors.contribution_type.commits=Commits
search=Αναζήτηση
search.search_repo=Αναζήτηση αποθετηρίου
@ -2126,7 +2128,7 @@ settings.hooks=Webhooks
settings.githooks=Git hooks
settings.basic_settings=Βασικές ρυθμίσεις
settings.mirror_settings=Ρυθμίσεις ειδώλου
settings.mirror_settings.docs=Ρυθμίστε τον αυτόματο συγχρονισμό των commit, ετικετών και κλάδων του αποθετηρίου σας σε ένα άλλο repository.
settings.mirror_settings.docs=Ρυθμίστε τον αυτόματο συγχρονισμό commit, ετικετών και κλάδων του αποθετηρίου σας σε ένα άλλο repository.
settings.mirror_settings.docs.disabled_pull_mirror.instructions=Ρυθμίστε τον αυτόματο συγχρονισμό των commit, ετικετών και κλάδων του έργου σας με ένα άλλο repository. Τα είδωλα τύπου λήψης έχουν απενεργοποιηθεί από τον διαχειριστή σας.
settings.mirror_settings.docs.disabled_push_mirror.instructions=Ρυθμίστε την αυτόματη λήψη υποβολών, ετικετών και κλάδων από ένα άλλο repository.
settings.mirror_settings.docs.disabled_push_mirror.pull_mirror_warning=Αυτή τη στιγμή, αυτό μπορεί να γίνει μόνο στο μενού "Νέα Μεταφορά". Για περισσότερες πληροφορίες, συμβουλευτείτε το:
@ -2195,11 +2197,11 @@ settings.admin_settings=Ρυθμίσεις διαχειριστή
settings.admin_enable_health_check=Ενεργοποίηση ελέγχων υγείας αποθετηρίων (git fsck)
settings.admin_code_indexer=Indexer κώδικα
settings.admin_stats_indexer=Indexer στατιστικών κώδικα
settings.admin_indexer_commit_sha=Τελευταίο indexed SHA
settings.admin_indexer_commit_sha=Τελευταίο indexed commit
settings.admin_indexer_unindexed=Unindexed
settings.reindex_button=Προσθήκη στην ουρά Reindex
settings.reindex_requested=Αιτήθηκε reindex
settings.admin_enable_close_issues_via_commit_in_any_branch=Κλείσιμο ενός ζητήματος μέσω μιας υποβολής που έγινε σε έναν μη προεπιλεγμένο κλάδο
settings.admin_enable_close_issues_via_commit_in_any_branch=Κλείσιμο ενός ζητήματος μέσω commit που έγινε σε έναν μη'προεπιλεγμένο κλάδο
settings.danger_zone=Ζώνη κινδύνου
settings.new_owner_has_same_repo=Ο νέος ιδιοκτήτης έχει ήδη ένα repository με το ίδιο όνομα. Παρακαλώ επιλέξτε ένα άλλο όνομα.
settings.convert=Μετατροπή σε κανονικό repository
@ -2448,9 +2450,9 @@ settings.protect_approvals_whitelist_enabled_desc=Μόνο κριτικές απ
settings.protect_approvals_whitelist_users=Εγκεκριμένοι εξεταστές:
settings.protect_approvals_whitelist_teams=Λίστα επιτρεπόμενων ομάδων για κριτικές:
settings.dismiss_stale_approvals=Παράβλεψη καθυστερημένων εγκρίσεων
settings.dismiss_stale_approvals_desc=Όταν οι νέες υποβολές που αλλάζουν το περιεχόμενο του pull request γίνονται push στο κλάδο, οι παλιές εγκρίσεις απορρίπτονται.
settings.require_signed_commits=Να απαιτούνται υπογεγραμμένες υποβολές
settings.require_signed_commits_desc=Απόρριψη νέων υποβολών σε αυτόν τον κλάδο εάν είναι μη υπογεγραμμένες ή μη επαληθεύσιμες.
settings.dismiss_stale_approvals_desc=Όταν νέα commit που αλλάζουν το περιεχόμενο του pull request γίνονται push στο κλάδο, οι παλιές εγκρίσεις απορρίπτονται.
settings.require_signed_commits=Να απαιτούνται υπογεγραμμένα commit
settings.require_signed_commits_desc=Απόρριψη νέων commit σε αυτόν τον κλάδο εάν είναι μη υπογεγραμμένες ή μη επαληθεύσιμες.
settings.protect_branch_name_pattern=Μοτίβο προστατευμένου ονόματος κλάδου
settings.protect_branch_name_pattern_desc=Μοτίβα ονόματος προστατευμένων κλάδων. Συμβολευτείτε <a href="%s">την τεκμηρίωση</a> για την σύνταξη ενός μοτίβου. Παραδείγματα: main, release/**
settings.protect_patterns=Μοτίβα
@ -2471,7 +2473,7 @@ settings.block_on_official_review_requests=Φραγή συγχώνευσης σ
settings.block_on_official_review_requests_desc=Η συγχώνευση δεν θα είναι δυνατή όταν θα έχει αιτήσεις επίσημης αξιολόγησης, ακόμη και αν υπάρχουν αρκετές εγκρίσεις.
settings.block_outdated_branch=Φραγή συγχώνευσης αν το pull request είναι ξεπερασμένο
settings.block_outdated_branch_desc=Η συγχώνευση δεν θα είναι δυνατή όταν ο κλάδος κεφαλής είναι πίσω από τον βασικό κλάδο.
settings.default_branch_desc=Επιλέξτε έναν προεπιλεγμένο κλάδο αποθετηρίου για pull requests και υποβολές κώδικα:
settings.default_branch_desc=Επιλέξτε έναν προεπιλεγμένο κλάδο αποθετηρίου για pull requests και commit
settings.merge_style_desc=Στυλ συγχώνευσης
settings.default_merge_style_desc=Προεπιλεγμένο στυλ συγχώνευσης
settings.choose_branch=Επιλέξτε έναν κλάδο…
@ -2498,7 +2500,7 @@ settings.matrix.room_id=ID Δωματίου
settings.matrix.message_type=Είδος μηνύματος
settings.archive.button=Αρχειοθέτηση αποθετηρίου
settings.archive.header=Αρχειοθέτηση αποθετηρίου
settings.archive.text=Η αρχειοθέτηση του αποθετηρίου θα το αλλάξει σε μόνο για ανάγνωση. Δε θα φαίνεται στον αρχικό πίνακα. Κανείς (ακόμα και εσείς!) δε θα μπορεί να κάνει νέες υποβολές, ή να ανοίξει ζητήματα ή pull request.
settings.archive.text=Η αρχειοθέτηση του αποθετηρίου θα το αλλάξει σε μόνο για ανάγνωση. Δε θα φαίνεται στον αρχικό πίνακα. Κανείς (ακόμα και εσείς!) δε θα μπορεί να υποβάλει νέα commit, ή να ανοίξει ζητήματα ή pull request.
settings.archive.success=Το repository αρχειοθετήθηκε με επιτυχία.
settings.archive.error=Παρουσιάστηκε σφάλμα κατά την προσπάθεια αρχειοθέτησης του αποθετηρίου. Δείτε το αρχείο καταγραφής για περισσότερες λεπτομέρειες.
settings.archive.error_ismirror=Δε μπορείτε να αρχειοθετήσετε ένα είδωλο αποθετηρίου.
@ -2506,15 +2508,15 @@ settings.archive.branchsettings_unavailable=Οι ρυθμίσεις του κλ
settings.archive.tagsettings_unavailable=Οι ρυθμίσεις της ετικέτας δεν είναι διαθέσιμες αν το repository είναι αρχειοθετημένο.
settings.unarchive.button=Αναίρεση αρχειοθέτησης αποθετηρίου
settings.unarchive.header=Απο-Αρχειοθέτηση του αποθετηρίου
settings.unarchive.text=Η απο-αρχειοθέτηση του αποθετηρίου θα αποκαταστήσει την ικανότητά του να λαμβάνει υποβολές και ωθήσεις, καθώς και νέα ζητήματα και pull-requests.
settings.unarchive.text=Η απο-αρχειοθέτηση του αποθετηρίου θα αποκαταστήσει την ικανότητά του να λαμβάνει commits και ωθήσεις, καθώς και νέα ζητήματα και pull-requests.
settings.unarchive.success=Το repository απο-αρχειοθετήθηκε με επιτυχία.
settings.unarchive.error=Παρουσιάστηκε σφάλμα κατά την προσπάθεια απο-αρχειοθέτησης του αποθετηρίου. Δείτε τις καταγραφές για περισσότερες λεπτομέρειες.
settings.update_avatar_success=Η εικόνα του αποθετηρίου έχει ενημερωθεί.
settings.lfs=LFS
settings.lfs_filelist=Αρχεία LFS σε αυτό το repository
settings.lfs_no_lfs_files=Δεν υπάρχουν αρχεία LFS σε αυτό το repository
settings.lfs_findcommits=Εύρεση υποβολών
settings.lfs_lfs_file_no_commits=Δεν βρέθηκαν υποβολές για αυτό το αρχείο LFS
settings.lfs_findcommits=Εύρεση commit
settings.lfs_lfs_file_no_commits=Δεν βρέθηκαν commit για αυτό το αρχείο LFS
settings.lfs_noattribute=Αυτή η διαδρομή δεν έχει λειτουργία κλειδώματος στον προεπιλεγμένο κλάδο
settings.lfs_delete=Διαγραφή αρχείου LFS με το OID %s
settings.lfs_delete_warning=Η διαγραφή ενός αρχείου LFS μπορεί να προκαλέσει σφάλματα «object does not exist» κατά την ολοκλήρωση του checkout. Είστε βέβαιοι;
@ -2544,7 +2546,7 @@ settings.rename_branch=Μετονομασία κλάδου
diff.browse_source=Προβολή πηγαίου κώδικα
diff.parent=γονέας
diff.commit=υποβολή
diff.commit=commit
diff.git-notes=Σημειώσεις
diff.data_not_available=Δεν υπάρχει διαθέσιμο περιεχόμενο diff
diff.options_button=Επιλογές diff
@ -2609,7 +2611,7 @@ release.prerelease=Προδημοσίευση
release.stable=Σταθερή
release.compare=Σύγκριση
release.edit=επεξεργασία
release.ahead.commits=<strong>%d</strong> υποβολές
release.ahead.commits=<strong>%d</strong> commits
release.ahead.target=σε %s από αυτή την έκδοση
tag.ahead.target=μέχρι το %s από αυτή την ετικέτα
release.source_code=Πηγαίος κώδικας
@ -2632,7 +2634,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=Η ετικέτα έχει διαγραφεί.
@ -2655,7 +2657,7 @@ branch.delete_html=Διαγραφή κλάδου
branch.delete_desc=Η διαγραφή ενός κλάδου είναι μόνιμη. Αν και ο διαγραμμένος κλάδος μπορεί να συνεχίσει να υπάρχει για σύντομο χρονικό διάστημα πριν να αφαιρεθεί, ΔΕΝ ΜΠΟΡΕΙ να αναιρεθεί στις περισσότερες περιπτώσεις. Συνέχεια;
branch.deletion_success=Ο κλάδος «%s» διαγράφηκε.
branch.deletion_failed=Η διαγραφή του κλάδου «%s» απέτυχε.
branch.delete_branch_has_new_commits=Ο κλάδος «%s» δεν μπορεί να διαγραφεί επειδή προστέθηκαν νέες υποβολές μετά τη συγχώνευση.
branch.delete_branch_has_new_commits=Ο κλάδος «%s» δεν μπορεί να διαγραφεί επειδή προστέθηκαν νέα commit μετά τη συγχώνευση.
branch.create_branch=Δημιουργία κλάδου %s
branch.create_from=`από το «%s»`
branch.create_success=Ο κλάδος «%s» δημιουργήθηκε.
@ -2712,7 +2714,7 @@ settings.new_owner_blocked_doer = Ο νέος κάτοχος του αποθετ
settings.enter_repo_name = Γράψτε το όνομα του κατόχου και του αποθετηρίου ακριβώς όπως το βλέπετε:
settings.confirmation_string = Κείμενο επιβεβαίωσης
settings.units.overview = Επισκόπηση
pulls.commit_ref_at = `ανέφερε το pull request στην υποβολή <a id="%[1]s" href="#%[1]s">%[2]s</a>`
pulls.commit_ref_at = `ανέφερε το pull request στο commit <a id="%[1]s" href="#%[1]s">%[2]s</a>`
contributors.contribution_type.filter_label = Είδος συνεισφοράς:
settings.wiki_rename_branch_main_notices_1 = Αυτή η ενέργεια <strong>ΔΕΝ</strong> αναιρείται.
activity.navbar.contributors = Συνεισφέροντες
@ -2721,11 +2723,11 @@ contributors.contribution_type.deletions = Διαγραφές
migrate.forgejo.description = Μεταφορά δεδομένων από το codeberg.org ή άλλων υπηρεσιών Forgejo.
rss.must_be_on_branch = Για να αποκτήσετε ένα RSS feed, πρέπει να βρίσκεστε σε έναν κλάδο.
clone_in_vscodium = Κλωνοποίηση στο VSCodium
editor.invalid_commit_mail = Αυτή η διεύθυνση email δεν είναι έγκυρη για την δημιουργία μίας υποβολής.
editor.invalid_commit_mail = Αυτή η διεύθυνση email δεν είναι έγκυρη για την δημιουργία commit.
pulls.nothing_to_compare_have_tag = Ο επιλεγμένος κλάδος/tag είναι όμοιος.
issues.blocked_by_user = Δεν μπορείτε να δημιουργήσετε ζητήματα σε αυτό το repository, επειδή ο κάτοχος του repository σας έχει αποκλείσει.
pulls.agit_explanation = Δημιουργημένο μέσω του AGit. Το AGit επιτρέπει σε συνεισφέροντες να προτείνουν αλλαγές χρησιμοποιώντας την εντολή «git push», χωρίς την δημιουργία fork ή έναν νέο κλάδο.
activity.navbar.recent_commits = Πρόσφατες υποβολές
activity.navbar.recent_commits = Πρόσφατα commit
settings.wiki_globally_editable = Να επιτρέπεται η επεξεργασία του wiki σε όλους
admin.manage_flags = Διαχείριση σημάνσεων
admin.enabled_flags = Το repository έχει τις εξής σημάνσεις:
@ -2753,13 +2755,13 @@ settings.add_collaborator_blocked_our = Δεν είναι δυνατή η προ
n_branch_few = %s κλάδοι
n_tag_one = %s ετικέτα
n_tag_few = %s ετικέτες
n_commit_one = %s υποβολή
n_commit_one = %s commit
stars = Αστέρια
n_branch_one = %s κλάδος
commits.search_branch = Αυτός ο κλάδος
pulls.title_desc_one = : θα ήθελε να συγχωνεύσει %[1]d υποβολή από τον κλάδο <code>%[2]s</code> στον κλάδο <code id="%[4]s">%[3]s</code>
pulls.merged_title_desc_one = συγχώνευσε %[1]d υποβολή από τον κλάδο <code>%[2]s</code> στον κλάδο <code>%[3]s</code> %[4]s
n_commit_few = %s υποβολές
n_commit_few = %s commits
settings.sourcehut_builds.secrets = Μυστικά
settings.add_webhook.invalid_path = Η τοποθεσία του αρχείου δεν μπορεί να περιέχει κενά, «.» ή «..». Δεν μπορεί να αρχίζει ή να τελειώνει με μία κάθετο.
commits.browse_further = Περιήγηση περισσοτέρων
@ -2779,7 +2781,7 @@ settings.event_pull_request_enforcement = Εξαναγκασμός
editor.commit_id_not_matching = Το αρχείο άλλαξε όσο το επεξεργαζόσασταν. Θα πρέπει να υποβάλετε τις αλλαγές σας σε έναν νέο κλάδο και μετά να τις συγχωνεύσετε.
settings.sourcehut_builds.visibility = Ορατότητα εργασιών
object_format = Μορφή αντικειμένων («object format»)
settings.ignore_stale_approvals_desc = Οι εγκρίσεις, οι οποίες αναφέρονται σε παλαιότερες υποβολές, δεν θα προσμετρούνται στο σύνολο των απαιτούμενων εγκρίσεων του pull request. Εφόσον αυτές οι εγκρίσεις έχουν ήδη ανακληθεί, τότε αυτή η ρύθμιση δεν θα παίξει κάποιον ρόλο.
settings.ignore_stale_approvals_desc = Οι εγκρίσεις, οι οποίες αναφέρονται σε παλαιότερα commit, δεν θα προσμετρούνται στο σύνολο των απαιτούμενων εγκρίσεων του pull request. Εφόσον αυτές οι εγκρίσεις έχουν ήδη ανακληθεί, τότε αυτή η ρύθμιση δεν θα παίξει κάποιον ρόλο.
settings.archive.mirrors_unavailable = Οι λειτουργίες ειδώλου δεν είναι διαθέσιμες εφόσον το repository έχει αρχειοθετηθεί.
settings.web_hook_name_sourcehut_builds = SourceHut Builds
settings.enforce_on_admins = Εφαρμογή κανόνα σε διαχειριστές του αποθετηρίου
@ -2823,7 +2825,7 @@ release.asset_name = Όνομα αρχείου
release.asset_external_url = Εξωτερικό URL
release.invalid_external_url = Μη έγκυρο εξωτερικό URL: «%s»
no_eol.text = Λείπει το EOL
activity.commit = Δραστηριότητα υποβολών
activity.commit = Δραστηριότητα commit
no_eol.tooltip = Αυτό το αρχείο δεν περιέχει έναν χαρακτήρα τύπου επιστροφής φορέα («end of line») στο τέλος του αρχείου.
release.add_external_asset = Προσθήκη εξωτερικού αρχείου
milestones.filter_sort.name = Όνομα
@ -2831,13 +2833,26 @@ release.type_external_asset = Εξωτερικό αρχείο
mirror_public_key = Δημόσιο κλειδί SSH
mirror_use_ssh.helper = το Forgejo θα κατοπτρίσει το αποθετήριο μέσω Git με τη χρήση SSH και θα δημιουργήσει ένα ζεύγος κλειδιών. Πρέπει να εξασφαλίσετε πως το δημιουργημένο κλειδί είναι εξουσιοδοτημένο να ωθεί στο αποθετήριο προορισμού. Εφόσον το έχετε επιλέξει, δε μπορείτε να χρησιμοποιήσετε εξουσιοδότηση συνθηματικού.
new_from_template = Χρήση προτύπου
new_from_template_description = Μπορείτε να χρησιμοποιήσετε ένα προυπάρχον πρότυπο αποθετηρίου και να εφαρμόσετε τις ρυθμίσεις του.
new_advanced = Ρυθμίσεις για προχωρημένους
new_advanced_expand = Κλικ για επέκταση
auto_init_description = Δημιουργία αρχικού commit που περιέχει ένα αρχείο README, μαζί με τα αρχεία άδειας χρήσης και .gitignore προαιρετικά.
mirror_use_ssh.text = Χρήση ταυτοποίησης SSH
mirror_use_ssh.not_available = Η ταυτοποίηση μέσω SSH δεν είναι διαθέσιμη.
mirror_denied_combination = Η χρήση ενός κλειδιού καθώς και ενός κωδικού για ταυτοποίηση ταυτόχρονα δεν είναι δυνατή.
summary_card_alt = Κάρτα σύνοψης του αποθετηρίου %s
editor.add_tmpl.filename = Όνομα αρχείου
editor.commit_email = Email για commit
issues.all_title = Όλα
[graphs]
component_loading_failed = Δεν ήταν δυνατή η φόρτωση του %s
component_loading = Γίνεται φόρτωση του %s...
component_loading_info = Αυτό μπορεί να πάρει λίγη ώρα…
component_failed_to_load = Προέκυψε ένα απρόσμενο σφάλμα.
contributors.what = συνεισφορές
recent_commits.what = πρόσφατες υποβολές
recent_commits.what = πρόσφατα commit
code_frequency.what = συχνότητα κώδικα
[org]
@ -3174,12 +3189,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 Συστήματος
@ -3543,8 +3558,8 @@ push_tag=ώθησε την ετικέτα <a href="%[2]s">%[3]s</a> σε <a href
delete_tag=διέγραψε την ετικέτα %[2]s από <a href="%[1]s">%[3]s</a>
delete_branch=διέγραψε το κλάδο %[2]s από <a href="%[1]s">%[3]s</a>
compare_branch=Σύγκριση
compare_commits=Σύγκριση %d υποβολών
compare_commits_general=Σύγκριση υποβολών
compare_commits=Σύγκριση %d commit
compare_commits_general=Σύγκριση commits
mirror_sync_push=συγχρονιστήκαν οι υποβολές του <a href="%[2]s">%[3]s</a> στο <a href="%[1]s">%[4]s</a> από το είδωλο
mirror_sync_create=συγχρονίστηκε η νέα αναφορά <a href="%[2]s">%[3]s</a> στο <a href="%[1]s">%[4]s</a> από το είδωλο
mirror_sync_delete=συγχρόνισε και διάγραψε την αναφορά <code>%[2]s</code> σε <a href="%[1]s">%[3]s</a> από το είδωλο
@ -3600,13 +3615,13 @@ no_subscriptions=Καμία συνδρομή
[gpg]
default_key=Υπογραφή με το προεπιλεγμένο κλειδί
error.extract_sign=Αποτυχία εξαγωγής υπογραφής
error.generate_hash=Αποτυχία δημιουργίας του κατακερματισμού (hash) της υποβολής
error.no_committer_account=Δεν υπάρχει λογαριασμός συνδεδεμένος με τη διεύθυνση email του υποβολέα
error.generate_hash=Αποτυχία δημιουργίας hash του commit
error.no_committer_account=Δεν υπάρχει λογαριασμός που συσχετίζεται με τη διεύθυνση email του υποβολέα
error.no_gpg_keys_found=Δεν βρέθηκε γνωστό κλειδί για αυτήν την υπογραφή στη βάση δεδομένων
error.not_signed_commit=Η υποβολή δεν είναι υπογεγραμμένη
error.not_signed_commit=Το commit δεν είναι υπογεγραμμένη
error.failed_retrieval_gpg_keys=Αποτυχία ανάκτησης κλειδιού που είναι συνδεδεμένο στο λογαριασμό του υποβολέα
error.probable_bad_signature=ΠΡΟΣΟΧΗ! Αν και υπάρχει ένα κλειδί με αυτό το ID στη βάση δεδομένων δεν επαληθεύει αυτή την υποβολή! Αυτή η υποβολή είναι ΥΠΟΠΤΗ.
error.probable_bad_default_signature=ΠΡΟΣΟΧΗ! Αν και το προεπιλεγμένο κλειδί έχει αυτό το ID, δεν επαληθεύει αυτή την υποβολή! Αυτή η υποβολή είναι ΥΠΟΠΤΗ.
error.probable_bad_signature=ΠΡΟΣΟΧΗ! Αν και υπάρχει ένα κλειδί με αυτό το ID στη βάση δεδομένων δεν επαληθεύει αυτό το commit! Αυτή η υποβολή είναι ΥΠΟΠΤΗ.
error.probable_bad_default_signature=ΠΡΟΣΟΧΗ! Αν και το προεπιλεγμένο κλειδί έχει αυτό το ID, δεν επαληθεύει αυτό το commit! Αυτή η υποβολή είναι ΥΠΟΠΤΗ.
[units]
unit=Μονάδα
@ -3827,7 +3842,7 @@ runners.task_list.no_tasks=Δεν υπάρχει καμία εργασία ακ
runners.task_list.run=Εκτέλεση
runners.task_list.status=Κατάσταση
runners.task_list.repository=Repository
runners.task_list.commit=Υποβολή
runners.task_list.commit=Commit
runners.task_list.done_at=Ολοκλήρωσε Στις
runners.edit_runner=Επεξεργασία Εκτελεστή
runners.update_runner=Ενημέρωση αλλαγών
@ -3848,7 +3863,7 @@ runners.reset_registration_token=Επαναφορά διακριτικού εγ
runners.reset_registration_token_success=Επιτυχής επανέκδοση διακριτικού εγγραφής του εκτελεστή
runs.all_workflows=Όλες οι ροές εργασίας
runs.commit=Υποβολή
runs.commit=Commit
runs.scheduled=Προγραμματισμένα
runs.pushed_by=ωθήθηκε από
runs.invalid_workflow_helper=Το αρχείο ροής εργασίας δεν είναι έγκυρο. Ελέγξτε το αρχείο σας: %s
@ -3860,7 +3875,7 @@ runs.status_no_select=Όλες οι καταστάσεις
runs.no_results=Δεν βρέθηκαν αποτελέσματα.
runs.no_workflows=Δεν υπάρχουν ροές εργασίας ακόμα.
runs.no_runs=Η ροή εργασίας δεν έχει τρέξει ακόμα.
runs.empty_commit_message=(κενό μήνυμα υποβολής)
runs.empty_commit_message=(κενό μήνυμα commit)
workflow.disable=Απενεργοποίηση ροής εργασίας
workflow.disable_success=Η ροή εργασίας «%s» απενεργοποιήθηκε επιτυχώς.
@ -3922,7 +3937,7 @@ code_search_by_git_grep = Για την αναζήτηση κώδικα, χρη
package_kind = Αναζήτηση πακέτων...
project_kind = Αναζήτηση έργων...
branch_kind = Αναζήτηση κλάδων...
commit_kind = Αναζήτηση υποβολών...
commit_kind = Αναζήτηση commit...
no_results = Δεν βρέθηκαν κατάλληλα αποτελέσματα.
search = Αναζήτηση...
type_tooltip = Είδος αναζήτησης

View file

@ -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:
@ -1430,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
@ -3895,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.

View file

@ -19,7 +19,7 @@ language=Idioma
notifications=Notificaciones
active_stopwatch=Rastreador de tiempo activo
create_new=Crear…
user_profile_and_more=Perfil y ajustes
user_profile_and_more=Perfil y configuración
signed_in_as=Identificado como
enable_javascript=Este sitio web requiere JavaScript.
toc=Tabla de contenidos
@ -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
@ -316,7 +316,7 @@ confirm_password=Confirmar contraseña
admin_email=Correo electrónico
install_btn_confirm=Instalar Forgejo
test_git_failed=Fallo al probar el comando "git": %v
sqlite3_not_available=Esta versión de Forgejo no soporta SQLite3. Por favor, descarga la versión binaria oficial de %s (no la versión "gobuild").
sqlite3_not_available=Esta versión de Forgejo no admite SQLite3. Descárguese la versión binaria oficial desde %s (no la versión «gobuild»).
invalid_db_setting=La configuración de la base de datos no es válida: %v
invalid_db_table=La tabla "%s" de la base de datos no es válida: %v
invalid_repo_path=La ruta de la raíz del repositorio no es válida: %v
@ -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
@ -680,6 +680,8 @@ To = Nombre de rama
Website = Sitio web
email_domain_is_not_allowed = El dominio de la dirección de correo electrónico del usuario <b>%s</b> entra en conflicto con EMAL_DOMAIN_ALLOWLIST o EMAIL_DOMAIN_BLOCKLIST. Asegúrese de que ha establecido la dirección de correo electrónico correctamente.
[user]
change_avatar=Cambiar su avatar…
joined_on=Se unió el %s
@ -699,7 +701,7 @@ disabled_public_activity=Este usuario ha desactivado la visibilidad pública de
email_visibility.limited=Tu dirección de correo electrónico es visible para todos los usuarios autenticados
email_visibility.private=Tu dirección de correo electrónico solo es visible para ti y los administradores
show_on_map=Mostrar este lugar en un mapa
settings=Ajustes del usuario
settings=Configuración del usuario
form.name_reserved=El nombre de usuario "%s" está reservado.
form.name_pattern_not_allowed=El patrón "%s" no está permitido en un nombre de usuario.
@ -746,7 +748,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 +813,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 +839,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 +1056,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 +1072,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 +1098,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 +1226,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 +1237,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?
@ -1861,7 +1865,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.
@ -2041,8 +2045,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
@ -2089,7 +2093,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
@ -2146,7 +2150,7 @@ settings.update_mirror_settings=Actualizar ajustes de réplica
settings.branches.switch_default_branch=Cambiar rama por defecto
settings.branches.update_default_branch=Actualizar rama por defecto
settings.branches.add_new_rule=Añadir nueva regla
settings.advanced_settings=Ajustes avanzados
settings.advanced_settings=Configuración avanzada
settings.wiki_desc=Activar wiki del repositorio
settings.use_internal_wiki=Usar wiki integrada
settings.use_external_wiki=Usar wiki externa
@ -2180,7 +2184,7 @@ settings.releases_desc=Activar lanzamientos en el repositorio
settings.packages_desc=Habilitar registro de paquetes en el repositorio
settings.projects_desc=Activar proyectos en el repositorio
settings.actions_desc=Habilite procesos CI/CD integrados con Forgejo Actions
settings.admin_settings=Ajustes de administrador
settings.admin_settings=Configuración administrativa
settings.admin_enable_health_check=Activar cheques de estado de salud del repositorio (git fsck)
settings.admin_code_indexer=Indexador de código
settings.admin_stats_indexer=Indexador de estadísticas de código
@ -2333,7 +2337,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
@ -2438,7 +2442,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
@ -2466,7 +2470,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
@ -2490,11 +2494,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.
@ -2565,7 +2569,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
@ -2720,7 +2724,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.
@ -2798,7 +2802,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
@ -2815,7 +2819,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...
@ -2824,6 +2853,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
@ -2949,6 +2981,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
@ -3476,6 +3510,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 = Configuración 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>
@ -3619,7 +3667,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
@ -3716,6 +3764,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.
@ -3734,7 +3795,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
@ -3818,6 +3879,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
@ -3839,7 +3903,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...
@ -3862,6 +3926,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
@ -3872,7 +3938,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.

View file

@ -112,9 +112,9 @@ new_project_column = ستون جدید
retry = سعی دوباره
rerun = اجرای دوباره
rerun_all = اجرای دوباره تمام کارها
rss_feed = خوراک RSS
rss_feed = خوراک آراس‌اس
pin = سنجاق
unpin = حذف سنجاق
unpin = برداشتن سنجاق
locked = قفل شده
copy_hash = رونوشت هش
unknown = نامشخص
@ -134,17 +134,93 @@ new_repo.title = مخزن جدید
new_migrate.title = مهاجرت جدید
new_repo.link = مخزن جدید
tracked_time_summary = چکیده‌ای از زمان ردیابی‌شده بر اساس پالایه‌های فهرست مشکل‌ها
toggle_menu = دگرش فهرست
webauthn_error_insecure = احرازوب فقط از روش‌های ایمن ممکن است. برای آزمودن بر روی اچ‌تی‌تی‌پی می‌توانید از «میزبان‌محلی» یا «۱۲۷.۰.۰.۱» استفاده کنید.
remove_label_str = حذف مورد "%s"
view = نما
test = آزمودن
copy_generic = رونوشت در بریده‌دان
copy_path = رونوشت مسیر
copy_content = رونوشت درون‌مایه
error413 = شما سهمیه خود را تمام کرده‌اید.
go_back = بازگشت
invalid_data = داده نامعتبر: %v
artifacts = آلایه
confirm_delete_artifact = آیا مطمئن هستید که می‌خواهید آلایه « %s » را حذف کنید؟
concept_system_global = سراسری
concept_user_individual = تکی
show_timestamps = نمایش برچسب‌زمان
show_log_seconds = نمایش ثانیه‌ها
show_full_screen = نمایش تمام صفحه
download_logs = بارگیری واقعه‌نگاری
confirm_delete_selected = تایید می‌کنید که همه موارد گزینش شده حذف شوند؟
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 = خصوصی
[aria]
navbar = نوار ناوبری
footer = پاورقی
footer.software = درباره این نرم‌افزار
footer.links = پیوندها
[heatmap]
number_of_contributions_in_the_last_12_months = %s هم‌کاری در ۱۲ ماه گذشته
contributions_zero = بدون هم‌کاری
contributions_format = {هم‌کاری} در {روز}{ماه}{سال}
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.indent.tooltip = اجزا را با یک سطح گروه‌بندی کن
buttons.unindent.tooltip = اجزا را با یک سطح گروه‌بندی نکن
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]
missing_csrf=درخواست بد: بلیط CSRF ندارد
occurred = خطایی رخ داد
report_message = اگر گمان می‌برید این اشکال از فورججو است، لطفا در مشکلات در <a href="%s" target="_blank">کدبرگ</a> را بگردید یا اگر لازم است یک مشکل باز کنید.
not_found = هدف را نمی‌توان یافت.
network_error = خطای شبکه
server_internal = خطای درونی کارساز
[startpage]
app_desc=یک سرویس گیت بی‌درد سر و راحت
install=راه‌اندازی ساده
@ -154,16 +230,19 @@ lightweight_desc=گیتی با حداقل منابع میتوانید برای
license=متن باز
license_desc=برو به <a target="_blank" rel="noopener noreferrer" href="%[1]s">Forgejo</a>! به ملحق شوید با <a target="_blank" rel="noopener noreferrer" href="%[2]s"> مشارکت کردن</a> برای این که این پروژه بهتر شود. برای مشارکت کردن خجالت نکشید!
install_desc = به آسانی <a target="_blank" rel="noopener noreferrer" href="%[1]s">اعداد دو دویی</a> را برای سکوی خود اجرا کنید. با <a target="_blank" rel="noopener noreferrer" href="%[2]s">داکر</a> آن را ارسال کنید، یا <a target="_blank" rel="noopener noreferrer" href="%[3]s">بسته‌بندی</a> تحویل بگیرید.
platform_desc = فورججو برای اجرا بر روی سامانه‌عامل‌های آزاد مانند گنو/لینوکس و بی‌اس‌دی آزاد و هم‌چنین معماری‌های گوناگون پردازنده ثبات دارد. هر چی میل‌تان هست انتخاب کنید!
[install]
install=نصب و راه اندازی
title=تنظیمات اولیه
title=پیکربندی اولیه
docker_helper=اگر گیتی را با داکر اجرا کرده‌اید، لطفا قبل از هر تغییری <a target="_blank" rel="noopener noreferrer" href="%s">مستندات</a> را مطالعه نمایید.
db_title=تنظیمات پایگاه داده
db_type=نوع پایگاه داده
db_title=تنظیمات پایگاهداده
db_type=گونه پایگاه‌داده
host=میزبان
user=نام کاربری
password=رمز عبور
db_name=نام پایگاه داده
db_name=نام پایگاهداده
db_schema=قالب
db_schema_helper=برای مقدار پیش فرض پایگاه داده خالی بگذارید ("public").
ssl_mode=SSL
@ -178,24 +257,24 @@ err_empty_db_path=مسیر دیتابیس SQLite3 نمیتواند خالی با
no_admin_and_disable_registration=شما بدون ایجاد حساب‌ کاربری مدیر نمی‌توانید عضویت را غیر فعال کنید.
err_empty_admin_password=کلمه عبور حساب مدیر نمی تواند خالی باشد.
err_empty_admin_email=رایانامه (ایمیل) مدیر نمی تواند خالی باشد.
err_admin_name_is_reserved=نام کاربری مدیر اشتباه است. نام کاربری قبلا استفاده شده است
err_admin_name_is_reserved=نام‌کاربری مدیر اشتباه است، نام‌کاربری قبلا استفاده شده است
err_admin_name_pattern_not_allowed=نام کاربری مدیر اشتباه است. نام کاربری قبلا استفاده شده است
err_admin_name_is_invalid=نام کابری مدیر اشتباه است
general_title=تنظیمات عمومی
app_name=عنوان سایت
app_name_helper=شما می توانید نام شرکت خود را در اینجا وارد کنید.
app_name=تیتر نمونه
app_name_helper=شما می توانید نام نمونه خود را در اینجا وارد کنید. آن در همه برگه‌ها به نمایش در خواهد آمد.
repo_path=مسیر ریشه مخزن
repo_path_helper=تمام مخازن کد راه دور در این پوشه ذخیره می‌شوند.
lfs_path=مسیر Git LFS
lfs_path=مسیر ریشه ذخیره‌سازی پرونده بزرگ گیت
lfs_path_helper=فایل هایی که توسط Git LFS دنبال میشوند در این پوشه ذخیره خواهند شد. درصورت خالی بودن فیلد این قابلیت غیرفعال خواهد بود.
run_user=اجرا به عنوان نام کاربری
domain=دامنه سرور
run_user=اجرای کاربر به عنوان
domain=دامنه کارساز
domain_helper=آدرس میزبان یا دامنه برای سرور.
ssh_port=پورت SSH سرور
ssh_port_helper=شماره درگاهی که سرور SSH گوش می دهد. برای غیر فعال کردن خالی بگذارید.
http_port=پورت HTTP گیتی
http_port_helper=پورت سرور وب گیتی.
ssh_port=درگاه کارساز پوسته‌امن
ssh_port_helper=شماره درگاهی که سرور پوسته‌امن استفاده می‌کند. برای غیر فعال کردن خالی بگذارید.
http_port=درگاه شنونده اچ‌تی‌تی‌پی
http_port_helper=شماره درگاهی که توسط کارساز وب فرججو استفاده می‌شود.
app_url=آدرس پایه گیتی
app_url_helper=آدرس پایه برای URLهای اجماع HTTP(S) و هشدار های رایانامه (ایمیل).
log_root_path=مسیر گزارش‌ها
@ -256,6 +335,12 @@ no_reply_address=مخفی کردن دامنه ایمیل
no_reply_address_helper=نام دامنه برای کاربران دارای آدرس ایمیل پنهان است. به عنوان مثال ، اگر نام دامنه ایمیل مخفی روی "noreply.example.org" تنظیم شده باشد ، نام کاربری "joe" در Git به عنوان "joe@noreply.example.org" وارد می شود
password_algorithm=الگوریتم درهم‌ساز گذرواژه
require_db_desc = فروججو به مای‌اس‌کیوال، پستگری‌اس‌کیوال،اس‌کیولایت۳ یا تی‌دی‌بی نیاز دارد.
app_slogan = شعار نمونه
app_slogan_helper = شعار نمونه خود را اینجا وارد کنید. برای غیرفعال شدن خالی بگذارید.
run_user_helper = نام‌کاربری سامانه‌عامل که با عنوان فرججو اجرا می‌شود. به یادداشته باشید که کاربر باید دسترسی به مسیر ریشه مخازن داشته باشد.
[home]
uname_holder=نام کاربری یا نشانی ایمیل
password_holder=گذرواژه
@ -881,7 +966,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.
@ -1989,6 +2074,8 @@ error.csv.too_large=نمی توان این فایل را رندر کرد زیر
error.csv.unexpected=نمی توان این فایل را رندر کرد زیرا حاوی یک کاراکتر غیرمنتظره در خط %d و ستون %d است.
error.csv.invalid_field_count=نمی توان این فایل را رندر کرد زیرا تعداد فیلدهای آن در خط %d اشتباه است.
milestones.filter_sort.name = نام
[graphs]
[org]
@ -2293,7 +2380,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=ویژگی ایمیل
@ -2542,6 +2629,9 @@ notices.op=عملیات.
notices.delete_success=گزارش سیستم حذف شده است.
config_summary = چکیده
config_settings = تنظيمات
[action]
create_repo=مخزن ایجاد شده <a href="%s"> %s</a>
rename_repo=مخزن تغییر نام داد از <code>%[1]s</code> به <a href="%[2]s">%[3]s</a>
@ -2671,3 +2761,29 @@ executable_file = فایل اجرایی
normal_file = فایل معمولی
changed_filemode = %[1] ها ← %[2] ها
directory = پوشه
[search]
search = جستجو...
type_tooltip = جستجو گونه
fuzzy = درهم
fuzzy_tooltip = پیامدهایی را درج کنید که دقیقا با عبارت جستجو همخوانی داشته باشند
union = بهم پیوستگی
exact = مو به مو
exact_tooltip = نتایجی را در بر بگیر که مو به مو با اصطلاح جستجو شده یکی باشد
regexp = عبارات باقاعده
regexp_tooltip = اصطلاح جستجو شده را با عبارات باقاعده تفسیر کن
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 = جستجو مشکلات...
pull_kind = جستجو واکشی‌ها...
keyword_search_unavailable = جستجو کلیدواژه اکنون در درسترس نیست. لطفا با مدیر سایت در میان بگذارید.

View file

@ -289,10 +289,10 @@ mailer_password=SMTP-salasana
register_confirm=Vaadi sähköpostinvahvistus rekisteröinnin edellytykseksi
mail_notify=Ota sähköposti-ilmoitukset käyttöön
server_service_title=Palvelimen ja kolmansien osapuolten palveluiden asetukset
offline_mode=Ota käyttöön lokaali tila
offline_mode=Ota käyttöön paikallinen tila
offline_mode.description=Poista kolmannen osapuolen sisällönjakeluverkot ja tarjoa kaikki resurssit paikallisesti.
disable_gravatar=Poista Gravatar käytöstä
disable_gravatar.description=Poista Gravatar ja kolmannen osapuolen avaratir käytöstä. Oletus-avatar näytetään, ellei käyttäjä ole ladannut omaansa.
disable_gravatar.description=Poista Gravatar- tai muiden kolmansien osapuolien avatar-lähteet käytöstä. Oletuskuvia käytetään käyttäjien avatareissa, elleivät he uloslataa omaa avatariaan ilmentymään.
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ä
@ -481,6 +481,8 @@ disable_forgot_password_mail_admin = Tilin palautus on käytössä vain, jos sä
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
prohibit_login_desc = Tilinne on estetty kanssakäymästä tämän instanssin kanssa. Ota yhteys instanssin järjestelmävalvojaan pääsyn uudelleenmahdollistamiseksi.
[mail]
view_it_on=Näytä %s
link_not_working_do_paste=Eikö linkki toimi? Yritä kopioida ja liittää se selaimesi osoitepalkkiin.
@ -545,6 +547,13 @@ 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.
issue_assigned.pull = @%[1]s osoitti sinulle vetopyynnön %[2]s repossa %[3]s.
issue_assigned.issue = @%[1]s osoitti sinulle ongelman %[2]s repossa %[3]s.
register_notify.text_1 = tämä on %s:n rekistöröitymisen vahvistussähköposti!
reset_password.text = jos tämä oli sinun toimestasi, ole hyvä ja klikkaa oheista linkkiä palauttaaksesi tilisi <b>%s</b> sisällä:
totp_disabled.no_2fa = Muita kaksivaiheisen tunnistautumisen menetelmiä ei ole konfiguroituna, joten et tarvitse kaksivaiheista tunnistautumista kirjautuaaksesi tilillesi.
[modal]
yes=Kyllä
no=Ei
@ -627,6 +636,9 @@ must_use_public_key = Antamasi avain on yksityinen avain. Älä lähetä yksityi
still_own_packages = Tilisi omistaa yhden tai useamman paketin, poista ne ensin.
AccessToken = Pääsypoletti
enterred_invalid_owner_name = Uuden omistajan nimi ei ole kelvollinen.
[user]
change_avatar=Vaihda profiilikuvasi…
repositories=Repot
@ -963,7 +975,7 @@ repo_name=Repon nimi
repo_name_helper=Hyvä repon nimi on lyhyt, mieleenpainuva ja yksilöllinen.
repo_size=Repon koko
template=Malli
template_select=Valitse malli.
template_select=Valitse malli
template_helper=Tee reposta mallipohja
visibility=Näkyvyys
visibility_description=Vain omistaja tai organisaation jäsenet, jos heillä on oikeudet, voivat nähdä sen.
@ -978,7 +990,7 @@ repo_desc=Kuvaus
repo_lang=Kieli
repo_gitignore_helper=Valitse .gitignore-mallit
issue_labels=Ongelmien tunnisteet
issue_labels_helper=Valitse pohja ongelmien nimilapuille.
issue_labels_helper=Valitse nimiöjoukko
license=Lisenssi
license_helper=Valitse lisenssitiedosto
readme=README
@ -1517,12 +1529,12 @@ settings.protected_branch=Haaran suojaus
settings.branch_protection=Haaran "<b>%s</b>" suojaussäännöt
settings.protect_this_branch=Ota haaran suojaus käyttöön
settings.protect_whitelist_deploy_keys=Lisää julkaisuavaimet sallittujen listalle mahdollistaaksesi repohin kirjoituksen.
settings.protect_whitelist_users=Lista käyttäjistä joilla työntö oikeus:
settings.protect_whitelist_users=Sallitut käyttäjät suhteessa työntämiseen
settings.protect_whitelist_search_users=Etsi käyttäjiä…
settings.protect_merge_whitelist_committers_desc=Salli vain listaan merkittyjen käyttäjien ja tiimien yhdistää vetopyynnöt tähän haaraan.
settings.protect_merge_whitelist_users=Lista käyttäjistä joilla yhdistämis-oikeus:
settings.protect_merge_whitelist_users=Sallitut käyttäjät suhteessa yhdistämiseen
settings.protect_required_approvals=Vaadittavat hyväksynnät
settings.protect_approvals_whitelist_users=Sallittujen tarkastajien lista:
settings.protect_approvals_whitelist_users=Sallittujen tarkastajien lista
settings.choose_branch=Valitse haara…
settings.no_protected_branch=Suojattuja haaroja ei ole.
settings.edit_protected_branch=Muokkaa
@ -1696,7 +1708,7 @@ settings.event_issue_comment = Kommentit
diff.download_patch = Lataa patch-tiedosto
issues.filter_milestone_none = Ei merkkipaaluja
issues.filter_milestone_open = Avoimet merkkipaalut
new_repo_helper = Repositorio eli tietovarasto sisältää kaikki projektin tiedostot, mukaan lukien versiohistorian. Onko sinulla repo jo jossain muualla? <a href="%s">Tee repomigraatio.</a>
new_repo_helper = Tietovarasto sisältää kaikki projektitiedostot, mukaan lukien tarkistushistoria. Järjestätkö jo sellaisen muualla? <a href="%s">Siirrä tietovarasto</a>.
use_template = Käytä tätä mallipohjaa
star_guest_user = Kirjaudu sisään lisätäksesi tähden tähän repoon.
watch_guest_user = Kirjaudu sisään tarkkaillaksesi tätä repoa.
@ -1766,7 +1778,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.
@ -2097,6 +2109,29 @@ settings.archive.text = Repon arkistointi asettaa sen pelkkään lukutilaan. Se
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.
issues.new.assign_to_me = Osoita itselle
issues.filter_assginee_no_select = Kaikki käsittelijät
pulls.closed_at = `sulki tämän vetopyynnön <a id="%[1]s" href="#%[1]s">%[2]s</a>`
generate_repo = Luo repo
tree_path_not_found_commit = Polkua %[1]s ei ole olemassa kommitissa %[2]s
tree_path_not_found_branch = Polkua %[1]s ei ole olemassa haarassa %[2]s
tree_path_not_found_tag = Polkua %[1]s ei ole olemassa tagissa %[2]s
transfer.no_permission_to_accept = Sinulla ei ole oikeutta hyväksyä tätä siirtoa.
transfer.no_permission_to_reject = Sinulla ei ole oikeutta hylätä tätä siirtoa.
settings.web_hook_name_feishu = Feishu / Lark Suite
[graphs]
component_loading_info = Tämä saattaa kestää hetken…
component_failed_to_load = Odottamaton virhe.
@ -2582,6 +2617,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
@ -2628,6 +2673,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ö
@ -2768,6 +2815,10 @@ owner.settings.cargo.rebuild.error = Cargo-indeksin rakentaminen uudelleen epäo
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.
deletion = Poista salaisuus

View file

@ -231,10 +231,10 @@ ssl_mode = SSL
path = Daanan
sqlite_helper = File path para sa SQLite3 database.<br>Maglagay ng absolute path kapag tinatakbo mo ang Forgejo bilang serbisyo.
reinstall_confirm_check_3 = Kinukumprima mo na sigurado ka talaga na ang Forgejo na ito ay tumatakbo sa tamang app.ini na lokasyon at sigurado ka na kailangan mo mag-reinstall. Kinukumpirma mo na kilalanin ang mga panganib sa itaas.
err_empty_db_path = Hindi maaring walang laman ang path ng SQLite database.
no_admin_and_disable_registration = Hindi mo maaring i-disable ang user self-registration nang hindi gumawa ng isang tagapangasiwa na account.
err_empty_admin_password = Hindi maaring walang laman ang password ng tagapangasiwa.
err_empty_admin_email = Hindi maaring walang laman ang email ng tagapangasiwa.
err_empty_db_path = Hindi maaaring walang laman ang path ng SQLite database.
no_admin_and_disable_registration = Hindi mo maaaring i-disable ang user self-registration nang hindi gumawa ng isang tagapangasiwa na account.
err_empty_admin_password = Hindi maaaring walang laman ang password ng tagapangasiwa.
err_empty_admin_email = Hindi maaaring walang laman ang email ng tagapangasiwa.
err_admin_name_is_reserved = Hindi angkop ang username ng tagapangasiwa, naka-reserba ang username
err_admin_name_is_invalid = Hindi angkop ang username ng tagapangasiwa
general_title = Mga General Setting
@ -250,9 +250,9 @@ domain_helper = Domain o host para sa server na ito.
ssh_port = Port ng SSH Server
http_port = Listen port sa HTTP
lfs_path_helper = Ang mga file na naka-track sa Git LFS ay ilalagay sa directory na ito. Iwanang walang laman para i-disable.
reinstall_confirm_message = Ang pag-install muli na may umiiral na Forgejo database ay maaring magdulot ng mga problema. Sa karamihan ng mga kaso, dapat mong gamitin ang iyong umiiral na "app.ini" para patakbuhin ang Forgejo. Kung alam mo ang ginagawa mo, kumpirmahin ang mga sumusunod:
reinstall_confirm_check_1 = Ang data na naka-encrypt sa pamamagitan ng SECRET_KEY sa app.ini ay maaring mawala: baka hindi maka-log in ang mga user gamit ng 2FA/OTP at ang mga mirror ay maaring hindi gumana mg maayos. Sa pamamagitan ng pag-check ng box na ito kinukumpirma mo na ang kasalukuyang app.ini file ay naglalaman ng tamang SECRET_KEY.
reinstall_confirm_check_2 = Ang mga repositoryo at mga setting ay maaring kailangang i-resynchronize. Sa pamamagitan ng pag-check ng box na ito kinukumprima mo na ire-resynchronize mo ang mga hook para sa mga repositoryo at authorized_keys ng mano-mano. Kinukumpirma mo na sisiguraduhin mo na tama ang mga setting ng repositoryo at mirror.
reinstall_confirm_message = Ang pag-install muli na may umiiral na Forgejo database ay maaaring magdulot ng mga problema. Sa karamihan ng mga kaso, dapat mong gamitin ang iyong umiiral na "app.ini" para patakbuhin ang Forgejo. Kung alam mo ang ginagawa mo, kumpirmahin ang mga sumusunod:
reinstall_confirm_check_1 = Ang data na naka-encrypt sa pamamagitan ng SECRET_KEY sa app.ini ay maaaring mawala: baka hindi maka-log in ang mga user gamit ng 2FA/OTP at ang mga mirror ay maaaring hindi gumana mg maayos. Sa pamamagitan ng pag-check ng box na ito kinukumpirma mo na ang kasalukuyang app.ini file ay naglalaman ng tamang SECRET_KEY.
reinstall_confirm_check_2 = Ang mga repositoryo at mga setting ay maaaring kailangang i-resynchronize. Sa pamamagitan ng pag-check ng box na ito kinukumprima mo na ire-resynchronize mo ang mga hook para sa mga repositoryo at authorized_keys ng mano-mano. Kinukumpirma mo na sisiguraduhin mo na tama ang mga setting ng repositoryo at mirror.
err_admin_name_pattern_not_allowed = Hindi angkop ang username ng tagapangasiwa, ang username ay tumutugma sa reserved pattern
ssh_port_helper = Numero ng port na gagamitin ng SSH server. Iwanang walang laman para i-disable ang SSH server.
server_service_title = Mga setting ng server at third-party na serbisyo
@ -565,7 +565,7 @@ SSPISeparatorReplacement = Pang-hiwalay
SSPIDefaultLanguage = Default na wika
CommitSummary = Pangkalahatang-ideya ng commit
glob_pattern_error = ` hindi angkop ang glob pattern: %s`
require_error = ` hindi maaring walang laman.`
require_error = ` hindi maaaring walang laman.`
alpha_dash_error = ` dapat maglaman lamang ng alphanumeric, dash ("-") at underscore ("_") na mga character.`
alpha_dash_dot_error = ` dapat maglaman lamang ng alphanumeric, dash ("-"), underscore ("_") at tuldok (".") na mga character.`
git_ref_name_error = ` dapat na mahusay na nabuong pangalan ng Git reference`
@ -613,8 +613,8 @@ unset_password = Hindi nagtakda ng password ang login user.
unsupported_login_type = Hindi sinusuportahan ang uri ng pag-login para burahin ang account.
user_not_exist = Hindi umiiral ang user.
team_not_exist = Hindi umiiral ang koponan.
last_org_owner = Hindi mo maaring tanggalin ang pinakahuling user sa "mga may-ari" na koponan. Kailangan may kahit isang may-ari para sa organisasyon.
cannot_add_org_to_team = Hindi maaring madagdag ang isang organisasyon bilang miyembro ng koponan.
last_org_owner = Hindi mo maaaring tanggalin ang pinakahuling user sa "mga may-ari" na koponan. Kailangan may kahit isang may-ari para sa organisasyon.
cannot_add_org_to_team = Hindi maaaring madagdag ang isang organisasyon bilang miyembro ng koponan.
duplicate_invite_to_team = Inimbita na ang user bilang miyembro ng koponan.
organization_leave_success = Matagumpay kang umalis sa organisasyon na %s.
invalid_ssh_key = Hindi ma-verify ang iyong SSH key: %s
@ -629,7 +629,7 @@ still_own_packages = Ang iyong account ay nagmamay-ari ng isa o higit pang packa
org_still_own_repo = Ang organisasyon na ito ay nagmamay-ari ng isa o higit pang mga repositoryo, burahin o ilipat sila muna.
org_still_own_packages = Ang organisasyon na ito ay nagmamay-ari ng isa o higit pang mga package, burahin sila muna.
target_branch_not_exist = Hindi umiiral ang target branch.
admin_cannot_delete_self = Hindi mo maaring burahin ang sarili mo kapag isa kang tagapangasiwa. Paki-tanggal ang iyong pribilehiyong tagapangasiwa muna.
admin_cannot_delete_self = Hindi mo maaaring burahin ang sarili mo kapag isa kang tagapangasiwa. Paki-tanggal ang iyong pribilehiyong tagapangasiwa muna.
required_prefix = Ang input ay dapat magsimula sa "%s"
FullName = Buong pangalan
Description = Paglalarawan
@ -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
@ -760,8 +762,8 @@ gpg_token_code = echo "%s" | gpg -a --default-key %s --detach-sig
delete_token_success = Nabura na ang token. Ang mga application na gumagamit nito ay hindi na maa-access ang iyong account.
add_email_confirmation_sent = Ang isang email na pang-kumpirma ay ipinadala sa %s. Para kumpirmahin ang iyong email address, pakisuri ang iyong inbox at sundan ang ibinigay na link sa loob ng %s.
key_content_ssh_placeholder = Nagsisimula sa "ssh-ed25519", "ssh-rsa", "ecdsa-sha2-nistp256", "ecdsa-sha2-nistp384", "ecdsa-sha2-nistp521", "sk-ecdsa-sha2-nistp256@openssh.com", o "sk-ssh-ed25519@openssh.com"
gpg_key_verified_long = Na-verify ang key na ito gamit ng isang token at maaring gamitin para i-verify ang mga commit na tumutugma sa anumang mga naka-activate na email address para sa user na ito kasama ang mga tumutugmang pagkakakilanlan para sa key na ito.
ssh_key_verified_long = Ang key na ito ay na-verify gamit ng isang token at maaring gamitin para i-verify ang mga commit na tumutugma na email address para sa user na ito.
gpg_key_verified_long = Na-verify ang key na ito gamit ng isang token at maaaring gamitin para i-verify ang mga commit na tumutugma sa anumang mga naka-activate na email address para sa user na ito kasama ang mga tumutugmang pagkakakilanlan para sa key na ito.
ssh_key_verified_long = Ang key na ito ay na-verify gamit ng isang token at maaaring gamitin para i-verify ang mga commit na tumutugma na email address para sa user na ito.
add_principal_success = Idinagdag na ang SSH certificate principal na "%s".
ssh_key_deletion_desc = Ang pagtanggal ng SSH key ay matatanggihan ang pag-access sa iyong account. Magpatuloy?
no_activity = Walang kamakilang aktibidad
@ -820,7 +822,7 @@ keep_email_private = Itago ang email address
openid_desc = Hinahayaan ka ng OpenID na mag-delegate ng pagpapatunay sa isang panlabas na tagabigay ng serbisyo.
ssh_desc = Ang mga pampublikong SSH key na ito ay nauugnay sa iyong account. Pinapayagan ng kaukulang pribadong key ang buong pag-access sa iyong mga repositoryo. Ang mga SSH key na na-verify ay maaaring magamit upang mapatunayan ang mga naka-sign na Git commit sa pamamagitan ng SSH.
principal_desc = Ang mga SSH principal na ito ay nauugnay sa iyong account at pinapayagan ang buong pag-access sa iyong mga repositoryo.
ssh_helper = <strong>Kailangan ng tulong?</strong> Tignan ang guide sa <a href="%s">paggawa ng sarili mong mga SSH key</a> o ilutas ang <a href="%s">mga karaniwang problema</a> na maaring moong matagpo gamit ng SSH.
ssh_helper = <strong>Kailangan ng tulong?</strong> Tignan ang guide sa <a href="%s">paggawa ng sarili mong mga SSH key</a> o ilutas ang <a href="%s">mga karaniwang problema</a> na maaaring moong matagpo gamit ng SSH.
gpg_helper = <strong>Kailangan ng tulong?</strong> Tignan ang guide <a href="%s">tungkol sa GPG</a>.
add_new_key = Magdagdag ng SSH key
add_new_gpg_key = Magdagdag ng GPG key
@ -830,7 +832,7 @@ ssh_key_been_used = Idinagdag na ang SSH key na ito sa server.
ssh_key_name_used = Ang isang SSH key na may katulad na pangalan ay umiiral na sa iyong account.
ssh_principal_been_used = Idinagdag na ang principal na ito sa server.
gpg_key_matched_identities = Mga Tumutugma na Pagkakakilanlan:
gpg_key_matched_identities_long = Ang mga naka-embed na pagkakakilanlan sa key na ito ay tumutugma sa mga sumusunod na naka-activate na email address para sa user na ito. Ang mga commit na tumutugma sa mga email address na ito ay maaring i-verify gamit ng key na ito.
gpg_key_matched_identities_long = Ang mga naka-embed na pagkakakilanlan sa key na ito ay tumutugma sa mga sumusunod na naka-activate na email address para sa user na ito. Ang mga commit na tumutugma sa mga email address na ito ay maaaring i-verify gamit ng key na ito.
gpg_key_verified = Naka-verify na key
gpg_key_verify = I-verify
gpg_invalid_token_signature = Ang ibinigay na GPG key, signature, at token ay hindi tumutugma o luma.
@ -982,7 +984,7 @@ manage_account_links_desc = Ang mga panlabas na account na ito ay naka-link sa i
hooks.desc = Magdagdag ng mga webhook na mati-trigger para sa <strong>lahat ng mga repositoryo</strong> na minamay-ari mo.
orgs_none = Hindi ka isang miyembro ng anumang mga organisasyon.
oauth2_application_create_description = Ang mga OAuth2 application ay pinapayagan ang mga third-party na aplikasyon na i-access ang mga user account sa instansya na ito.
oauth2_application_locked = Ang Forgejo ay pini-pre register ang ibang mga OAuth2 application sa startup kapag naka-enable sa config. Para iwasan ang hindi inaasahang gawain, hindi ito maaring i-edit o tanggalin. Mangyaring sumangguni sa dokumentasyon ng OAuth2 para sa karagdagang impormasyon.
oauth2_application_locked = Ang Forgejo ay pini-pre register ang ibang mga OAuth2 application sa startup kapag naka-enable sa config. Para iwasan ang hindi inaasahang gawain, hindi ito maaaring i-edit o tanggalin. Mangyaring sumangguni sa dokumentasyon ng OAuth2 para sa karagdagang impormasyon.
remove_account_link_desc = Ang pagtanggal ng naka-link na account ay babawiin ang pag-access nito sa iyong Forgejo account. Magpatuloy?
visibility.public_tooltip = Makikita ng lahat
hints = Mga Pahiwatig
@ -1011,7 +1013,7 @@ admin.enabled_flags = Mga flag na naka-enable para sa repositoryo:
admin.update_flags = I-update ang mga flag
admin.flags_replaced = Napalitan ang mga flag ng repositoryo
owner = May-ari
owner_helper = Maaring hindi mapapakita ang ibang organisasyon sa dropdown dahil sa pinakamataas na bilang ng repositoryo na limitasyon.
owner_helper = Maaaring hindi mapapakita ang ibang organisasyon sa dropdown dahil sa pinakamataas na bilang ng repositoryo na limitasyon.
repo_name = Pangalan ng repositoryo
repo_name_helper = Ang mga magandang pangalan ng repositoryo ay gumagamit ng maliit, makakaalala, at unique na mga keyword.
repo_size = Laki ng Repositoryo
@ -1027,7 +1029,7 @@ fork_repo = I-fork ang repositoryo
fork_from = I-fork mula sa
already_forked = Na-fork mo na ang %s
fork_to_different_account = Mag-fork sa ibang account
fork_visibility_helper = Ang visibility ng isang naka-fork na repositoryo ay hindi maaring baguhin.
fork_visibility_helper = Ang visibility ng isang naka-fork na repositoryo ay hindi maaaring baguhin.
open_with_editor = Buksan gamit ang %s
download_bundle = I-download ang BUNDLE
repo_gitignore_helper_desc = Piliin kung anong mga file na hindi susubaybayin sa listahan ng mga template para sa mga karaniwang wika. Ang mga tipikal na artifact na ginagawa ng mga build tool ng wika ay kasama sa .gitignore ng default.
@ -1112,7 +1114,7 @@ stars = Mga bitwin
migrate_options_mirror_helper = Magiging salamin ang repositoryong ito
migrate_options_lfs_endpoint.description.local = Sinusuporta rin ang lokal na server path.
editor.this_file_locked = Nakakandado ang file
editor.filename_cannot_be_empty = Hindi maaring walang laman ang pangalan ng file.
editor.filename_cannot_be_empty = Hindi maaaring walang laman ang pangalan ng file.
commits.message = Mensahe
commits.newer = Mas bago
commits.date = Petsa
@ -1169,7 +1171,7 @@ template.avatar = Avatar
migrate_options = Mga opsyon sa paglipat
migrate.clone_address_desc = Ang HTTP(S) o Git "clone" URL ng umiiral na repositoryo
need_auth = Awtorisasyon
migrate.github_token_desc = Maari kang maglagay ng isa o higit pang mga token na hinihiwalay ng kuwit dito upang gawing mas-mabilis ang pagmigrate dahil sa rate limit ng GitHub API. BABALA: Ang pagabuso ng feature na ito ay maaring maglabag sa patakaran ng tagapagbigay ng serbisyo at maaring magdulot ng pag-block ng account.
migrate.github_token_desc = Maaari kang maglagay ng isa o higit pang mga token na hinihiwalay ng kuwit dito upang gawing mas-mabilis ang pagmigrate dahil sa rate limit ng GitHub API. BABALA: Ang pagabuso ng feature na ito ay maaaring maglabag sa patakaran ng tagapagbigay ng serbisyo at maaaring magdulot ng pag-block ng account.
template.invalid = Kailangang pumili ng kahit isang template na repositoryo
migrate_options_lfs_endpoint.description = Susubukan ng migration na gamitin ang iyong Git remote upang <a target="_blank" rel="noopener noreferrer" href="%s">matukoy ang LFS server</a>. Maari mong magtiyak ng custom na endpoint kapag ang LFS data ng repositoryo ay nakalagay sa ibang lugar.
blame.ignore_revs.failed = Nabigong hindi pansinin ang mga rebisyon sa <a href="%s">.git-blame-ignore-revs</a>.
@ -1202,7 +1204,7 @@ adopt_preexisting_success = Pinagtibay ang mga file at ginawa ang repositoryo mu
delete_preexisting_success = Burahin ang mga hindi pinatibay na file sa %s
blame_prior = Tignan ang blame bago ang pagbabago na ito
migrate.permission_denied = Hindi ka pinapayagang mag-import ng mga lokal na repositoryo.
migrate.permission_denied_blocked = Hindi ka maaring mag-import mula sa mga hindi pinapayagang host, magyaring magtanong sa pangangasiwa na suriin ang ALLOWED_DOMAINS/ALLOW_LOCALNETWORKS/BLOCKED_DOMAINS na mga setting.
migrate.permission_denied_blocked = Hindi ka maaaring mag-import mula sa mga hindi pinapayagang host, magyaring magtanong sa pangangasiwa na suriin ang ALLOWED_DOMAINS/ALLOW_LOCALNETWORKS/BLOCKED_DOMAINS na mga setting.
migrate.invalid_local_path = Hindi wasto ang lokal na path. Hindi ito umiiral o hindi isang direktoryo.
migrate.invalid_lfs_endpoint = Hindi wasto ang LFS endpoint.
migrate.migrating_failed = Nabigo ang pag-migrate mula sa <b>%s</b>.
@ -1251,7 +1253,7 @@ file_follow = Sundan ang symlink
file_view_source = Tignan ang source
file_view_rendered = Tignan ng naka-render
ambiguous_runes_header = `Naglalaman ng file na ito ng mga hindi tiyak na Unicode character`
ambiguous_runes_description = `Ang file na ito ay naglalaman ng mga Unicode character na maaring malilito sa ibang mga character. Kung sa tingin mo ay sinasadya ito, maari mong ligtas na hindi pansinin ang babala ito. Gamitin ang I-escape na button para ipakita sila.`
ambiguous_runes_description = `Ang file na ito ay naglalaman ng mga Unicode character na maaaring malilito sa ibang mga character. Kung sa tingin mo ay sinasadya ito, maaari mong ligtas na hindi pansinin ang babala ito. Gamitin ang I-escape na button para ipakita sila.`
file_copy_permalink = Kopyahin ang permalink
view_git_blame = Tignan ang git blame
video_not_supported_in_browser = Hindi sinusuportahan ng inyong browser ang HTML5 "video" tag.
@ -1281,7 +1283,7 @@ broken_message = Ang Git data na pinagbabatayan sa repositoryo na ito ay hindi m
file_history = Kasaysayan
invisible_runes_header = `Nalalaman ng file na ito ng mga hindi nakikitang Unicode character`
file_too_large = Masyadong malaki ang file para ipakita.
invisible_runes_description = `Ang file na ito ay naglalaman ng mga hindi nakikitang Unicode character na hindi nakikilala ng mga tao ngunit maaring maproseso ng ibang paraan ng isang computer. Kung sa tingin mo ay sinasadya ito, maari mong ligtas na hindi pansinin ang babala na ito. Gamitin ang I-escape na button para ipakita sila.`
invisible_runes_description = `Ang file na ito ay naglalaman ng mga hindi nakikitang Unicode character na hindi nakikilala ng mga tao ngunit maaaring maproseso ng ibang paraan ng isang computer. Kung sa tingin mo ay sinasadya ito, maaari mong ligtas na hindi pansinin ang babala na ito. Gamitin ang I-escape na button para ipakita sila.`
commit.contained_in_default_branch = Ang commit na ito ay bahagi ng default na branch
migrate.migrating_labels = Nililipat ang mga label
filter_branch_and_tag = I-filter ang branch o tag
@ -1315,7 +1317,7 @@ clone_this_repo = I-clone ang repositoryo na ito
cite_this_repo = Banggitin ang repositoryo na ito
create_new_repo_command = Paggawa ng bagong repositoryo sa command line
code = Code
ambiguous_character = `Ang %[1]c [U+%04[1]X] ay maaring malito sa %[2]c [U+%04[2]X]`
ambiguous_character = `Ang %[1]c [U+%04[1]X] ay maaaring malito sa %[2]c [U+%04[2]X]`
escape_control_characters = I-escape
unescape_control_characters = I-unescape
invisible_runes_line = `Ang linya na ito ay may mga hindi nakikitang Unicode character`
@ -1329,7 +1331,7 @@ editor.must_be_on_a_branch = Dapat nasa branch ka upang gumawa o magmunkahi ng m
editor.new_branch_name_desc = Bagong pangalan ng branch…
editor.cancel = Kanselahin
issues.role.member = Miyembro
issues.remove_request_review_block = Hindi maaring tanggalin ang hiling sa pagsuri
issues.remove_request_review_block = Hindi maaaring tanggalin ang hiling sa pagsuri
issues.edit = Baguhin
issues.cancel = Kanselahin
issues.save = IImbak
@ -1730,7 +1732,7 @@ issues.label_exclusive_desc = Pangalanan ang label na <code>scope/item</code> up
issues.archived_label_description = (Naka-archive) %s
issues.label.filter_sort.alphabetically = Ayon sa alpabeto
issues.subscribe = Mag-subscribe
issues.max_pinned = Hindi ka maaring mag-pin ng higit pang mga isyu
issues.max_pinned = Hindi ka maaaring mag-pin ng higit pang mga isyu
issues.pin_comment = na-pin ito %s
issues.unpin_comment = na-unpin ito %s
issues.lock = I-lock ang usapan
@ -1786,7 +1788,7 @@ wiki.last_commit_info = Binago ni %s ang pahinang ito %s
issues.content_history.edited = binago
issues.ref_pull_from = `<a href="%[3]s">isinangguni ang hiling sa paghila na ito %[4]s </a><a id="%[1]s" href="#%[1]s">%[2]s</a>`
pulls.merged_title_desc_few = isinali ang %[1]d mga commit mula sa <code>%[2]s</code> patungong <code>%[3]s</code> %[4]s
settings.org_not_allowed_to_be_collaborator = Hindi maaring idagdag ang mga organizasyon bilang tagatulong.
settings.org_not_allowed_to_be_collaborator = Hindi maaaring idagdag ang mga organisasyon bilang tagatulong.
settings.add_collaborator_success = Naidagdag ang tagatulong.
settings.federation_following_repos = Mga URL ng Mga Sinusundang Repositoryo. Hinihiwalay ng ";", walang whitespace.
diff.comment.reply = Tumugon
@ -1885,8 +1887,8 @@ issues.dependency.remove_info = Tanggalin ang dependency na ito
issues.dependency.added_dependency = `nagdagdag ng bagong dependency %s`
issues.review.dismissed_label = Nadismiss
issues.review.dismissed = nadismiss ang pagsuri ni %s %s
issues.review.self.approval = Hindi mo maaring aprubahan ang sarili mong hiling sa paghila.
issues.review.self.rejection = Hindi mo maaring humiling ng pagbabago sa sarili mong hiling sa paghila.
issues.review.self.approval = Hindi mo maaaring aprubahan ang sarili mong hiling sa paghila.
issues.review.self.rejection = Hindi mo maaaring humiling ng pagbabago sa sarili mong hiling sa paghila.
pulls.nothing_to_compare_have_tag = Magkapareho ang mga piniling branch/tag.
issues.dependency.no_permission_1 = Wala kang pahintulot na basahin ang dependency na %d
issues.dependency.no_permission_n = Wala kang pahintulot na basahin ang mga %d dependency
@ -1920,7 +1922,7 @@ activity.active_prs_count_n = <strong>%d</strong> aktibong mga hiling sa paghila
issues.author.tooltip.issue = May-akda ng iysung ito ang user.
issues.author.tooltip.pr = May-akda ng hiling sa paghila na ito ang user na ito.
issues.dependency.add_error_dep_exists = Umiiral na and dependency.
issues.dependency.add_error_cannot_create_circular = Hindi ka maaring gumawa ng dependency na may dalawang isyu na humaharang sa isa't isa.
issues.dependency.add_error_cannot_create_circular = Hindi ka maaaring gumawa ng dependency na may dalawang isyu na humaharang sa isa't isa.
issues.dependency.add_error_same_issue = Hindi mo magagwang dumepende ang isyu sa sarili.
issues.dependency.add_error_dep_not_same_repo = Dapat nasa katulad na repositoryo ang mga isyu.
issues.dependency.add_error_dep_issue_not_exist = Hindi umiiral ang dumedependeng isyu.
@ -2036,7 +2038,7 @@ pulls.wrong_commit_id = ang commit id ay dapat ang commit id sa patutunguhan na
pulls.blocked_by_changed_protected_files_1 = Hinarangan ang hiling sa paghila na ito dahil nagbabago ito ng isang nakaprotektang file:
pulls.blocked_by_changed_protected_files_n = Hinarangan ang hiling sa paghila na ito dahil nagbabago ito ng mga nakaprotektang file:
pulls.blocked_by_official_review_requests = Hinarangan ang hiling sa paghila na ito dahil may nawawalang pag-apruba mula sa isa o higit pang mga opisyal na tagasuri.
pulls.can_auto_merge_desc = Maaring isama ng awtomatiko ang hiling sa paghila na ito.
pulls.can_auto_merge_desc = Maaaring isama ng awtomatiko ang hiling sa paghila na ito.
pulls.num_conflicting_files_n = %d mga magkasalungat na file
pulls.num_conflicting_files_1 = %d magkasalungat na file
issues.review.add_review_requests = humiling ng mga pagsuri mula sa %[1]s %[2]s
@ -2316,7 +2318,7 @@ settings.convert_confirm = I-convert ang repositoryo
settings.webhook.replay.description_disabled = Para i-replay ang webhook na ito, i-activate ito.
settings.tracker_issue_style.regexp = Regular na Ekspresyon
settings.admin_stats_indexer = Taga-index ng istatistika ng code
pulls.open_unmerged_pull_exists = `Hindi ka maaring gumawa ng pagbukas-muli na operasyon dahil may nakabinbin na hiling sa paghila (#%d) na may magkatulad na katangian.`
pulls.open_unmerged_pull_exists = `Hindi ka maaaring gumawa ng pagbukas-muli na operasyon dahil may nakabinbin na hiling sa paghila (#%d) na may magkatulad na katangian.`
milestones.deletion_success = Binura na ang milestone.
pulls.auto_merge_has_pending_schedule = Naiskedyul ni %[1]s na awtomatiko na isama ang hiling sa paghila na ito kapag magtagumpay ang lahat ng mga pagsusuri %[2]s.
issues.summary_card_alt = Pangkalahatang-ideyang card ng isyu na tawag na "%s" sa repositoryong %s
@ -2384,9 +2386,9 @@ settings.external_wiki_url_desc = Ire-redirect ang mga bisita sa URL ng panlabas
settings.use_external_issue_tracker = Gumamit ng panlabas na tagasubaybay na isyu
settings.wiki_desc = I-enable ang wiki ng repositoryo
settings.trust_model.default.desc = Gamitin ang default na modelo ng pagkatiwala ng repositoryo para sa installation na ito.
settings.add_webhook.invalid_path = Hindi maaring maglaman ang path ng parte na "." o ".." o walang laman na string. Hindi maaring magsimula o magtapos sa slash.
settings.add_webhook.invalid_path = Hindi maaaring maglaman ang path ng parte na "." o ".." o walang laman na string. Hindi maaaring magsimula o magtapos sa slash.
settings.webhook_deletion = Tanggalin ang webhook
settings.add_webhook.invalid_channel_name = Hindi maaring walang laman ang pangalan ng channel ng webhook at hindi maaring maglaman lang ng # na character.
settings.add_webhook.invalid_channel_name = Hindi maaaring walang laman ang pangalan ng channel ng webhook at hindi maaaring maglaman lang ng # na character.
pulls.update_branch = I-update ang branch sa pamamagitan ng pagsama
pulls.status_checks_show_all = Ipakita ang lahat ng mga pagsusuri
pulls.cmd_instruction_checkout_title = I-checkout
@ -2439,8 +2441,8 @@ settings.mirror_settings.docs.doc_link_title = Paano ako mag-mirror ng mga repos
settings.pull_mirror_sync_quota_exceeded = Nalagpasan ang quota, hindi hihila ng mga pagbabago.
settings.mirror_settings.push_mirror.none_ssh = Wala
settings.mirror_settings.push_mirror.copy_public_key = Kopyahin ang publikong key
pulls.delete_after_merge.head_branch.is_protected = Ang head branch na gusto mong burahin ay isang pinoprotektahang branch at hindi maaring burahin.
pulls.delete_after_merge.head_branch.is_default = Ang head branch na gusto mong burahin ay ang default branch at hindi maaring burahin.
pulls.delete_after_merge.head_branch.is_protected = Ang head branch na gusto mong burahin ay isang pinoprotektahang branch at hindi maaaring burahin.
pulls.delete_after_merge.head_branch.is_default = Ang head branch na gusto mong burahin ay ang default branch at hindi maaaring burahin.
issues.num_reviews_few = %d mga pagsusuri
issues.num_reviews_one = %d pagsusuri
diff.image.swipe = I-swipe
@ -2463,7 +2465,7 @@ diff.comment.add_single_comment = Magdagdag ng iisang komento
diff.comment.placeholder = Mag-iwan ng komento
release.detail = Mga detalye sa release
release.tags = Mga tag
release.title_empty = Hindi maaring walang laman ang paksa.
release.title_empty = Hindi maaaring walang laman ang paksa.
branch.included_desc = Ang branch na ito ay kabilang ng default branch
release.source_code = Source code
release.edit_subheader = Inaayos ng mga release ang mga bersyon ng proyekto.
@ -2506,8 +2508,8 @@ settings.block_outdated_branch_desc = Hindi magiging posible ang pagsasama kung
settings.block_rejected_reviews_desc = Hindi magiging posible ang pagsasama kapag may mga hiniling ng pagbabago ang mga opisyal na tagasuri, kahit na may sapat na pagapruba.
settings.block_on_official_review_requests = Harangan ang merge sa opisyal na hiling sa pagsuri
settings.tags.protection.allowed = Pinapayagan
settings.lfs_delete_warning = Ang pagbura ng LFS file ay maaring magdulot ng mga "object does not exist" na error sa checkout. Sigurado ka ba?
settings.protected_branch_required_approvals_min = Hindi maaring negatibo ang mga kinakailangang pagapruba.
settings.lfs_delete_warning = Ang pagbura ng LFS file ay maaaring magdulot ng mga "object does not exist" na error sa checkout. Sigurado ka ba?
settings.protected_branch_required_approvals_min = Hindi maaaring negatibo ang mga kinakailangang pagapruba.
settings.lfs_lock_path = File path na kakandaduhin…
settings.lfs_force_unlock = Pilitin ang pag-unlock
settings.lfs_pointers.accessible = Naa-access ng user
@ -2518,7 +2520,7 @@ settings.protect_merge_whitelist_users = Mga naka-whitelist na user para sa pags
settings.protect_merge_whitelist_teams = Mga naka-whitelist na koponan para sa pagsasama
settings.protect_check_status_contexts = I-enable ang pagsusuri ng estado
settings.protect_status_check_patterns = Mga pattern sa pagsusuri ng estado
settings.protect_status_check_patterns_desc = Ilagay ang mga pattern para i-specify kung aling mga pagsusuri ng estado na kailangang magpasa bago maisama ang mga branch sa isang branch na tumutugma sa rule na ito. Nagse-specify ang bawat linya ng pattern. Hindi maaring walang laman ang mga pattern.
settings.protect_status_check_patterns_desc = Ilagay ang mga pattern para i-specify kung aling mga pagsusuri ng estado na kailangang magpasa bago maisama ang mga branch sa isang branch na tumutugma sa rule na ito. Nagse-specify ang bawat linya ng pattern. Hindi maaaring walang laman ang mga pattern.
settings.protect_check_status_contexts_list = Mga pagsusuri ng estado na nahanap sa huling linggo para sa repositoryo na ito
diff.generated = na-generate
branch.confirm_create_branch = Gumawa ng branch
@ -2668,9 +2670,9 @@ settings.protected_branch_deletion_desc = Ang pag-disable ng branch protection a
settings.rename_branch_failed_protected = Hindi mababago ang pangalan ng branch na %s dahil ito ay isang nakaprotektang branch.
editor.add_tmpl.filename = Pangalan ng file
settings.protect_approvals_whitelist_users = Mga naka-whitelist na tagasuri
settings.protect_protected_file_patterns_desc = Ang mga nakaprotektang file ay hindi pinapayagan na direktang mabago kahit na may karapatan ang user na magdagdag, i-edit, o burahin ang mga file sa branch na ito. Ang mga maraming pattern ay maaring mahiwalay gamit ng semicolon (";"). Tignan ang <a href="%[1]s">%[2]s</a> na dokumentasyon para sa pattern syntax. Mga halimbawa: <code>.drone.yml</code>, <code>/docs/**/*.txt</code>.
branch.delete_branch_has_new_commits = Hindi maaring burahin ang branch na "%s" dahil may mga bagong commit na nadagdag matapos ang pagsasama.
settings.protect_unprotected_file_patterns_desc = Ang mga hindi nakaprotektang file ay pinapayagan na direktang mabago kung may write access ang user, bina-bypass ang restriction ng pagtulak. Ang mga maraming pattern ay maaring mahiwalay gamit ng semicolon (";"). Tignan ang <a href="%[1]s">%[2]s</a> na dokumentasyon para sa pattern syntax. Mga halimbawa: <code>.drone.yml</code>, <code>/docs/**/*.txt</code>.
settings.protect_protected_file_patterns_desc = Ang mga nakaprotektang file ay hindi pinapayagan na direktang mabago kahit na may karapatan ang user na magdagdag, i-edit, o burahin ang mga file sa branch na ito. Ang mga maraming pattern ay maaaring mahiwalay gamit ng semicolon (";"). Tignan ang <a href="%[1]s">%[2]s</a> na dokumentasyon para sa pattern syntax. Mga halimbawa: <code>.drone.yml</code>, <code>/docs/**/*.txt</code>.
branch.delete_branch_has_new_commits = Hindi maaaring burahin ang branch na "%s" dahil may mga bagong commit na nadagdag matapos ang pagsasama.
settings.protect_unprotected_file_patterns_desc = Ang mga hindi nakaprotektang file ay pinapayagan na direktang mabago kung may write access ang user, bina-bypass ang restriction ng pagtulak. Ang mga maraming pattern ay maaaring mahiwalay gamit ng semicolon (";"). Tignan ang <a href="%[1]s">%[2]s</a> na dokumentasyon para sa pattern syntax. Mga halimbawa: <code>.drone.yml</code>, <code>/docs/**/*.txt</code>.
settings.no_protected_branch = Walang mga nakaprotekta na branch.
settings.protected_branch_required_rule_name = Kinakailangan na pangalan ng rule
settings.protected_branch_duplicate_rule_name = Mayroon nang rule para sa set ng mga branch na ito
@ -2686,7 +2688,7 @@ branch.branch_name_conflict = Sumasalungat ang pangalan ng branch na "%s" sa umi
branch.protected_deletion_failed = Nakaprotekta ang branch na "%s". Hindi ito mabubura.
diff.file_after = Pagkatapos
release.deletion_tag_desc = Buburahin ang tag na ito sa repositoryo. Mapapanatiling hindi nabago ang nilalaman at kasaysayan ng repositoryo. Magpatuloy?
topic.format_prompt = Dapat magsimula ang mga topic ng numero o letra, maaring magsama ng mga dash ("-") at dot ("."), maaring hanggang sa 35 na character na haba. Kailangang lowercase ang mga character.
topic.format_prompt = Dapat magsimula ang mga topic ng numero o letra, maaaring magsama ng mga dash ("-") at dot ("."), maaaring hanggang sa 35 na character na haba. Kailangang lowercase ang mga character.
branch.new_branch_from = Gumawa ng bagong branch mula sa "%s"
error.csv.unexpected = Hindi ma-render ang file na ito dahil naglalaman ito ng hindi inaasahang character sa linyang %d at column %d.
settings.ignore_stale_approvals_desc = Huwag ibilang ang mga pagapruba na ginawa sa mga lumang commit (mga lipas na pagsusuri) sa kung gaano karaming pagapruba ang mayroon sa PR na ito. Walang kinalaman kung ang mga lipas na pagsusuri ay na-dismiss na.
@ -2725,6 +2727,8 @@ 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…
keyword_search_unavailable = Kasalukuyang hindi available ang paghahanap sa pamamagitan ng keyword. Mangyaring makipag-ugnayan sa tagapangasiwa ng site.
@ -2834,11 +2838,11 @@ users.repos = Mga Repo
users.send_register_notify = Abisuhan tungkol sa pagrehistro sa pamamagitan ng email
users.is_admin = Tagapangasiwa na account
users.is_restricted = Pinaghihigpitang account
users.allow_import_local = Maaring mag-import ng mga lokal na repositoryo
users.allow_import_local = Maaaring mag-import ng mga lokal na repositoryo
users.allow_create_organization = Makakagawa ng mga organisasyon
users.update_profile = I-update ang user account
users.delete_account = Burahin ang user account
users.cannot_delete_self = Hindi mo maaring burahin ang sarili mo
users.cannot_delete_self = Hindi mo maaaring burahin ang sarili mo
users.still_own_repo = Ang user na ito ay nagmamay-ari pa ng isa o higit pang mga repositoryo. Burahin o ilipat sila muna.
users.list_status_filter.is_active = Aktibo
users.list_status_filter.not_active = Hindi aktibo
@ -2911,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
@ -3109,7 +3113,7 @@ config.allow_dots_in_usernames = Payagan ang mga user na gumamit ng mga dot sa k
config.https_only = HTTPS lamang
auths.tip.github = Magrehistro ng bagong OAuth application sa %s
auths.tip.gitlab_new = Magrehistro ng bagong application sa %s
emails.delete_primary_email_error = Hindi mo maaring burahin ang pangunahing email.
emails.delete_primary_email_error = Hindi mo maaaring burahin ang pangunahing email.
config.provider_config = Config ng provider
config.cache_test_slow = Matagumpay ang pagsubok ng cache, ngunit mabagal ang tugon: %s.
config.picture_config = Configuration ng larawan at avatar
@ -3260,7 +3264,7 @@ config.cookie_name = Pangalan ng cookie
config.gc_interval_time = Oras ng pagitan ng GC
config.cookie_life_time = Lifetime ng cookie
config.git_clone_timeout = Timeout ng operasyon na pag-clone
monitor.process.cancel_desc = Ang pagkansela ng proseso ay maaring magdulot ng pagkawalan ng data
monitor.process.cancel_desc = Ang pagkansela ng proseso ay maaaring magdulot ng pagkawalan ng data
monitor.queue.name = Pangalan
auths.oauth2_required_claim_value_helper = Itakda ang value na ito upang i-restrict ang pag-login mula sa pinagmulang ito sa mga user na may claim na may ganitong pangalan at value
auths.tip.bitbucket = Magrehistro ng bagong OAuth consumer sa %s at idagdag ang pahintulot na "Account" - "Read"
@ -3346,7 +3350,7 @@ members.member = Miyembro
members.private_helper = Gawing visible
settings.location = Lokasyon
settings.update_setting_success = Nabago na ang mga setting ng organisasyon.
teams.can_create_org_repo_helper = Maaring gumawa ang mga miyembro ng mga bagong repositoryo sa organisasyon. Magkakaroon ng tagapangasiwa na access ang tagagawa sa bagong repositoryo.
teams.can_create_org_repo_helper = Maaaring gumawa ang mga miyembro ng mga bagong repositoryo sa organisasyon. Magkakaroon ng tagapangasiwa na access ang tagagawa sa bagong repositoryo.
settings.change_orgname_prompt = Tandaan: Ang pagpalit ng pangalan ng organisasyon ay papalitan din ang URL ng organisasyon at mapapalaya ang lumang pangalan.
settings.labels_desc = Magdagdag ng mga label na magagamit sa mga isyu para sa <strong>lahat ng mga repositoryo</strong> sa ilalim ng organisasyon.
members.public_helper = Gawing nakatago
@ -3619,7 +3623,7 @@ variables.deletion.description = Permanente ang pagtanggal ng isang variable at
status.running = Tumatakbo
runners.new_notice = Paano magsimula ng runner
runners.update_runner_success = Matagumpay na na-update ang runner
runners.delete_runner_notice = Kapag may trabaho na tumatakbo sa runner na ito, titigilan ito at mamarkahan bilang nabigo. Maaring sirain ang building workflow.
runners.delete_runner_notice = Kapag may trabaho na tumatakbo sa runner na ito, titigilan ito at mamarkahan bilang nabigo. Maaaring sirain ang building workflow.
runners.none = Walang mga available na runner
runs.status_no_select = Lahat ng status
runs.empty_commit_message = (walang laman na mensahe ng commit)
@ -3664,6 +3668,8 @@ runs.expire_log_message = Na-purge ang mga log dahil masyado silang luma.
runs.no_workflows.help_write_access = Hindi alam kung paano magsimula sa Forgejo Actions? Tignan ang <a target="_blank" rel="noopener noreferrer" href="%s">mabilisang pagsimula sa user documentation</a> para magsimulang magsulat ng unang workflow, at <a target="_blank" rel="noopener noreferrer" href="%s">mag-setup ng Forgejo runner</a> para patakbuhin ang mga job.
runs.no_workflows.help_no_write_access = Para matuto tungkol sa Forgejo Actions, tignan ang <a target="_blank" rel="noopener noreferrer" href="%s">dokumentasyon</a>.
variables.not_found = Nabigong hanapin ang variable.
[action]
commit_repo = itinulak sa <a href="%[2]s">%[3]s</a> sa <a href="%[1]s">%[4]s</a>
create_issue = `binuksan ang isyu na <a href="%[1]s">%[3]s#%[2]s</a>`
@ -3684,7 +3690,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>`
@ -3758,7 +3764,7 @@ error.unit_not_allowed = Hindi ka pinapayagang ma-access ang seksyon ng reposito
[dropzone]
default_message = I-drop ang mga file o mag-click dito para mag-upload.
invalid_input_type = Hindi ka maaring mag-upload ng mga file sa uri na ito.
invalid_input_type = Hindi ka maaaring mag-upload ng mga file sa uri na ito.
file_too_big = Ang laki ng file ({{filesize}}) MB) ay lumalagpas sa pinakamataas na size na ({{maxFilesize}} MB).
remove_file = Tanggalin ang file

View file

@ -681,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
@ -1228,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 nimporte quel service Git.
migrate.gitlab.description=Migrer les données depuis gitlab.com ou dautres instances de GitLab.
migrate.gitea.description=Migrer les données depuis gitea.com ou dautres instances de Gitea/Forgejo.
migrate.gitea.description=Migrer les données depuis gitea.com ou dautres instances de Gitea.
migrate.gogs.description=Migrer les données depuis notabug.org ou dautres instances de Gogs.
migrate.onedev.description=Migrer les données depuis code.onedev.io ou dautre instance de OneDev.
migrate.codebase.description=Migrer les données depuis codebasehq.com.
@ -2870,6 +2872,8 @@ 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...
component_loading_failed = Échec de chargement de %s
@ -3944,6 +3948,8 @@ runs.expire_log_message = Les journaux ont été purgés car ils étaient trop a
runs.no_workflows.help_write_access = Vous ne savez pas par où commencer avec Forgejo Actions ? Regardez la section <a target="_blank" rel="noopener noreferrer" href="%s"> démarrage rapide dans la documentation utilisateur</a> pour écrire votre premier workflow, puis <a target="_blank" rel="noopener noreferrer" href="%s">mettre en place un Forgejo runner</a> pour exécuter vos jobs.
runs.no_workflows.help_no_write_access = Pour en savoir plus sur Forgejo Actions, consultez <a target="_blank" rel="noopener noreferrer" href="%s">la documentation</a>.
variables.not_found = La variable n'a pas été trouvée.
[projects]
type-1.display_name=Projet personnel
type-2.display_name=Projet du dépôt

View file

@ -8,15 +8,15 @@ sign_in = Iniciar sesión
sign_in_with_provider = Iniciar Sesión con %s
sign_in_or = ou
sign_out = Pechar Sesión
sign_up = Rexístrate
sign_up = Rexistrarse
link_account = Vincular conta
register = Rexistro
version = Vesión
powered_by = Desenvolvido por %s
version = Versión
powered_by = Impulsado por %s
page = Páxina
template = Modelo
notifications = Notificacións
active_stopwatch = Activar Rastrexador de Tempo
active_stopwatch = Rastreador de tempo activo
create_new = Crear…
user_profile_and_more = Perfil e configuración…
signed_in_as = Sesión iniciada como
@ -31,8 +31,8 @@ re_type = Confirme o contrasinal
captcha = CAPTCHA
twofa = Autenticación de dobre factor
passcode = Código de acceso
webauthn_insert_key = Insira a súa clave de seguridade
webauthn_press_button = Prema o botón da súa clave de seguridade…
webauthn_insert_key = Insira a súa chave de seguridade
webauthn_press_button = Prema o botón da súa chave de seguridade…
webauthn_use_twofa = Use o Código de Dous Factores do seu Teléfono
webauthn_error = Non se puido ler a súa clave de seguridade.
webauthn_unsupported_browser = O seu navegador non soporta WebAuthn actualmente.
@ -102,7 +102,7 @@ copy_content = Copiar contido
language = Linguaxe
copy_hash = Copiar hash
twofa_scratch = Código Scratch de Dous Factores
webauthn_sign_in = Prema o botón da súa clave de seguridade. Se a súa clave de seguridade non ten ningún botón, insíraa de novo.
webauthn_sign_in = Prema o botón da súa chave de seguridade. Se a súa chave de seguridade non ten ningún botón, volva inserila.
issues = Incidencias
disabled = Desactivado
error404 = A páxina á que estás tentando acceder <strong>non existe</strong> ou <strong>non tes autorización</strong> para vela.
@ -163,6 +163,8 @@ number_of_contributions_in_the_last_12_months = %s de contribucións nos último
contributions_few = contribucións
contributions_one = contribución
contributions_format = {contributions} no {day} de {month} do {year}
[editor]
buttons.heading.tooltip = Engadir Título
buttons.italic.tooltip = Engade texto en cursiva
@ -176,6 +178,19 @@ buttons.disable_monospace_font = Desactivar o tipo de letra monoespazo
buttons.ref.tooltip = Referencia un problema ou pull request
buttons.list.ordered.tooltip = Engade unha lista numerada
buttons.list.task.tooltip = Engade unha lista de tarefas
buttons.mention.tooltip = Menciona a un usuario ou equipo
buttons.switch_to_legacy.tooltip = Utilizar o editor herdado
buttons.indent.tooltip = Aniña os elementos nun nivel
buttons.unindent.tooltip = Desaniñar os elementos nun nivel
buttons.new_table.tooltip = Engadir táboa
table_modal.header = Engadir táboa
table_modal.placeholder.header = Cabeceira
table_modal.placeholder.content = Contido
table_modal.label.rows = Filas
table_modal.label.columns = Columnas
[search]
search = Buscar...
type_tooltip = Tipo de procura
@ -196,12 +211,22 @@ exact = Exacta
exact_tooltip = Incluír só resultados correspondentes ao termo exacto da procura
issue_kind = Procurar incidencias...
project_kind = Buscar proxectos...
branch_kind = Buscar ramas...
commit_kind = Buscar achegas...
runner_kind = Buscar executores...
no_results = Non se atoparon resultados coincidentes.
pull_kind = Buscar pulls...
keyword_search_unavailable = A busca por palabra clave non está dispoñible actualmente. Póñase en contacto co administrador do sitio.
[startpage]
platform = Multiplataforma
app_desc = Um servizo Git autoxestionado e fácil de usar
install = Fácil de instalar
install_desc = Simplemente <a target="_blank" rel="noopener noreferrer" href="%[1]s">executa o binario</a> para a túa plataforma, envíao con <a target="_blank" rel="noopener noreferrer" href="%[2]s">Docker</a> ou consígueo <a target="_blank" rel="noopener noreferrer" href="%[3]s">empaquetado</a>.
license = Código aberto
[error]
occurred = Ocorreu un erro
missing_csrf = Solicitude incorrecta: non hai ningún token CSRF presente
@ -244,4 +269,26 @@ sqlite_helper = Ruta do ficheiro para a base de datos SQLite3.<br>Introduza unha
reinstall_confirm_message = A reinstalación cunha base de datos Forgejo existente pode causar varios problemas. Na maioría dos casos, deberías usar o teu "app.ini" existente para executar Forgejo. Se sabes o que estás facendo, confirma o seguinte:
reinstall_confirm_check_1 = É posible que se perdan os datos cifrados pola SECRET_KEY en app.ini: é posible que os usuarios non poidan iniciar sesión con 2FA/OTP e que os espellos non funcionen correctamente. Ao marcar esta caixa, confirmas que o ficheiro app.ini actual contén a SECRET_KEY correcta.
disable_gravatar.description = Desactiva o uso de Gravatar ou outras fontes de avatares de terceiros. As imaxes predeterminadas utilizaranse para os avatares dos usuarios a menos que carguen o seu propio avatar na instancia.
federated_avatar_lookup = Activar avatares federados
federated_avatar_lookup = Activar avatares federados
install = Instalación
title = Configuración inicial
db_title = Configuración da base de datos
db_type = Tipo de base de datos
user = Nome de usuario
password = Contrasinal
db_name = Nome da base de datos
db_schema = Esquema
db_schema_helper = Déixao baleiro para a base de datos por defecto ("public").
general_title = Opcións xerais
app_name = Título da instancia
app_name_helper = Escribe o nome da túa instancia aqui. Será amosado en cada páxina.
app_slogan = Slogan da instancia
app_slogan_helper = Escribe o slogan da túa instancia aqui. Ou deixao baleiro para desabilitala.
repo_path = Ruta raíz do repositorio
repo_path_helper = Os repositorios Git remotos gardaránse neste directorio.
lfs_path = Ruta raíz de Git LFS
run_user = O usuario co que executar
domain = Dominio do servidor
ssh_port = Porto do servidor SSH
mailer_user = Usuario SMTP
mailer_password = Contrasinal SMTP

View file

@ -0,0 +1,661 @@
[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 = פרטי
explore = קטלוגים
toggle_menu = הצגת\הסתרת תפריט
re_type = סיסמה (שוב)
view = עוד מידע
artifacts = ארטיפקטים
confirm_delete_artifact = למחוק את הארטיפקט "%s"?
[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 = חיפוש מילות מפתח לא זמין. נא לדווח למנהלי המערכת.
pull_kind = חיפוש בקשות מיזוג...
[aria]
navbar = סרגל הניווט
footer.software = על תוכנה זו
footer.links = קישורים
footer = סיומת עמוד
[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 = קוד פתוח
platform_desc = פורג'ו רץ על מערכות הפעלה פתוחות כמו לינוקס וFreeBSD, ועל ארכיטקטורות מעבד שונות.
lightweight_desc = פורג'ו צורך כמות מינימלית של משאבים ויכול לרוץ על מיני־מחשבים לא יקרים כמו הראספרי הפיי.
[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 = שם שרת זה
require_db_desc = פורג'ו דורש MySQL, PostgreSQL, או TiDB (דרך פרוטוקול MySQL).
err_empty_db_path = הכתובת למסד המידע SQLite3 לא יכולה להיות ריקה.
no_admin_and_disable_registration = אי אפשר לחסום הרשמה עצמית בלי ליצור חשבון מנהל מערכת.
err_admin_name_is_reserved = שם משתמש חשבון המערכת לא זמין, שם המשתמש שמור
err_admin_name_pattern_not_allowed = שם משתמש מנהל המערכת לא זמין, שם המשתמש עונה על תבנית שמורה
err_admin_name_is_invalid = שם משתמש מנהל המערכת לא זמין
app_name_helper = שם האתר נכנס כאן. הוא יוצג בכל מקום באתר, בצד ימין למעלה (או באנגלית, שמאל למעלה).
app_slogan = סלוגן האתר
app_slogan_helper = סלוגן האתר נכנס כאן. פורג'ו יתעלם מסלוגן ריק.
run_user = משתמש שפורג'ו ירוץ תחת
run_user_helper = שם המשתמש של משתמש מערכת ההפעלה שפורג'ו ירוץ תחתיו. למשתמש חייבת להיות גישה לקרפיפים.
domain = דומיין השרת
domain_helper = דומיין או host address לשרת זה.
ssh_port = פורט שרת ה־SSH
ssh_port_helper = מספר הפורט ששרת ה־SSH ישתמש בו. ערך ריק יכבה את התמיכה ב־SSH.
http_port = פורט ה־HTTP (האזנה)
http_port_helper = הפורט שישמש את דף האינטרנט (זה שדפדפני אינטרנט ניגשים אליו).
app_url = כתובת (URL) בסיס
log_root_path = כתובת לוגינג
log_root_path_helper = יומנים (logfiles) ייוצאו לתיקייה זו.
optional_title = הגדרות לא חובה
email_title = הגדרות אימייל
smtp_addr = שרת SMTP
smtp_port = פורט SMTP
smtp_from = אימיילים ישלחו כ־
smtp_from_helper = כתובת האימייל שפורג'ו ישלח ממנה הודעות למשתמשים. אפשר להכניס כתובת אמייל פשוטה או להישמתש בפורמט "שם" <אימייל@דוגמה.קום>.
mailer_user = שם משתמש בשרת ה־SMTP
mailer_password = סיסמת שרת ה־SMTP
register_confirm = אישור אימייל חובה לרישום
mail_notify = הפעלת נוטיפיקציות דרך אימייל
server_service_title = הגדרות שרת ושירותים צד שלישי
offline_mode = הפעלת מצב לוקאלי
offline_mode.description = CDN־ים צד שלישי יושבתו וכל המשאבים יוגשו מהמחשב הנוכחי, ללא גישה לאינטרנט.
disable_gravatar = השבתת Gravatar
disable_gravatar.description = שימוש בגראווטאר, או כל מקור צד־שלישי אחר לתמונות פרופיל, יושבת. אלא אם כן לחשבון יש תמונה שהועלתה ידנית, פורג'ו ישתמש בתמונות ברירת המחדל הלוקאליות.
federated_avatar_lookup = הפעלת תמונות פרופיל מבוזרות
disable_registration = השבתת הרשמה עצמית
disable_registration.description = רק מנהלי מערכת יוכלו ליצור חשבונות משתמש חדשים. מאוד לא מומלץ להפעיל הרשמה עצמית אלא אם כן בכוונתך ליצור שרת ציבורי, דבר הכולל התעסקות בכמויות עצומות של ספאם והתקפות DDoS.
allow_only_external_registration = אפשור הרשמה רק דרך שירותים חיצוניים
allow_only_external_registration.description = חשבונות חדשים לא יכולו להיווצר לוקאלית, אלא רק דרך שירותים צד־שלישי שקונפגו מראש.
openid_signin = הפעלת כניסה דרך OpenID
openid_signup = הפעלת הרשמה עצמית דרך OpenID
openid_signup.description = חשבונות יוכלו להיווצר דרך OpenID אם הרשמה עצמית מופעלת.
enable_captcha = הפעלת CAPTCHA בתהליך הרישום
enable_captcha.description = כדי ליצור חשבונות חדשים, יהיה צריך לעבור אתגר CAPTCHA (טוב כנגד ספאם ובוטים; פוגע בנגישות ופחות אפקטיבי כנגד AI מודרני).
require_sign_in_view = שרת פרטי
require_sign_in_view.description = גישה לתוכן השרת תיחסם ללא כניסה לחשבון, למעט דפי הרישום והכניסה.
default_keep_email_private = הסתרת כתובות אימייל כברירת מחדל
default_keep_email_private.description = כתובות האימייל של חשבונות חדשים לא יוצגו על הפרופילים הציבוריים שלהם (אלא אם כן ישנו זאת בעצמם), כדי למנוע זליגה של מידע פרטי מיד לאחר ההרשמה.
default_allow_create_organization = אפשור יצירת ארגונים כברירת מחדל
default_allow_create_organization.description = חשבונות חדשים יוכלו ליצור ארגונים ללא אישור מנהל המערכת.
default_enable_timetracking = הפעלת מדידת זמן כברירת מחדל
default_enable_timetracking.description = תכונת מדידת הזמן של פורג'ו תופעל לקרפיפים חדשים כברירת מחדל.
admin_title = הגדרות חשבון מנהל מערכת
admin_setting.description = יצירת חשבון מנהל המערכת היא לא חובה; ללא חשבון מורשה, החשבון הראשון שיווצר יקבל הרשאות אדמיניסטרציה.
admin_name = שם משתמש של מנהל מערכת
admin_password = סיסמה
confirm_password = סיסמה (שוב)
admin_email = כתובת אימייל
config_location_hint = הגדרות אלו ישמרו ב־:
install_btn_confirm = סיום התקנת פורג'ו
test_git_failed = בדיקת פקודת "git" נכשלה: %v
sqlite3_not_available = גרסת פורג'ו זו לא תומכת ב־SQLite3. נא להוריד את הארטיפקט הרשמי מ %s (*לא* את גרסת ה"gobuild").
invalid_db_setting = הגדרות מסד המידע שגויות: %v
invalid_db_table = טבלת מסד המידע "%s" שגויה: %v
[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 = כבר יש קבצים בקרפיף זה. יש לדבר עם מנהל המערכת כדי לתקן את הבעיה.
AccessToken = קוד גישה
Content = תוכן
SSPIDefaultLanguage = שפת ברירת מחדל
[home]
uname_holder = שם משתמש או כתובת אימייל
my_repos = קרפיפים
my_orgs = ארגונים
filter = מסננים אחרים
filter_by_team_repositories = סינון לפי קרפיפי צוות
feed_of = פיד של "%s"
show_archived = בארכיון
show_both_archived_unarchived = כולל גם מתוך וגם מחוץ הארכיון
show_only_archived = כולל רק מהארכיון
show_only_unarchived = לא כולל את הארכיון
show_private = פרטי
issues.in_your_repos = בקרפיפיך
[explore]
repos = קרפיפים
users = אנשים
stars_one = כוכב אחד
stars_few = %d כוכבים
forks_one = מזלוג אחד
forks_few = %d מזלוגים
organizations = ארגונים
code = קוד
code_last_indexed_at = אונדקס לאחרונה %s
relevant_repositories_tooltip = מזלוגים וקרפיפים ללא תיאור, נושא, וסמל לא מוצגים.
relevant_repositories = רק קרפיפים רלוונטים מוצגים; אפשר <a href="%s">להציג תוצאות לא מסוננות</a>.
[auth]
create_new_account = הרשמה
disable_register_prompt = הרשמה מושבתת. יש לדבר עם מנהלי המערכת.
disable_register_mail = אישור הרשמה דרך אימייל מושבת.
manual_activation_only = יש לדבר עם מנהלי המערכת כדי להשלים את הפעלת חשבונך.
remember_me = זה המכשיר שלי ואני רוצה לשמור עליו את הסיסמה שלי לפעם הבאה
forgot_password_title = שכחתי את הסיסמה
forgot_password = שכחת את הסיסמה?
hint_login = כבר יש לך חשבון? <a href="%s">כניסה</a>
hint_register = אין לך חשבון? <a href="%s">הרשמה</a>
sign_up_button = הרשמה
sign_up_successful = החשבון נוצר בהצלחה. ברוכים הבאים!
must_change_password = עדכן סיסמתך
allow_password_change = הכרחת המשתמש לעדכן את סיסמת חשבונו (מומלץ)
active_your_account = הפעלת חשבונך
account_activated = חשבונך הופעל
prohibit_login = חשבונך הושעה
prohibit_login_desc = חשבנוך הושעה משרת זה. אפשר לבקש ממנהלי המערכת לתת לך גישה.
resent_limit_prompt = כבר ביקשת מייל אימות בשלושת הדקות האחרונות. נא לחכות ולנסות שוב.
has_unconfirmed_mail = שלום %s, חשבונך משויך לכתובת אימייל לא מאומתת (<b>%s</b>). אם לא קיבלת הודעת אימות באימייל, או שאתה צריך חדשה, נא ללחוץ על הכפתור למטה.
change_unconfirmed_email = אם נתת את כתובת האימייל הלא נכונה כשנרשמת, אפשר לשנות אותה כאן, ומייל אימות חדש ישלח לכתובת החדשה.
change_unconfirmed_email_error = שינוי כתובת האימייל כשל: %v
resend_mail = שליחת מייל אימות חדש
send_reset_mail = שליחת מייל שחזור חשבון
reset_password = שחזור חשבון
invalid_code = קוד האימות שלך לא תקף, או שעבר יותר מדי זמן מאז שהונפק.
invalid_code_forgot_password = קוד האימות שלך לא תקף, או שעבר יותר מדי זמן מאז שהונפק. אפשר <a href="%s">לנסות שוב</a>.
invalid_password = הסיסמה לא תואמת את הסיסמה שאיתה יצרת את חשבונך.
reset_password_helper = שחזור חשבון
reset_password_wrong_user = נכנסת כ־%s, אבל הקישור נועד לשחזור החשבון של %s
password_too_short = הסיסמה חייבת להיות באורך %d תווים ומעלה.
non_local_account = חשבונות א־לוקאליים לא יכולים לעדכן את סיסמתם דרך אתר האינטרנט של פורג'ו.
verify = אימות
use_onetime_code = שימוש בקוד חד־פעמי
[settings]
update_avatar = עדכון תמונת פרופיל
delete_current_avatar = מחיקת תמונת הפרופיל הנוכחית
uploaded_avatar_not_a_image = הקובץ שהועלה לא תמונה.
key_name = שם המפתח
key_content = תוכן
principal_content = תוכן
add_key_success = מפתח ה־SSH "%s" הוסף לחשבונך.
add_gpg_key_success = מפתח ה־GPG "%s" הוסף לחשבונך.
delete_key = הסרה
ssh_key_deletion = הסרת מפתח SSH
gpg_key_deletion = הסרת מפתח GPG
ssh_key_deletion_desc = הסרת מפתח SSH מבטלת את גישתו לחשבונך. להמשיך?
gpg_key_deletion_desc = הסרת מפתח GPG הופכת קומיטים שנחתמו בעזרתו ללא־מאומתים. להמשיך?
ssh_key_deletion_success = מפתח ה־SSH הוסר מחשבונך.
gpg_key_deletion_success = מפתח ה־GPG הוסר מחשבונך.
added_on = הוסף ב־%s
valid_until_date = תקף עד ה־%s
valid_forever = תקף לנצח
last_used = שומש לאחרונה ב
can_read_info = קריאה
can_write_info = שינוי
key_state_desc = מפתח זה שומש בשבוע האחרון
show_openid = הצגה על פרופילך
hide_openid = הסתרה מפרופילך
ssh_disabled = SSH מושבת
ssh_signonly = SSH מושבת; מפתחות אלו ישמשו רק כדי לחתום קומיטים.
ssh_externally_managed = מפתח SSH זה מנוהל חיצונית
manage_access_token = קודי גישה
generate_new_token = קוד גישה חדש
token_name = שם קוד הגישה
generate_token_success = קוד הגישה החדש נוצר, ולא יוצג שוב.
generate_token_name_duplicate = כבר קיימת אפליקציה בשם <strong>%s</strong>.
delete_token = מחיקה
access_token_deletion = מחיקת קוד גישה
access_token_deletion_desc = אפליקציות שמשתמשות בקוד הגישה הזה לא יוכלו לגשת לחשבון שלך יותר. זוהי פעולה בלתי־הפיכה. להמשיך?
delete_token_success = קוד הגישה נמחק. אפליקציות שהשתמשו בו לא יכולות לגשת לחשבון שלך יותר.
repo_and_org_access = גישה לקרפיפים וארגונים
permissions_public_only = ציבורי בלבד
permissions_access_all = הכל (ציבורי, פרטי, מוגבל)
select_permissions = בחירת הרשאות
permission_no_access = שום גישה
permission_read = קריאה
permission_write = קריאה ושינוי
at_least_one_permission = קודי גישה צריכים לפחות הרשאה אחת
permissions_list = הרשאות:
manage_oauth2_applications = ניהול אפליקציות OAuth2
edit_oauth2_application = עריכת אפליקצית OAuth2
remove_oauth2_application = הסרת אפליקצית OAuth2
remove_oauth2_application_success = האפליקציה נמחקה.
create_oauth2_application = יצירת אפליקציית OAuth2 חדשה
create_oauth2_application_button = יצירת אפליקציה
create_oauth2_application_success = יצרת אפליקציית OAuth2 חדשה בהצלחה.
update_oauth2_application_success = ערכת אפליקציית OAuth2 בהצלחה.
oauth2_application_name = שם האפליקציה
oauth2_redirect_uris = קישורי הפניה מחדש. כל קישור בשורה משל עצמו.
save_application = שמירה
oauth2_application_edit = עריכה
revoke_key = הסרת גישה
revoke_oauth2_grant = הסרת גישה
delete_account = מחיקת החשבון
delete_prompt = פעולה זו <strong>בלתי הפיכה</strong> ותמחוק את החשבון שלך <strong>לחלוטין</strong>.
delete_with_all_comments = חשבונך נוצר לפני פחות מ־%s; כל התגובות שלך (לסוגיות, בקשות מיזוג, וכולי) ימחקו.
confirm_delete_account = כן, אני רוצה למחוק את החשבון שלי
delete_account_title = מחייקת חשבון משתמש
delete_account_desc = למחוק את חשבון משתמש זה לנצח?
email_notifications.enable = הפעלת הודעות אימייל
email_notifications.onmention = שליחת אימיילים רק עבור אזכור (mention\ping) מפורש
email_notifications.disable = השבתת הודעות אימייל
email_notifications.submit = בחירת אימייל מועדף
visibility = סוג חשבון
visibility.public = ציבורי
visibility.public_tooltip = נגיש לכולם
visibility.limited = מוגבל
visibility.limited_tooltip = נגיש רק למי שיש לו חשבון
visibility.private = פרטי
visibility.private_tooltip = נגיש רק למי שחבר בארגון שאתה חלק ממנו
blocked_since = חסום כבר %s
user_unblock_success = החסימה בוטלה.
user_block_success = המשתמש נחסם.
[repo]
new_from_template = קרפיף חדש מתבנית
new_advanced = הגדרות מתקדמות
new_advanced_expand =
owner = בעלים
owner_helper = ארגונים שכבר יצרו את כמות הקרפיפים המקסימלית לא מוצגים בתפריט.
repo_name = שם הקרפיף
repo_name_helper = שמות קרפיפים טובים הם זכירים, קצרים וייחודיים.
fork_repo = מזלוג
already_forked = כבר מזלגת את %s
fork_to_different_account = מזלוג לחשבון אחר
fork_branch = הענף שיועתק למזלוג
all_branches = כל הענפים
fork_no_valid_owners = קרפיף זה לא משויך לבעלים תקפים; אי אפשר למזלגו.
use_template = קרפיף חדש מתבנית זו
open_with_editor = פתיחה עם %s
download_zip = הורדה כ־.zip
download_tar = הורדה כ־.tag.gz
repo_desc = תיאור
repo_desc_helper = תיאור קצר (לא חובה)
repo_lang = שפה
repo_gitignore_helper = תבנית .gitignore
repo_gitignore_helper_desc = מאילו קבצים גיט יתעלם. התפריט כולל רשימות קבצים המשויכות לשפות או ספריות נפוצות. ארטיפקטים טיפוסיים כלולים ב.gitignore כברירת מחדל.
issue_labels = תוויות
issue_labels_helper = תוויות לדוגמה נפוצות ומומלצות שאפשר להתאים לדרישות הפרויקט הספציפי
license = רישיון
license_helper_desc = רישיונות מכתיבות מה אחרים יכולים ולא יכולים לעשות עם הקוד שלך. <a target="_blank" rel="noopener noreferrer" href="%s">איך לבחור רישיון?</a>
object_format = אלגוריתם גיבוב
object_format_helper = אלגוריתם הגיבוב שהקרפיף ישתמש בו. אי אפשר לשנות את הבחירה הזו. ל־SHA1 התאימות הטובה ביותר עם תוכנות אחרות.
readme = קרא־אותי
readme_helper = תבנית קובץ קרא־אותי (README)
readme_helper_desc = כאן אפשר לכתוב את התיאור המלא של הפרויקט שלך, וכל דבר שברצונך שאנשים ידעו עליו.
auto_init = תיחול הקרפיף
auto_init_description = פורג'ו מאפשר להוסיף קבצי קרא־אותי, .gitignore, ורשיונות בקומיט הראשון של הקרפיף שלך.
create_repo = קרפיף חדש
default_branch = ענף ברירת המחדל
default_branch_label = ברירת מחדל
mirror_public_key = מפתח SSH ציבורי
mirror_use_ssh.helper = פורג'ו ישקף את הקרפיף דרך התמיכה המובנית של גיט ב־SSH, ויצור בשבילך זוג מפתחות אוטומטית. באחריותך לוודא שלמפתח הציבורי שיווצר יהיה גישה לקרפיף היעד. אי אפשר להשתמש בכניסה על־בסיס סיסמה עם אפשרות זו.
mirror_use_ssh.not_available = אימות על־בסיס SSH לא זמין.
mirror_denied_combination = אי אפשר להשתמש באימות על־בסיס גם סיסמה וגם מפתח ציבורי; חובה לבחור רק באפשרות אחת.
mirror_sync = מסונכרן
mirror_sync_on_commit = סנכרון כשקומיטים מגיעים לשרת המקומי
mirror_address = שכפול מכתובת אינטרנט (URL)
mirror_lfs = אחסון קבצים גדולים (LFS)
mirror_lfs_desc = שיקוף אחסון קבצים גדולים (LFS)
mirror_last_synced = סונכרן לאחרונה
watchers = מנויים
stargazers = מככבים
stars_remove_warning = פעולה זו תסיר מהקרפיף את כל הכוכבים.
forks = מיזלוגים
stars = כוכבים
reactions_more = ועוד %d
unit_disabled = מנהלי המערכת השביתו תכונת קרפיף זאת.
language_other = אחרת
adopt_preexisting_content = קרפיף חדש מ־‏%s
delete_preexisting_label = מחיקה
delete_preexisting = מחיקת קבצים קיימים
delete_preexisting_content = מחיקת קבצים ב־%s
author_search_tooltip = מקסימום 30 חשבונות מוצגים
summary_card_alt = קלף תקציר הקרפיף %s
tree_path_not_found_commit = הכתובת %[1]s לא קיימת בקומיט %[2]s
tree_path_not_found_branch = הכתובת %[1]s לא קיימת בענף %[2]s
tree_path_not_found_tag = הכתובת %[1]s לא קיימת בתגית %[2]s
transfer.accept = אישור העברת הקרפיף
transfer.accept_desc = העברה ל "%s"
transfer.reject = דחיית העברת הקרפיף
transfer.reject_desc = ביטול העברת הקרפיף ל־"%s"
transfer.no_permission_to_accept = אין לך הרשאה לאשר את העברת הקרפיף הזו.
transfer.no_permission_to_reject = אין לך הרשאה לדחות את העברת הקרפיף הזו.
desc.private = פרטי
desc.public = ציבורי
desc.template = תבנית
desc.internal = פנימי
desc.archived = בארכיון
template.webhooks = Webhook־ים
template.topics = נושאים
form.reach_limit_of_creation_1 = החשבון של הבעלים כבר הגיע לכמות הקרפיפים המקסימלית (אחד).
form.reach_limit_of_creation_n = החשבון של הבעלים כבר הגיע לכמות הקרפיפים המקסימלית (%s).
form.name_reserved = שם הקרפיף "%s" שמור.
form.name_pattern_not_allowed = התבנית "%s" לא חוקית בתוך שם של קרפיף.
form.string_too_long = הטקסט הנתון ארוך מ־%d תווים.
migrate_options = אפשרויות ייבוא
migrate_options_mirror_helper = קרפיף זה יהיה מראה
migrate_options_lfs = ייבוא אחסון קבצים גדולים (LFS)
migrate_items_wiki = ויקי
migrate_items_milestones = אבני דרך
migrate_items_labels = תוויות
migrate_items_issues = סוגיות
migrate_items_pullrequests = בקשות מיזוג
migrate_items_releases = גרסאות
migrate_repo = ייבוא קרפיף
migrate.clone_address = ייבוא \ שכפול מ־URL
migrate.permission_denied = אין לך הרשאה לייבא קרפיפים מהשרת הנוכחי.
migrate.failed = הייבוא נכשל: %v
migrate.migrate_items_options = פורג'ו צריך קוד גישה כדי לייבא מידע נוסף
migrated_from = יובא מ‏־<a href="%[1]s">%[2]s</a>
migrated_from_fake = יובא מ־%[1]s
migrate.migrate = יבוא מ־%s
migrate.migrating = פורג'ו בתהליכי יבוא מ־<b>%s</b>...
migrate.migrating_failed = היבוא מ<b>%s</b> נכשל.
migrate.migrating_failed.error = הייבוא נכשל: %s
migrate.migrating_failed_no_addr = הייבוא נכשל.
migrate.github.description = ייבוא מידע מ־github.com או שרת GitHub Enteprise.
migrate.git.description = ייבוא קרפיף מכל שירות גיט שהוא.
migrate.gitlab.description = ייבוא מידע מ־gitlab.com או משרתי GitLab אחרים.
migrate.forgejo.description = ייבוא מידע מקודברג או שרת פורג'ו אחר.
migrate.gitea.description = ייבוא מידע מ־gitea.com או שרת גיטאה אחר.
migrate.gogs.description = ייבוא מידע מ־notabug.org או שרת גוגס אחר.
migrate.onedev.description = ייבוא מידע מ־code.onedev.io או שרת OneDev אחר.
migrate.codebase.description = ייבוא מידע מ־codebasehq.com.
migrate.gitbucket.description = יבוא מידע משרת GitBucket.
migrate.migrating_git = ייבוא הקרפיף עצמו
migrate.migrating_topics = ייבוא נושאים
migrate.migrating_milestones = ייבוא אבני דרך
migrate.migrating_labels = ייבוא תוויות
migrate.migrating_releases = ייבוא גרסאות
editor.delete_this_file = מחיקת קובץ
editor.file_delete_success = הקובץ "%s" נמחק.
editor.name_your_file = שם הקובץ…
editor.filename_help = אפשר להפריד בין תיקיות עם סלאשים, ו"למחוק" תיקיות עם backspace, כאילו זוהי תיבת טקסט רגילה.
editor.or = או
editor.cancel_lower = ביטול
editor.add_tmpl = הוספת "<%s>"
editor.add_tmpl.filename = שם הקובץ
editor.add = הוספתי את %s
editor.update = עידכנתי את %s
editor.delete = מחקתי את %s
editor.commit_message_desc = תיאור ארוך לא חובה…
editor.propose_file_change = הצעת השינוי
editor.new_branch_name = שם הענף שאליו הקומיט ידחף
editor.new_branch_name_desc = שם הענף החדש…
editor.cancel = ביטול
editor.filename_cannot_be_empty = שם הקובץ לא יכול להיות ריק.
editor.filename_is_invalid = שם הקובץ לא תקין: "%s".
editor.invalid_commit_mail = כתובת אימייל זו לא חוקית למטרות יצירת קומיטים.
editor.branch_does_not_exist = הענף "%s" לא קיים בקרפיף זה.
editor.branch_already_exists = הענף "%s" כבר קיים בקרפיף זה.
editor.directory_is_a_file = אי אפשר ליצור את התיקייה "%s"; כבר קיים קובץ תחת אותו שם.
editor.filename_is_a_directory = אי אפשר לקרוא לקובץ "%s"; כבר קיימת תיקייה תחת אותו שם.
editor.file_editing_no_longer_exists = הקובץ הנערך שהיה ידוע כ־"%s" לא קיים יותר בקרפיף זה.
editor.file_deleting_no_longer_exists = מחיקת הקובץ שהיה ידוע כ־"%s" נכשלה; הקובץ לא קיים יותר בקרפיף זה.
editor.file_changed_while_editing = תוכן קובץ זה השתנה מאז שהתחלת לערוך. אפשר <a target="_blank" rel="noopener noreferrer" href="%s">לראות מה היו השינויים</a> או <strong>ליצור את הקומיט שוב</strong> כדי לדרוס אותם.
editor.file_already_exists = כבר יש קובץ תחת השם "%s" בקרפיף זה.
editor.commit_id_not_matching = תוכן קובץ זה השתנה מאז שהתחלת לערוך. אפשר לשמור את השינויים לענף חדש ולפתוח בקשת מיזוג במקום.
editor.no_changes_to_show = אין שינויים להציג.
editor.fail_to_update_file = יצירת\שינוי הקובץ "s" נכשלה.
editor.fail_to_update_file_summary = הודעת שגיאה:
editor.push_rejected_summary = הודעת דחייה מלאה:
editor.add_subdir = הוספת תיקייה…
editor.unable_to_upload_files = העלאת הקבצים ל־"%s" נכשלה: %v
editor.upload_file_is_locked = הקובץ "%s" ננעל ע"י %s.
editor.upload_files_to_dir = העלאת קבצים ל"%s"
editor.commit_email = כתובת האימייל המשויכת לקומיט
commits.commits = קומיטים
commits.nothing_to_compare = ענפים אלו זהים.
commits.search_branch = ענף זה
commits.search_all = כל הענפים
commits.author = מחבר
commits.message = מסר
commits.date = תאריך
commits.signed_by = נחתם ע"י
commits.signed_by_untrusted_user = בעל חתימה לא מהימנת
commits.signed_by_untrusted_user_unmatched = בעל חתימה לא מהימנת שלא תואמת את מחבר הקומיט
commits.gpg_key_id = מזהה מפתח ה־GPG
commits.ssh_key_fingerprint = טביעת אצבע מפתח ה־SSH
commitstatus.error = שגיאה
commitstatus.failure = כישלון
commitstatus.pending = בתהליכים
commitstatus.success = הצלחה
ext_issues = סוגיות חיצוניות
projects = פרויקטים
projects.desc = פרויקטים עוזרים בניהול וארגון סוגיות ובקשות מיזוג.
projects.description = תיאור (לא חובה)
projects.description_placeholder = תיאור...
projects.create = פרויקט חדש
projects.title = כותרת
projects.new = פרויקט חדש
issues.create = סוגייה חדשה
issues.edit = עריכה
issues.cancel = ביטול
issues.save = שמירה
issues.label_title = שם
issues.label_description = תיאור
issues.label_color = צבע
issues.label_exclusive = בחירה בודדת
issues.label_archive = לארכיון
issues.label_archived_filter = הצגת תוויות מהארכיון
issues.label_archive_tooltip = תוויות בארכיון לא מוצעות בחיפוש על־בסיס תווית כברירת מחדל.
[projects]
deleted.display_name = פרויקט נמחק
[translation_meta]
test = ואהבת לרעך כמוך

View file

@ -1272,6 +1272,8 @@ topic.done=Kész
milestones.filter_sort.name = Név
[graphs]
[org]
@ -1686,6 +1688,9 @@ config.cache_item_ttl = Gyorsítótárelem TTL értéke
config.app_data_path = Alkalmazásadatok elérési útja
config_summary = Összefoglaló
config_settings = Beállítások
[action]
create_repo=létrehozott tárolót: <a href="%s"> %s</a>
rename_repo=átnevezte a(z) <code>%[1]s</code> tárolót <a href="%[2]s">%[3]s</a>-ra/re

View file

@ -84,15 +84,92 @@ concept_code_repository=Repositori
name=Nama
re_type = Konfirmasi Kata Sandi
webauthn_insert_key = Masukkan kunci keamanan anda
webauthn_sign_in = Tekan tombol pada kunci keamanan Anda. Jika kunci keamanan Anda tidak memiliki tombol, masukkan kembali.
webauthn_press_button = Silakan tekan tombol pada kunci keamanan Anda…
webauthn_use_twofa = Gunakan kode dua faktor dari telepon Anda
webauthn_error = Tidak dapat membaca kunci keamanan Anda.
webauthn_unsupported_browser = Browser Anda saat ini tidak mendukung WebAuthn.
webauthn_error_unknown = Terdapat kesalahan yang tidak diketahui. Mohon coba lagi.
webauthn_error_insecure = `WebAuthn hanya mendukung koneksi aman. Untuk pengujian melalui HTTP, Anda dapat menggunakan "localhost" atau "127.0.0.1"`
webauthn_error_unable_to_process = Server tidak dapat memproses permintaan Anda.
webauthn_error_duplicated = Kunci keamanan tidak diperbolehkan untuk permintaan ini. Pastikan bahwa kunci ini belum terdaftar sebelumnya.
webauthn_error_empty = Anda harus menetapkan nama untuk kunci ini.
webauthn_error_timeout = Waktu habis sebelum kunci Anda dapat dibaca. Mohon muat ulang halaman ini dan coba lagi.
new_project = Proyek Baru
new_project_column = Kolom Baru
ok = Oke
retry = Coba lagi
rerun = Jalankan ulang
rerun_all = Jalankan ulang semua job
remove_label_str = `Hapus item "%s"`
view = Tampilan
test = Pengujian
locked = Terkunci
copy = Salin
copy_url = Salin URL
copy_hash = Salin hash
copy_content = Salin konten
copy_branch = Salin nama branch
copy_success = Tersalin!
copy_error = Gagal menyalin
copy_type_unsupported = Tipe berkas ini tidak dapat disalin
error = Gangguan
go_back = Kembali
invalid_data = Data invalid: %v
never = Tidak Pernah
unknown = Tidak diketahui
rss_feed = Umpan Berita
pin = Sematkan
unpin = Lepas sematan
artifacts = Artefak
archived = Diarsipkan
concept_system_global = Global
concept_user_individual = Perorangan
show_full_screen = Tampilkan layar penuh
download_logs = Unduh Logs
confirm_delete_selected = Konfirmasi untuk menghapus semua item yang dipilih?
value = Nilai
filter = Saring
filter.is_archived = Diarsipkan
filter.not_archived = Tidak Diarsipkan
filter.public = Publik
filter.private = Pribadi
[aria]
navbar = Bar Navigasi
footer = Footer
footer.links = Tautan
[heatmap]
number_of_contributions_in_the_last_12_months = %s Kontribusi pada 12 bulan terakhir
less = Lebih sedikit
more = Lebih banyak
[editor]
buttons.heading.tooltip = Tambahkan heading
buttons.bold.tooltip = Tambahkan teks Tebal
buttons.italic.tooltip = Tambahkan teks Miring
buttons.quote.tooltip = Kutip teks
buttons.code.tooltip = Tambah Kode
buttons.link.tooltip = Tambahkan tautan
buttons.list.unordered.tooltip = Tambah daftar titik
buttons.list.ordered.tooltip = Tambah daftar angka
buttons.list.task.tooltip = Tambahkan daftar tugas
buttons.mention.tooltip = Tandai pengguna atau tim
buttons.ref.tooltip = Merujuk pada isu atau permintaan tarik
buttons.switch_to_legacy.tooltip = Gunakan editor versi lama
buttons.enable_monospace_font = Aktifkan font monospace
buttons.disable_monospace_font = Non-Aktifkan font monospace
[filter]
string.asc = A - Z
string.desc = Z - A
[error]
occurred = Terjadi kesalahan
not_found = Target tidak dapat ditemukan.
[startpage]
app_desc=Sebuah layanan hosting Git sendiri yang tanpa kesulitan
@ -124,6 +201,9 @@ require_sign_in_view=Harus Login Untuk Melihat Halaman
admin_password=Kata Sandi
admin_email=Alamat Email
email_title = Pengaturan email
smtp_from = Kirim Email Sebagai
[home]
uname_holder=Nama Pengguna atau Alamat Surel
password_holder=Kata Sandi
@ -141,6 +221,8 @@ show_private=Pribadi
issues.in_your_repos=Dalam repositori anda
show_archived = Diarsipkan
[explore]
repos=Repositori
users=Pengguna
@ -492,6 +574,8 @@ email_notifications.submit=Pasang Pengaturan Email
visibility.private=Pribadi
visibility.public = Publik
[repo]
owner=Pemilik
repo_name=Nama Repositori
@ -957,6 +1041,12 @@ branch.deleted_by=Dihapus oleh %s
desc.public = Publik
desc.archived = Diarsipkan
commitstatus.error = Gangguan
projects.new = Proyek Baru
milestones.filter_sort.name = Nama
[graphs]
[org]
@ -1011,6 +1101,8 @@ teams.delete_team_success=Tim sudah di hapus.
teams.repositories=Tim repositori
teams.search_repo_placeholder=Cari repositori…
settings.visibility.public = Publik
[admin]
dashboard=Dasbor
organizations=Organisasi
@ -1269,6 +1361,9 @@ notices.op=Op.
notices.delete_success=Laporan sistem telah dihapus.
config_settings = Pengaturan
users.list_status_filter.menu_text = Saring
[action]
create_repo=repositori dibuat <a href="%s">%s</a>
rename_repo=ganti nama gudang penyimpanan dari <code>%[1]s</code> ke <a href="%[2]s">%[3]s</a>
@ -1344,6 +1439,56 @@ runs.commit=Memperbuat
runs.no_matching_online_runner_helper = Tidak ada runner online yang cocok dengan label: %s
runs.actor = Aktor
runs.status = Status
runs.actors_no_select = Semua aktor
runs.status_no_select = Semua status
runs.no_results = Tidak ada hasil yang cocok.
runs.no_workflows = Belum ada alur kerja.
runs.no_runs = Alur kerja belum berjalan.
runs.empty_commit_message = (pesan commit kosong)
workflow.disable = Nonaktifkan Alur Kerja
workflow.enable = Aktifkan Alur Kerja
workflow.disabled = Alur kerja dinonaktifkan.
need_approval_desc = Butuh persetujuan untuk menjalankan alur kerja untuk pull request fork.
variables = Variabel
variables.creation = Tambah Variabel
variables.none = Belum ada variabel.
variables.deletion = Hapus variabel
variables.deletion.description = Menghapus variabel bersifat permanen dan tidak dapat dibatalkan. Lanjutkan?
variables.description = Variabel akan diteruskan ke beberapa tindakan dan tidak dapat dibaca sebaliknya.
variables.id_not_exist = Variabel dengan ID %d tidak ada.
variables.edit = Edit Variabel
variables.deletion.failed = Gagal menghapus variabel.
variables.deletion.success = Variabel telah dihapus.
variables.creation.failed = Gagal menambahkan variabel.
variables.creation.success = Variabel "%s" telah ditambahkan.
variables.update.failed = Gagal mengedit variabel.
variables.update.success = Variabel telah diedit.
[projects]
type-1.display_name = Proyek Individu
type-2.display_name = Proyek Repositori
type-3.display_name = Proyek Organisasi
[git.filemode]
changed_filemode = %[1]s → %[2]s
directory = Directory
normal_file = Normal file
executable_file = Executable file
symbolic_link = Symbolic link
submodule = Submodule
[search]
search = Cari...
type_tooltip = Tipe pencarian
fuzzy_tooltip = Termasuk juga hasil yang mendekati kata pencarian
exact_tooltip = Hanya menampilkan hasil yang cocok dengan istilah pencarian
repo_kind = Cari repo...
user_kind = Telusuri pengguna...
org_kind = Cari organisasi...
team_kind = Cari tim...
code_kind = Cari kode...
code_search_unavailable = Pencarian kode saat ini tidak tersedia. Silahkan hubungi administrator.
branch_kind = Cari cabang...

View file

@ -114,6 +114,10 @@ value=Gildi
sign_in_with_provider = Skrá inn með %s
enable_javascript = Þessi síða krefst JavaScript.
filter = Sía
filter.is_archived = Safnvistað
filter.public = Opinbert
[aria]
[heatmap]
@ -1119,6 +1123,8 @@ topic.done=Í lagi
milestones.filter_sort.name = Heiti
[graphs]
[org]
@ -1288,6 +1294,9 @@ notices.type_2=Verkefni
notices.desc=Lýsing
config_summary = Yfirlit
config_settings = Stillingar
[action]
create_issue=`opnaði vandamál <a href="%[1]s">%[3]s#%[2]s</a>`
reopen_issue=`enduropnaði vandamál <a href="%[1]s">%[3]s#%[2]s</a>`
@ -1372,3 +1381,5 @@ runs.commit=Framlag
[projects]
[git.filemode]
[search]

View file

@ -167,6 +167,8 @@ new_org.title = Nuova organizzazione
new_migrate.link = Nuova migrazione
new_org.link = Nuova organizzazione
copy_path = Copia percorso
[aria]
footer.links = Collegamenti
navbar = Barra di navigazione
@ -200,6 +202,13 @@ buttons.disable_monospace_font = Disattiva font monospace
buttons.indent.tooltip = Annida elementi di un livello
buttons.unindent.tooltip = Disannida elementi di un livello
buttons.new_table.tooltip = Aggiungi tabella
table_modal.header = Aggiungi tabella
table_modal.placeholder.header = Intestazione
table_modal.placeholder.content = Contenuto
table_modal.label.rows = File
table_modal.label.columns = Colonne
[filter]
string.asc = A - Z
string.desc = Z - A
@ -220,7 +229,7 @@ platform=Multipiattaforma
lightweight=Leggero
lightweight_desc=Forgejo ha requisiti minimi bassi e può funzionare su un economico Raspberry Pi. Risparmia l'energia della tua macchina!
license=Open Source
license_desc=Ottieni <a target="_blank" rel="noopener noreferrer" href="%[1]s">Forgejo</a>! Partecipa per <a target="_blank" rel="noopener noreferrer" href="%[2]s">contribuire</a> a rendere questo progetto ancora migliore. Non aver paura di diventare un collaboratore!
license_desc=Ottieni <a target="_blank" rel="noopener noreferrer" href="%[1]s">Forgejo</a>! Partecipa per <a target="_blank" rel="noopener noreferrer" href="%[2]s">contribuire</a> a rendere questo progetto ancora più bello. Non aver paura di diventare collaborante!
install_desc = Semplicemente <a target="_blank" rel="noopener noreferrer" href="%[1]s">avvia l'eseguibile</a> per la tua piattaforma, distribuiscilo con <a target="_blank" rel="noopener noreferrer" href="%[2]s">Docker</a>, oppure scarica il <a target="_blank" rel="noopener noreferrer" href="%[3]s">pacchetto</a>.
[install]
@ -511,11 +520,11 @@ issue.action.push_n=<b>@%[1]s</b> ha immesso %[3]d commit presso %[2]s
issue.action.close=<b>@%[1]s</b> chiuso #%[2]d.
issue.action.reopen=<b>@%[1]s</b> riaperto #%[2]d.
issue.action.merge=<b>@%[1]s</b> unito #%[2]d in %[3]s.
issue.action.approve=<b>@%[1]s</b> ha approvato questa pull request.
issue.action.reject=<b>@%[1]s</b> ha richiesto modifiche su questa pull request.
issue.action.review=<b>@%[1]s</b> ha commentato questa pull request.
issue.action.review_dismissed=<b>@%[1]s</b> ha respinto l'ultima recensione da %[2]s per questa pull request.
issue.action.ready_for_review=<b>@%[1]s</b> ha contrassegnato questa pull request pronta per la revisione.
issue.action.approve=<b>@%[1]s</b> ha approvato questa richiesta di modifica.
issue.action.reject=<b>@%[1]s</b> ha richiesto modifiche su questa richiesta.
issue.action.review=<b>@%[1]s</b> ha commentato questa richiesta di modifica.
issue.action.review_dismissed=<b>@%[1]s</b> ha respinto l'ultima revisione di %[2]s per questa richiesta di modifica.
issue.action.ready_for_review=<b>@%[1]s</b> ha contrassegnato questa richiesta di modifica come pronta per la revisione.
issue.action.new=<b>@%[1]s</b> creato #%[2]d.
issue.in_tree_path=In %s:
@ -532,8 +541,8 @@ repo.transfer.subject_to_you=%s ti vorrebbe trasferire il repositorio "%s"
repo.transfer.to_you=tu
repo.transfer.body=Per accettare o respingerla visita %s o semplicemente ignorarla.
repo.collaborator.added.subject=%s ti ha aggiunto a %s come collaboratorə
repo.collaborator.added.text=Sei statə aggiuntə come collaboratorə al repositorio:
repo.collaborator.added.subject=%s ti ha aggiunto a %s come collaborante
repo.collaborator.added.text=Sei statə aggiuntə come collaborante al repositorio:
reply = o rispondi direttamente a questa email
admin.new_user.subject = Il nuovo utente %s si è appena registrato
admin.new_user.user_info = Informazioni utente
@ -690,7 +699,7 @@ joined_on = Membro dal %s
block_user = Blocca utente
block_user.detail_1 = Questo utente non ti seguirà più.
block_user.detail_2 = Quest'utente non potrà interagire né con i tuoi repositori, né con le segnalazioni che hai aperto, né con i tuoi commenti.
block_user.detail_3 = Non sarete in grado di aggiungervi come collaboratorɜ del repositorio.
block_user.detail_3 = Non sarete in grado di aggiungervi come collaboranti del repositorio.
code = Codice
block = Blocca
unblock = Sblocca
@ -762,7 +771,7 @@ comment_type_group_lock=Stato blocco
comment_type_group_review_request=Richiesta di revisione
comment_type_group_pull_request_push=Commit aggiunti
comment_type_group_project=Progetto
comment_type_group_issue_ref=Riferimento del problema
comment_type_group_issue_ref=Riferimento alla segnalazione
saved_successfully=Le impostazioni sono state salvate correttamente.
privacy=Privacy
keep_activity_private_popup=La tua attività sarà visibile solo a te e agli amministratori dell'istanza
@ -1029,7 +1038,7 @@ oauth2_application_locked = Forgejo preregistra alcune applicazioni OAuth2 all'a
hooks.desc = Aggiungi richiami HTTP che saranno innescati per <strong>tutti i progetti</strong> che possiedi.
repos_none = Non possiedi alcun progetto.
blocked_users_none = Non ci sono utenti bloccati.
keep_email_private_popup = Questo nasconderà il tuo indirizzo e-mail nel tuo profilo, nelle pull request e quando modifichi un file usando l'interfaccia web. I commit inoltrati non saranno modificati. Usa %s nei commit per associarli al tuo profilo.
keep_email_private_popup = Questo nasconderà il tuo indirizzo e-mail nel tuo profilo, nelle richieste di modifica e quando modifichi un file usando l'interfaccia web. I commit inoltrati non saranno modificati. Usa %s nei commit per associarli al tuo profilo.
verify_gpg_key_success = La chiave GPG "%s" è stata verificata.
added_on = Aggiunto su %s
additional_repo_units_hint = Suggerisci l'attivazione di unità aggiuntive nel repositorio
@ -1189,7 +1198,7 @@ migrate.migrating_failed_no_addr=Migrazione non riuscita.
migrate.github.description=Migrare i dati da github.com o da server GitHub Enterprise.
migrate.git.description=Migra un repositorio solo da qualsiasi servizio Git.
migrate.gitlab.description=Migrare i dati da gitlab.com o da altre istanze di GitLab.
migrate.gitea.description=Migrare i dati da gitea.com o altre istanze di Gitea/Forgejo.
migrate.gitea.description=Migrare i dati da gitea.com o altre istanze di Gitea.
migrate.gogs.description=Migrare i dati da notabug.org o da altre istanze Gogs.
migrate.onedev.description=Migrare i dati da code.onedev.io o da altre istanze OneDev.
migrate.codebase.description=Migrare i dati da codebasehq.com.
@ -1340,8 +1349,8 @@ commits.date=Data
commits.older=Più vecchio
commits.newer=Più recente
commits.signed_by=Firmato da
commits.signed_by_untrusted_user=Firmato da un utente non attendibile
commits.signed_by_untrusted_user_unmatched=Firmato da un utente non attendibile che non corrisponde al committer
commits.signed_by_untrusted_user=Firmato da un*utente non attendibile
commits.signed_by_untrusted_user_unmatched=Firmato da un*utente non attendibile che non corrisponde al committente
commits.gpg_key_id=ID chiave GPG
commits.ssh_key_fingerprint=Impronta chiave SSH
@ -1402,8 +1411,8 @@ issues.new.open_projects=Apri progetti
issues.new.closed_projects=Progetti chiusi
issues.new.no_items=Nessun elemento
issues.new.milestone=Traguardo
issues.new.no_milestone=Nessuna pietra miliare
issues.new.clear_milestone=Milestone pulita
issues.new.no_milestone=Nessun traguardo
issues.new.clear_milestone=Rimuovi traguardo
issues.new.open_milestone=Traguardi aperti
issues.new.closed_milestone=Traguardi chiusi
issues.new.assignees=Assegnatari
@ -1413,7 +1422,7 @@ issues.new.no_reviewers=Nessun revisore
issues.choose.get_started=Cominciare
issues.choose.open_external_link=Apri
issues.choose.blank=Default
issues.choose.blank_about=Crea un problema dal modello predefinito.
issues.choose.blank_about=Crea una segnalazione dal modello predefinito.
issues.no_ref=Nessun ramo/etichetta specificati
issues.create=Crea segnalazione
issues.new_label=Nuova etichetta
@ -1431,7 +1440,7 @@ issues.remove_labels=rimosso le %s etichette %s
issues.add_remove_labels=aggiunto %s e rimosso %s etichette %s
issues.add_milestone_at=`aggiunta alle pietre miliari <b>%s</b> %s`
issues.add_project_at=`aggiunto questo al progetto <b>%s</b> %s`
issues.change_milestone_at=`pietra miliare modificata da <b> %s</b> a <b>%s</b> %s`
issues.change_milestone_at=`ha modificato il traguardo da <b> %s</b> a <b>%s</b> %s`
issues.change_project_at=`ha modificato il progetto da <b>%s</b> a <b>%s</b> %s`
issues.remove_milestone_at=`rimossa dalle pietre miliari <b>%s</b> %s`
issues.remove_project_at=`rimosso questo dal progetto <b>%s</b> %s`
@ -1479,13 +1488,13 @@ issues.filter_sort.fewestforks=Minor numero di fork
issues.action_open=Apri
issues.action_close=Chiuso
issues.action_label=Etichetta
issues.action_milestone=Pietra Miliare
issues.action_milestone_no_select=Nessuna pietra miliare
issues.action_milestone=Traguardo
issues.action_milestone_no_select=Nessun Traguardo
issues.action_assignee=Assegnatario
issues.action_assignee_no_select=Nessun assegnatario
issues.opened_by=aperta %[1]s da <a href="%[2]s">%[3]s</a>
pulls.merged_by=di <a href="%[2]s">%[3]s</a> è stato fuso %[1]s
pulls.merged_by_fake=di %[2]s è stato fuso %[1]s
pulls.merged_by=di <a href="%[2]s">%[3]s</a> è stata fusa %[1]s
pulls.merged_by_fake=di %[2]s è stata fusa %[1]s
issues.closed_by=di <a href="%[2]s">%[3]s</a> è stato chiuso %[1]s
issues.opened_by_fake=aperta %[1]s da %[2]s
issues.closed_by_fake=di %[2]s è stato chiuso %[1]s
@ -1506,14 +1515,14 @@ issues.close_comment_issue=Commenta e chiudi
issues.reopen_issue=Riapri
issues.reopen_comment_issue=Commenta e riapri
issues.create_comment=Commento
issues.closed_at=`chiuso questo probleam <a id="%[1]s" href="#%[1]s">%[2]s</a>`
issues.closed_at=`ha chiuso questa segnalazione <a id="%[1]s" href="#%[1]s">%[2]s</a>`
issues.reopened_at=`ha riaperto questa segnalazione <a id="%[1]s" href="#%[1]s">%[2]s</a>`
issues.commit_ref_at=`ha fatto riferimento a questa segnalazione dal commit <a id="%[1]s" href="#%[1]s">%[2]s</a>`
issues.ref_issue_from=`<a href="%[3]s">ha fatto riferimento a questa segnalazione %[4]s</a> <a id="%[1]s" href="#%[1]s">%[2]s</a>`
issues.ref_pull_from=`<a href="%[3]s">ha fatto riferimento a questa richiesta di modifica %[4]s</a> <a id="%[1]s" href="#%[1]s">%[2]s</a>`
issues.ref_closing_from=`<a href="%[3]s">ha fatto riferimento a questa segnalazione da una richiesta di modifica %[4]s che la chiuderà</a>, <a id="%[1]s" href="#%[1]s">%[2]s</a>`
issues.ref_reopening_from=`<a href="%[3]s">ha fatto riferimento a questa segnalazione da una richiesta di modifica %[4]s che la riaprirà</a>, <a id="%[1]s" href="#%[1]s">%[2]s</a>`
issues.ref_closed_from=`<a href="%[3]s">chiuso questo problema %[4]s</a> <a id="%[1]s" href="#%[1]s">%[2]s</a>`
issues.ref_closed_from=`<a href="%[3]s">chiuso questa segnalazione %[4]s</a> <a id="%[1]s" href="#%[1]s">%[2]s</a>`
issues.ref_reopened_from=`<a href="%[3]s">ha riaperto questa segnalazione %[4]s</a> <a id="%[1]s" href="#%[1]s">%[2]s</a>`
issues.ref_from=`da %[1]s`
issues.author=Autore
@ -1551,32 +1560,32 @@ issues.subscribe=Iscriviti
issues.unsubscribe=Annulla iscrizione
issues.lock=Blocca conversazione
issues.unlock=Sblocca conversazione
issues.lock.unknown_reason=Impossibile bloccare un problema con un motivo sconosciuto.
issues.lock.unknown_reason=Impossibile bloccare una segnalazione senza un motivo.
issues.lock_duplicate=Un issue non può essere bloccato due volte.
issues.unlock_error=Impossibile sbloccare un problema che non è bloccato.
issues.lock_with_reason=ha bloccato come <strong>%s</strong> e limitato la conversazione ai collaboratori %s
issues.lock_no_reason=ha bloccato e limitato la conversazione ai collaboratori %s
issues.unlock_error=Impossibile sbloccare una segnalazione che non è bloccata.
issues.lock_with_reason=ha bloccato come <strong>%s</strong> e limitato la conversazione allɜ collaboranti %s
issues.lock_no_reason=ha bloccato e limitato la conversazione allɜ collaboranti %s
issues.unlock_comment=ha sbloccato questa conversazione %s
issues.lock_confirm=Blocca
issues.unlock_confirm=Sblocca
issues.lock.notice_1=- Altri utenti non possono aggiungere nuovi commenti a questa segnalazione.
issues.lock.notice_2=- Tu e altri collaboratori con accesso a questo repository potete ancora lasciare commenti che altri possono vedere.
issues.lock.notice_3=- Puoi sempre sbloccare questo problema in futuro.
issues.unlock.notice_1=- Tutti potranno commentare nuovamente questo problema.
issues.unlock.notice_2=- Puoi sempre chiudere nuovamente questo problema in futuro.
issues.lock.notice_2=- Tu e altrɜ collaboranti con accesso a questo repositorio potete ancora lasciare commenti visibili da altre persone.
issues.lock.notice_3=- Puoi sempre sbloccare questa segnalazione in futuro.
issues.unlock.notice_1=- Tuttɜ potranno commentare nuovamente questa segnalazione.
issues.unlock.notice_2=- Puoi sempre chiudere nuovamente questa segnalazione in futuro.
issues.lock.reason=Motivo per il blocco
issues.lock.title=Blocca la conversazione su questa issue.
issues.unlock.title=Sblocca la conversazione su questa issue.
issues.comment_on_locked=Non puoi commentare un problema bloccato.
issues.comment_on_locked=Non puoi commentare una segnalazione bloccata.
issues.delete=Elimina
issues.delete.title=Eliminare questo problema?
issues.delete.text=Vuoi davvero eliminare questo problema? (Questo rimuoverà permanentemente tutti i contenuti. Considera invece di chiuderlo, se vuoi tenerlo archiviato)
issues.delete.title=Eliminare la segnalazione?
issues.delete.text=Vuoi davvero eliminare la segnalazione? (Questo rimuoverà permanentemente tutti i contenuti. Considera invece di chiuderla, se vuoi tenerla archiviata)
issues.tracker=Cronografo
issues.start_tracking_short=Avvia timer
issues.start_tracking=Avvia cronografo
issues.start_tracking_history=ha iniziato a lavorare %s
issues.tracker_auto_close=Il timer verrà interrotto automaticamente una volta che il problema verrá chiuso
issues.tracking_already_started=`Hai già avviato il monitoraggio del tempo su <a href="%s">un altro problema</a>!`
issues.tracker_auto_close=Il timer verrà fermato automaticamente quando questa segnalazione verrà chiusa
issues.tracking_already_started=`Hai già avviato il monitoraggio del tempo su <a href="%s">un'altra segnalazione</a>!`
issues.stop_tracking=Ferma timer
issues.stop_tracking_history=`ha smesso di funzionare %s`
issues.cancel_tracking=Scarta
@ -1622,16 +1631,16 @@ issues.dependency.pr_closing_blockedby=Questa richiesta di modifica non può ess
issues.dependency.issue_closing_blockedby=Questa segnalazione non può essere chiusa per via delle seguenti segnalazioni
issues.dependency.issue_close_blocks=Questa segnalazione impedisce la chiusura delle seguenti segnalazioni
issues.dependency.pr_close_blocks=Questa richiesta di modifica impedisce la chiusura delle seguenti segnalazioni
issues.dependency.issue_close_blocked=Devi chiudere tutte le anomalie che bloiccano questo problema prima di chiudelo.
issues.dependency.issue_close_blocked=Vanno chiuse tutte le segnalazioni che bloccano quest'ultima, prima di poterla chiudere.
issues.dependency.pr_close_blocked=Chiudere tutte le anomalie che bloccano la richiesta di pull prima di effettaure il merge.
issues.dependency.blocks_short=Blocchi
issues.dependency.blocked_by_short=Dipende da
issues.dependency.remove_header=Rimuovi Dipendenza
issues.dependency.issue_remove_text=Questo rimuoverà la dipendenza da questa issue. Continuare?
issues.dependency.pr_remove_text=Questo rimuoverà la dipendenza da questa pull request. Continuare?
issues.dependency.pr_remove_text=Questo rimuoverà la dipendenza da questa richiesta di modifica. Continuare?
issues.dependency.setting=Abilita le dipendenze per segnalazioni e richieste di modifica
issues.dependency.add_error_same_issue=Non si può fare dipendere un problema da se stesso.
issues.dependency.add_error_dep_issue_not_exist=Il problema dipendente non esiste.
issues.dependency.add_error_same_issue=Non si può fare dipendere una segnalazione da se stessa.
issues.dependency.add_error_dep_issue_not_exist=La segnalazione dalla quale dipende non esiste.
issues.dependency.add_error_dep_not_exist=La dipendenza non esiste.
issues.dependency.add_error_dep_exists=La dipendenza esiste già.
issues.dependency.add_error_cannot_create_circular=Non puoi creare una dipendenza con due segnalazioni che si bloccano a vicenda.
@ -1673,7 +1682,7 @@ issues.reference_link=Riferimento: %s
compare.compare_base=base
compare.compare_head=confronta
pulls.desc=Attiva pull request e revisioni di codice.
pulls.desc=Attiva richieste di modifica e revisioni del codice.
pulls.new=Nuova richiesta di modifica
pulls.view=Visualizza richiesta di modifica
pulls.compare_changes=Nuova richiesta di modifica
@ -1700,17 +1709,17 @@ pulls.change_target_branch_at=`cambiato il ramo di destinazione da <b>%s</b> a <
pulls.tab_conversation=Conversazione
pulls.tab_commits=Commit
pulls.tab_files=File modificati
pulls.reopen_to_merge=Riapri questa pull request per effettuare l'unione.
pulls.cant_reopen_deleted_branch=Questa richiesta di modifica non può essere riaperta perché il ramo è stato eliminato.
pulls.reopen_to_merge=Riapri questa richiesta di modifica per poter fondere.
pulls.cant_reopen_deleted_branch=Questa richiesta di modifica non può essere riaperta in quanto il ramo è stato eliminato.
pulls.merged=Unito
pulls.manually_merged=Unito manualmente
pulls.is_closed=La richiesta di modifica è stata chiusa.
pulls.title_wip_desc=`<a href="#">Inizia il titolo con <strong>%s</strong></a> per evitare che la pull request venga unita accidentalmente.`
pulls.cannot_merge_work_in_progress=Questa pull request è contrassegnata come un lavoro in corso.
pulls.title_wip_desc=`<a href="#">Inizia il titolo con <strong>%s</strong></a> per evitare che la richiesta di modifica venga fusa accidentalmente.`
pulls.cannot_merge_work_in_progress=Questa richiesta di modifica è contrassegnata come lavori in corso.
pulls.still_in_progress=Ancora in corso?
pulls.add_prefix=Aggiungi prefisso <strong>%s</strong>
pulls.remove_prefix=Rimuovi il prefisso <strong>%s</strong>
pulls.data_broken=Questa pull request è rovinata a causa di informazioni mancanti del fork.
pulls.data_broken=Questa richiesta di modifica è rovinata a causa di informazioni mancanti riguardo la derivazione.
pulls.files_conflicted=Questa richiesta di modifica va in conflitto con il ramo di destinazione.
pulls.is_checking=Verifica dei conflitti di fusione in corso. Riprova tra qualche istante.
pulls.is_ancestor=Questo ramo è già incluso nel ramo di destinazione. Non c'è nulla da fondere.
@ -1718,8 +1727,8 @@ pulls.is_empty=Le modifiche di questo ramo sono già nel ramo di destinazione. Q
pulls.required_status_check_failed=Alcuni controlli richiesti non hanno avuto successo.
pulls.required_status_check_missing=Mancano alcuni controlli richiesti.
pulls.required_status_check_administrator=Come amministratore, puoi ancora unire questa pull request.
pulls.can_auto_merge_desc=La pull request può essere unita automaticamente.
pulls.cannot_auto_merge_desc=Questa pull request non può essere unita automaticamente a causa di conflitti.
pulls.can_auto_merge_desc=La richiesta di modifica può essere unita automaticamente.
pulls.cannot_auto_merge_desc=Questa richiesta di modifica non può essere unita automaticamente a causa di conflitti.
pulls.cannot_auto_merge_helper=Unire manualmente per risolvere i conflitti.
pulls.num_conflicting_files_1=%d file in conflitto
pulls.num_conflicting_files_n=%d file in conflitto
@ -1731,20 +1740,20 @@ pulls.waiting_count_1=%d in attesa di revisione
pulls.waiting_count_n=%d in attesa di revisione
pulls.wrong_commit_id=l'ID del commit deve essere un ID del commit nel ramo di destinazione
pulls.no_merge_desc=Questa pull request non può essere unita perché tutte le opzioni di merge del repository sono disattivate.
pulls.no_merge_desc=Questa richiesta di modifica non può essere fusa perché tutte le opzioni di fusione del repositorio sono disattivate.
pulls.no_merge_helper=Attiva le opzioni di merge nelle impostazioni del repository o unisci la pull request manualmente.
pulls.no_merge_wip=Questa pull request non può essere unita perché è contrassegnata come un lavoro in corso.
pulls.no_merge_not_ready=Questa pull request non è pronta per il merge, controlla lo stato della revisione e i controlli di stato.
pulls.no_merge_access=Non sei autorizzato ad effettuare il merge su questa pull request.
pulls.merge_pull_request=Crea commit unito
pulls.rebase_merge_pull_request=Ricostruisci poi manda avanti
pulls.rebase_merge_commit_pull_request=Ricostruisci quindi crea commit unito
pulls.no_merge_access=Non sei autorizzatə a fondere questa richiesta di modifica.
pulls.merge_pull_request=Crea commit di fusione
pulls.rebase_merge_pull_request=Ricostruisci e avanti veloce
pulls.rebase_merge_commit_pull_request=Ricostruisci e crea commit di fusione
pulls.squash_merge_pull_request=Crea commit mescolato
pulls.merge_manually=Unito manualmente
pulls.merge_commit_id=L'ID del commit di merge
pulls.require_signed_wont_sign=Il ramo richiede commit firmati ma questa fusione non verrà firmata
pulls.invalid_merge_option=Non puoi utilizzare questa opzione di merge per questa pull request.
pulls.invalid_merge_option=Non è possibile utilizzare l'opzione di fusione selezionata per questa richiesta di modifica.
pulls.merge_conflict=Unione non riuscita: C'è stato un conflitto durante l'operazione. Suggerimento: Prova una strategia diversa
pulls.merge_conflict_summary=Messaggio d'errore
pulls.rebase_conflict=Merge non riuscito: c'è stato un conflitto durante il rebase dell'commit: %[1]s. Suggerimento: Prova una strategia diversa
@ -1773,7 +1782,7 @@ pulls.reopened_at=`ha riaperto questa richiesta di modifica <a id="%[1]s" href="
pulls.auto_merge_button_when_succeed=(Quando i controlli sono superati)
pulls.auto_merge_when_succeed=Unione automatica quando tutti i controlli sono superati
pulls.auto_merge_newly_scheduled=La pull request era programmata per unire quando tutti i controlli sono superati.
pulls.auto_merge_newly_scheduled=La richiesta di modifica era programmata per essere fusa al passare di tutti i controlli.
pulls.auto_merge_has_pending_schedule=%[1]s ha programmato questa pull request per unire automaticamente quando tutti i controlli hanno successo %[2]s.
pulls.auto_merge_cancel_schedule=Annulla fusione automatica
@ -1783,8 +1792,8 @@ pulls.auto_merge_canceled_schedule=L'unione automatica è stata annullata per qu
pulls.auto_merge_newly_scheduled_comment=`ha programmato questa pull request per unire automaticamente quando tutti i controlli sono superati %[1]s`
pulls.auto_merge_canceled_schedule_comment=`cancella l'auto-merging di questa pull request quando tutti i testi sono superati %[1]s`
pulls.delete.title=Eliminare questa pull request?
pulls.delete.text=Vuoi davvero eliminare questo problema? (Questo rimuoverà permanentemente tutti i contenuti. Considera invece di chiuderlo, se vuoi tenerlo archiviato)
pulls.delete.title=Eliminare questa richiesta di modifica?
pulls.delete.text=Vuoi davvero eliminare questa richiesta di modifica? (Ciò rimuoverà permanentemente tutti i contenuti. Considera invece di chiuderla, se vuoi tenerla archiviata)
@ -1818,8 +1827,8 @@ ext_wiki.desc=Collegamento a una wiki esterna.
wiki=Wiki
wiki.welcome=Benvenuti nella Wiki.
wiki.welcome_desc=La wiki ti permette di scrivere e condividere documentazione con i collaboratori.
wiki.desc=Scrivi e condividi documentazione con i collaboratori.
wiki.welcome_desc=La wiki ti permette di scrivere e condividere documentazione con lɜ collaboranti.
wiki.desc=Scrivi e condividi documentazione con lɜ collaboranti.
wiki.create_first_page=Crea la prima pagina
wiki.page=Pagina
wiki.filter_page=Filtra pagina
@ -1917,7 +1926,7 @@ search.code_search_unavailable=Attualmente la ricerca di codice non è disponibi
settings=Impostazioni
settings.desc=Impostazioni ti permette di gestire le impostazioni del repository
settings.options=Repository
settings.collaboration=Collaboratori
settings.collaboration=Collaboranti
settings.collaboration.admin=Amministratore
settings.collaboration.write=Scrittura
settings.collaboration.read=Lettura
@ -2011,14 +2020,14 @@ settings.signing_settings=Impostazioni verifica firma
settings.trust_model=Modello di fiducia per la firma
settings.trust_model.default=Modello di fiducia predefinito
settings.trust_model.default.desc=Usa il modello di trust del repository predefinito per questa installazione.
settings.trust_model.collaborator=Collaboratore
settings.trust_model.collaborator.long=Collaboratore: Firme di fiducia da parte dei collaboratori
settings.trust_model.collaborator.desc=Le firme valide da parte dei collaboratori di questo repository saranno contrassegnate con "trusted" (sia che corrispondano al committer o meno). Altrimenti, le firme valide saranno contrassegnate con "untrusted" se la firma corrisponde al committer e "unmatched" se non.
settings.trust_model.collaborator=Collaborante
settings.trust_model.collaborator.long=Collaborante: firme di fiducia da parte dellɜ collaboranti
settings.trust_model.collaborator.desc=Le firme valide da parte dellɜ collaboranti di questo repositorio saranno contrassegnate con "fidate" (sia che corrispondano a chi ha fatto il commit o meno). Altrimenti saranno contrassegnate con "non fidate" se la firma corrisponde a chi ha fatto il commit e "senza riscontro" se non.
settings.trust_model.committer=Autorə
settings.trust_model.committer.long=Committer: firme affidabili che corrispondono ai committer (questo corrisponde a GitHub e costringerà i commit firmati di Forgejo ad avere Forgejo come committer)
settings.trust_model.collaboratorcommitter=Collaboratore+Committer
settings.trust_model.collaboratorcommitter.long=Collaboratore+Committer: Firme di fiducia da parte dei collaboratori che corrispondono al committer
settings.trust_model.collaboratorcommitter.desc=Le firme valide da parte dei collaboratori di questa repository saranno contrassegnate "fidate" se corrispondono al committer. Altrimenti le firme saranno contrassegnate con "untrusted" se la firma corrisponde al committer non corrisponde. Questo costringerà Forgejo a essere contrassegnato come committer su impegni firmati con l'effettivo committer contrassegnato come Co-Authored-By: e Co-Committed-By: nel commit. La chiave Forgejo predefinita deve corrispondere a un utente nel database.
settings.trust_model.collaboratorcommitter=Collaborante+Committente
settings.trust_model.collaboratorcommitter.long=Collaborante+Committente: firme di fiducia da parte dellɜ collaboranti che corrispondono allə committente
settings.trust_model.collaboratorcommitter.desc=Le firme valide da parte dellɜ collaboranti di questo repositorio saranno contrassegnate "fidate" se corrispondono a chi fa il commit. Altrimenti saranno contrassegnate con "non fidate" se la firma corrisponde a chi fa il commit, e "senza riscontro" se non corrisponde. Questo costringerà Forgejo a essere contrassegnato come committente sui commit firmati, con l'effettivə committente contrassegnatə come Co-Authored-By: e Co-Committed-By: nel commit. La chiave Forgejo predefinita deve corrispondere a un*utente nella base dati.
settings.wiki_delete=Elimina dati wiki
settings.wiki_delete_desc=L'eliminazione dei dati della wiki del repository è permanente e non può essere annullata.
settings.wiki_delete_notices_1=-Questa operazione eliminerà permanentemente e disabiliterà la wiki repository per %s.
@ -2027,21 +2036,21 @@ settings.wiki_deletion_success=I dati della repository wiki sono stati eliminati
settings.delete=Elimina questo progetto
settings.delete_desc=L'eliminazione di un repository è un'operazione permanente e non può essere annullata.
settings.delete_notices_1=-Questa operazione <strong>NON PUÒ</strong> essere annullata.
settings.delete_notices_2=-Questa operazione eliminerà definitivamente il repository <strong>%s</strong> inclusi codice, issue, commenti, dati wiki e impostazioni collaboratore.
settings.delete_notices_2=-Questa operazione eliminerà definitivamente il repositorio <strong>%s</strong>, inclusi codice, segnalazioni commenti, dati della wiki e impostazioni collaboranti.
settings.delete_notices_fork_1=-I fork di questo repository diventeranno indipendenti dopo la cancellazione.
settings.deletion_success=Il repository è stato eliminato.
settings.update_settings_success=Le impostazioni del repository sono state aggiornate.
settings.confirm_delete=Elimina progetto
settings.add_collaborator=Aggiungi collaboratore
settings.add_collaborator_success=Il collaboratore è stato aggiunto.
settings.add_collaborator_inactive_user=Non posso aggiungere un utente inattivo come collaboratore.
settings.add_collaborator_duplicate=Il collaboratore è già stato aggiunto a questo repository.
settings.add_collaborator=Aggiungi collaborante
settings.add_collaborator_success=Lə collaborante è statə aggiuntə.
settings.add_collaborator_inactive_user=Non posso aggiungere un*utente inattivə come collaborante.
settings.add_collaborator_duplicate=Lə collaborante è già statə aggiuntə a questo repositorio.
settings.delete_collaborator=Rimuovi
settings.collaborator_deletion=Rimuovi collaboratore
settings.collaborator_deletion_desc=Rimuovere un collaboratore revocherà l'accesso a questo repository. Continuare?
settings.remove_collaborator_success=Il collaboratore è stato rimosso.
settings.collaborator_deletion=Rimuovi collaborante
settings.collaborator_deletion_desc=Rimuovere unə collaborante ne revocherà l'accesso a questo repositorio. Continuare?
settings.remove_collaborator_success=Lə collaborante è statə rimossə.
settings.search_user_placeholder=Ricerca utente…
settings.org_not_allowed_to_be_collaborator=Le organizzazioni non possono essere aggiunte come un collaboratore.
settings.org_not_allowed_to_be_collaborator=Le organizzazioni non possono essere aggiunte come collaborante.
settings.change_team_access_not_allowed=La modifica dell'accesso al team per il repository è stato limitato al solo proprietario dell'organizzazione
settings.team_not_in_organization=Il team non è nella stessa organizzazione del repository
settings.teams=Gruppi
@ -2411,7 +2420,7 @@ actions = Azioni
commit.operations = Operazioni
issues.action_check = Seleziona/Deseleziona
issues.close = Chiudi segnalazione
issues.role.collaborator = Collaboratore
issues.role.collaborator = Collaborante
desc.sha256 = SHA256
editor.add = Aggiungi %s
editor.update = Aggiorna %s
@ -2454,7 +2463,7 @@ settings.units.overview = Panoramica
all_branches = Tutti i rami
projects.column.assigned_to = Assegnato a
pulls.cmd_instruction_hint = `Visualizza istruzioni per la riga di comando.`
settings.add_collaborator_blocked_them = Non si può aggiungere il collaboratore perché ha bloccato il proprietario del progetto.
settings.add_collaborator_blocked_them = Non si può aggiungere lə collaborante perché ha bloccato lə proprietariə del progetto.
branch.protected_deletion_failed = Il ramo "%s" è protetto. Non può essere eliminato.
branch.default_deletion_failed = Il ramo "%s" è il ramo predefinito. Non può essere eliminato.
branch.tag_collision = Il ramo "%s" non può essere creato perché esiste già un'etichetta con lo stesso nome nel repositorio.
@ -2568,7 +2577,7 @@ settings.wiki_branch_rename_success = Il nome del ramo della wiki della repo è
settings.wiki_branch_rename_failure = Impossibile normalizzare il nome del ramo della wiki della repo.
settings.confirm_wiki_branch_rename = Rinomina il ramo della wiki
settings.wiki_rename_branch_main_notices_2 = Ciò rinominerà permanentemente il ramo interno della wiki della repo di %s. Passaggi esistenti dovranno essere aggiornati.
settings.add_collaborator_blocked_our = Non si può aggiungere il collaboratore perché il proprietario del progetto lo ha bloccato.
settings.add_collaborator_blocked_our = Non si può aggiungere lə collaborante perché lə proprietariə del progetto l'ha bloccatə.
settings.webhook.replay.description_disabled = Per riprodurre questo richiamo HTTP, attivalo.
settings.event_wiki_desc = Pagina wiki creata, rinominata, modificata o rimossa.
settings.event_pull_request_review_request = Richiesta di modifica revisionata
@ -2611,7 +2620,7 @@ invisible_runes_description = `Questo file contiene caratteri Unicode invisibili
issues.filter_type.reviewed_by_you = Revisionati da te
projects.edit_success = Il progetto "%s" è stato aggiornato.
issues.keyword_search_unavailable = La ricerca per parola chiave non è attualmente disponibile. Contatta l'amministratore del sito.
issues.role.collaborator_helper = Questo utente è stato invitato a collaborare sul progetto.
issues.role.collaborator_helper = Quest*utente è statə invitatə a collaborare al progetto.
pulls.commit_ref_at = `ha fatto riferimento a questa richiesta di modifica da un commit <a id="%[1]s" href="#%[1]s">%[2]s</a>`
settings.thread_id = ID della discussione
release.title = Titolo del rilascio
@ -2663,7 +2672,7 @@ settings.branches.add_new_rule = Aggiungi una nuova regola
settings.actions_desc = Abilita azioni del progetto
settings.new_owner_blocked_doer = Il nuovo proprietario ti ha bloccato.
settings.update_settings_no_unit = Ili progetto dovrebbe consentire almeno qualche tipo di interazione.
settings.add_collaborator_owner = Non si può aggiungere un proprietario come collaboratore.
settings.add_collaborator_owner = Non si può aggiungere unə proprietariə come collaborante.
branch.delete_desc = L'eliminazione di un ramo è definitiva. Nonostante il ramo eliminato potrebbe continuare ad esistere per un breve periodo di tempo prima di essere realmente eliminato, l'eliminazione NON PUÒ essere annullata in molti casi. Continuare?
editor.invalid_commit_mail = Email invalida per creare un commit.
editor.branch_does_not_exist = Non esiste nessun ramo "%s" nel repositorio.
@ -2782,9 +2791,9 @@ settings.matrix.access_token_helper = È consigliata l'impostazione di un accoun
issues.author.tooltip.issue = Questo utente è l'autore di questa segnalazione.
form.string_too_long = La stringa data è più lunga di %d caratteri.
project = Progetti
issues.edit.already_changed = Impossibile salvare le modifiche al problema. Sembra che il contenuto sia già stato modificato da un altro utente. Aggiornare la pagina e provare a modificare nuovamente per evitare di sovrascrivere le modifiche
issues.edit.already_changed = Impossibile salvare le modifiche alla segnalazione. Sembra che il contenuto sia già stato modificato da un*altrə utente. Aggiornare la pagina e provare a modificare nuovamente per evitare di sovrascrivere le modifiche
subscribe.pull.guest.tooltip = Accedi per iscriverti a questa richiesta di modifica.
subscribe.issue.guest.tooltip = Accedere per sottoscrivere questo problema.
subscribe.issue.guest.tooltip = Accedere per seguire questa segnalazione.
n_release_one = rilascio %s
n_release_few = rilasci %s
issues.author.tooltip.pr = Quest'utente è l'autorə di questa richiesta di modifica.
@ -2891,7 +2900,7 @@ teams.read_access_helper=I membri possono visualizzare e clonare i repository de
teams.write_access=Scrittura
teams.write_access_helper=I membri possono leggere e pushare sui repository del team.
teams.admin_access=Accesso amministratore
teams.admin_access_helper=I membri possono pullare e pushare sulle repository del team e anche aggiungere collaboratori.
teams.admin_access_helper=I membri possono prelevare e immettere sui repositori del team e aggiungere collaboranti.
teams.no_desc=Questo team non ha alcuna descrizione
teams.settings=Impostazioni
teams.owners_permission_desc=I proprietari hanno pieno accesso a <strong>tutti i repository</strong> e hanno <strong>diritti di amministratore</strong> nell'organizzazione.
@ -2904,7 +2913,7 @@ teams.delete_team_desc=Eliminare un team revocherà l'accesso al repository da p
teams.delete_team_success=Il team è stato eliminato.
teams.read_permission_desc=Questo team concede l'accesso di <strong>lettura</strong>: i membri possono visualizzare e clonare i repository del team.
teams.write_permission_desc=Questo team concede l'accesso di <strong>Scrittura</strong>: i membri possono leggere da e pushare sui repository del team.
teams.admin_permission_desc=Questo team concede l'accesso di <strong>Amministratore</strong>: i membri possono leggere da, pushare su e aggiungere collaboratori ai repository del team.
teams.admin_permission_desc=Questo team concede l'accesso di <strong>Amministrante</strong>: i membri possono leggere da, immettere in e aggiungere collaboranti ai repositori del team.
teams.create_repo_permission_desc=Inoltre, questo team concede il permesso di <strong>Creare repository</strong>: i membri possono creare nuove repository nell'organizzazione.
teams.repositories=Progetti della squadra
teams.search_repo_placeholder=Ricerca repository…
@ -3465,7 +3474,7 @@ auths.tips.gmail_settings = Impostazioni Gmail:
config.test_mail_failed = Impossibile inviare email di prova a "%s": %v
users.details = Dettagli dell'utente
monitor.queue.review_add = Revisiona / aggiungi lavoratori
self_check.no_problem_found = Nessun problema trovato.
self_check.no_problem_found = Non c'è ancora nessuna segnalazione.
self_check.database_inconsistent_collation_columns = La base di dati sta usando la collazione %s ma queste colonne usano una collazione diversa. Potrebbe causare problemi imprevisti.
monitor.queue.settings.remove_all_items = Rimuovi tutto
monitor.queue.settings.desc = Le piscine crescono dinamicamente in risposta al blocco dei lavoratori in coda.
@ -3485,11 +3494,13 @@ config.app_slogan = Slogan dell'istanza
auths.default_domain_name = Nome di dominio predefinito utilizzato per l'indirizzo e-mail
users.restricted.description = Permetti di interagire solo con i repositori e le organizzazioni in cui l'utente è aggiuntə come collaborante. Ciò evita l'accesso ai repositori pubblici di quest'istanza.
[action]
create_repo=ha creato il repository <a href="%s">%s</a>
rename_repo=repository rinominato da <code>%[1]s</code> a <a href="%[2]s">[3]s</a>
create_issue=`ha aperto la segnalazione <a href="%[1]s">%[3]s#%[2]s</a>`
close_issue=`ha chiuso il problema <a href="%[1]s">%[3]s#%[2]s</a>`
close_issue=`ha chiuso la segnalazione <a href="%[1]s">%[3]s#%[2]s</a>`
reopen_issue=`ha riaperto la segnalazione <a href="%[1]s">%[3]s#%[2]s</a>`
create_pull_request=`ha creato la pull request <a href="%[1]s">%[3]s#%[2]s</a>`
close_pull_request=`ha chiuso la pull request <a href="%[1]s">%[3]s#%[2]s</a>`
@ -3884,6 +3895,9 @@ pull_kind = Cerca richieste...
exact = Esatto
milestone_kind = Ricerca tappe...
regexp = Espressione Regolare
regexp_tooltip = Interpreta i termini di ricerca come un'espressione regolare
[munits.data]
gib = GiB
tib = TiB
@ -3897,3 +3911,7 @@ b = B
filepreview.lines = Linee da %[1]d a %[2]d in %[3]s
filepreview.truncated = L'anteprima è stata troncata
filepreview.line = Linea %[1]d in %[2]s
[repo.permissions]
issues.write = <b>Scrittura:</b> Chiudere segnalazioni e gestire metadati come etichette, traguardi, assegnatarɜ, scadenze e dipendenze.
pulls.write = <b>Scrittura:</b> Chiudere richieste di modifica e gestire metadati come etichette, traguardi, assegnatarɜ, scadenze e dipendenze.

View file

@ -167,6 +167,8 @@ new_org.link = 新しい組織
test = テスト
error413 = 割り当て量を使い切りしました。
copy_path = パスをコピー
[aria]
navbar=ナビゲーションバー
footer=フッター
@ -1217,7 +1219,7 @@ migrate.migrating_failed_no_addr=移行に失敗しました。
migrate.github.description=github.com やその他の GitHub エンタープライズサーバーからデータを移行します。
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 からデータを移行します。
@ -3517,6 +3519,8 @@ config.app_slogan = インスタンスのスローガン
config.cache_test = テストキャッシュ
config.cache_test_failed = キャッシュの調査に失敗しました: %v.
[action]
create_repo=がリポジトリ <a href="%s">%s</a> を作成しました
rename_repo=がリポジトリ名を <code>%[1]s</code> から <a href="%[2]s">%[3]s</a> へ変更しました
@ -3877,11 +3881,15 @@ workflow.dispatch.invalid_input_type = 入力タイプ「%s」が無効です。
workflow.dispatch.warn_input_limit = 最初の %d 個の入力のみを表示します。
runs.no_job = ワークフローには少なくとも1つのジョブが含まれている必要があります
runs.expire_log_message = ログは古すぎるため消去されています。
[projects]
type-1.display_name=個人プロジェクト
type-2.display_name=リポジトリ プロジェクト
type-3.display_name=組織プロジェクト
deleted.display_name = 削除されたプロジェクト
[git.filemode]
changed_filemode=%[1]s → %[2]s
directory=ディレクトリ

View file

@ -1436,6 +1436,10 @@ issues.cancel_tracking_history = `취소된 시간 기록 %s`
settings.enter_repo_name = 표시된 소유자와 저장소명을 정확하게 입력하세요:
settings.packagist_username = Packagist 사용자명
archive.title_date = 이 저장소는 %s에 보관처리되었습니다. 파일을 볼 수 있고 복제할 수도 있지만, 푸시하거나 이슈를 열거나 풀 리퀘스트를 만들 수 없습니다.
milestones.filter_sort.name = 이름
[graphs]
[org]
@ -1810,6 +1814,9 @@ auths.sspi_strip_domain_names = 사용자명들에서 도메인명을 제거함
auths.tip.yandex = %s에 새 애플리케이션을 만듭니다. "Yandex.Passport API"부분의 "Access to email address", "Access to user avatar", "Access to username, first name and surname, gender" 권한을 활성화 하세요.
config.allow_dots_in_usernames = 사용자들이 마침표를 사용자명에 사용할 수 있도록 허가합니다. 이미 존재하는 계정에는 영향을 주지 않습니다.
config_summary = 요약
config_settings = 설정
[action]
create_repo=저장소를 만들었습니다. <a href="%s">%s</a>
rename_repo=저장소 이름을 <code>%[1]s에서</code>에서 <a href="%[2]s"> %[3]s</a>으로 변경함

File diff suppressed because it is too large Load diff

View file

@ -1,5 +1,5 @@
[common]
enable_javascript = Denne nettsiden behøver JavaScript.
enable_javascript = Denne nettsiden krever JavaScript.
toc = Innholdsfortegnelse
licenses = Lisenser
return_to_forgejo = Tilbake til Forgejo
@ -128,6 +128,14 @@ webauthn_error_unable_to_process = Tjeneren kunne ikke behandle forespørselen d
webauthn_error_empty = Du må gi nøkkelen et navn.
copy_path = Kopier sti
toggle_menu = Åpne/lukke meny
twofa_scratch = To-faktor skrapekode
webauthn_press_button = Vennligst trykk på knappen på sikkerhetsnøkkelen…
webauthn_error_duplicated = Sikkerhetsnøkkelen er ikke tillatt for denne forespørselen. Vennligst sørg for at nøkkelen ikke allerede er registrert.
webauthn_error_timeout = Et tidsavbrudd oppsto før nøkkelen din kunne leses. Vennligst last inn siden på nytt og prøv igjen.
new_fork = Ny fork av repository
collaborative = Samarbeidende
[search]
search = Søk...
type_tooltip = Søketype

View file

@ -357,8 +357,8 @@ account_security_caution.text_1 = Wenn du dat weerst, kannst du deese E-Mail sek
account_security_caution.text_2 = Wenn du dat nich weerst, hett well in dien Konto inbroken. Bidde kuntakteer de Sied-Chefs.
register_success = Registreren kumpleet
issue_assigned.pull = @%[1]s hett di to Haalvörslag %[2]s in Repositorium %[3]s towiesen.
issue.action.reopen = <b>@%[1]s</b> hett #%[2]s weer opmaakt.
issue.action.merge = <b>@%[1]s</b> hett #%[2]s in %[3]s tosamenföhrt.
issue.action.reopen = <b>@%[1]s</b> hett #%[2]d weer opmaakt.
issue.action.merge = <b>@%[1]s</b> hett #%[2]d in %[3]s tosamenföhrt.
issue.action.reject = <b>@%[1]s</b> hett um Änners för deesen Haalvörslag beden.
issue.action.ready_for_review = <b>@%[1]s</b> hett deesen Haalvörslag as klaar tum Nakieken markeert.
issue.action.new = <b>@%[1]s</b> hett #%[2]d opmaakt.
@ -375,8 +375,8 @@ activate_email.text = Bidde klick up deesen Verwies, um diene E-Mail-Adress binn
reset_password.text = Wenn du dat weerst, klick bidde up deesen Verwies, um dien Konto binnen <b>%s</b> torüggtohalen:
password_change.subject = Dien Passwoord is ännert worden
issue_assigned.issue = @%[1]s hett di to Gefall %[2]s in Repositorium %[3]s towiesen.
issue.action.push_1 = <b>@%[1]s</b> hett %[3]Kommitteren to %[2]s schuven
issue.action.push_n = <b>@%[1]s</b> hett %[3]Kommitterens to %[2]s schuven
issue.action.push_1 = <b>@%[1]s</b> hett %[3]d Kommitteren to %[2]s schuven
issue.action.push_n = <b>@%[1]s</b> hett %[3]d Kommitterens to %[2]s schuven
activate_account.text_1 = Moin <b>%[1]s</b>, wees bedankt, dat du di up %[2]s registreert hest!
issue.action.review_dismissed = <b>@%[1]s</b> hett dat leste Nakieken vun %[2]s för deesen Haalvörslag ofseggt.
issue.in_tree_path = In %s:
@ -404,7 +404,7 @@ issue.x_mentioned_you = <b>@%s</b> hett di nöömt:
issue.action.approve = <b>@%[1]s</b> hett deesem Haalvörslag tostimmt.
repo.transfer.subject_to_you = %s will Repositorium »%s« to di överdragen
team_invite.text_3 = Wahrschau: Deese Inladen weer för %[1]s dacht. Wenn du deese Inladen nich verwacht hest, kannst du deese E-Mail minnachten.
issue.action.close = <b>@%[1]s</b> hett #%[2]s dichtmaakt.
issue.action.close = <b>@%[1]s</b> hett #%[2]d dichtmaakt.
repo.transfer.body = Um dat antonehmen of oftolehnen, besöök %s, of ignoreer dat eenfach.
release.download.zip = Quelltext (ZIP)
team_invite.subject = %[1]s hett di inladen, in de Vereenigung %[2]s intotreden
@ -511,6 +511,8 @@ PayloadUrl = Ladung-URL
visit_rate_limit = Frömd-Togriep hett Togrieps-Begrenz troffen.
2fa_auth_required = Frömd-Togriep bruukt Twee-Faktooren-Anmellen.
email_domain_is_not_allowed = De Domään vun de Bruker-E-Mail-Adress <b>%s</b> passt nich mit EMAIL_DOMAIN_ALLOWLIST of EMAIL_DOMAIN_BLOCKLIST. Wees wiss, dat du de E-Mail-Adress recht sett hest.
[user]
change_avatar = Änner dien Kontobill …
joined_on = Am %s bitreden
@ -1405,7 +1407,7 @@ issues.comment_manually_pull_merged_at = hett Kommitteren %[1]s in %[2]s %[3]s v
issues.reopen_issue = Weer opmaken
issues.closed_at = `hett deeses Gefall <a id="%[1]s" href="#%[1]s">%[2]s</a> dichtmaakt`
issues.commit_ref_at = `hett deeses Gefall <a id="%[1]s" href="#%[1]s">%[2]s</a> vun eenem Kommitteren benöömt`
issues.ref_closing_from = `<a href="%[3]s">hett deeses Gefall vun eenem Haalvörslag %[4]s, wat t dichtmaken word,</a> <a id="%[1]s" href="#%[1]s">%[2]s</a> <a href="%[3]s">benöömt</a>`
issues.ref_closing_from = `<a href="%[3]s">hett deeses Gefall vun eenem Haalvörslag, wat t %[4]s dichtmaken word,</a> <a id="%[1]s" href="#%[1]s">%[2]s</a> <a href="%[3]s">benöömt</a>`
issues.ref_closed_from = `<a href="%[3]s">hett deeses Gefall %[4]s</a> <a id="%[1]s" href="#%[1]s">%[2]s</a> <a href="%[3]s">dichtmaakt</a>`
issues.ref_reopened_from = `<a href="%[3]s">hett deeses Gefall %[4]s</a> <a id="%[1]s" href="#%[1]s">%[2]s</a> <a href="%[3]s">weer opmaakt</a>`
issues.ref_from = `vun %[1]s`
@ -1443,12 +1445,12 @@ issues.label.filter_sort.reverse_alphabetically = Umdreiht na de Alphabeet
issues.label.filter_sort.by_size = Lüttste Grött
issues.num_participants_one = %d Mitmaker
issues.num_participants_few = %d Mitmakers
issues.ref_pull_from = `<a href="%[3]s">hett deeses Haalvörslag %[4]s</a> <a id="%[1]s" href="#%[1]s">%[2]s</a> <a href="%[3]s">benöömt</a>`
issues.ref_pull_from = `<a href="%[3]s">hett deesen Haalvörslag %[4]s</a> <a id="%[1]s" href="#%[1]s">%[2]s</a> <a href="%[3]s">benöömt</a>`
issues.label_title = Naam
issues.label_archived_filter = Archiveert Vermarkens wiesen
issues.archived_label_description = (Archiveert) %s
issues.ref_issue_from = `<a href="%[3]s">hett deeses Gefall %[4]s</a> <a id="%[1]s" href="#%[1]s">%[2]s</a> <a href="%[3]s">benöömt</a>`
issues.ref_reopening_from = `<a href="%[3]s">hett deeses Gefall vun eenem Haalvörslag %[4]s, wat t weer opmaken word,</a> <a id="%[1]s" href="#%[1]s">%[2]s</a> <a href="%[3]s">benöömt</a>`
issues.ref_reopening_from = `<a href="%[3]s">hett deeses Gefall vun eenem Haalvörslag, wat t %[4]s weer opmaken word,</a> <a id="%[1]s" href="#%[1]s">%[2]s</a> <a href="%[3]s">benöömt</a>`
issues.author.tooltip.issue = Deeser Bruker is de Autor vun deesem Gefall.
issues.role.member_helper = Deeser Bruker is een Liddmaat vun de Vereenigung, wat de Eegner vun deesem Repositorium is.
issues.role.collaborator_helper = Deeser Bruuker is inladen worden, in deesem Repositorium mittoarbeiden.
@ -1551,7 +1553,7 @@ issues.start_tracking_history = `hett %s to warken begunnen`
issues.lock.notice_2 = - Du un anner Mitarbeiders mit Togriep to deesem Repositorium köönt wiederhen Kommentaren schrieven, wat elkeenwell sücht.
issues.due_date_modified = hett dat Anstahns-Datum vun %[2]s to %[1]s %[3]s ännert
issues.dependency.issue_remove_text = Dat word de Ofhangen vun deesem Gefall wegdoon. Wiedermaken?
issues.review.approve = hett deese Ännerns %s tostimmt
issues.review.approve = hett %s deesen Ännerns tostimmt
issues.review.dismissed = hett %[2]s dat Nakieken vun %[1]s ofseggt
issues.lock.title = Snack up deesem Gefall tosluten.
issues.unlock.title = Snack up deesem Gefall upsluten.
@ -1937,7 +1939,7 @@ milestones.filter_sort.earliest_due_data = Nahst Anstahns-Datum
milestones.filter_sort.least_issues = Minnst Gefallens
wiki.wiki_page_revisions = Sied-Versioonen
activity.period.yearly = 1 Jahr
activity.title.issues_1 = %s Gefall
activity.title.issues_1 = %d Gefall
activity.git_stats_files_changed_1 = ännert worden
activity.git_stats_deletion_n = %d lösket Riegen geven
contributors.contribution_type.deletions = Lösket Riegen
@ -1973,7 +1975,7 @@ activity.merged_prs_count_n = Tosamenföhrt Haalvörslagen
activity.title.user_1 = %d Bruker
activity.title.prs_1 = %d Haalvörslag
activity.active_issues_count_n = <strong>%d</strong> aktiiv Gefallens
activity.title.issues_n = %s Gefallens
activity.title.issues_n = %d Gefallens
activity.title.unresolved_conv_n = %d nich lööst Snacks
activity.title.releases_1 = %d Publizeren
activity.git_stats_file_1 = is %d Datei
@ -2566,6 +2568,8 @@ issues.reaction.alt_remove = De %[1]s-Reageren vun de Kommentaar wegdoon.
issues.context.menu = Kommentaar-Menü
release.summary_card_alt = Tosamenfatens-Kaart vun eenem Publizeren mit de Naam »%s« im Repositorium %s
editor.commit_email = Kommitterens-E-Mail
[repo.permissions]
code.read = <b>Lesen:</b> De Quelltext vun deesem Repositorium ankieken un klonen.
code.write = <b>Schrieven:</b> Schuuv to de Repositorium un maak Twiegen un Markens.
@ -3731,6 +3735,8 @@ runs.no_workflows.documentation = För mehr Informatioonen över Forgejo-Aktioon
runs.no_workflows.help_write_access = Weetst du nich, wo man mit Forgejo-Aktioonen begünnen sall? Kiek de <a target="_blank" rel="noopener noreferrer" href="%s">Fixanwies in de Bruker-Dokumenteren</a> an, um diene eerste Warkwies to schrieven, un <a target="_blank" rel="noopener noreferrer" href="%s">richt dann dienen eersten Forgejo-Loper in</a>, um diene Upgavens uttoföhren.
runs.no_workflows.help_no_write_access = Um mehr över Forgejo-Aktioonen to lehren, kiek <a target="_blank" rel="noopener noreferrer" href="%s">de Dokumenteren</a> an.
variables.not_found = Kunn de Variaabel nich finnen.
[projects]
deleted.display_name = Lösket Projekt
type-1.display_name = Enkelt Projekt

View file

@ -4,14 +4,14 @@ dashboard=Overzicht
explore=Verkennen
help=Help
logo=Logo
sign_in=Inloggen
sign_in=Aanmelden
sign_in_or=of
sign_out=Uitloggen
sign_up=Registreren
link_account=Account Koppelen
register=Registreren
version=Versie
powered_by=Aangedreven door %s
powered_by=Mogelijk gemaakt door %s
page=Pagina
template=Sjabloon
language=Taal
@ -28,24 +28,24 @@ username=Gebruikersnaam
email=E-mailadres
password=Wachtwoord
access_token=Toegangstoken
re_type=Verifieer wachtwoord
re_type=Bevestig wachtwoord
captcha=CAPTCHA
twofa=Twee-factor authenticatie
twofa_scratch=Twee-factor krascode
passcode=PIN
passcode=Code
webauthn_insert_key=Voer uw beveiligingssleutel in
webauthn_sign_in=Druk op de knop van uw beveiligingssleutel. Als uw beveiligingssleutel geen knop heeft, voeg deze dan opnieuw in.
webauthn_sign_in=Druk op de knop van uw beveiligingssleutel. Als uw beveiligingssleutel geen knop heeft, voer deze dan opnieuw in.
webauthn_press_button=Druk alstublieft op de knop van uw beveiligingssleutel…
webauthn_use_twofa=Gebruik een twee-factor code van uw telefoon
webauthn_error=Kon uw beveiligingssleutel niet lezen.
webauthn_unsupported_browser=Uw browser ondersteunt momenteel geen WebAuthn.
webauthn_error_unknown=Er is een onbekende fout opgetreden. Probeer het opnieuw.
webauthn_error_insecure=WebAuthn ondersteunt alleen beveiligde verbindingen. Om te testen via HTTP, kan je de oorsprong "localhost" of "127.0.0.1" gebruiken
webauthn_error_insecure=WebAuthn ondersteunt alleen beveiligde verbindingen. Om te testen via HTTP, kan je als systeemnaam "localhost" of "127.0.0.1" gebruiken
webauthn_error_unable_to_process=De server kon uw verzoek niet verwerken.
webauthn_error_duplicated=De beveiligingssleutel is niet toegestaan voor dit verzoek. Zorg er alstublieft voor dat de sleutel niet al geregistreerd is.
webauthn_error_duplicated=De beveiligingssleutel is voor dit verzoek niet toegestaan. Controleer alstublieft of de sleutel niet al is geregistreerd.
webauthn_error_empty=U moet een naam voor deze sleutel instellen.
webauthn_error_timeout=Time-out bereikt voordat uw sleutel kon worden gelezen. Laad deze pagina opnieuw en probeer het opnieuw.
webauthn_error_timeout=Time-out bereikt voordat uw sleutel kon worden gelezen. Herlaad deze pagina en probeer het opnieuw.
webauthn_reload=Vernieuwen
repository=Repository
@ -56,9 +56,9 @@ new_migrate=Nieuwe migratie
new_mirror=Nieuwe mirror
new_fork=Nieuwe repository fork
new_org=Nieuwe organisatie
new_project=Nieuwe project
new_project=Nieuw project
manage_org=Beheer organisaties
admin_panel=Website administratie
admin_panel=Site beheer
account_settings=Accountinstellingen
settings=Instellingen
your_profile=Profiel
@ -66,12 +66,12 @@ your_starred=Favoriet
your_settings=Instellingen
all=Alles
sources=Bronnen
sources=Broncode
mirrors=Mirrors
collaborative=Samenwerkend
collaborative=Samenwerkende
forks=Forks
activities=Activiteiten
activities=Activiteit
pull_requests=Pull requests
issues=Issues
milestones=Mijlpalen
@ -83,7 +83,7 @@ add=Toevoegen
add_all=Alles toevoegen
remove=Verwijder
remove_all=Alles verwijderen
edit=Bewerk
edit=Wijzig
enabled=Ingeschakeld
disabled=Uitgeschakeld
@ -115,8 +115,8 @@ concept_user_organization=Organisatie
name=Naam
sign_in_with_provider = Log in met %s
tracked_time_summary = Overzicht van geregistreerde tijd op basis van filters van probleemlijst
sign_in_with_provider = Aanmelden met %s
tracked_time_summary = Overzicht van geregistreerde tijd op basis van filters van issuelijst
enable_javascript = Deze website vereist JavaScript.
retry = Probeer opnieuw
rerun_all = Alle taken opnieuw uitvoeren
@ -140,9 +140,9 @@ confirm_delete_selected = Bevestigen om alle geselecteerde items te verwijderen?
copy_type_unsupported = Dit bestandstype kan niet worden gekopieerd
pin = Vastpinnen
unpin = Ontpinnen
remove_label_str = Verwijder punt "%s"
remove_label_str = Verwijder item "%s"
confirm_delete_artifact = Weet u zeker dat u het artefact "%s" wilt verwijderen?
toggle_menu = Menu schakelen
toggle_menu = Menu aan/uit
filter.clear = Filter wissen
filter.is_archived = Gearchiveerd
filter.is_fork = Forks
@ -159,7 +159,7 @@ more_items = Meer items
invalid_data = Ongeldige data: %v
copy_generic = Kopieer naar klembord
test = Test
error413 = U heeft al uw quotum opgebruikt.
error413 = U heeft uw hele quotum gebruikt.
new_migrate.title = Nieuwe migratie
new_org.title = Nieuwe organisatie
new_repo.link = Nieuwe repository
@ -234,7 +234,7 @@ install_desc = Draai gewoon <a target="_blank" rel="noopener noreferrer" href="%
[install]
install=Installatie
title=Initiële configuratie
docker_helper=Als je gitea draait in Docker, Lees eerst de <a target="_blank" rel="noopener noreferrer" href="%s">documentatie</a> voordat je een instelling aanpast.
docker_helper=Als je Forgejo draait in Docker, Lees eerst de <a target="_blank" rel="noopener noreferrer" href="%s">documentatie</a> voordat je een instelling aanpast.
require_db_desc=Forgejo vereist MySQL, PostgreSQL, SQLite3 of TiDB (MySQL protocol).
db_title=Database-instellingen
db_type=Database-type
@ -683,6 +683,8 @@ AccessToken = Toegangstoken
Pronouns = Voornaamwoorden
email_domain_is_not_allowed = Het domein van het e-mailadres van de gebruiker <b>%s</b> is in strijd met EMAIL_DOMAIN_ALLOWLIST of EMAIL_DOMAIN_BLOCKLIST. Controleer of u het e-mailadres correct hebt ingesteld.
[user]
change_avatar=Wijzig je profielfoto…
repositories=repositories
@ -1205,7 +1207,7 @@ migrate.migrating_failed_no_addr=Migratie is mislukt.
migrate.github.description=Migreer gegevens van github.com of GitHub Enterprise server.
migrate.git.description=Migreer een repositorie van elke Git service.
migrate.gitlab.description=Gegevens migreren van gitlab.com of andere GitLab-instanties.
migrate.gitea.description=Gegevens overzetten van gitea.com of andere Gitea/Forgejo instanties.
migrate.gitea.description=Gegevens overzetten van gitea.com of andere Gitea instanties.
migrate.gogs.description=Gegevens overzetten van notabug.org of andere Gogs instanties.
migrate.onedev.description=Gegevens overzetten van code.onedev.io of andere OneDev instanties.
migrate.codebase.description=Gegevens migreren van codebasehq.com.
@ -1252,7 +1254,7 @@ tags=Labels
issues=Issues
pulls=Pull requests
project_board=Projecten
packages=Paketten
packages=Pakketten
labels=Labels
org_labels_desc=Organisatielabel dat gebruikt kan worden met <strong>alle repositories</strong> onder deze organisatie
org_labels_desc_manage=beheren
@ -2870,6 +2872,8 @@ issues.reaction.alt_add = Voeg %[1]s reactie toe aan commentaar.
issues.context.menu = Commentaar menu
release.summary_card_alt = Samenvattende kaart van een release met de titel "%s" in repository %s
editor.commit_email = Commit e-mail
[graphs]
component_loading_info = Dit kan even duren…
component_failed_to_load = Er is een onverwachte fout opgetreden.
@ -2944,7 +2948,7 @@ members.invite_desc=Voeg nieuw lid toe aan %s:
members.invite_now=Nu uitnodigen
teams.join=Lid worden
teams.leave=Vertlaat
teams.leave=Verlaat
teams.can_create_org_repo=Maak repositories
teams.can_create_org_repo_helper=Leden kunnen nieuwe repositories aanmaken in de organisatie. De maker krijgt beheerder toegang tot de nieuwe repository.
teams.read_access=Gelezen
@ -3087,7 +3091,7 @@ dashboard.gc_times=GC verwerkingen
dashboard.delete_old_system_notices=Verwijder alle oude systeemmededelingen uit de database
users.user_manage_panel=Gebruikersaccounts beheren
users.new_account=Nieuw account aanmaken
users.new_account=Gebruikersaccount aanmaken
users.name=Gebruikersnaam
users.full_name=Volledige naam
users.activated=Geactiveerd
@ -3941,6 +3945,8 @@ runs.no_workflows.help_write_access = Weet je niet hoe je moet beginnen met Forg
variables.not_found = De variabele kon niet gevonden worden.
[projects]
type-1.display_name = Individueel project
type-2.display_name = Repository project

File diff suppressed because it is too large Load diff

View file

@ -55,7 +55,7 @@ organization=Organização
mirror=Espelhamento
new_repo=Novo repositório
new_migrate=Nova migração
new_mirror=Novo espelhamento
new_mirror=Novo espelho
new_fork=Novo fork do repositório
new_org=Nova organização
new_project=Novo projeto
@ -682,6 +682,8 @@ Description = Descrição
unset_password = O usuário de login não definiu a senha.
email_domain_is_not_allowed = O domínio do endereço de email da conta <b>%s</b> está em conflito com EMAIL_DOMAIN_ALLOWLIST ou EMAIL_DOMAIN_BLOCKLIST. Certifique-se de que você colocou o endereço de email correto.
[user]
change_avatar=Altere seu avatar...
joined_on=Inscreveu-se em %s
@ -721,8 +723,8 @@ following.title.one = seguindo
followers.title.one = seguidor
followers.title.few = seguidores
public_activity.visibility_hint.self_private = Sua atividade está visível apenas para você e para os administradores da instância. <a href="%s">Configurar</a>.
public_activity.visibility_hint.self_public = Sua atividade está visível para todos, exceto o engajamento em espaços privados. <a href="%s">Configurar</a>.
public_activity.visibility_hint.admin_public = Sua atividade está visível para todos, mas como um administrador você também pode ver o engajamento em espaços privados.
public_activity.visibility_hint.self_public = Sua atividade está visível para todos, exceto interações em espaços privados. <a href="%s">Configurar</a>.
public_activity.visibility_hint.admin_public = Sua atividade está visível para todos, mas como um administrador você também pode ver interações em espaços privados.
public_activity.visibility_hint.admin_private = Essa atividade está visível para você porque você é um administrador, mas o usuário dejesa que ela seja mantida em privado.
public_activity.visibility_hint.self_private_profile = Sua atividade só é visível para você e para os administradores do servidor porque seu perfil é privado. <a href="%s">Configurar</a>.
@ -991,7 +993,7 @@ scan_this_image=Escaneie esta imagem com o seu aplicativo de autenticação:
or_enter_secret=Ou digite esse código: %s
then_enter_passcode=E insira a senha mostrada no aplicativo:
passcode_invalid=Esse código de acesso é inválido. Tente novamente.
twofa_enrolled=Sua conta foi inscrita na autenticação de dois fatores. Armazene seu token de backup (%s) em um local seguro, pois ele é exibido apenas uma vez!
twofa_enrolled=Sua conta foi inscrita na autenticação de dois fatores. Armazene seu token de recuperação de uso único (%s) em um local seguro, pois ele não será exibido novamente.
twofa_failed_get_secret=Falha ao obter o segredo.
webauthn_desc=Chaves de segurança são dispositivos de hardware que contém chaves de criptografia. Elas podem ser usadas para autenticação de dois fatores. A chave de segurança deve suportar o padrão <a rel="noreferrer" target="_blank" href="%s">WebAuthnn Authenticator</a>.
@ -1220,7 +1222,7 @@ migrate.migrating_failed_no_addr=A migração falhou.
migrate.github.description=Migre dados do servidor github.com ou GitHub Enterprise.
migrate.git.description=Migrar um repositório somente de qualquer serviço Git.
migrate.gitlab.description=Migrar dados de gitlab.com ou de outras instâncias do GitLab.
migrate.gitea.description=Migrar dados de gitea.com ou de outras instâncias do Gitea/Forgejo.
migrate.gitea.description=Migrar dados de gitea.com ou de outras instâncias do Gitea.
migrate.gogs.description=Migrar dados de notabug.org ou de outras instâncias do Gogs.
migrate.onedev.description=Migrar dados de code.onedev.io ou de outras instâncias do OneDev.
migrate.codebase.description=Migrar dados de codebasehq.com.
@ -2622,7 +2624,7 @@ tag.create_tag_from=`Criar nova tag a partir de "%s"`
tag.create_success=Tag "%s" criada.
topic.manage_topics=Gerenciar Tópicos
topic.manage_topics=Gerenciar tópicos
topic.done=Feito
topic.count_prompt=Você não pode selecionar mais de 25 tópicos
@ -2750,8 +2752,8 @@ release.system_generated = Este anexo foi gerado automaticamente.
settings.wiki_branch_rename_failure = Falha ao regularizar o nome do ramo da wiki do repositório.
settings.add_collaborator_blocked_them = Não foi possível adicionar o(a) colaborador(a) porque ele(a) bloqueou o(a) proprietário(a) do repositório.
settings.thread_id = ID da discussão
issues.edit.already_changed = Não foi possível salvar as alterações desta questão porque o conteúdo foi alterado por outro(a) usuário(a). Atualize a página e tente novamente para evitar sobrescrever as alterações.
pulls.edit.already_changed = Não foi possível salvar as alterações deste pedido de integração porque o conteúdo foi alterado por outro(a) usuário(a). Atualize a página e tente novamente para evitar sobrescrever as alterações.
issues.edit.already_changed = Não foi possível salvar as alterações desta questão. O conteúdo parece já ter sido alterado por outro(a) usuário(a). Atualize a página e tente novamente para evitar sobrescrever estas alterações.
pulls.edit.already_changed = Não foi possível salvar as alterações deste pull request. Parece que o conteúdo já foi alterado por outro(a) usuário(a). Atualize a página e tente novamente para evitar sobrescrever estas alterações.
editor.commit_id_not_matching = O arquivo foi alterado durante a edição. Salve as alterações em um novo ramo e realize a mesclagem.
blame.ignore_revs = As revisões em <a href="%s">.git-blame-ignore-revs</a> foram ignoradas. Clique <a href="%s">aqui</a> para retornar à visualização normal.
topic.format_prompt = Os tópicos devem começar com um caracter alfanumérico, podem incluir hífens ("-") e pontos ("."), e podem ter até 35 caracteres. As letras devem ser minúsculas.
@ -2869,6 +2871,8 @@ issues.reaction.alt_add = Adicionar reação %[1]s ao comentário.
issues.context.menu = Menu de comentário
release.summary_card_alt = Cartão de resumo de um release intitulado "%s" no repositório %s
editor.commit_email = Email de commit
[graphs]
component_loading = Carregando %s...
component_loading_failed = Não foi possível carregar o(a) %s
@ -3174,7 +3178,7 @@ orgs.new_orga=Nova organização
repos.repo_manage_panel=Gerenciar repositórios
repos.unadopted=Repositórios não adotados
repos.unadopted.no_more=Não foram encontrados repositórios não adotados
repos.unadopted.no_more=Não foram encontrados repositórios não adotados.
repos.owner=Proprietário(a)
repos.name=Nome
repos.private=Privado
@ -3943,6 +3947,8 @@ runs.no_workflows.help_no_write_access = Para aprender sobre as Actions do Forge
runs.no_workflows.help_write_access = Não sabe como começar a usar as Actions do Forgejo? Veja o <a target="_blank" rel="noopener noreferrer" href="%s">guia de como começar na documentação do usuário</a> para escrever seu primeiro workflow, depois <a target="_blank" rel="noopener noreferrer" href="%s">configure um runner do Forgejo</a> para executar trabalhos.
variables.not_found = Não foi possível encontrar a variável.
[projects]
type-1.display_name=Projeto individual
type-2.display_name=Projeto do repositório

View file

@ -682,6 +682,8 @@ FullName = Nome completo
Description = Descrição
Pronouns = Pronomes
email_domain_is_not_allowed = O domínio do endereço de email <b>%s</b> do utilizador entra em conflito com EMAIL_DOMAIN_ALLOWLIST ou EMAIL_DOMAIN_BLOCKLIST. Certifique-se de que definiu corretamente o endereço de email.
[user]
change_avatar=Mude o seu avatar…
joined_on=Inscreveu-se em %s
@ -1231,7 +1233,7 @@ migrate.migrating_failed_no_addr=A migração falhou.
migrate.github.description=Migrar dados do github.com ou do GitHub Enterprise server.
migrate.git.description=Migrar um repositório somente de qualquer serviço Git.
migrate.gitlab.description=Migrar dados de gitlab.com ou de outras instâncias do GitLab.
migrate.gitea.description=Migrar dados de gitea.com ou de outras instâncias do Gitea/Forgejo.
migrate.gitea.description=Migrar dados de gitea.com ou de outras instâncias do Gitea.
migrate.gogs.description=Migrar dados de notabug.org ou de outras instâncias do Gogs.
migrate.onedev.description=Migrar dados de code.onedev.io ou de outras instâncias do OneDev.
migrate.codebase.description=Migrar dados de codebasehq.com.
@ -2870,6 +2872,8 @@ pulls.sign_in_require = <a href="%s">Inicie sessão</a> para criar um novo pedid
settings.default_update_style_desc = Estilo de atualização predefinido utilizado para atualizar pedidos de integração que estão atrasados em relação ao ramo base.
release.summary_card_alt = Cartão de resumo de um lançamento com o título "%s" no repositório %s
editor.commit_email = Endereço de email do cometimento
[graphs]
component_loading=A carregar %s...
component_loading_failed=Não foi possível carregar %s
@ -3537,7 +3541,7 @@ notices.delete_success=As notificações do sistema foram eliminadas.
self_check.no_problem_found=Nenhum problema encontrado até agora.
self_check.database_collation_mismatch=Supor que a base de dados usa a colação: %s
self_check.database_collation_case_insensitive=A base de dados está a usar a colação %s, que é insensível à diferença entre maiúsculas e minúsculas. Embora o Gitea possa trabalhar com ela, pode haver alguns casos raros que não funcionem como esperado.
self_check.database_collation_case_insensitive=A base de dados está a usar a colação %s, que é insensível à diferença entre maiúsculas e minúsculas. Embora o Forgejo possa trabalhar com ela, pode haver alguns casos raros que não funcionem como esperado.
self_check.database_inconsistent_collation_columns=A base de dados está a usar a colação %s, mas estas colunas estão a usar colações diferentes. Isso poderá causar alguns problemas inesperados.
self_check.database_fix_mysql=Para utilizadores do MySQL/MariaDB, pode usar o comando "forgejo doctor convert" para resolver os problemas de colação. Também pode resolver o problema com comandos SQL "ALTER ... COLLATE ..." aplicados manualmente.
config_summary = Resumo
@ -3943,6 +3947,8 @@ runs.expire_log_message = Os registos foram purgados por serem demasiado antigos
runs.no_workflows.help_no_write_access = Para aprender sobre Forgejo Actions, veja<a target="_blank" rel="noopener noreferrer" href="%s">a documentação</a>.
runs.no_workflows.help_write_access = Não sabe como começar com o Forgejo Actions? Consulte o <a target="_blank" rel="noopener noreferrer" href="%s">início rápido na documentação do utilizador</a> para escrever a sua primeira sequência de trabalho, depois <a target="_blank" rel="noopener noreferrer" href="%s">prepare um executor Forgejo</a> para executar os seus trabalhos.
variables.not_found = Não foi possível encontrar a variável.
[projects]
type-1.display_name=Planeamento individual
type-2.display_name=Planeamento do repositório
@ -4005,7 +4011,7 @@ filepreview.line = Linha %[1]d em %[2]s
filepreview.truncated = A previsão foi truncada
[translation_meta]
test = ok
test = ok :)
[repo.permissions]
code.read = <b>Ler:</b> Aceder e clonar o código-fonte do repositório.

Some files were not shown because too many files have changed in this diff Show more