Merge remote-tracking branch 'upstream/forgejo' into feat/sso-preferred-username
Some checks failed
Integration tests for the release process / release-simulation (push) Has been cancelled
Some checks failed
Integration tests for the release process / release-simulation (push) Has been cancelled
This commit is contained in:
commit
f87a6d8b5a
115 changed files with 2279 additions and 794 deletions
|
@ -2,9 +2,10 @@ root = "."
|
|||
tmp_dir = ".air"
|
||||
|
||||
[build]
|
||||
pre_cmd = ["killall -9 gitea 2>/dev/null || true"] # kill off potential zombie processes from previous runs
|
||||
cmd = "make --no-print-directory backend"
|
||||
bin = "gitea"
|
||||
delay = 1000
|
||||
delay = 2000
|
||||
include_ext = ["go", "tmpl"]
|
||||
include_file = ["main.go"]
|
||||
include_dir = ["cmd", "models", "modules", "options", "routers", "services"]
|
||||
|
|
|
@ -65,6 +65,7 @@ package "code.gitea.io/gitea/models/migrations/base"
|
|||
func MainTest
|
||||
|
||||
package "code.gitea.io/gitea/models/organization"
|
||||
func GetTeamNamesByID
|
||||
func UpdateTeamUnits
|
||||
func (SearchMembersOptions).ToConds
|
||||
func UsersInTeamsCount
|
||||
|
@ -130,6 +131,7 @@ package "code.gitea.io/gitea/models/user"
|
|||
func GetUserAllSettings
|
||||
func DeleteUserSetting
|
||||
func GetUserEmailsByNames
|
||||
func GetUserNamesByIDs
|
||||
|
||||
package "code.gitea.io/gitea/modules/activitypub"
|
||||
func CurrentTime
|
||||
|
|
|
@ -22,7 +22,7 @@ jobs:
|
|||
|
||||
runs-on: docker
|
||||
container:
|
||||
image: ghcr.io/visualon/renovate:37.305.0
|
||||
image: ghcr.io/visualon/renovate:37.316.2
|
||||
|
||||
steps:
|
||||
- name: Load renovate repo cache
|
||||
|
|
3
.gitmodules
vendored
3
.gitmodules
vendored
|
@ -1,3 +0,0 @@
|
|||
[submodule "manual-testing"]
|
||||
path = manual-testing
|
||||
url = https://codeberg.org/forgejo/forgejo-manual-testing
|
9
Makefile
9
Makefile
|
@ -121,7 +121,6 @@ LDFLAGS := $(LDFLAGS) -X "main.ReleaseVersion=$(RELEASE_VERSION)" -X "main.MakeV
|
|||
LINUX_ARCHS ?= linux/amd64,linux/386,linux/arm-5,linux/arm-6,linux/arm64
|
||||
|
||||
ifeq ($(HAS_GO), yes)
|
||||
GO_PACKAGES ?= $(filter-out code.gitea.io/gitea/tests/integration/migration-test code.gitea.io/gitea/tests code.gitea.io/gitea/tests/integration code.gitea.io/gitea/tests/e2e,$(shell $(GO) list ./... | grep -v /vendor/))
|
||||
GO_TEST_PACKAGES ?= $(filter-out $(shell $(GO) list code.gitea.io/gitea/models/migrations/...) $(shell $(GO) list code.gitea.io/gitea/models/forgejo_migrations/...) code.gitea.io/gitea/tests/integration/migration-test code.gitea.io/gitea/tests code.gitea.io/gitea/tests/integration code.gitea.io/gitea/tests/e2e,$(shell $(GO) list ./... | grep -v /vendor/))
|
||||
endif
|
||||
|
||||
|
@ -155,9 +154,9 @@ TAR_EXCLUDES := .git data indexers queues log node_modules $(EXECUTABLE) $(FOMAN
|
|||
GO_DIRS := build cmd models modules routers services tests
|
||||
WEB_DIRS := web_src/js web_src/css
|
||||
|
||||
ESLINT_FILES := web_src/js tools *.config.js tests/e2e
|
||||
ESLINT_FILES := web_src/js tools *.js tests/e2e
|
||||
STYLELINT_FILES := web_src/css web_src/js/components/*.vue
|
||||
SPELLCHECK_FILES := $(GO_DIRS) $(WEB_DIRS) docs/content templates options/locale/locale_en-US.ini .github
|
||||
SPELLCHECK_FILES := $(GO_DIRS) $(WEB_DIRS) docs/content templates options/locale/locale_en-US.ini .github $(wildcard *.go *.js *.md *.yml *.yaml *.toml)
|
||||
|
||||
GO_SOURCES := $(wildcard *.go)
|
||||
GO_SOURCES += $(shell find $(GO_DIRS) -type f -name "*.go" ! -path modules/options/bindata.go ! -path modules/public/bindata.go ! -path modules/templates/bindata.go)
|
||||
|
@ -453,7 +452,7 @@ lint-go-windows:
|
|||
.PHONY: lint-go-vet
|
||||
lint-go-vet:
|
||||
@echo "Running go vet..."
|
||||
@$(GO) vet $(GO_PACKAGES)
|
||||
@$(GO) vet ./...
|
||||
|
||||
.PHONY: lint-editorconfig
|
||||
lint-editorconfig:
|
||||
|
@ -768,7 +767,7 @@ generate-backend: $(TAGS_PREREQ) generate-go
|
|||
.PHONY: generate-go
|
||||
generate-go: $(TAGS_PREREQ)
|
||||
@echo "Running go generate..."
|
||||
@CC= GOOS= GOARCH= $(GO) generate -tags '$(TAGS)' $(GO_PACKAGES)
|
||||
@CC= GOOS= GOARCH= $(GO) generate -tags '$(TAGS)' ./...
|
||||
|
||||
.PHONY: merge-locales
|
||||
merge-locales:
|
||||
|
|
458
RELEASE-NOTES.md
458
RELEASE-NOTES.md
|
@ -1,8 +1,460 @@
|
|||
# Release Notes
|
||||
|
||||
A Forgejo release is published shortly after a Gitea release is published and they have [matching release numbers](https://codeberg.org/forgejo/forgejo/src/branch/forgejo/CONTRIBUTING/RELEASE.md#release-numbering). Additional Forgejo releases may be published to address urgent security issues or bug fixes.
|
||||
A minor or major Forgejo release is published every [three months](https://forgejo.org/docs/latest/user/versions/), with more patch releases in between depending on the severity of the bug and security fixes it contains.
|
||||
|
||||
The Forgejo admin should carefully read the required manual actions before upgrading. A point release (e.g. v1.21.1-0 or v1.21.2-0) does not require manual actions but others might (e.g. v1.20, v1.21).
|
||||
A [patch or minor release](https://semver.org/spec/v2.0.0.html) (e.g. upgrading from v7.0.0 to v7.0.1 or v7.1.0) does not require manual intervention. But [major releases](https://semver.org/spec/v2.0.0.html#spec-item-8) where the first version number changes (e.g. upgrading from v1.21 to v7.0) contain breaking changes and the release notes explain how to deal with them.
|
||||
|
||||
## 7.0.0
|
||||
|
||||
The [complete list of commits](https://codeberg.org/forgejo/forgejo/commits/branch/v7.0/forgejo) included in the `Forgejo v7.0.0` release can be reviewed from the command line with:
|
||||
|
||||
```shell
|
||||
$ git clone https://codeberg.org/forgejo/forgejo/
|
||||
$ git -C forgejo log --oneline --no-merges origin/v1.21/forgejo..origin/v7.0/forgejo
|
||||
```
|
||||
|
||||
* **Breaking changes requiring manual intervention:**
|
||||
* [MySQL 8.0 or PostgreSQL 12](https://codeberg.org/forgejo/forgejo/commit/e94f9fcafdcf284561e7fb33f60156a69c4ad6a5) are the minimum supported versions. The database must be migrated before upgrading. The requirements regarding SQLite did not change.
|
||||
* The `per_page` parameter is [no longer a synonym for `limit`](https://codeberg.org/forgejo/forgejo/commit/0aab2d38a7d91bc8caff332e452364468ce52d9a) in the [/repos/{owner}/{repo}/releases](https://code.forgejo.org/api/swagger/#/repository/repoListReleases) API endpoint.
|
||||
* The date format of the `created` and `last_update` fields of the [`/repos/{owner}/{repo}/push_mirrors`](https://code.forgejo.org/api/swagger/#/repository/repoListPushMirrors) and [/repos/{owner}/{repo}/push_mirrors](https://code.forgejo.org/api/swagger/#/repository/repoAddPushMirror) API endpoint changed [to be timestamps instead of numbers](https://codeberg.org/forgejo/forgejo/commit/0ee7cbf725f45650136be45f8e0f74d395f73b5c).
|
||||
* Labels used [by pprof endpoint](https://forgejo.org/docs/v7.0/admin/config-cheat-sheet/#server-server) have been changed:
|
||||
* `graceful-lifecycle` to `gracefulLifecycle`
|
||||
* `process-type` to `processType`
|
||||
* `process-description` to `processDescription`
|
||||
This allows for those endpoints to be scraped by services requiring prometheus style labels such as [grafana-agent](https://grafana.com/docs/agent/latest/).
|
||||
* The repository description [imposes additional restrictions on what it contains](https://codeberg.org/forgejo/forgejo/commit/1075ff74b5050f671c5f9824ae39390230b3c85d) to prevent abuse. You may use [the v7.0 test instance](https://v7.next.forgejo.org/) to check how it will be modified.
|
||||
* The [Gitea themes were renamed](https://codeberg.org/forgejo/forgejo/commit/023e937141dd891bce3370c869d4db2c60f971ed) and the `[ui].THEMES` setting must be changed as follows:
|
||||
* `gitea` is replaced by `gitea-light`
|
||||
* `arc-green` is replaced by `gitea-dark`
|
||||
* `auto` is replaced by `gitea-auto`
|
||||
* **Breaking changes in the user interface:**
|
||||
Note that the modifications related to CSS, templates or assets (images, fonts, etc.) are not documented here.
|
||||
Although they can be extracted and modified, Forgejo does not provide any guarantee that such changes
|
||||
will be portable from one version to another (even a patch version). See also
|
||||
[the developer documentation about interface customization](https://forgejo.org/docs/v1.21/developer/customization/).
|
||||
* [Update checker setting might change](https://codeberg.org/forgejo/forgejo/pulls/2925). The documentation was listing it as enabled by default, however, for a while it was disabled unless it was explicitly specified in the config or on the installation page. Instances migrated from Gitea also had it disabled due to different default value. Since then Forgejo got a privacy-friendly DNS-based update checking mechanism which is now being enabled by default unless explicitly specified [in the config](https://forgejo.org/docs/v7.0/admin/config-cheat-sheet/#cron---check-for-new-forgejo-versions-cronupdate_checker).
|
||||
* Language statistics for repositories that use `linguist` attributes in `.gitattributes` *may* show different statistics than previously, because Forgejo recognizes more [linguist attributes](https://forgejo.org/docs/v7.0/user/language-detection/) now.
|
||||
* It is [no longer possible to replace the default web editor](https://codeberg.org/forgejo/forgejo/pulls/2916) used to write comments or issues and pull requests with the EasyMDE editor. It is however still available as an alternative to edit releases and wiki pages.
|
||||
* [The list of all repositories and the `New Issue` button are no longer available in the user dashboard](https://codeberg.org/forgejo/forgejo/commit/beb71f5ef6e8074dc744ac995c15f7b5947a3f2e) for issues and pull requests.
|
||||
* **Migration warning**
|
||||
* If the logs show a line like the following, [run doctor convert](https://forgejo.org/docs/v7.0/admin/command-line/#doctor-convert) to fix it.
|
||||
```
|
||||
[W] Current database is using a case-insensitive collation "utf8mb4_general_ci"
|
||||
```
|
||||
* Large instances may experience slow migrations when the database is upgraded to support SHA-256 git repositories. For instance, here are the logs from a test migration of the https://codeberg.org production database:
|
||||
```
|
||||
[I] Migration[286]: Add support for SHA256 git repositories
|
||||
[W] [Slow SQL Query] ALTER TABLE `commit_status` MODIFY COLUMN `context_hash` VARCHAR(64) [] - 3m41.647738396s
|
||||
[W] [Slow SQL Query] ALTER TABLE `comment` MODIFY COLUMN `commit_sha` VARCHAR(64) [] - 1m5.500234133s
|
||||
[W] [Slow SQL Query] ALTER TABLE `release` MODIFY COLUMN `sha1` VARCHAR(64) [] - 22.06241145s
|
||||
```
|
||||
* **Features and enhancements**
|
||||
* Repository settings have been refactored, lifting out the repository unit-related settings to their own page. ([#2221](https://codeberg.org/forgejo/forgejo/pulls/2221))
|
||||
- When additional units can be enabled, an "Add more..." link will be displayed for repository admins. This can be turned off. ([#2533](https://codeberg.org/forgejo/forgejo/pulls/2533))
|
||||
* Repository administrators can [allow anyone to edit the wiki](https://forgejo.org/docs/v7.0/user/wiki/#activation-and-permissions) in the repository Settings. ([#2001](https://codeberg.org/forgejo/forgejo/pulls/2001))
|
||||
* Instance administrators can enable [repository badges](https://forgejo.org/docs/v7.0/user/readme-badges/) in the [configuration file](https://forgejo.org/docs/v7.0/admin/config-cheat-sheet/#badges-badges). This feature depends on a shield generator service such as shields.io, and is disabled by default. ([#2070](https://codeberg.org/forgejo/forgejo/pulls/2070))
|
||||
* Instance administrators can configure the additional clone methods displayed on the repository home view. ([gitea#29320](https://github.com/go-gitea/gitea/pull/29320))
|
||||
* Instance administrators can [assign custom flags to repositories](https://codeberg.org/forgejo/forgejo/pulls/2079). This is disabled by default, and currently requires custom templates to do anything useful with the flags. ([#2079](https://codeberg.org/forgejo/forgejo/pulls/2079) & [#2097](https://codeberg.org/forgejo/forgejo/pulls/2097))
|
||||
* Fallback for [basic repo search using git-grep](https://forgejo.org/docs/v7.0/user/code-search/) when code indexer is disabled ([gitea#29998](https://github.com/go-gitea/gitea/pull/29998))
|
||||
* Repository administrators can disable forking instance-wide by setting the new `[repository].DISABLE_FORKS` setting. ([#2445](https://codeberg.org/forgejo/forgejo/pulls/2445))
|
||||
* Render permalinks to files with a line range by an inline preview in all places where markup is allowed ([#2669](https://codeberg.org/forgejo/forgejo/pulls/2669))
|
||||
* A user can now optionally set their preferred pronouns ([#1518](https://codeberg.org/forgejo/forgejo/pulls/1518)).
|
||||
* [Always enable caches](https://codeberg.org/forgejo/forgejo/commit/e7cb8da2a8310ac167b6f613b283caa3316a7154).
|
||||
* Forgejo now recognizes more [linguist attributes](https://forgejo.org/docs/v7.0/user/language-detection/), making it possible to include documentation in the repository language statistics, for example. ([#2088](https://codeberg.org/forgejo/forgejo/pulls/2088))
|
||||
* When displaying the message to open a pull request from a recently pushed branch, the recently pushed branch now links to the appropriate branch. ([#2141](https://codeberg.org/forgejo/forgejo/pulls/2141))
|
||||
* Users who signed up, but have not activated their accounts yet, are now able to [change their email before activation](https://codeberg.org/forgejo/forgejo/pulls/1891). ([#1891](https://codeberg.org/forgejo/forgejo/pulls/1891))
|
||||
* The "You pushed on branch ...." banner is now displayed for repositories you have a fork of with recently pushed branches too ([#2195](https://codeberg.org/forgejo/forgejo/pulls/2195)), and it will no longer consider branches that share no history with the default branch. ([#2196](https://codeberg.org/forgejo/forgejo/pulls/2196))
|
||||
* Forgejo will now highlight signed tags in a similar way it highlights signed commits. ([#2534](https://codeberg.org/forgejo/forgejo/pulls/2534))
|
||||
* Forgejo gained support for the more recent GitHub-style alert blocks. ([#2348](https://codeberg.org/forgejo/forgejo/pulls/2348))
|
||||
- The older style remains supported too.
|
||||
* [[ACTIONS] Add vars context to cron jobs](https://codeberg.org/forgejo/forgejo/pulls/3059)
|
||||
* [[ACTIONS] Allow viewing the latest Action Run on the web](https://codeberg.org/forgejo/forgejo/pulls/1900)
|
||||
* [[AGIT] Automatically fill in the description](https://codeberg.org/forgejo/forgejo/pulls/2344)
|
||||
* [[API] Add API to get PR by base/head](https://codeberg.org/forgejo/forgejo/pulls/2481)
|
||||
* [[API] commentAssignment() to verify the id belongs](https://codeberg.org/forgejo/forgejo/pulls/2126)
|
||||
* [[API] DELETE /repos/{owner}/{repo}/pulls/{index}/reviews/{id}/comments/{comment}](https://codeberg.org/forgejo/forgejo/pulls/2157)
|
||||
* [[API] endpoint for adding comments to reviews](https://codeberg.org/forgejo/forgejo/pulls/2122)
|
||||
* [[API] GET /repos/{owner}/{repo}/pulls/{index}/reviews/{id}/comments/{comment}](https://codeberg.org/forgejo/forgejo/pulls/2127)
|
||||
* [[API] support for repository flags](https://codeberg.org/forgejo/forgejo/pulls/2097)
|
||||
* [[I18N] Clarify description in deletion modal](https://codeberg.org/forgejo/forgejo/pulls/2488)
|
||||
* [[I18N] Clarify the description of SSH Keys](https://codeberg.org/forgejo/forgejo/pulls/2393)
|
||||
* [[I18N] Data size unit localization](https://codeberg.org/forgejo/forgejo/pulls/2528)
|
||||
* [[I18N] Improve branch select list ui in go templates (gitea#29729)](https://codeberg.org/forgejo/forgejo/pulls/2744)
|
||||
* [[I18N] Improve localization of repo summary](https://codeberg.org/forgejo/forgejo/pulls/2756)
|
||||
* [[I18N] Improve registration / password reset emails](https://codeberg.org/forgejo/forgejo/pulls/2529)
|
||||
* [[I18N] Use correct translations for pull request](https://codeberg.org/forgejo/forgejo/pulls/2260)
|
||||
* [[I18N] Improve translatability of activity heatmap](https://codeberg.org/forgejo/forgejo/pulls/2612)
|
||||
* [[I18N] Improve English locale for admin settings](https://codeberg.org/forgejo/forgejo/pulls/2583)
|
||||
* [I18N] Add plural support: [1](https://codeberg.org/forgejo/forgejo/pulls/2614), [2](https://codeberg.org/forgejo/forgejo/pulls/2695), [3](https://codeberg.org/forgejo/forgejo/pulls/2954), [4](https://codeberg.org/forgejo/forgejo/pulls/3031)
|
||||
* [I18N] General improvements to English locale: [1](https://codeberg.org/forgejo/forgejo/pulls/2307), [2](https://codeberg.org/forgejo/forgejo/pulls/2437), [3](https://codeberg.org/forgejo/forgejo/pulls/2492), [4](https://codeberg.org/forgejo/forgejo/pulls/2610), [5](https://codeberg.org/forgejo/forgejo/pulls/2703), [6](https://codeberg.org/forgejo/forgejo/pulls/2941).
|
||||
* [[I18N] Allow custom repo size format](https://codeberg.org/forgejo/forgejo/pulls/2974)
|
||||
* [[PACKAGES] nuget basic manifest download](https://codeberg.org/forgejo/forgejo/pulls/2222)
|
||||
* [[UI] Add label filters in organization issues dashboard](https://codeberg.org/forgejo/forgejo/pulls/2944)
|
||||
* [[UI] Allow users to hide all "Add more units..." hints](https://codeberg.org/forgejo/forgejo/pulls/2533)
|
||||
* [[UI] Display tag name as title for a tag with no release [gitea]](https://codeberg.org/forgejo/forgejo/pulls/2547)
|
||||
* [[UI] Enable ambiguous character detection in configured contexts](https://codeberg.org/forgejo/forgejo/pulls/2427)
|
||||
* [[UI] Improve display of 404/500 error pages](https://codeberg.org/forgejo/forgejo/pulls/2466)
|
||||
* [[UI] Improve look of user profiles](https://codeberg.org/forgejo/forgejo/pulls/2875)
|
||||
* [[UI] Include a branch link in the recently pushed banner](https://codeberg.org/forgejo/forgejo/pulls/2141)
|
||||
* [[UI] Offer to remove WIP: prefix in sidebar](https://codeberg.org/forgejo/forgejo/pulls/2660)
|
||||
* [[UI] Port console colors](https://codeberg.org/forgejo/forgejo/pulls/2419)
|
||||
* [[UI] pulls "Edit File" button in "Files Changed" tab](https://codeberg.org/forgejo/forgejo/pulls/1992)
|
||||
* [[UI] Remove add organization on dashboard switcher](https://codeberg.org/forgejo/forgejo/pulls/2895)
|
||||
* [[UI] Restrict file size of blame operation](https://codeberg.org/forgejo/forgejo/pulls/2395)
|
||||
* [[UI] Show follow symlink button](https://codeberg.org/forgejo/forgejo/pulls/2530)
|
||||
* [[UI] split code conversations in diff tab](https://codeberg.org/forgejo/forgejo/pulls/2306)
|
||||
* [[UI] Update look of repo/org tabs on homepage](https://codeberg.org/forgejo/forgejo/pulls/2593)
|
||||
* [[UI] Visual separation between types of attachments](https://codeberg.org/forgejo/forgejo/pulls/2899)
|
||||
* [[UI] [AGIT] Add AGit label to AGit-created PRs](https://codeberg.org/forgejo/forgejo/pulls/2444)
|
||||
* [[UI] [AGIT] Add link to docs and tooltip to label](https://codeberg.org/forgejo/forgejo/pulls/2499)
|
||||
* [Implement commit mail selection for other Git operations](https://codeberg.org/forgejo/forgejo/pulls/2383)
|
||||
* [Improved Linguist compatibility](https://codeberg.org/forgejo/forgejo/pulls/2088)
|
||||
* [improve nuget nuspec api](https://codeberg.org/forgejo/forgejo/pulls/2996)
|
||||
* [Log SQL queries when the database return error](https://codeberg.org/forgejo/forgejo/pulls/2140)
|
||||
* [New doctor check: fix-push-mirrors-without-git-remote](https://codeberg.org/forgejo/forgejo/pulls/1853)
|
||||
* [New route to view latest run of specific workflows](https://codeberg.org/forgejo/forgejo/pulls/2304)
|
||||
* [Check for Commit in opengraph](https://codeberg.org/forgejo/forgejo/pulls/2094)
|
||||
* [Check if commit is already present in target branch](https://codeberg.org/forgejo/forgejo/pulls/2450)
|
||||
* [Configure if protected branch rule should apply to admins](https://codeberg.org/forgejo/forgejo/pulls/2867)
|
||||
* [Count downloads for tag archives](https://codeberg.org/forgejo/forgejo/pulls/2976)
|
||||
* [depguard sha256-simd](https://codeberg.org/forgejo/forgejo/pulls/2234)
|
||||
* [Don't consider orphan branches as recently pushed](https://codeberg.org/forgejo/forgejo/pulls/2196)
|
||||
* [extend webfinger to respond to profile page URIs](https://codeberg.org/forgejo/forgejo/pulls/2883)
|
||||
* [Highlight signed tags like signed commits](https://codeberg.org/forgejo/forgejo/pulls/2534)
|
||||
* [Allow changing the email address before activation](https://codeberg.org/forgejo/forgejo/pulls/1891)
|
||||
* [Allow changing the repo Wiki branch to main](https://codeberg.org/forgejo/forgejo/pulls/2264)
|
||||
* [Allow forking without a repo ID](https://codeberg.org/forgejo/forgejo/pulls/2310)
|
||||
* [Allow instance-wide disabling of forking](https://codeberg.org/forgejo/forgejo/pulls/2445)
|
||||
* [Allow non-explicit push options](https://codeberg.org/forgejo/forgejo/pulls/2984)
|
||||
* [Allow to exclude files in dump](https://codeberg.org/forgejo/forgejo/pulls/2876)
|
||||
* [add bucket lookup type](https://codeberg.org/forgejo/forgejo/pulls/2482)
|
||||
* [Add download URL for executable files](https://codeberg.org/forgejo/forgejo/pulls/1839)
|
||||
* [Add gitignore template for Janet projects](https://codeberg.org/forgejo/forgejo/pulls/2557)
|
||||
* [add optional storage init to doctor commands](https://codeberg.org/forgejo/forgejo/pulls/3034)
|
||||
* [Add rel="nofollow" to issue filter links](https://codeberg.org/forgejo/forgejo/pulls/2367)
|
||||
* [Add support for shields.io-based badges](https://codeberg.org/forgejo/forgejo/pulls/2070)
|
||||
* [Add Zig gitignore](https://codeberg.org/forgejo/forgejo/pulls/2352)
|
||||
* [Recognize SSH signed tags too](https://codeberg.org/forgejo/forgejo/pulls/2520)
|
||||
* [Repository flags](https://codeberg.org/forgejo/forgejo/pulls/2079)
|
||||
* [support `.forgejo` dir for issue and PR templates](https://codeberg.org/forgejo/forgejo/pulls/2290)
|
||||
* [Support Include/Exclude Filters for Grep](https://codeberg.org/forgejo/forgejo/pulls/3058)
|
||||
* [Use 'Text' instead of 'Plaintext'](https://codeberg.org/forgejo/forgejo/pulls/2833)
|
||||
* [Render code tags in commit messages](https://codeberg.org/forgejo/forgejo/commit/3ccb0c2512cb551943945aaa3f2bd0b1e2abd3b8).
|
||||
* [Refactor markdown attention render](https://codeberg.org/forgejo/forgejo/commit/ec2201a3da5f18e55bfc0a54114ac935804f4ef8).
|
||||
* [Add default board to new projects, remove uncategorized pseudo-board](https://codeberg.org/forgejo/forgejo/commit/8ffb9c6fb1571a1221978440f108911057df25db).
|
||||
* [Add more stats tables](https://codeberg.org/forgejo/forgejo/commit/926367fe1d778fe7c9f5bc6b8e8c514b619ef038).
|
||||
* [Improve branch select list ui in go templates](https://codeberg.org/forgejo/forgejo/commit/729849a2fd026adbb91e3ff3259290f61bd919f0).
|
||||
* [Update allowed attachment types](https://codeberg.org/forgejo/forgejo/commit/04b79bb48b490644c46e58da46af4b62a40e5e03).
|
||||
* [Completely style the webkit autofill](https://codeberg.org/forgejo/forgejo/commit/9916f3ed64a715fb9a31a0fcad6452276e275615).
|
||||
* [Set user's 24h preference from their current OS locale](https://codeberg.org/forgejo/forgejo/commit/427ab550a6a35e7369bc1b33a188bb3030c32ec0).
|
||||
* [Make wiki default branch name changeable](https://codeberg.org/forgejo/forgejo/commit/7ea8993a0e342e7a30cb2da03216697b4819935a).
|
||||
* [Make admin pages wider because of left sidebar added and some tables become too narrow](https://codeberg.org/forgejo/forgejo/commit/145bebc829c03cbb078e518d7364d27bcf60d96c).
|
||||
* [Make PR form use toast to show error message](https://codeberg.org/forgejo/forgejo/commit/221a28436a080447f429fa2089d264e56f4980e2).
|
||||
* [Rename Action.GetDisplayName to GetActDisplayName](https://codeberg.org/forgejo/forgejo/commit/be9189eddc84e942710b16b1c8c54c10aad01b63).
|
||||
* [Unify search boxes](https://codeberg.org/forgejo/forgejo/commit/847f03b6a65ee251bf764f54f6114737346a43b6).
|
||||
* [Detect broken git hooks](https://codeberg.org/forgejo/forgejo/commit/963df8290784d82385f7e8ad9f5c9abfd2fa2860).
|
||||
* [Filter for default-branch selection](https://codeberg.org/forgejo/forgejo/commit/1090734255d70deb9886de2c1a8bb971096223ee).
|
||||
* [Include resource state events in Gitlab downloads](https://codeberg.org/forgejo/forgejo/commit/bc7a247b9ea68643e3c59d4b4376dea097ffcc68).
|
||||
* [Properly migrate target branch change GitLab comment](https://codeberg.org/forgejo/forgejo/commit/f0acc71ba13713f07602294b4a33028125343d47).
|
||||
* [Recolor dark theme to blue shade](https://codeberg.org/forgejo/forgejo/commit/ff581d5a2415f7a3321fa6ba656ae0e972674d6c).
|
||||
* [Unify organizations header](https://codeberg.org/forgejo/forgejo/commit/4b494d341f3142c066bc5b2b3cfd50f924d64fd3).
|
||||
* [Auto-update the system status in admin dashboard](https://codeberg.org/forgejo/forgejo/commit/4f050f358a15dd51903e01b330a5419b2ac06693).
|
||||
* [Show more settings for empty repositories](https://codeberg.org/forgejo/forgejo/commit/b03af9efb275f935bb265c7f031225caaafefaff).
|
||||
* [Downscale pasted PNG images based on metadata](https://codeberg.org/forgejo/forgejo/commit/b3f2447bc4b6a7220da748cc6eb24bd5568bee7c).
|
||||
* [Show `View at this point in history` for every commit](https://codeberg.org/forgejo/forgejo/commit/27bc2b9d9597de89d2c6b68581c6729bb16a4572).
|
||||
* [Drop "@" from email sender to avoid spam filters](https://codeberg.org/forgejo/forgejo/commit/9a1d5c549cb6d32219647ea1a771b8a82d5ac89f).
|
||||
* [Allow non-admin users to delete review requests](https://codeberg.org/forgejo/forgejo/commit/77c56e29ded5665bdc09d0a568159aa7127b44b1).
|
||||
* [Some performance optimization on dashboard and issues page](https://codeberg.org/forgejo/forgejo/commit/d996c5d5179c99855e69156a034eca055e9329a4).
|
||||
* [Improve user search display name](https://codeberg.org/forgejo/forgejo/commit/c3e462921ee31536e59b37e654ed20e92a37ffe6).
|
||||
* [Fix UI Spacing Errors in mirror settings](https://codeberg.org/forgejo/forgejo/commit/64faecefe10613840709a68c1b8b708115d69d6e).
|
||||
* [Include username in email headers](https://codeberg.org/forgejo/forgejo/commit/360b3fd17c3315ad9ad9c4e6ac02eda73f48d8ae).
|
||||
* [Also match weakly validated ETags](https://codeberg.org/forgejo/forgejo/commit/28fe3db1fb0f89bcb55829ced33c1282f85f6e97).
|
||||
* [Propagate install_if and provider_priority to APKINDEX](https://codeberg.org/forgejo/forgejo/commit/2da233ad8be107de29190720f1c30199410fe0cd).
|
||||
* [Fix display latest sync time for pull mirrors on the repo page](https://codeberg.org/forgejo/forgejo/commit/4674aea25b54baf08594c54f061dee9e44190f02).
|
||||
* [Remove trust model selection from repository creation on web page because it can be changed in settings later](https://codeberg.org/forgejo/forgejo/commit/c08d263a1900aa5ee92f56af8ad1c7a2697d02e1).
|
||||
* [Add ability to see open and closed issues at the same time](https://codeberg.org/forgejo/forgejo/commit/2c3da59e275b69ebf984bb70954f42a7bcb0b49d).
|
||||
* [Move sign in labels to be above inputs](https://codeberg.org/forgejo/forgejo/commit/4af0944b2604dd2b2e413864492135faea097298).
|
||||
* [Move the captcha script loader to the template which really needs it](https://codeberg.org/forgejo/forgejo/commit/a04f8c0f81f55a8b927ce0fad8127db39396f892).
|
||||
* [Display latest sync time for pull mirrors on the repo page](https://codeberg.org/forgejo/forgejo/commit/2d343f8987025015f5b61e328cc9e45082e6d3f2).
|
||||
* [Show in Web UI if file is vendored and generated](https://codeberg.org/forgejo/forgejo/commit/7ed18566e10b298309dcc99d97447cb1932ae09a).
|
||||
* [Add orphaned topic consistency check](https://codeberg.org/forgejo/forgejo/commit/e02095c5b6e04f70ae6562f5aee169f7ee93cf7a).
|
||||
* [Convert to url auth to header auth in tests](https://codeberg.org/forgejo/forgejo/commit/838db2f8911690fa2115c6827ed73687db71bef1).
|
||||
* [Add option to set language in admin user view](https://codeberg.org/forgejo/forgejo/commit/318634ef74dc0a9c285991692e72d3df90b8583c).
|
||||
* [Fix incorrect run order of action jobs](https://codeberg.org/forgejo/forgejo/commit/f4561c44b1cad700bf41537eb4db487fff34f6c9).
|
||||
* [Add missing exclusive in advanced label options](https://codeberg.org/forgejo/forgejo/commit/77506c6f6cbfa5c15d8373743415f47b2adb404d).
|
||||
* [Add combined index for issue_user.uid and issue_id](https://codeberg.org/forgejo/forgejo/commit/e08f1a9cbd582c73918e401eeba36261627f44a7).
|
||||
* [Add edit option for README.md](https://codeberg.org/forgejo/forgejo/commit/08552f0076204b99258f9135c77a962c302521dc).
|
||||
* [Fix link to `Code` tab on wiki commits](https://codeberg.org/forgejo/forgejo/commit/709a376c518d0cfde10bb911b32fd0ea82c67b52).
|
||||
* [Remove autofocus in search box](https://codeberg.org/forgejo/forgejo/commit/eae555ff2395cc1ad178f3a977d83742ae73e1d9).
|
||||
* [Allow to set explore page default sort](https://codeberg.org/forgejo/forgejo/commit/16ba16dbe951763cfc026b7351e26009d1a25fdc).
|
||||
* [Improve PR diff view on mobile](https://codeberg.org/forgejo/forgejo/commit/49dddd87b19aebe83e1c54a455e62529a19f61b4).
|
||||
* [Properly migrate automatic merge GitLab comments](https://codeberg.org/forgejo/forgejo/commit/542badbb76408c17ce6692e99fff680bee69face).
|
||||
* [Display issue task list on project cards](https://codeberg.org/forgejo/forgejo/commit/4776fde9e1caa7cee5671715144a668e19a0323c).
|
||||
* [Add Index to pull_auto_merge.doer_id](https://codeberg.org/forgejo/forgejo/commit/c8602a8dfa05f653e7de8ed2e677c8967b8688f5).
|
||||
* [Fix display member unit in the menu bar if there are no hidden members in public org](https://codeberg.org/forgejo/forgejo/commit/0e021cd33ee3eb3d8f204bd075e2597b7ec8b391).
|
||||
* [List all Debian package versions in `Packages`](https://codeberg.org/forgejo/forgejo/commit/b36e2ca4195298d2e4516e3022b953543f62f470).
|
||||
* [Allow pull requests Manually Merged option to be used by non-admins](https://codeberg.org/forgejo/forgejo/commit/1756e30e102d079f8425aa2061ef80fd36c2e57d).
|
||||
* [Only show diff file tree when more than one file changed](https://codeberg.org/forgejo/forgejo/commit/572f0963edc71239634ee782a3c69213479f34ba).
|
||||
* [Show placeholder email in privacy popup](https://codeberg.org/forgejo/forgejo/commit/31f8880bc252a25075f8752e2722b316c6e46ec7).
|
||||
* [Revamp repo header](https://codeberg.org/forgejo/forgejo/commit/7d62615513b8985360de497e9a051b51ca0faaf2).
|
||||
* [Add link to members and repositories at teams page](https://codeberg.org/forgejo/forgejo/commit/4f4ddcf3c593b474846d40e47b4351d3deb39202).
|
||||
* [Add link for repositories README file](https://codeberg.org/forgejo/forgejo/commit/7210f23fa0f11da093b307029d7ab91ed40807fb).
|
||||
* [Add `must-change-password` cli parameter](https://codeberg.org/forgejo/forgejo/commit/9bea276055edc9527e3d6d66df3bbf0d20326f8b).
|
||||
* [Unify password changing and invalidate auth tokens](https://codeberg.org/forgejo/forgejo/commit/688d4a1f719d2df4d2626453f4bc042c1874a375).
|
||||
* [Add slow SQL query warning](https://codeberg.org/forgejo/forgejo/commit/664192767c41b9d0759bcc3915c7bd6ccecc52ae).
|
||||
* [Pre-register OAuth application for tea](https://codeberg.org/forgejo/forgejo/commit/a825cc0f3423f0a5c8157c436a0c7b489ef536c1).
|
||||
* [Differentiate between `push` and `pull` `mirror sync in progress`](https://codeberg.org/forgejo/forgejo/commit/e709bc199fe33456c4ecd1cd28029bd31b529832).
|
||||
* [Cargo package - Fix missing domain in cargo sparse url](https://codeberg.org/forgejo/forgejo/commit/a112cf34d391cc04770021f9ffaa29e383cb9d51).
|
||||
* [Link to file from its history](https://codeberg.org/forgejo/forgejo/commit/33de64cb21505259338e393ef0d15ccb0f757475).
|
||||
* [Add a shortcut to user's profile page to admin user details](https://codeberg.org/forgejo/forgejo/commit/e96e440b8bde5516ffc7bba42691e26084a96588).
|
||||
* [Doctor: delete action entries without existing user](https://codeberg.org/forgejo/forgejo/commit/15fa0383fb5dd9ad1702dbc34ba7100c0cdbcc8c).
|
||||
* [Add anchor to review types](https://codeberg.org/forgejo/forgejo/commit/89c9a498fdd6184df8afda8b5b488462e65b9e71).
|
||||
* [Show total TrackedTime on issue/pull/milestone lists](https://codeberg.org/forgejo/forgejo/commit/adbc995c347e158a56264f2488997d7d59a4dd8b).
|
||||
* [Improve commit record's ui in comment list](https://codeberg.org/forgejo/forgejo/commit/ed1798f66d30e3755f01e24f8cb4aa5e8b6628a0).
|
||||
* [Don't show new pr button when page is not compare pull](https://codeberg.org/forgejo/forgejo/commit/b693611b35c5ae17cfc820bc3e731608a5251464).
|
||||
* [Add `Hide/Show all checks` button to commit status check](https://codeberg.org/forgejo/forgejo/commit/dcb648ee71853073d54e8a6e107b764212ede58e).
|
||||
* [Improvements of releases list and tags list](https://codeberg.org/forgejo/forgejo/commit/3fcad582c9b9bfe66f4a346652f82b1aaf18430d).
|
||||
* [Support pasting URLs over markdown text](https://codeberg.org/forgejo/forgejo/commit/45112876766cb81ed7edd2b72a3ab93e6deab8bb).
|
||||
* [Customizable "Open with" applications for repository clone](https://codeberg.org/forgejo/forgejo/commit/44221a3cd747a01d55093b15a12bf053b534da35).
|
||||
* [Allow options to disable user deletion from the interface on app.ini](https://codeberg.org/forgejo/forgejo/commit/767e9634d3d02acab27f05e1783391c9c7f6292e).
|
||||
* [Extend issue template yaml engine](https://codeberg.org/forgejo/forgejo/commit/ff8f7a7a0d1d0f57113a6ad8b499f7c1094288f5).
|
||||
* [Filter Repositories by type](https://codeberg.org/forgejo/forgejo/commit/83e04328dfff3b09e5d28dd972ebee0865f96b0e).
|
||||
* [Implement code frequency graph](https://codeberg.org/forgejo/forgejo/commit/f097799953c5f510b7e3314f1e3e115761f207d0).
|
||||
* [Implement recent commits graph](https://codeberg.org/forgejo/forgejo/commit/428008ac19185125b7cb1e3d379254d7b1932529).
|
||||
* [Show commit status for releases](https://codeberg.org/forgejo/forgejo/commit/369fe5696697cef33a188d9b985ac4b9824a4bdf).
|
||||
* [Actions Artifacts v4 backend](https://codeberg.org/forgejo/forgejo/commit/66632c4958041abdffe6adafc278d34ef515c44f).
|
||||
* [Add merge style `fast-forward-only`](https://codeberg.org/forgejo/forgejo/commit/83123b493f3ae25d07d81c86b1a78afe1c17db53).
|
||||
* [Retarget depending pulls when the parent branch is deleted](https://codeberg.org/forgejo/forgejo/commit/49eb16867728913d1eb2ced96e0b0b0a358f6ebe).
|
||||
* [Add global setting how timestamps should be rendered](https://codeberg.org/forgejo/forgejo/commit/cdc33b29a012e61b42f192d79f9486fa8e21b2ed).
|
||||
* [Add skip ci functionality](https://codeberg.org/forgejo/forgejo/commit/816e46ee7ce4b2649479554a940ecbe1cc505a3d)
|
||||
* [Show latest commit for file](https://codeberg.org/forgejo/forgejo/commit/885cc32b14584ee2d01009768895b7a776441504).
|
||||
* [Allow to sync tags from admin dashboard](https://codeberg.org/forgejo/forgejo/commit/4567a3a1ad0490d9077102e0e7b5de35790e5803).
|
||||
* [Add Profile Readme for Organisations](https://codeberg.org/forgejo/forgejo/commit/603573366a203efae06f818a0b220be964cdac21).
|
||||
* [Implement contributors graph](https://codeberg.org/forgejo/forgejo/commit/e9be8b25ae57189c4b29eaa393a397cf634d21d7).
|
||||
* [Artifact deletion in actions ui](https://codeberg.org/forgejo/forgejo/commit/c551d3f3ab13379b0740fc45bc4dfc8f2fb84e16).
|
||||
* [Add API routes to get runner registration token](https://codeberg.org/forgejo/forgejo/commit/baf0d402d9cb47849394202fcfc7c2e23b0faac3).
|
||||
* [Add support for forking single branch](https://codeberg.org/forgejo/forgejo/commit/5e02e3b7ee8294e2ec94968ece9af56bf1aa1534).
|
||||
* [Add support for sha256 repositories](https://codeberg.org/forgejo/forgejo/commit/d68a613ba8fd860863a3465b5b5945b191b87b25).
|
||||
* [Add admin API route for managing user's badges](https://codeberg.org/forgejo/forgejo/commit/82b7de1360870db7a8b368a3f80ede887e32e128).
|
||||
* **Bug fixes:**
|
||||
* The repository home view will no longer redirect to external units. ([#2064](https://codeberg.org/forgejo/forgejo/pulls/2064))
|
||||
* User and Organization `.profile` repositories now search for a `README.md` file case insensitively. ([#2090](https://codeberg.org/forgejo/forgejo/pulls/2090))
|
||||
* When viewing a file, the RSS feed link is only displayed when there is an RSS feed provided for the context: when viewing a file on a branch. ([#2103](https://codeberg.org/forgejo/forgejo/pulls/2103))
|
||||
* Repository topic searches are now correctly paged, which should make topic management on larger instances orders of magnitudes faster. ([#2060](https://codeberg.org/forgejo/forgejo/pulls/2060))
|
||||
* Mentioning a user in a comment or similar place ignores apostrophes now. ([#2485](https://codeberg.org/forgejo/forgejo/pulls/2485))
|
||||
* Setting the `[repository].DISABLE_STARS` setting to `true` disables the functionality completely, rather than just hiding it from the user interface.
|
||||
* Forking a repository is now available at a predictable URL, and does not require knowing the repository id. ([#2310](https://codeberg.org/forgejo/forgejo/pulls/2310))
|
||||
* Issue and pull request templates can now be placed in a `.forgejo` directory, like workflows. ([#2290](https://codeberg.org/forgejo/forgejo/pulls/2290))
|
||||
* [[A11Y] Fix accessibility and translatability of repo explore counters](https://codeberg.org/forgejo/forgejo/pulls/2862)
|
||||
* [[A11Y] Focus styling and fix Watch/Unwatch buttons](https://codeberg.org/forgejo/forgejo/pulls/2379)
|
||||
* [[A11Y] Label Stars/Forks links in repo explore](https://codeberg.org/forgejo/forgejo/pulls/2634)
|
||||
* [[A11Y] Taborder in repo explore](https://codeberg.org/forgejo/forgejo/pulls/2636)
|
||||
* [[ACTIONS] add proper payload to scheduled events](https://codeberg.org/forgejo/forgejo/pulls/2015)
|
||||
* [[ACTIONS] Do not update PRs based on events that happened before they existed](https://codeberg.org/forgejo/forgejo/pulls/2932)
|
||||
* [[ACTIONS] GetScheduledMergeByPullID may involve a system user](https://codeberg.org/forgejo/forgejo/pulls/1908)
|
||||
* [[ACTIONS] Link to Workflow in View](https://codeberg.org/forgejo/forgejo/pulls/1866)
|
||||
* [[ACTIONS] the ref of a scheduled action is always the default branch](https://codeberg.org/forgejo/forgejo/pulls/1941)
|
||||
* [[API] Adjust name of operation](https://codeberg.org/forgejo/forgejo/pulls/2189)
|
||||
* [[API] `/api/v1/{owner}/{repo}/issue_templates`](https://codeberg.org/forgejo/forgejo/pulls/2292)
|
||||
* [[API] Document correct status code for creating a tag](https://codeberg.org/forgejo/forgejo/pulls/2201)
|
||||
* [[API] /api/forgejo/v1/version auth check](https://codeberg.org/forgejo/forgejo/pulls/2582)
|
||||
* [[API] inconsistencies](https://codeberg.org/forgejo/forgejo/pulls/2182)
|
||||
* [[API] /issues/search endpoint](https://codeberg.org/forgejo/forgejo/pulls/2020)
|
||||
* [[API] Make HTTPS schema default for Swagger](https://codeberg.org/forgejo/forgejo/pulls/1896)
|
||||
* [[I18N] Add missing translation for more_items](https://codeberg.org/forgejo/forgejo/pulls/2828)
|
||||
* [[I18N] Eliminate wrapping quotes in English locale](https://codeberg.org/forgejo/forgejo/pulls/2467)
|
||||
* [[I18N] English fixes and improvements](https://codeberg.org/forgejo/forgejo/pulls/2631)
|
||||
* [[I18N] Fix milestone sorting translation keys](https://codeberg.org/forgejo/forgejo/pulls/2644)
|
||||
* [[I18N] Use correct translation on closed milestones](https://codeberg.org/forgejo/forgejo/pulls/2957)
|
||||
* [[I18N] Use new translation key](https://codeberg.org/forgejo/forgejo/pulls/2760)
|
||||
* [[PACKAGES] Delete redundant snap packaging recipe](https://codeberg.org/forgejo/forgejo/pulls/2693)
|
||||
* [[PACKAGES] Fix Alpine Registry packages with noarch not being found](https://codeberg.org/forgejo/forgejo/pulls/2285)
|
||||
* [[PACKAGES] Generate install if condition for Alpine](https://codeberg.org/forgejo/forgejo/pulls/2176)
|
||||
* [[PACKAGES] Packagist webhook: support all events](https://codeberg.org/forgejo/forgejo/pulls/2646)
|
||||
* [[PACKAGES] Fix for PyPi Registry PEP 503 Compliance](https://codeberg.org/forgejo/forgejo/pulls/3197)
|
||||
* [[UI] Adjust the signed tag verification line](https://codeberg.org/forgejo/forgejo/pulls/2966)
|
||||
* [[UI] Better color for labels/counters](https://codeberg.org/forgejo/forgejo/pulls/2935)
|
||||
* [[UI] Better number for UserCards pagination](https://codeberg.org/forgejo/forgejo/pulls/2584)
|
||||
* [[UI] Center icon and callout text](https://codeberg.org/forgejo/forgejo/pulls/3010)
|
||||
* [[UI] Consistent styling for Sort filter](https://codeberg.org/forgejo/forgejo/pulls/2920)
|
||||
* [[UI] Disable the RSS feed in file view for non-branches](https://codeberg.org/forgejo/forgejo/pulls/2103)
|
||||
* [[UI] Disable 'View at this point in history' for wikis](https://codeberg.org/forgejo/forgejo/pulls/2999)
|
||||
* [[UI] Display error message if doer is unable to fork](https://codeberg.org/forgejo/forgejo/pulls/2649)
|
||||
* [[UI] Don't use `<br />` in alert block](https://codeberg.org/forgejo/forgejo/pulls/2741)
|
||||
* [[UI] Fix admin layout](https://codeberg.org/forgejo/forgejo/pulls/3087)
|
||||
* [[UI] Fix crash in issue forms](https://codeberg.org/forgejo/forgejo/pulls/3012)
|
||||
* [[UI] Fix Ctrl+Enter on submitting review comment](https://codeberg.org/forgejo/forgejo/pulls/2370)
|
||||
* [[UI] Fix diff patch operation in web UI](https://codeberg.org/forgejo/forgejo/pulls/2449)
|
||||
* [[UI] Fixes for project selector in sidebar](https://codeberg.org/forgejo/forgejo/pulls/2608)
|
||||
* [[UI] Fix must-change-password help dialog](https://codeberg.org/forgejo/forgejo/pulls/2676)
|
||||
* [[UI] Fix relative links on orgmode](https://codeberg.org/forgejo/forgejo/pulls/2385)
|
||||
* [[UI] Fix selector inner radius](https://codeberg.org/forgejo/forgejo/pulls/2860)
|
||||
* [[UI] Fix tone of callout boxes for Forgejo dark](https://codeberg.org/forgejo/forgejo/pulls/3085)
|
||||
* [[UI] Fix tooltip for 1000+ stars/forks](https://codeberg.org/forgejo/forgejo/pulls/3147)
|
||||
* [[UI] include hostname in admin panel URL in new user emails](https://codeberg.org/forgejo/forgejo/pulls/1940)
|
||||
* [[UI] Increase contrast of code block](https://codeberg.org/forgejo/forgejo/pulls/2874)
|
||||
* [[UI] Limit amount of javascript errors being shown](https://codeberg.org/forgejo/forgejo/pulls/2175)
|
||||
* [[UI] Make settings tab not active when on repository "Add units" tab](https://codeberg.org/forgejo/forgejo/pulls/2524)
|
||||
* [[UI] Make write and preview tabs interactive](https://codeberg.org/forgejo/forgejo/pulls/2681)
|
||||
* [[UI] New issue button position consistency](https://codeberg.org/forgejo/forgejo/pulls/2845)
|
||||
* [[UI] Fix orgmode link resolver for text descriptions](https://codeberg.org/forgejo/forgejo/pulls/2276)
|
||||
* [[UI] Preview: set font-size on preview content](https://codeberg.org/forgejo/forgejo/pulls/2349)
|
||||
* [[UI] Fix primary button background inconsistency](https://codeberg.org/forgejo/forgejo/pulls/3002)
|
||||
* [[UI] Fix regression of issue edit not working](https://codeberg.org/forgejo/forgejo/pulls/3043)
|
||||
* [[UI] Fix relative links rendering](https://codeberg.org/forgejo/forgejo/pulls/2166)
|
||||
* [[UI] Remember topic only in repo search](https://codeberg.org/forgejo/forgejo/pulls/2575)
|
||||
* [[UI] Remove min-height from wiki elements](https://codeberg.org/forgejo/forgejo/pulls/2080)
|
||||
* [[UI] Render emojis in labels in issue info popup](https://codeberg.org/forgejo/forgejo/pulls/2888)
|
||||
* [[UI] Render correct label link](https://codeberg.org/forgejo/forgejo/pulls/3187)
|
||||
* [[UI] Render inline file permalinks](https://codeberg.org/forgejo/forgejo/pulls/2669)
|
||||
* [[UI] Fix repo badges when the label or text contains dashes](https://codeberg.org/forgejo/forgejo/pulls/2711)
|
||||
* [[UI] Fix repo unarchivation button](https://codeberg.org/forgejo/forgejo/pulls/2550)
|
||||
* [[UI] Restrict when to make link absolute in markdown](https://codeberg.org/forgejo/forgejo/pulls/2403)
|
||||
* [[UI] Revert darker tone on labels](https://codeberg.org/forgejo/forgejo/pulls/2881)
|
||||
* [[UI] Simplify converting struct to map in admin stats](https://codeberg.org/forgejo/forgejo/pulls/2442)
|
||||
* [[UI] Fix the Fork button in repo headers](https://codeberg.org/forgejo/forgejo/pulls/2495)
|
||||
* [[UI] Use correct logout URL](https://codeberg.org/forgejo/forgejo/pulls/2475)
|
||||
* [[UI] Use separate keys for tabs on login screen](https://codeberg.org/forgejo/forgejo/pulls/2630)
|
||||
* [[UI] "view file" button in diff compare view](https://codeberg.org/forgejo/forgejo/pulls/3046)
|
||||
* [add Cache-Control header for health-check](https://codeberg.org/forgejo/forgejo/pulls/3060)
|
||||
* [add max idle time setting for db connections](https://codeberg.org/forgejo/forgejo/pulls/2418)
|
||||
* [Allow `'s` in mentions](https://codeberg.org/forgejo/forgejo/pulls/2485)
|
||||
* [Avoid `WHERE IN` for comment migration query](https://codeberg.org/forgejo/forgejo/pulls/1961)
|
||||
* [Cleanup characters forbidden on Windows from test fixture filenames](https://codeberg.org/forgejo/forgejo/pulls/2178)
|
||||
* [Correct changed files for CODEOWNERS](https://codeberg.org/forgejo/forgejo/pulls/2507)
|
||||
* [Correct default licenses to work as desired](https://codeberg.org/forgejo/forgejo/pulls/1888)
|
||||
* [Detect protected branch on branch rename](https://codeberg.org/forgejo/forgejo/pulls/2811)
|
||||
* [Disabling Stars should disable the routes too](https://codeberg.org/forgejo/forgejo/pulls/2471)
|
||||
* [doctor: Don't say All done when no checks were run](https://codeberg.org/forgejo/forgejo/pulls/1907)
|
||||
* [Do not allow deletion of internal references](https://codeberg.org/forgejo/forgejo/pulls/2834)
|
||||
* [Don't color dot literal color names](https://codeberg.org/forgejo/forgejo/pulls/2905)
|
||||
* [Don't delete inactive emails explicitly](https://codeberg.org/forgejo/forgejo/pulls/2880)
|
||||
* [Don't overwrite protected branch accidentally](https://codeberg.org/forgejo/forgejo/pulls/2473)
|
||||
* [Don't redirect the repo to external units](https://codeberg.org/forgejo/forgejo/pulls/2064)
|
||||
* [Don't remove builtin OAuth2 applications](https://codeberg.org/forgejo/forgejo/pulls/3067)
|
||||
* [Ensure `HasIssueContentHistory` takes into account `comment_id`](https://codeberg.org/forgejo/forgejo/pulls/2518)
|
||||
* [Find README.md for user profiles case insensitively](https://codeberg.org/forgejo/forgejo/pulls/2090)
|
||||
* [Fix header name in swagger response](https://codeberg.org/forgejo/forgejo/pulls/2526)
|
||||
* [Fix pull request reopen conditions](https://codeberg.org/forgejo/forgejo/pulls/2373)
|
||||
* [Fix unblock action](https://codeberg.org/forgejo/forgejo/pulls/3086)
|
||||
* [Fix VSCode settings](https://codeberg.org/forgejo/forgejo/pulls/1881)
|
||||
* [Gracefully handle missing branches on a repos branches page](https://codeberg.org/forgejo/forgejo/pulls/2139)
|
||||
* [Initialize Git for hook regeneration](https://codeberg.org/forgejo/forgejo/pulls/2416)
|
||||
* [Internal Server Error when resolving comments](https://codeberg.org/forgejo/forgejo/pulls/2282)
|
||||
* [Load `AllUnitsEnabled` when necessary](https://codeberg.org/forgejo/forgejo/pulls/2420)
|
||||
* [Makefile: check git diff exitCode](https://codeberg.org/forgejo/forgejo/pulls/2651)
|
||||
* [Make pprof labels conformant with prometheus spec](https://codeberg.org/forgejo/forgejo/pulls/2933)
|
||||
* [Make reference URL absolute](https://codeberg.org/forgejo/forgejo/pulls/2100)
|
||||
* [misleading comparisons when comparing branches](https://codeberg.org/forgejo/forgejo/pulls/2194)
|
||||
* [Block issue creation when blocked by repo owner](https://codeberg.org/forgejo/forgejo/pulls/2052)
|
||||
* [NPE in `ToPullReviewList`](https://codeberg.org/forgejo/forgejo/pulls/2057)
|
||||
* [NPE in `UsernameSubRoute`](https://codeberg.org/forgejo/forgejo/pulls/1981)
|
||||
* [Only pass selected repository IDs to pagination](https://codeberg.org/forgejo/forgejo/pulls/1848)
|
||||
* [panic in `canSoftDeleteContentHistory`](https://codeberg.org/forgejo/forgejo/pulls/2134)
|
||||
* [prevent removing session cookie when redirect_uri query contains ://](https://codeberg.org/forgejo/forgejo/pulls/2590)
|
||||
* [pull_request_template branch link](https://codeberg.org/forgejo/forgejo/pulls/2232)
|
||||
* [Rate limit pre-activation email change separately](https://codeberg.org/forgejo/forgejo/pulls/2043)
|
||||
* [Refactor LFS GC functions](https://codeberg.org/forgejo/forgejo/pulls/3056)
|
||||
* [Reflect Cargo index state in settings](https://codeberg.org/forgejo/forgejo/pulls/2698)
|
||||
* [Remember topic only in repo search](https://codeberg.org/forgejo/forgejo/pulls/2489)
|
||||
* [Require Latex code to have a end sequence](https://codeberg.org/forgejo/forgejo/pulls/1822)
|
||||
* [Respond with JSON Resource Descriptor Content-Type per RFC7033](https://codeberg.org/forgejo/forgejo/pulls/2882)
|
||||
* [Fix session generation for database](https://codeberg.org/forgejo/forgejo/pulls/2045)
|
||||
* [Sort file list case insensitively](https://codeberg.org/forgejo/forgejo/pulls/2522)
|
||||
* [Fix the topic search paging](https://codeberg.org/forgejo/forgejo/pulls/2060)
|
||||
* [Typo fix & clarify RegistrationToken](https://codeberg.org/forgejo/forgejo/pulls/2191)
|
||||
* [Update checker setting updates](https://codeberg.org/forgejo/forgejo/pulls/2925)
|
||||
* [Use correct format for attr-check error log](https://codeberg.org/forgejo/forgejo/pulls/2866)
|
||||
* [Use correct head commit for CODEOWNER](https://codeberg.org/forgejo/forgejo/pulls/2658)
|
||||
* [Use correct template for commitmail error](https://codeberg.org/forgejo/forgejo/pulls/2973)
|
||||
* [Workaround borked Git version](https://codeberg.org/forgejo/forgejo/pulls/2335)
|
||||
* [Remove scheduled action tasks if the repo is archived](https://codeberg.org/forgejo/forgejo/commit/87870ade49eb76ff57a8593ba35df10e0d617aa5).
|
||||
* [Relax generic package filename restrictions](https://codeberg.org/forgejo/forgejo/commit/ea4755be6dfc8fc1f3c794eeaa2e2322b97d192e).
|
||||
* [Prevent re-review and dismiss review actions on closed and merged PRs](https://codeberg.org/forgejo/forgejo/commit/23676bfea7ccbbe166a554115ea1f5f02800e379).
|
||||
* [Add a warning for disallowed email domains](https://codeberg.org/forgejo/forgejo/commit/2559c80bec27a41967b355d214253a83b9ee5dad).
|
||||
* [Skip email domain check when admins edit user emails](https://codeberg.org/forgejo/forgejo/commit/e7afba21ce2b02eb4230ba03752bd8b937f3e6ef).
|
||||
* [Skip email domain check when admin users adds user manually](https://codeberg.org/forgejo/forgejo/commit/b6057a34db38e563473db00543a1e39fd743ca34).
|
||||
* [Add support for API blob upload of release attachments](https://codeberg.org/forgejo/forgejo/commit/47a913d40d3417858f2ee51a7dbed64ca84eff60).
|
||||
* [Allow options to disable user gpg keys configuration from the interface on app.ini](https://codeberg.org/forgejo/forgejo/commit/ee6ff937c0782b9cdc7ae1bc62b7eda83982d40f).
|
||||
* [Allow options to disable user ssh keys configuration from the interface on app.ini](https://codeberg.org/forgejo/forgejo/commit/bb09ad2b63570c80418b4b9a10f7dbbb349448ab).
|
||||
* [Fix content size does not match error when uploading lfs file](https://codeberg.org/forgejo/forgejo/commit/fb137d1e49c0436f1db093e2dc0a2350d63e1e29).
|
||||
* [Add API to get merged PR of a commit](https://codeberg.org/forgejo/forgejo/commit/1608ef0ce9ce2ea1c87aef715d111cf441637d01).
|
||||
* [Add API to get PR by base/head](https://codeberg.org/forgejo/forgejo/commit/feb189554e758ed27d1e309e5ec309d663e8f338).
|
||||
* [Add attachment support for code review comments](https://codeberg.org/forgejo/forgejo/commit/f95fb8cc44d790e0ae71d3f879124a6ee9b07f66).
|
||||
* [Add support for action artifact serve direct](https://codeberg.org/forgejo/forgejo/commit/1f8ad34e4391673a2eda434ea5e48ea084cdc814).
|
||||
* [Show whether a PR is WIP inside popups](https://codeberg.org/forgejo/forgejo/commit/50f55f11c4f785b72a39e59b0fc12ae70ab8d8b5).
|
||||
* [Add artifacts v4 jwt to job message and accept it](https://codeberg.org/forgejo/forgejo/commit/a9bc590d5d10b97bd8aa050ffb720e141a600064).
|
||||
* [Fix some RPM registry flaws](https://codeberg.org/forgejo/forgejo/commit/461d8b53c2e51a8a6a1715ba40ac61d7e9f93971).
|
||||
* [Add branch protection setting for ignoring stale approvals](https://codeberg.org/forgejo/forgejo/commit/5d3fdd121279c758f247a76e020799aa5e548feb).
|
||||
* [Added instance-level variables](https://codeberg.org/forgejo/forgejo/commit/d0f24ff4cad05c1145afeca791e7d02fe146d46a).
|
||||
* [Fix the wrong HTTP response status code for duplicate packages](https://codeberg.org/forgejo/forgejo/commit/5b6258a0b94737ec3db1ce418d0c933512a71f78).
|
||||
* [Don't run push mirrors for archived repos](https://codeberg.org/forgejo/forgejo/commit/f3ba3e922dde7d12999a90d6cee15805a56cc7ff).
|
||||
* [Support for grouping RPMs using paths](https://codeberg.org/forgejo/forgejo/commit/ba4d0b8ffbd78473273800f586ae8bde55cda6c5).
|
||||
* [Fixes #27605: inline math blocks can't be preceded/followed by alphanumerical characters](https://codeberg.org/forgejo/forgejo/commit/2adc3a45fbd60126c0eab66b9cdd177a63bd4704).
|
||||
* [Fix GPG subkey verify](https://codeberg.org/forgejo/forgejo/commit/5a674dd02ed3ea2853afa02dc15dcdadba069a6e).
|
||||
* [Include encoding in signature payload](https://codeberg.org/forgejo/forgejo/commit/6925c0eee43980133896f9e4ee7e48e5751e9417).
|
||||
* [Fix milestoneID filter bug in issue list](https://codeberg.org/forgejo/forgejo/commit/0da787f23737d252e6c80aa1a1f665e09dba0ea9).
|
||||
* [Fix Citation modal responsiveness and clipboard copy](https://codeberg.org/forgejo/forgejo/commit/ca39d743636c9732f4422e130bac974555fb43c2).
|
||||
* [Fix incorrect locale Tr for gpg command](https://codeberg.org/forgejo/forgejo/commit/071d871dcf8dd8097dc0af6d4baf304a2fbbe4e2).
|
||||
* [Improve a11y document and dropdown item](https://codeberg.org/forgejo/forgejo/commit/1d4bf7e211db0866774fa3f6f563e15ffadac1f6).
|
||||
* [Determine fuzziness of bleve indexer by keyword length](https://codeberg.org/forgejo/forgejo/commit/ab5f0b7558229b3ab5c3946a51e58b4caae775b0).
|
||||
* [Fix ellipsis button not working if the last commit loading is deferred](https://codeberg.org/forgejo/forgejo/commit/1e29bccddbeb29eec3ceb507612851021ab4d60d).
|
||||
* [Fix incorrect diff expander for deletion of last lines in a file](https://codeberg.org/forgejo/forgejo/commit/85bf170ff0d54471fe88903009a3fec4ef3e6e8c).
|
||||
* [Do not exceed display for the PR page buttons on smaller screens](https://codeberg.org/forgejo/forgejo/commit/e7297d423f566a383c8861c4aaee028606591038).
|
||||
* [Move citation button to proper place](https://codeberg.org/forgejo/forgejo/commit/eb4061babacfee2b72f4a33412530eb9f0de3b25).
|
||||
* [Expire artifacts before deleting them physically](https://codeberg.org/forgejo/forgejo/commit/7f64e4d2a3f20b7d7de6542de5e0856c643e821f).
|
||||
* [Fix can not select team reviewers when reviewers is empty](https://codeberg.org/forgejo/forgejo/commit/df439b6a983865ba559e517e5e93f5f1a53a97a0).
|
||||
* [Fix default avatar image size in PR diff page](https://codeberg.org/forgejo/forgejo/commit/3aed8ae03475a430c0dc8e33f42fa9269a4844bd).
|
||||
* [Fix branch list bug which displayed default branch twice](https://codeberg.org/forgejo/forgejo/commit/0e6fd0d1c1e31d22707e6f06124d5bf76361eaab).
|
||||
* [Set the `isPermaLink` attribute to `false` in the `guid` sub-element](https://codeberg.org/forgejo/forgejo/commit/5574968ecbc34908dfa17b28bfc79c3490eaa685).
|
||||
* [Fix long package version names overflowing](https://codeberg.org/forgejo/forgejo/commit/3d474110c181df7854576d78e46209908f7e1b52).
|
||||
* [Fix wrong link in user and organization profile when using relative url](https://codeberg.org/forgejo/forgejo/commit/42149ff1a816501643ec2407ed61a83bf5b65059).
|
||||
* [Fix session key conflict with database keyword](https://codeberg.org/forgejo/forgejo/commit/4c29c75968f520123f125e8305b2c29198664251).
|
||||
* [Fix commit status in repo list](https://codeberg.org/forgejo/forgejo/commit/0abb5633e34fd14c2d49de0b4c98f7ba7d98a37e).
|
||||
* [Fix incorrect action duration time when rerun the job before executed once](https://codeberg.org/forgejo/forgejo/commit/07ba4d9f87cf21b7ce87158ae5651cae3bb35604).
|
||||
* [Fix missing mail reply address](https://codeberg.org/forgejo/forgejo/commit/3081e7e1536356346f73fb4a0d00101863b2cf05).
|
||||
* [Filter inactive auth sources](https://codeberg.org/forgejo/forgejo/commit/e378545f3083990eb36ff5d72477662d9787280d).
|
||||
* [Refactor Find Sources and fix bug when view a user who belongs to an inactive auth source](https://codeberg.org/forgejo/forgejo/commit/1bf5527eac6b947010c8faf408f6747de2a2384f).
|
||||
* [Fix issue not showing on default board and add test](https://codeberg.org/forgejo/forgejo/commit/1eae2aadae0583ab092d6ed857bb727829aa52b7).
|
||||
* [Improve file history UI and fix URL escaping bug](https://codeberg.org/forgejo/forgejo/commit/d1527dac3d1e68caf5a6f54c08144e28256e5c47).
|
||||
* [Fix ldap admin privileges update bug](https://codeberg.org/forgejo/forgejo/commit/7ad31567cdc8206e0080b851a9b880729266b084).
|
||||
* **other**
|
||||
* [[PERFORMANCE] git check-attr on bare repo if supported](https://codeberg.org/forgejo/forgejo/pulls/2763)
|
||||
* [[REFACTOR] [AGIT] Refactor the AGit code](https://codeberg.org/forgejo/forgejo/pulls/2386)
|
||||
* [[REFACTOR] generation of JWT secret](https://codeberg.org/forgejo/forgejo/pulls/2227)
|
||||
* [[REFACTOR] PKT protocol](https://codeberg.org/forgejo/forgejo/pulls/2868)
|
||||
* [Remove .exe suffix when cross-compiling on Windows](https://codeberg.org/forgejo/forgejo/commit/6acce16ee3a03df1cc06c46398f594009a0e31b9).
|
||||
* [Refactor repo header/list](https://codeberg.org/forgejo/forgejo/commit/65e190ae8bd6c72d8701a58d67b256c87b92c189).
|
||||
* [Update register application URL for GitLab](https://codeberg.org/forgejo/forgejo/commit/64fcf0cb64d455d5ca1420aa832aa057cf61e6dd).
|
||||
* [Update golang links to use https](https://codeberg.org/forgejo/forgejo/commit/8ef53c871bcb5c007b3640a347c7868585c9e4de).
|
||||
* [Teams: new View button](https://codeberg.org/forgejo/forgejo/commit/e3afe4a248ac3a961f332e2ba221bedafa3dfb7e).
|
||||
* [Commit-Dropdown: Show Author of commit if available](https://codeberg.org/forgejo/forgejo/commit/300c8dedfd01ba0ea63486b644e93aa2be6785b2).
|
||||
* [Refactor dropzone](https://codeberg.org/forgejo/forgejo/commit/c1ac3e5891a49bedc5e54ed5811cb2c0e058c43c).
|
||||
* [When the title in the issue has a value, set the text cursor at the end of the text.](https://codeberg.org/forgejo/forgejo/commit/8c2559a72603e07fe682efddd698e1fc190b2728).
|
||||
* [Load citation JS only when needed](https://codeberg.org/forgejo/forgejo/commit/f2fc2dcfc9305a42242421c718ee3673bd1c851c).
|
||||
* [Refactor markdown attention render](https://codeberg.org/forgejo/forgejo/commit/ec2201a3da5f18e55bfc0a54114ac935804f4ef8).
|
||||
* [Light theme color enhancements](https://codeberg.org/forgejo/forgejo/commit/23e2ace77d1612cda09bc0d08690314e7321cca3).
|
||||
* [Dark theme color enhancements](https://codeberg.org/forgejo/forgejo/commit/704a59e59584041f95939e3d90260173906f946a).
|
||||
* [Refactor markup/csv: don't read all to memory](https://codeberg.org/forgejo/forgejo/commit/d413a8fcacc81b6f7039371408034c9c2fc6c15f).
|
||||
* [Move all login and account creation page labels to be above inputs](https://codeberg.org/forgejo/forgejo/commit/3acea02eb66ea09248ff29eb6b9cefce29fcea37).
|
||||
* [Fix Gitpod logic of setting ROOT_URL](https://codeberg.org/forgejo/forgejo/commit/e52d87758272c417bb9b30e944f9b0bd33d28cb7).
|
||||
* [Fix broken following organization](https://codeberg.org/forgejo/forgejo/commit/fd3b4afa2b3621ece2d7d1587fd4b017142d75a0).
|
||||
* [Don't do a full page load when clicking `Watch` or `Star`](https://codeberg.org/forgejo/forgejo/commit/6992ef98fc227a60cf06e0a06b9ae2492b3d61be).
|
||||
* [Fix non-alphabetic sorting of repo topics](https://codeberg.org/forgejo/forgejo/commit/a240d5dfa7e261f2fb703cf24b1ba4dc6aa47bfd).
|
||||
* [Make cross-reference issue links work in markdown documents again](https://codeberg.org/forgejo/forgejo/commit/12c0487e01d3fd9fe289345c53e8a220be55e864).
|
||||
* [Fix tooltip of variable edit button](https://codeberg.org/forgejo/forgejo/commit/361839fb1c8bdfb8291bbcf9bd650b21a605bbd7).
|
||||
* [Disable query token param in integration tests](https://codeberg.org/forgejo/forgejo/commit/33439b733a4f69640350b9cda370963ebe9d1e0a).
|
||||
* [Add merge arrow direction and update styling](https://codeberg.org/forgejo/forgejo/commit/e522e774cae2240279fc48c349fc513c9d3353ee).
|
||||
* [Add links to owner home page in explore](https://codeberg.org/forgejo/forgejo/commit/dd5693387e0642e1aba05b01eeb18139ce90ef5e).
|
||||
* [Render PyPi long description as document](https://codeberg.org/forgejo/forgejo/commit/876a0cb3d652f42545abdb33dc4fd71a7c3343bf).
|
||||
* [Ignore temporary files for directory size](https://codeberg.org/forgejo/forgejo/commit/cb8298b7178f5dde302604bfe34c658b725f16f8).
|
||||
* [Make pushUpdate error verbose](https://codeberg.org/forgejo/forgejo/commit/1bfcdeef4cca0f5509476358e5931c13d37ed1ca).
|
||||
* [Add download URL for executable files](https://codeberg.org/forgejo/forgejo/commit/9341b37520e5626352bf2df52e8dbace2985c0d7).
|
||||
* [Improve profile for Organizations](https://codeberg.org/forgejo/forgejo/commit/089ac06969030b0886d4e20bf8f7a757f785f158).
|
||||
* [Fix Show/hide filetree button on small displays](https://codeberg.org/forgejo/forgejo/commit/e31c6cfe6e30341c502302d1c0a03138f8bf5c9f).
|
||||
* [Fix merge base commit for fast-forwarded GitLab PRs](https://codeberg.org/forgejo/forgejo/commit/02dae3f84b80047bef391960eea1350d551e4d72).
|
||||
* [Align ISSUE_TEMPLATE with the new label system](https://codeberg.org/forgejo/forgejo/commit/248b7ee850ecdb538b22ddcfbe80b6f91be32b70).
|
||||
* [Improve the list header in milestone page](https://codeberg.org/forgejo/forgejo/commit/8abc1aae4ab5b03be0bcbdd390bb903b54ccd21a).
|
||||
|
||||
## 1.21.11-1
|
||||
|
||||
|
@ -1025,7 +1477,7 @@ This stable release contains security fixes.
|
|||
|
||||
* Security fixes
|
||||
|
||||
* [An additional verification](https://codeberg.org/forgejo/forgejo/commit/a259a928a) was implemented to prevent [open redirects](https://en.wikipedia.org/wiki/Open_redirect).
|
||||
* [An additional verification](https://codeberg.org/forgejo/forgejo/commit/a259a928a) was implemented to prevent [open redirects](https://en.wikipedia.org/wiki/Open_redirect).
|
||||
|
||||
* Bug fixes
|
||||
|
||||
|
|
|
@ -142,7 +142,7 @@ func generate() ([]byte, error) {
|
|||
}
|
||||
}
|
||||
|
||||
// gitea customizations
|
||||
// Forgejo customizations
|
||||
i, ok := aliasMap["tada"]
|
||||
if ok {
|
||||
data[i].Aliases = append(data[i].Aliases, "hooray")
|
||||
|
|
|
@ -36,6 +36,7 @@ var microcmdUserChangePassword = &cli.Command{
|
|||
&cli.BoolFlag{
|
||||
Name: "must-change-password",
|
||||
Usage: "User must change password",
|
||||
Value: true,
|
||||
},
|
||||
},
|
||||
}
|
||||
|
@ -57,23 +58,18 @@ func runChangePassword(c *cli.Context) error {
|
|||
return err
|
||||
}
|
||||
|
||||
var mustChangePassword optional.Option[bool]
|
||||
if c.IsSet("must-change-password") {
|
||||
mustChangePassword = optional.Some(c.Bool("must-change-password"))
|
||||
}
|
||||
|
||||
opts := &user_service.UpdateAuthOptions{
|
||||
Password: optional.Some(c.String("password")),
|
||||
MustChangePassword: mustChangePassword,
|
||||
MustChangePassword: optional.Some(c.Bool("must-change-password")),
|
||||
}
|
||||
if err := user_service.UpdateAuth(ctx, user, opts); err != nil {
|
||||
switch {
|
||||
case errors.Is(err, password.ErrMinLength):
|
||||
return fmt.Errorf("Password is not long enough. Needs to be at least %d", setting.MinPasswordLength)
|
||||
return fmt.Errorf("password is not long enough, needs to be at least %d characters", setting.MinPasswordLength)
|
||||
case errors.Is(err, password.ErrComplexity):
|
||||
return errors.New("Password does not meet complexity requirements")
|
||||
return errors.New("password does not meet complexity requirements")
|
||||
case errors.Is(err, password.ErrIsPwned):
|
||||
return errors.New("The password you chose is on a list of stolen passwords previously exposed in public data breaches. Please try again with a different password.\nFor more details, see https://haveibeenpwned.com/Passwords")
|
||||
return errors.New("the password is in a list of stolen passwords previously exposed in public data breaches, please try again with a different password, to see more details: https://haveibeenpwned.com/Passwords")
|
||||
default:
|
||||
return err
|
||||
}
|
||||
|
|
|
@ -8,6 +8,7 @@ import (
|
|||
"fmt"
|
||||
|
||||
auth_model "code.gitea.io/gitea/models/auth"
|
||||
"code.gitea.io/gitea/models/db"
|
||||
user_model "code.gitea.io/gitea/models/user"
|
||||
pwd "code.gitea.io/gitea/modules/auth/password"
|
||||
"code.gitea.io/gitea/modules/optional"
|
||||
|
@ -46,9 +47,10 @@ var microcmdUserCreate = &cli.Command{
|
|||
Usage: "Generate a random password for the user",
|
||||
},
|
||||
&cli.BoolFlag{
|
||||
Name: "must-change-password",
|
||||
Usage: "Set this option to false to prevent forcing the user to change their password after initial login",
|
||||
Value: true,
|
||||
Name: "must-change-password",
|
||||
Usage: "Set this option to false to prevent forcing the user to change their password after initial login",
|
||||
Value: true,
|
||||
DisableDefaultText: true,
|
||||
},
|
||||
&cli.IntFlag{
|
||||
Name: "random-password-length",
|
||||
|
@ -72,10 +74,10 @@ func runCreateUser(c *cli.Context) error {
|
|||
}
|
||||
|
||||
if c.IsSet("name") && c.IsSet("username") {
|
||||
return errors.New("Cannot set both --name and --username flags")
|
||||
return errors.New("cannot set both --name and --username flags")
|
||||
}
|
||||
if !c.IsSet("name") && !c.IsSet("username") {
|
||||
return errors.New("One of --name or --username flags must be set")
|
||||
return errors.New("one of --name or --username flags must be set")
|
||||
}
|
||||
|
||||
if c.IsSet("password") && c.IsSet("random-password") {
|
||||
|
@ -111,12 +113,21 @@ func runCreateUser(c *cli.Context) error {
|
|||
return errors.New("must set either password or random-password flag")
|
||||
}
|
||||
|
||||
changePassword := c.Bool("must-change-password")
|
||||
|
||||
// If this is the first user being created.
|
||||
// Take it as the admin and don't force a password update.
|
||||
if n := user_model.CountUsers(ctx, nil); n == 0 {
|
||||
changePassword = false
|
||||
isAdmin := c.Bool("admin")
|
||||
mustChangePassword := true // always default to true
|
||||
if c.IsSet("must-change-password") {
|
||||
// if the flag is set, use the value provided by the user
|
||||
mustChangePassword = c.Bool("must-change-password")
|
||||
} else {
|
||||
// check whether there are users in the database
|
||||
hasUserRecord, err := db.IsTableNotEmpty(&user_model.User{})
|
||||
if err != nil {
|
||||
return fmt.Errorf("IsTableNotEmpty: %w", err)
|
||||
}
|
||||
if !hasUserRecord && isAdmin {
|
||||
// if this is the first admin being created, don't force to change password (keep the old behavior)
|
||||
mustChangePassword = false
|
||||
}
|
||||
}
|
||||
|
||||
restricted := optional.None[bool]()
|
||||
|
@ -132,8 +143,8 @@ func runCreateUser(c *cli.Context) error {
|
|||
Name: username,
|
||||
Email: c.String("email"),
|
||||
Passwd: password,
|
||||
IsAdmin: c.Bool("admin"),
|
||||
MustChangePassword: changePassword,
|
||||
IsAdmin: isAdmin,
|
||||
MustChangePassword: mustChangePassword,
|
||||
Visibility: visibility,
|
||||
}
|
||||
|
||||
|
|
|
@ -2394,22 +2394,6 @@ LEVEL = Info
|
|||
;; Enable issue by repository metrics; default is false
|
||||
;ENABLED_ISSUE_BY_REPOSITORY = false
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;[task]
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;;
|
||||
;; Task queue type, could be `channel` or `redis`.
|
||||
;QUEUE_TYPE = channel
|
||||
;;
|
||||
;; Task queue length, available only when `QUEUE_TYPE` is `channel`.
|
||||
;QUEUE_LENGTH = 1000
|
||||
;;
|
||||
;; Task queue connection string, available only when `QUEUE_TYPE` is `redis`.
|
||||
;; If there is a password of redis, use `redis://127.0.0.1:6379/0?pool_size=100&idle_timeout=180s` or `redis+cluster://127.0.0.1:6379/0?pool_size=100&idle_timeout=180s` for `redis-clsuter`.
|
||||
;QUEUE_CONN_STR = "redis://127.0.0.1:6379/0?pool_size=100&idle_timeout=180s"
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;[migrations]
|
||||
|
|
|
@ -1 +0,0 @@
|
|||
Subproject commit 877d11b403b2b573fe435b792245b403367a2bb2
|
|
@ -83,6 +83,9 @@ func (actions ActionList) loadRepoOwner(ctx context.Context, userMap map[int64]*
|
|||
_, alreadyLoaded := userMap[action.Repo.OwnerID]
|
||||
return action.Repo.OwnerID, !alreadyLoaded
|
||||
})
|
||||
if len(missingUserIDs) == 0 {
|
||||
return nil
|
||||
}
|
||||
|
||||
if err := db.GetEngine(ctx).
|
||||
In("id", missingUserIDs).
|
||||
|
@ -129,6 +132,9 @@ func (actions ActionList) LoadComments(ctx context.Context) error {
|
|||
commentIDs = append(commentIDs, action.CommentID)
|
||||
}
|
||||
}
|
||||
if len(commentIDs) == 0 {
|
||||
return nil
|
||||
}
|
||||
|
||||
commentsMap := make(map[int64]*issues_model.Comment, len(commentIDs))
|
||||
if err := db.GetEngine(ctx).In("id", commentIDs).Find(&commentsMap); err != nil {
|
||||
|
|
|
@ -150,7 +150,7 @@ func preprocessDatabaseCollation(x *xorm.Engine) {
|
|||
|
||||
// check column collation, and show warning/error to end users -- no need to fatal, do not block the startup
|
||||
if !r.IsCollationCaseSensitive(r.DatabaseCollation) {
|
||||
log.Warn("Current database is using a case-insensitive collation %q, although Gitea could work with it, there might be some rare cases which don't work as expected.", r.DatabaseCollation)
|
||||
log.Warn("Current database is using a case-insensitive collation %q, although Forgejo could work with it, there might be some rare cases which don't work as expected.", r.DatabaseCollation)
|
||||
}
|
||||
|
||||
if len(r.InconsistentCollationColumns) > 0 {
|
||||
|
|
|
@ -293,8 +293,8 @@ func MaxBatchInsertSize(bean any) int {
|
|||
}
|
||||
|
||||
// IsTableNotEmpty returns true if table has at least one record
|
||||
func IsTableNotEmpty(tableName string) (bool, error) {
|
||||
return x.Table(tableName).Exist()
|
||||
func IsTableNotEmpty(beanOrTableName any) (bool, error) {
|
||||
return x.Table(beanOrTableName).Exist()
|
||||
}
|
||||
|
||||
// DeleteAllRecords will delete all the records of this table
|
||||
|
|
|
@ -660,15 +660,15 @@ func Migrate(x *xorm.Engine) error {
|
|||
|
||||
v := currentVersion.Version
|
||||
if minDBVersion > v {
|
||||
log.Fatal(`Gitea no longer supports auto-migration from your previously installed version.
|
||||
log.Fatal(`Forgejo no longer supports auto-migration from your previously installed version.
|
||||
Please try upgrading to a lower version first (suggested v1.6.4), then upgrade to this version.`)
|
||||
return nil
|
||||
}
|
||||
|
||||
// Downgrading Gitea's database version not supported
|
||||
// Downgrading Forgejo database version is not supported
|
||||
if int(v-minDBVersion) > len(migrations) {
|
||||
msg := fmt.Sprintf("Your database (migration version: %d) is for a newer Gitea, you can not use the newer database for this old Gitea release (%d).", v, minDBVersion+len(migrations))
|
||||
msg += "\nGitea will exit to keep your database safe and unchanged. Please use the correct Gitea release, do not change the migration version manually (incorrect manual operation may lose data)."
|
||||
msg := fmt.Sprintf("Your database (migration version: %d) is for a newer Forgejo, you can not use the newer database for this old Forgejo release (%d).", v, minDBVersion+len(migrations))
|
||||
msg += "\nForgejo will exit to keep your database safe and unchanged. Please use the correct Forgejo release, do not change the migration version manually (incorrect manual operation may lose data)."
|
||||
if !setting.IsProd {
|
||||
msg += fmt.Sprintf("\nIf you are in development and really know what you're doing, you can force changing the migration version by executing: UPDATE version SET version=%d WHERE id=1;", minDBVersion+len(migrations))
|
||||
}
|
||||
|
|
|
@ -287,9 +287,10 @@ func (opts *PackageSearchOptions) configureOrderBy(e db.Engine) {
|
|||
// SearchVersions gets all versions of packages matching the search options
|
||||
func SearchVersions(ctx context.Context, opts *PackageSearchOptions) ([]*PackageVersion, int64, error) {
|
||||
sess := db.GetEngine(ctx).
|
||||
Where(opts.ToConds()).
|
||||
Select("package_version.*").
|
||||
Table("package_version").
|
||||
Join("INNER", "package", "package.id = package_version.package_id")
|
||||
Join("INNER", "package", "package.id = package_version.package_id").
|
||||
Where(opts.ToConds())
|
||||
|
||||
opts.configureOrderBy(sess)
|
||||
|
||||
|
@ -304,19 +305,18 @@ func SearchVersions(ctx context.Context, opts *PackageSearchOptions) ([]*Package
|
|||
|
||||
// SearchLatestVersions gets the latest version of every package matching the search options
|
||||
func SearchLatestVersions(ctx context.Context, opts *PackageSearchOptions) ([]*PackageVersion, int64, error) {
|
||||
cond := opts.ToConds().
|
||||
And(builder.Expr("pv2.id IS NULL"))
|
||||
|
||||
joinCond := builder.Expr("package_version.package_id = pv2.package_id AND (package_version.created_unix < pv2.created_unix OR (package_version.created_unix = pv2.created_unix AND package_version.id < pv2.id))")
|
||||
if opts.IsInternal.Has() {
|
||||
joinCond = joinCond.And(builder.Eq{"pv2.is_internal": opts.IsInternal.Value()})
|
||||
}
|
||||
in := builder.
|
||||
Select("MAX(package_version.id)").
|
||||
From("package_version").
|
||||
InnerJoin("package", "package.id = package_version.package_id").
|
||||
Where(opts.ToConds()).
|
||||
GroupBy("package_version.package_id")
|
||||
|
||||
sess := db.GetEngine(ctx).
|
||||
Select("package_version.*").
|
||||
Table("package_version").
|
||||
Join("LEFT", "package_version pv2", joinCond).
|
||||
Join("INNER", "package", "package.id = package_version.package_id").
|
||||
Where(cond)
|
||||
Where(builder.In("package_version.id", in))
|
||||
|
||||
opts.configureOrderBy(sess)
|
||||
|
||||
|
|
|
@ -140,7 +140,7 @@ func SearchUsers(ctx context.Context, opts *SearchUserOptions) (users []*User, _
|
|||
|
||||
sessQuery := opts.toSearchQueryBase(ctx).OrderBy(opts.OrderBy.String())
|
||||
defer sessQuery.Close()
|
||||
if opts.Page != 0 {
|
||||
if opts.PageSize > 0 {
|
||||
sessQuery = db.SetSessionPagination(sessQuery, opts)
|
||||
}
|
||||
|
||||
|
|
|
@ -130,7 +130,7 @@ then resh (ר), and finally heh (ה) (which should appear leftmost).`,
|
|||
},
|
||||
{
|
||||
// UTF-8/16/32 all use the same codepoint for BOM
|
||||
// Gitea could read UTF-16/32 content and convert into UTF-8 internally then render it, so we only process UTF-8 internally
|
||||
// Forgejo could read UTF-16/32 content and convert into UTF-8 internally then render it, so we only process UTF-8 internally
|
||||
name: "UTF BOM",
|
||||
text: "\xef\xbb\xbftest",
|
||||
result: "\xef\xbb\xbftest",
|
||||
|
|
|
@ -462,7 +462,7 @@ func parseCommitFileStatus(fileStatus *CommitFileStatus, stdout io.Reader) {
|
|||
_, _ = rd.Discard(1)
|
||||
}
|
||||
for {
|
||||
modifier, err := rd.ReadSlice('\x00')
|
||||
modifier, err := rd.ReadString('\x00')
|
||||
if err != nil {
|
||||
if err != io.EOF {
|
||||
log.Error("Unexpected error whilst reading from git log --name-status. Error: %v", err)
|
||||
|
|
|
@ -158,7 +158,7 @@ func Init() {
|
|||
if err := recover(); err != nil {
|
||||
log.Error("PANIC whilst initializing repository indexer: %v\nStacktrace: %s", err, log.Stack(2))
|
||||
log.Error("The indexer files are likely corrupted and may need to be deleted")
|
||||
log.Error("You can completely remove the \"%s\" directory to make Gitea recreate the indexes", setting.Indexer.RepoPath)
|
||||
log.Error("You can completely remove the \"%s\" directory to make Forgejo recreate the indexes", setting.Indexer.RepoPath)
|
||||
}
|
||||
}()
|
||||
|
||||
|
@ -176,7 +176,7 @@ func Init() {
|
|||
if err := recover(); err != nil {
|
||||
log.Error("PANIC whilst initializing repository indexer: %v\nStacktrace: %s", err, log.Stack(2))
|
||||
log.Error("The indexer files are likely corrupted and may need to be deleted")
|
||||
log.Error("You can completely remove the \"%s\" index to make Gitea recreate the indexes", setting.Indexer.RepoConnStr)
|
||||
log.Error("You can completely remove the \"%s\" index to make Forgejo recreate the indexes", setting.Indexer.RepoConnStr)
|
||||
}
|
||||
}()
|
||||
|
||||
|
|
|
@ -55,7 +55,7 @@ func (i *Indexer) Init(_ context.Context) (bool, error) {
|
|||
}
|
||||
|
||||
if version != 0 {
|
||||
log.Warn("Found older bleve index with version %d, Gitea will remove it and rebuild", version)
|
||||
log.Warn("Found older bleve index with version %d, Forgejo will remove it and rebuild", version)
|
||||
}
|
||||
|
||||
indexMapping, err := i.mappingGetter()
|
||||
|
|
|
@ -62,7 +62,7 @@ func (i *Indexer) checkOldIndexes(ctx context.Context) {
|
|||
indexName := versionedIndexName(i.indexName, v)
|
||||
exists, err := i.Client.IndexExists(indexName).Do(ctx)
|
||||
if err == nil && exists {
|
||||
log.Warn("Found older elasticsearch index named %q, Gitea will keep the old NOT DELETED. You can delete the old version after the upgrade succeed.", indexName)
|
||||
log.Warn("Found older elasticsearch index named %q, Forgejo will keep the old NOT DELETED. You can delete the old version after the upgrade succeed.", indexName)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -32,7 +32,7 @@ func (i *Indexer) checkOldIndexes() {
|
|||
indexName := versionedIndexName(i.indexName, v)
|
||||
_, err := i.Client.GetIndex(indexName)
|
||||
if err == nil {
|
||||
log.Warn("Found older meilisearch index named %q, Gitea will keep the old NOT DELETED. You can delete the old version after the upgrade succeed.", indexName)
|
||||
log.Warn("Found older meilisearch index named %q, Forgejo will keep the old NOT DELETED. You can delete the old version after the upgrade succeed.", indexName)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -85,7 +85,7 @@ func InitIssueIndexer(syncReindex bool) {
|
|||
if err := recover(); err != nil {
|
||||
log.Error("PANIC whilst initializing issue indexer: %v\nStacktrace: %s", err, log.Stack(2))
|
||||
log.Error("The indexer files are likely corrupted and may need to be deleted")
|
||||
log.Error("You can completely remove the %q directory to make Gitea recreate the indexes", setting.Indexer.IssuePath)
|
||||
log.Error("You can completely remove the %q directory to make Forgejo recreate the indexes", setting.Indexer.IssuePath)
|
||||
globalIndexer.Store(dummyIndexer)
|
||||
log.Fatal("PID: %d Unable to initialize the Bleve Issue Indexer at path: %s Error: %v", os.Getpid(), setting.Indexer.IssuePath, err)
|
||||
}
|
||||
|
|
|
@ -893,7 +893,7 @@ func issueIndexPatternProcessor(ctx *RenderContext, node *html.Node) {
|
|||
} else {
|
||||
// Path determines the type of link that will be rendered. It's unknown at this point whether
|
||||
// the linked item is actually a PR or an issue. Luckily it's of no real consequence because
|
||||
// Gitea will redirect on click as appropriate.
|
||||
// Forgejo will redirect on click as appropriate.
|
||||
path := "issues"
|
||||
if ref.IsPull {
|
||||
path = "pulls"
|
||||
|
|
|
@ -224,7 +224,7 @@ func getRedisOptions(uri *url.URL) *redis.UniversalOptions {
|
|||
if db, err := strconv.Atoi(uri.Path[1:]); err == nil {
|
||||
opts.DB = db
|
||||
} else {
|
||||
log.Error("Provided database identifier '%s' is not a valid integer. Gitea will ignore this option.", uri.Path)
|
||||
log.Error("Provided database identifier '%s' is not a valid integer. Forgejo will ignore this option.", uri.Path)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -6,9 +6,6 @@ package session
|
|||
import (
|
||||
"net/http"
|
||||
|
||||
"code.gitea.io/gitea/modules/setting"
|
||||
"code.gitea.io/gitea/modules/web/middleware"
|
||||
|
||||
"gitea.com/go-chi/session"
|
||||
)
|
||||
|
||||
|
@ -21,10 +18,12 @@ type Store interface {
|
|||
|
||||
// RegenerateSession regenerates the underlying session and returns the new store
|
||||
func RegenerateSession(resp http.ResponseWriter, req *http.Request) (Store, error) {
|
||||
// Ensure that a cookie with a trailing slash does not take precedence over
|
||||
// the cookie written by the middleware.
|
||||
middleware.DeleteLegacySiteCookie(resp, setting.SessionConfig.CookieName)
|
||||
|
||||
for _, f := range BeforeRegenerateSession {
|
||||
f(resp, req)
|
||||
}
|
||||
s, err := session.RegenerateSession(resp, req)
|
||||
return s, err
|
||||
}
|
||||
|
||||
// BeforeRegenerateSession is a list of functions that are called before a session is regenerated.
|
||||
var BeforeRegenerateSession []func(http.ResponseWriter, *http.Request)
|
||||
|
|
|
@ -38,6 +38,24 @@ func loadIncomingEmailFrom(rootCfg ConfigProvider) {
|
|||
return
|
||||
}
|
||||
|
||||
// Handle aliases
|
||||
sec := rootCfg.Section("email.incoming")
|
||||
if sec.HasKey("USER") && !sec.HasKey("USERNAME") {
|
||||
IncomingEmail.Username = sec.Key("USER").String()
|
||||
}
|
||||
if sec.HasKey("PASSWD") && !sec.HasKey("PASSWORD") {
|
||||
IncomingEmail.Password = sec.Key("PASSWD").String()
|
||||
}
|
||||
|
||||
// Infer Port if not set
|
||||
if IncomingEmail.Port == 0 {
|
||||
if IncomingEmail.UseTLS {
|
||||
IncomingEmail.Port = 993
|
||||
} else {
|
||||
IncomingEmail.Port = 143
|
||||
}
|
||||
}
|
||||
|
||||
if err := checkReplyToAddress(IncomingEmail.ReplyToAddress); err != nil {
|
||||
log.Fatal("Invalid incoming_mail.REPLY_TO_ADDRESS (%s): %v", IncomingEmail.ReplyToAddress, err)
|
||||
}
|
||||
|
|
74
modules/setting/incoming_email_test.go
Normal file
74
modules/setting/incoming_email_test.go
Normal file
|
@ -0,0 +1,74 @@
|
|||
// Copyright 2024 The Forgejo Authors. All rights reserved.
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
package setting
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
func Test_loadIncomingEmailFrom(t *testing.T) {
|
||||
makeBaseConfig := func() (ConfigProvider, ConfigSection) {
|
||||
cfg, _ := NewConfigProviderFromData("")
|
||||
sec := cfg.Section("email.incoming")
|
||||
sec.NewKey("ENABLED", "true")
|
||||
sec.NewKey("REPLY_TO_ADDRESS", "forge+%{token}@example.com")
|
||||
|
||||
return cfg, sec
|
||||
}
|
||||
resetIncomingEmailPort := func() func() {
|
||||
return func() {
|
||||
IncomingEmail.Port = 0
|
||||
}
|
||||
}
|
||||
|
||||
t.Run("aliases", func(t *testing.T) {
|
||||
cfg, sec := makeBaseConfig()
|
||||
sec.NewKey("USER", "jane.doe@example.com")
|
||||
sec.NewKey("PASSWD", "y0u'll n3v3r gUess th1S!!1")
|
||||
|
||||
loadIncomingEmailFrom(cfg)
|
||||
|
||||
assert.EqualValues(t, "jane.doe@example.com", IncomingEmail.Username)
|
||||
assert.EqualValues(t, "y0u'll n3v3r gUess th1S!!1", IncomingEmail.Password)
|
||||
})
|
||||
|
||||
t.Run("Port settings", func(t *testing.T) {
|
||||
t.Run("no port, no tls", func(t *testing.T) {
|
||||
defer resetIncomingEmailPort()()
|
||||
cfg, sec := makeBaseConfig()
|
||||
|
||||
// False is the default, but we test it explicitly.
|
||||
sec.NewKey("USE_TLS", "false")
|
||||
|
||||
loadIncomingEmailFrom(cfg)
|
||||
|
||||
assert.EqualValues(t, 143, IncomingEmail.Port)
|
||||
})
|
||||
|
||||
t.Run("no port, with tls", func(t *testing.T) {
|
||||
defer resetIncomingEmailPort()()
|
||||
cfg, sec := makeBaseConfig()
|
||||
|
||||
sec.NewKey("USE_TLS", "true")
|
||||
|
||||
loadIncomingEmailFrom(cfg)
|
||||
|
||||
assert.EqualValues(t, 993, IncomingEmail.Port)
|
||||
})
|
||||
|
||||
t.Run("port overrides tls", func(t *testing.T) {
|
||||
defer resetIncomingEmailPort()()
|
||||
cfg, sec := makeBaseConfig()
|
||||
|
||||
sec.NewKey("PORT", "1993")
|
||||
sec.NewKey("USE_TLS", "true")
|
||||
|
||||
loadIncomingEmailFrom(cfg)
|
||||
|
||||
assert.EqualValues(t, 1993, IncomingEmail.Port)
|
||||
})
|
||||
})
|
||||
}
|
|
@ -134,6 +134,14 @@ func loadMailerFrom(rootCfg ConfigProvider) {
|
|||
sec.Key("PROTOCOL").SetValue("smtp+starttls")
|
||||
}
|
||||
|
||||
// Handle aliases
|
||||
if sec.HasKey("USERNAME") && !sec.HasKey("USER") {
|
||||
sec.Key("USER").SetValue(sec.Key("USERNAME").String())
|
||||
}
|
||||
if sec.HasKey("PASSWORD") && !sec.HasKey("PASSWD") {
|
||||
sec.Key("PASSWD").SetValue(sec.Key("PASSWORD").String())
|
||||
}
|
||||
|
||||
// Set default values & validate
|
||||
sec.Key("NAME").MustString(AppName)
|
||||
sec.Key("PROTOCOL").In("", []string{"smtp", "smtps", "smtp+starttls", "smtp+unix", "sendmail", "dummy"})
|
||||
|
|
|
@ -38,4 +38,17 @@ func Test_loadMailerFrom(t *testing.T) {
|
|||
assert.EqualValues(t, kase.SMTPPort, MailService.SMTPPort)
|
||||
})
|
||||
}
|
||||
|
||||
t.Run("property aliases", func(t *testing.T) {
|
||||
cfg, _ := NewConfigProviderFromData("")
|
||||
sec := cfg.Section("mailer")
|
||||
sec.NewKey("ENABLED", "true")
|
||||
sec.NewKey("USERNAME", "jane.doe@example.com")
|
||||
sec.NewKey("PASSWORD", "y0u'll n3v3r gUess th1S!!1")
|
||||
|
||||
loadMailerFrom(cfg)
|
||||
|
||||
assert.EqualValues(t, "jane.doe@example.com", MailService.User)
|
||||
assert.EqualValues(t, "y0u'll n3v3r gUess th1S!!1", MailService.Passwd)
|
||||
})
|
||||
}
|
||||
|
|
|
@ -67,8 +67,8 @@ func IsRunUserMatchCurrentUser(runUser string) (string, bool) {
|
|||
// PrepareAppDataPath creates app data directory if necessary
|
||||
func PrepareAppDataPath() error {
|
||||
// FIXME: There are too many calls to MkdirAll in old code. It is incorrect.
|
||||
// For example, if someDir=/mnt/vol1/gitea-home/data, if the mount point /mnt/vol1 is not mounted when Gitea runs,
|
||||
// then gitea will make new empty directories in /mnt/vol1, all are stored in the root filesystem.
|
||||
// For example, if someDir=/mnt/vol1/gitea-home/data, if the mount point /mnt/vol1 is not mounted when Forgejo runs,
|
||||
// then Forgejo will make new empty directories in /mnt/vol1, all are stored in the root filesystem.
|
||||
// The correct behavior should be: creating parent directories is end users' duty. We only create sub-directories in existing parent directories.
|
||||
// For quickstart, the parent directories should be created automatically for first startup (eg: a flag or a check of INSTALL_LOCK).
|
||||
// Now we can take the first step to do correctly (using Mkdir) in other packages, and prepare the AppDataPath here, then make a refactor in future.
|
||||
|
@ -103,7 +103,7 @@ func InitCfgProvider(file string) {
|
|||
|
||||
func MustInstalled() {
|
||||
if !InstallLock {
|
||||
log.Fatal(`Unable to load config file for a installed Gitea instance, you should either use "--config" to set your config file (app.ini), or run "gitea web" command to install Gitea.`)
|
||||
log.Fatal(`Unable to load config file for a installed Forgejo instance, you should either use "--config" to set your config file (app.ini), or run "forgejo web" command to install Forgejo.`)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -163,7 +163,7 @@ func loadRunModeFrom(rootCfg ConfigProvider) {
|
|||
rootSec := rootCfg.Section("")
|
||||
RunUser = rootSec.Key("RUN_USER").MustString(user.CurrentUsername())
|
||||
|
||||
// The following is a purposefully undocumented option. Please do not run Gitea as root. It will only cause future headaches.
|
||||
// The following is a purposefully undocumented option. Please do not run Forgejo as root. It will only cause future headaches.
|
||||
// Please don't use root as a bandaid to "fix" something that is broken, instead the broken thing should instead be fixed properly.
|
||||
unsafeAllowRunAsRoot := ConfigSectionKeyBool(rootSec, "I_AM_BEING_UNSAFE_RUNNING_AS_ROOT")
|
||||
unsafeAllowRunAsRoot = unsafeAllowRunAsRoot || util.OptionalBoolParse(os.Getenv("GITEA_I_AM_BEING_UNSAFE_RUNNING_AS_ROOT")).Value()
|
||||
|
@ -183,9 +183,9 @@ func loadRunModeFrom(rootCfg ConfigProvider) {
|
|||
if os.Getuid() == 0 {
|
||||
if !unsafeAllowRunAsRoot {
|
||||
// Special thanks to VLC which inspired the wording of this messaging.
|
||||
log.Fatal("Gitea is not supposed to be run as root. Sorry. If you need to use privileged TCP ports please instead use setcap and the `cap_net_bind_service` permission")
|
||||
log.Fatal("Forgejo is not supposed to be run as root. Sorry. If you need to use privileged TCP ports please instead use setcap and the `cap_net_bind_service` permission")
|
||||
}
|
||||
log.Critical("You are running Gitea using the root user, and have purposely chosen to skip built-in protections around this. You have been warned against this.")
|
||||
log.Critical("You are running Forgejo using the root user, and have purposely chosen to skip built-in protections around this. You have been warned against this.")
|
||||
}
|
||||
}
|
||||
|
||||
|
|
10
modules/structs/repo_compare.go
Normal file
10
modules/structs/repo_compare.go
Normal file
|
@ -0,0 +1,10 @@
|
|||
// Copyright 2024 The Gitea Authors. All rights reserved.
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
package structs
|
||||
|
||||
// Compare represents a comparison between two commits.
|
||||
type Compare struct {
|
||||
TotalCommits int `json:"total_commits"` // Total number of commits in the comparison.
|
||||
Commits []*Commit `json:"commits"` // List of commits in the comparison.
|
||||
}
|
|
@ -19,6 +19,8 @@ type User struct {
|
|||
// the user's authentication sign-in name.
|
||||
// default: empty
|
||||
LoginName string `json:"login_name"`
|
||||
// The ID of the user's Authentication Source
|
||||
SourceID int64 `json:"source_id"`
|
||||
// the user's full name
|
||||
FullName string `json:"full_name"`
|
||||
// swagger:strfmt email
|
||||
|
|
|
@ -136,11 +136,11 @@ func wrapTmplErrMsg(msg string) {
|
|||
return
|
||||
}
|
||||
if setting.IsProd {
|
||||
// in prod mode, Gitea must have correct templates to run
|
||||
log.Fatal("Gitea can't run with template errors: %s", msg)
|
||||
// in prod mode, Forgejo must have correct templates to run
|
||||
log.Fatal("Forgejo can't run with template errors: %s", msg)
|
||||
} else {
|
||||
// in dev mode, do not need to really exit, because the template errors could be fixed by developer soon and the templates get reloaded
|
||||
log.Error("There are template errors but Gitea continues to run in dev mode: %s", msg)
|
||||
log.Error("There are template errors but Forgejo continues to run in dev mode: %s", msg)
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -9,6 +9,7 @@ import (
|
|||
"net/url"
|
||||
"strings"
|
||||
|
||||
"code.gitea.io/gitea/modules/session"
|
||||
"code.gitea.io/gitea/modules/setting"
|
||||
)
|
||||
|
||||
|
@ -48,12 +49,12 @@ func SetSiteCookie(resp http.ResponseWriter, name, value string, maxAge int) {
|
|||
// Previous versions would use a cookie path with a trailing /.
|
||||
// These are more specific than cookies without a trailing /, so
|
||||
// we need to delete these if they exist.
|
||||
DeleteLegacySiteCookie(resp, name)
|
||||
deleteLegacySiteCookie(resp, name)
|
||||
}
|
||||
|
||||
// DeleteLegacySiteCookie deletes the cookie with the given name at the cookie
|
||||
// deleteLegacySiteCookie deletes the cookie with the given name at the cookie
|
||||
// path with a trailing /, which would unintentionally override the cookie.
|
||||
func DeleteLegacySiteCookie(resp http.ResponseWriter, name string) {
|
||||
func deleteLegacySiteCookie(resp http.ResponseWriter, name string) {
|
||||
if setting.SessionConfig.CookiePath == "" || strings.HasSuffix(setting.SessionConfig.CookiePath, "/") {
|
||||
// If the cookie path ends with /, no legacy cookies will take
|
||||
// precedence, so do nothing. The exception is that cookies with no
|
||||
|
@ -74,3 +75,11 @@ func DeleteLegacySiteCookie(resp http.ResponseWriter, name string) {
|
|||
}
|
||||
resp.Header().Add("Set-Cookie", cookie.String())
|
||||
}
|
||||
|
||||
func init() {
|
||||
session.BeforeRegenerateSession = append(session.BeforeRegenerateSession, func(resp http.ResponseWriter, _ *http.Request) {
|
||||
// Ensure that a cookie with a trailing slash does not take precedence over
|
||||
// the cookie written by the middleware.
|
||||
deleteLegacySiteCookie(resp, setting.SessionConfig.CookieName)
|
||||
})
|
||||
}
|
||||
|
|
27
options/license/BSD-2-clause-first-lines
Normal file
27
options/license/BSD-2-clause-first-lines
Normal file
|
@ -0,0 +1,27 @@
|
|||
Copyright (C) 2006,2007,2009 NTT (Nippon Telegraph and Telephone
|
||||
Corporation). All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions
|
||||
are met:
|
||||
|
||||
1. Redistributions of source code must retain the above
|
||||
copyright notice, this list of conditions and the following
|
||||
disclaimer as the first lines of this file unmodified.
|
||||
|
||||
2. Redistributions in binary form must reproduce the above
|
||||
copyright notice, this list of conditions and the following
|
||||
disclaimer in the documentation and/or other materials provided
|
||||
with the distribution.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY NTT "AS IS" AND ANY EXPRESS OR IMPLIED
|
||||
WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL NTT BE LIABLE FOR ANY DIRECT,
|
||||
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
||||
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
|
||||
OF THE POSSIBILITY OF SUCH DAMAGE.
|
13
options/license/Sun-PPP-2000
Normal file
13
options/license/Sun-PPP-2000
Normal file
|
@ -0,0 +1,13 @@
|
|||
Copyright (c) 2000 by Sun Microsystems, Inc.
|
||||
All rights reserved.
|
||||
|
||||
Permission to use, copy, modify, and distribute this software and its
|
||||
documentation is hereby granted, provided that the above copyright
|
||||
notice appears in all copies.
|
||||
|
||||
SUN MAKES NO REPRESENTATION OR WARRANTIES ABOUT THE SUITABILITY OF
|
||||
THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
|
||||
TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
|
||||
PARTICULAR PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR
|
||||
ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
|
||||
DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES
|
7
options/license/pkgconf
Normal file
7
options/license/pkgconf
Normal file
|
@ -0,0 +1,7 @@
|
|||
Permission to use, copy, modify, and/or distribute this software for any
|
||||
purpose with or without fee is hereby granted, provided that the above
|
||||
copyright notice and this permission notice appear in all copies.
|
||||
|
||||
This software is provided 'as is' and without any warranty, express or
|
||||
implied. In no event shall the authors be liable for any damages arising
|
||||
from the use of this software.
|
|
@ -135,6 +135,9 @@ email_notifications.disable = Изключване на известията п
|
|||
delete_account = Изтриване на акаунта ви
|
||||
confirm_delete_account = Потвърждаване на изтриването
|
||||
email_notifications.onmention = Ел. поща само при споменаване
|
||||
pronouns_unspecified = Непосочени
|
||||
pronouns = Местоимения
|
||||
gpg_token_code = echo "%s" | gpg -a --default-key %s --detach-sig
|
||||
|
||||
[packages]
|
||||
container.labels.value = Стойност
|
||||
|
@ -157,6 +160,7 @@ settings.delete.success = Пакетът бе изтрит.
|
|||
settings.delete = Изтриване на пакета
|
||||
container.details.platform = Платформа
|
||||
settings.delete.error = Неуспешно изтриване на пакет.
|
||||
installation = Инсталация
|
||||
|
||||
[tool]
|
||||
hours = %d часа
|
||||
|
@ -290,7 +294,7 @@ settings.discord_username = Потребителско име
|
|||
issues.filter_sort.mostforks = Най-много разклонения
|
||||
activity = Дейност
|
||||
issues = Задачи
|
||||
settings.update_settings = Обновяване на настройките
|
||||
settings.update_settings = Запазване на настройките
|
||||
visibility = Видимост
|
||||
settings.site = Уебсайт
|
||||
watchers = Наблюдаващи
|
||||
|
@ -411,8 +415,8 @@ repo_gitignore_helper = Изберете .gitignore шаблони.
|
|||
auto_init = Да се инициализира хранилище (Добавя .gitignore, License и README)
|
||||
template.issue_labels = Етикети за задачите
|
||||
migrate_items_labels = Етикети
|
||||
issues.label_templates.title = Зареждане на предварително зададен набор от етикети
|
||||
issues.label_templates.helper = Изберете набор от етикети
|
||||
issues.label_templates.title = Зареждане на предв. зададен набор от етикети
|
||||
issues.label_templates.helper = Изберете предв. зададен набор от етикети
|
||||
projects.template.desc = Шаблон
|
||||
projects.card_type.text_only = Само текст
|
||||
projects.card_type.images_and_text = Изображения и текст
|
||||
|
@ -505,7 +509,7 @@ wiki.filter_page = Филтриране на страница
|
|||
wiki.back_to_wiki = Обратно към уики страницата
|
||||
wiki.wiki_page_revisions = Ревизии на уики страницата
|
||||
wiki.file_revision = Ревизия на страницата
|
||||
activity.title.issues_created_by = %s създадена от %s
|
||||
activity.title.issues_created_by = %s създадени от %s
|
||||
wiki.delete_page_notice_1 = Изтриването на уики страницата "%s" не може да бъде отменено. Продължаване?
|
||||
wiki.page_name_desc = Въведете име за тази уики страница. Някои специални имена са: "Home", "_Sidebar" и "_Footer".
|
||||
wiki.page_already_exists = Вече съществува уики страница със същото име.
|
||||
|
@ -644,16 +648,16 @@ issues.filter_assginee_no_select = Всички изпълнители
|
|||
issues.filter_assginee_no_assignee = Без изпълнител
|
||||
activity.opened_prs_count_1 = Предложена заявка за сливане
|
||||
activity.opened_prs_count_n = Предложени заявки за сливане
|
||||
activity.title.prs_merged_by = %s слята от %s
|
||||
activity.title.prs_merged_by = %s слети от %s
|
||||
activity.merged_prs_label = Слята
|
||||
activity.opened_prs_label = Предложена
|
||||
activity.title.issues_closed_from = %s затворена от %s
|
||||
activity.title.issues_closed_from = %s затворени от %s
|
||||
activity.closed_issue_label = Затворена
|
||||
activity.new_issue_label = Отворена
|
||||
activity.title.releases_1 = %d издание
|
||||
activity.title.releases_n = %d издания
|
||||
milestones.completeness = <strong>%d%%</strong> Завършен
|
||||
activity.title.prs_opened_by = %s предложена от %s
|
||||
activity.title.prs_opened_by = %s предложени от %s
|
||||
issues.action_milestone_no_select = Без етап
|
||||
issues.action_assignee_no_select = Без изпълнител
|
||||
milestones.edit = Редактиране на етапа
|
||||
|
@ -672,7 +676,7 @@ issues.action_assignee = Изпълнител
|
|||
milestones.closed = Затворен %s
|
||||
milestones.open = Отваряне
|
||||
milestones.close = Затваряне
|
||||
issues.label_templates.use = Използване на набор от етикети
|
||||
issues.label_templates.use = Използване на предв. зададен набор от етикети
|
||||
issues.add_milestone_at = `добави това към етапа <b>%s</b> %s`
|
||||
issues.add_label = добави етикета %s %s
|
||||
issues.add_labels = добави етикети %s %s
|
||||
|
@ -741,7 +745,7 @@ issues.due_date_form_edit = Редактиране
|
|||
issues.due_date_form_remove = Премахване
|
||||
issues.due_date_modified = промени крайния срок от %[2]s на %[1]s %[3]s
|
||||
pulls.compare_changes = Нова заявка за сливане
|
||||
activity.title.releases_published_by = %s публикувано от %s
|
||||
activity.title.releases_published_by = %s публикувани от %s
|
||||
topic.manage_topics = Управление на темите
|
||||
topic.done = Готово
|
||||
find_file.go_to_file = Отиване към файл
|
||||
|
@ -1114,6 +1118,16 @@ release.download_count_few = %s изтегляния
|
|||
branch.restore_success = Клонът "%s" е възстановен.
|
||||
tag.create_tag_from = Създаване на нов маркер от "%s"
|
||||
branch.create_new_branch = Създаване на клон от клон:
|
||||
pulls.status_checks_show_all = Показване на всички проверки
|
||||
size_format = %[1]s: %[2]s; %[3]s: %[4]s
|
||||
pulls.filter_changes_by_commit = Филтриране по подаване
|
||||
issues.ref_closing_from = `<a href="%[3]s">спомена заявка за сливане %[4]s, която ще затвори тази задача</a> <a id="%[1]s" href="#%[1]s">%[2]s</a>`
|
||||
issues.ref_from = `от %[1]s`
|
||||
issues.ref_reopening_from = `<a href="%[3]s">спомена заявка за сливане %[4]s, която ще отвори наново тази задача</a> <a id="%[1]s" href="#%[1]s">%[2]s</a>`
|
||||
issues.draft_title = Чернова
|
||||
pulls.reopen_to_merge = Моля, отворете наново тази заявка за сливане, за да извършите сливане.
|
||||
pulls.cant_reopen_deleted_branch = Тази заявка за сливане не може да бъде отворена наново, защото клонът бе изтрит.
|
||||
pulls.status_checks_hide_all = Скриване на всички проверки
|
||||
|
||||
[modal]
|
||||
confirm = Потвърждаване
|
||||
|
@ -1271,6 +1285,7 @@ issue.action.review = <b>@%[1]s</b> коментира в тази заявка
|
|||
issue.action.reopen = <b>@%[1]s</b> отвори наново #%[2]d.
|
||||
issue.action.approve = <b>@%[1]s</b> одобри тази заявка за сливане.
|
||||
issue.action.reject = <b>@%[1]s</b> поиска промени в тази заявка за сливане.
|
||||
register_notify.title = %[1]s, добре дошли в %[2]s
|
||||
|
||||
[user]
|
||||
joined_on = Присъединени на %s
|
||||
|
@ -1295,6 +1310,8 @@ email_visibility.limited = Вашият адрес на ел. поща е вид
|
|||
disabled_public_activity = Този потребител е изключил публичната видимост на дейността.
|
||||
email_visibility.private = Вашият адрес на ел. поща е видим само за вас и администраторите
|
||||
show_on_map = Показване на това място на картата
|
||||
followers_one = %d последовател
|
||||
following_one = %d следван
|
||||
|
||||
[home]
|
||||
filter = Други филтри
|
||||
|
@ -1390,6 +1407,7 @@ packages.type = Тип
|
|||
orgs.teams = Екипи
|
||||
orgs.members = Участници
|
||||
config_settings = Настройки
|
||||
users.details = Потребителски данни
|
||||
|
||||
[error]
|
||||
not_found = Целта не може да бъде намерена.
|
||||
|
@ -1425,6 +1443,12 @@ team_name_been_taken = Името на екипа вече е заето.
|
|||
org_name_been_taken = Името на организацията вече е заето.
|
||||
still_own_packages = Вашият акаунт притежава един или повече пакети, първо ги изтрийте.
|
||||
still_own_repo = Вашият акаунт притежава едно или повече хранилища, първо ги изтрийте или прехвърлете.
|
||||
FullName = Пълно име
|
||||
Description = Описание
|
||||
Pronouns = Местоимения
|
||||
Biography = Биография
|
||||
Website = Уебсайт
|
||||
Location = Местоположение
|
||||
|
||||
[action]
|
||||
close_issue = `затвори задача <a href="%[1]s">%[3]s#%[2]s</a>`
|
||||
|
@ -1550,6 +1574,9 @@ less = По-малко
|
|||
number_of_contributions_in_the_last_12_months = %s приноса през последните 12 месеца
|
||||
contributions_zero = Няма приноси
|
||||
more = Повече
|
||||
contributions_one = принос
|
||||
contributions_few = приноса
|
||||
contributions_format = {contributions} на {day} {month}, {year}
|
||||
|
||||
[git.filemode]
|
||||
directory = Директория
|
||||
|
@ -1588,6 +1615,7 @@ commit_kind = Търсене на подавания...
|
|||
project_kind = Търсене на проекти...
|
||||
package_kind = Търсене на пакети...
|
||||
search = Търсене...
|
||||
branch_kind = Търсене на клонове...
|
||||
|
||||
[markup]
|
||||
filepreview.lines = Редове от %[1]d до %[2]d в %[3]s
|
||||
|
|
|
@ -633,6 +633,14 @@ admin_cannot_delete_self=Nemůžete se smazat, dokud jste správce. Nejdříve p
|
|||
unset_password = Tento uživatel nemá nastavené heslo.
|
||||
unsupported_login_type = U tohoto typu účtu není funkce odstranění účtu podporována.
|
||||
required_prefix = Vstup musí začínat textem „%s“
|
||||
FullName = Celé jméno
|
||||
Description = Popis
|
||||
Pronouns = Zájmena
|
||||
Website = Webová stránka
|
||||
Location = Umístění
|
||||
To = Název větve
|
||||
Biography = Životopis
|
||||
AccessToken = Přístupový token
|
||||
|
||||
[user]
|
||||
change_avatar=Změnit váš avatar…
|
||||
|
@ -2084,7 +2092,7 @@ settings.mirror_settings.push_mirror.edit_sync_time=Upravit interval synchroniza
|
|||
|
||||
settings.sync_mirror=Synchronizovat nyní
|
||||
settings.site=Webová stránka
|
||||
settings.update_settings=Aktualizovat nastavení
|
||||
settings.update_settings=Uložit nastavení
|
||||
settings.update_mirror_settings=Aktualizovat nastavení zrcadla
|
||||
settings.branches.switch_default_branch=Přepnout výchozí větev
|
||||
settings.branches.update_default_branch=Aktualizovat výchozí větev
|
||||
|
@ -2342,7 +2350,7 @@ settings.protected_branch.delete_rule=Odstranit pravidlo
|
|||
settings.protected_branch_can_push=Povolit nahrání?
|
||||
settings.protected_branch_can_push_yes=Můžete nahrávat
|
||||
settings.protected_branch_can_push_no=Nemůžete nahrávat
|
||||
settings.branch_protection=Pravidla ochrany větve pro větev „<b>%s</b>“
|
||||
settings.branch_protection=Pravidla ochrany pro větev „<b>%s</b>“
|
||||
settings.protect_this_branch=Povolit ochranu větve
|
||||
settings.protect_this_branch_desc=Zabraňuje smazání a omezuje gitu nahrávání a slučování do větve.
|
||||
settings.protect_disable_push=Zakázat nahrávání
|
||||
|
@ -2739,6 +2747,8 @@ settings.sourcehut_builds.graphql_url = URL GraphQL (např. https://builds.sr.ht
|
|||
settings.sourcehut_builds.visibility = Viditelnost práce
|
||||
settings.sourcehut_builds.secrets = Tajné klíče
|
||||
settings.sourcehut_builds.secrets_helper = Udělit práci přístup k tajným klíčům sestavení (vyžaduje oprávnění SECRETS:RO)
|
||||
settings.graphql_url = URL GraphQL
|
||||
settings.sourcehut_builds.access_token_helper = Přístupový token, který má oprávnění JOBS:RW. Vygenerujte <a target="_blank" rel="noopener noreferrer" href="%s">token builds.sr.ht</a> nebo <a target="_blank" rel="noopener noreferrer" href="%s">token builds.sr.ht s přístupem k tajným klíčům</a> na meta.sr.ht.
|
||||
|
||||
[graphs]
|
||||
component_loading_info = Tohle může chvíli trvat…
|
||||
|
@ -3027,12 +3037,12 @@ users.list_status_filter.not_active=Neaktivní
|
|||
users.list_status_filter.is_admin=Administrátor
|
||||
users.list_status_filter.not_admin=Není administrátor
|
||||
users.list_status_filter.is_restricted=Omezeno
|
||||
users.list_status_filter.not_restricted=Není omezeno
|
||||
users.list_status_filter.not_restricted=Není omezen
|
||||
users.list_status_filter.is_prohibit_login=Zakázat přihlášení
|
||||
users.list_status_filter.not_prohibit_login=Povolit přihlášení
|
||||
users.list_status_filter.is_2fa_enabled=2FA povoleno
|
||||
users.list_status_filter.not_2fa_enabled=2FA zakázáno
|
||||
users.details=Detaily uživatele
|
||||
users.details=Podrobnosti o uživateli
|
||||
|
||||
emails.email_manage_panel=Správa uživatelských e-mailů
|
||||
emails.primary=Hlavní
|
||||
|
@ -3816,7 +3826,7 @@ no_results = Nenalezeny žádné odpovídající výsledky.
|
|||
fuzzy_tooltip = Zahrnout také výsledky, které úzce odpovídají hledanému výrazu
|
||||
search = Hledat...
|
||||
keyword_search_unavailable = Hledání pomocí klíčových slov momentálně není dostupné. Kontaktujte prosím administrátora webu.
|
||||
code_search_by_git_grep = Aktuální výsledky vyhledávání kódu jsou poskytovány službou „git grep“. Lepší výsledky dostanete, když administrátor webu povolí indexování repozitářů.
|
||||
code_search_by_git_grep = Aktuální výsledky vyhledávání kódu jsou poskytovány službou „git grep“. Lepší výsledky dostanete, když administrátor webu povolí indexování kódu.
|
||||
|
||||
[markup]
|
||||
filepreview.lines = Řádky %[1]d až %[2]d v souboru %[3]s
|
||||
|
|
|
@ -18,8 +18,8 @@ template=Vorlage
|
|||
language=Sprache
|
||||
notifications=Benachrichtigungen
|
||||
active_stopwatch=Aktive Zeiterfassung
|
||||
create_new=Erstellen …
|
||||
user_profile_and_more=Profil und Einstellungen …
|
||||
create_new=Erstellen…
|
||||
user_profile_and_more=Profil und Einstellungen…
|
||||
signed_in_as=Angemeldet als
|
||||
enable_javascript=Diese Website benötigt JavaScript.
|
||||
toc=Inhaltsverzeichnis
|
||||
|
@ -211,7 +211,7 @@ platform_desc=Forgejo läuft überall, wo <a target="_blank" rel="noopener noref
|
|||
lightweight=Leichtgewichtig
|
||||
lightweight_desc=Forgejo hat minimale Systemanforderungen und kann selbst auf einem günstigen und stromsparenden Raspberry Pi betrieben werden!
|
||||
license=Quelloffen
|
||||
license_desc=Hole dir <a target="_blank" rel="noopener noreferrer" href="https://forgejo.org/download">Forgejo</a>! Tritt uns bei, indem du uns <a target="_blank" rel="noopener noreferrer" href="https://codeberg.org/forgejo/forgejo">hilfst</a>, dieses Projekt noch besser zu machen. Scheue dich nicht davor, bei uns mitzuwirken!
|
||||
license_desc=Hole dir <a target="_blank" rel="noopener noreferrer" href="https://forgejo.org/download">Forgejo</a>! Tritt uns bei, indem du uns <a target="_blank" rel="noopener noreferrer" href="https://codeberg.org/forgejo/forgejo">hilfst</a>, dieses Projekt noch besser zu gestalten. Scheue dich nicht davor, bei uns mitzuwirken!
|
||||
|
||||
[install]
|
||||
install=Installation
|
||||
|
@ -453,7 +453,7 @@ password_pwned_err=Anfrage an HaveIBeenPwned konnte nicht abgeschlossen werden
|
|||
change_unconfirmed_email_summary = Ändern der E-Mail-Adresse, an die die Aktivierungsnachricht gesendet wird.
|
||||
change_unconfirmed_email_error = Ändern der E-Mail-Adresse fehlgeschlagen: %v
|
||||
last_admin = Du kannst den letzten Administrator nicht entfernen. Es muss mindestens einen Administrator geben.
|
||||
change_unconfirmed_email = Wenn Sie bei der Registrierung eine falsche E-Mail-Adresse angegeben haben, können Sie diese unten ändern, woraufhin eine Bestätigung an die neue Adresse geschickt wird.
|
||||
change_unconfirmed_email = Wenn du bei der Anmeldung eine falsche E-Mail-Adresse angegeben hast, kannst du diese unten ändern und bekommst stattdessen eine Bestätigung an die neue Adresse geschickt.
|
||||
remember_me.compromised = Der Anmeldetoken ist nicht mehr gültig, dies könnte auf ein kompromittiertes Konto hindeuten. Bitte prüfe dein Konto auf ungewöhnliche Aktivitäten.
|
||||
tab_signin = Anmelden
|
||||
tab_signup = Registrieren
|
||||
|
@ -629,6 +629,14 @@ admin_cannot_delete_self = Du kannst dich nicht selbst löschen, wenn du ein Adm
|
|||
unset_password = Für den Benutzer ist das Passwort nicht gesetzt.
|
||||
unsupported_login_type = Dieser Login-Typ unterstützt keine Accountlöschung.
|
||||
required_prefix = Eingabe muss mit „%s“ anfangen
|
||||
Description = Beschreibung
|
||||
FullName = Vollständiger Name
|
||||
Pronouns = Pronomen
|
||||
Biography = Biografie
|
||||
Website = Webseite
|
||||
Location = Ort
|
||||
To = Branchname
|
||||
AccessToken = Zugangstoken
|
||||
|
||||
|
||||
[user]
|
||||
|
@ -731,7 +739,7 @@ keep_activity_private_popup=Deine Aktivität wird nur für dich und die Instanza
|
|||
|
||||
lookup_avatar_by_mail=Profilbild anhand der E-Mail-Addresse suchen
|
||||
federated_avatar_lookup=Suche nach föderierten Profilbildern
|
||||
enable_custom_avatar=Benutzerdefiniertes Profilbild benutzen
|
||||
enable_custom_avatar=Benutzerdefiniertes Profilbild verwenden
|
||||
choose_new_avatar=Neues Profilbild auswählen
|
||||
update_avatar=Profilbild aktualisieren
|
||||
delete_current_avatar=Aktuelles Profilbild löschen
|
||||
|
@ -975,7 +983,7 @@ visibility.limited_tooltip=Nur für authentifizierte Benutzer sichtbar
|
|||
visibility.private=Privat
|
||||
visibility.private_tooltip=Sichtbar nur für Mitglieder von Organisationen, denen du beigetreten bist
|
||||
user_block_success = Dieser Benutzer wurde erfolgreich blockiert.
|
||||
twofa_recovery_tip = Falls du dein Gerät verlierst, wirst du in der Lage sein, einen einmalig verwendbaren Wiederherstellungsschlüssel zu benutzen, um den auf dein Konto wiederherzustellen.
|
||||
twofa_recovery_tip = Falls du dein Gerät verlierst, wirst du in der Lage sein, einen einmalig verwendbaren Wiederherstellungsschlüssel zu verwenden, um den auf dein Konto wiederherzustellen.
|
||||
webauthn_alternative_tip = Du möchtest vielleicht eine zusätzliche Authentifizierungsmethode einrichten.
|
||||
blocked_users_none = Keine Benutzer blockiert.
|
||||
webauthn_key_loss_warning = Falls du deine Security-Keys verlierst, wirst du Zugang zu deinem Konto verlieren.
|
||||
|
@ -1032,7 +1040,7 @@ issue_labels=Issue-Labels
|
|||
issue_labels_helper=Wähle eine Issue-Label-Sammlung.
|
||||
license=Lizenz
|
||||
license_helper=Wähle eine Lizenz aus.
|
||||
license_helper_desc=Eine Lizenz regelt, was andere mit deinem Code tun (oder nicht tun) können. Unsicher, welches für dein Projekt die Richtige ist? Siehe den <a target="_blank" rel="noopener noreferrer" href="%s">Lizenzwahlhelfer</a>.
|
||||
license_helper_desc=Eine Lizenz regelt, was andere mit deinem Code tun (oder nicht tun) können. Unsicher, welches für dein Projekt die Richtige ist? Siehe <a target="_blank" rel="noopener noreferrer" href="%s">Choose a license.</a>.
|
||||
readme=README
|
||||
readme_helper=Wähle eine README-Vorlage aus.
|
||||
readme_helper_desc=Hier kannst du eine komplette Beschreibung für dein Projekt schreiben.
|
||||
|
@ -1234,7 +1242,7 @@ file_view_raw=Originalformat anzeigen
|
|||
file_permalink=Permalink
|
||||
file_too_large=Die Datei ist zu groß zum Anzeigen.
|
||||
invisible_runes_header=`Diese Datei enthält unsichtbare Unicode-Zeichen`
|
||||
invisible_runes_description=`Diese Datei enthält unsichtbare Unicode-Zeichen, die für Menschen nicht unterscheidbar sind, aber von einem Computer unterschiedlich verarbeitet werden können. Wenn du glaubst, dass das absichtlich so ist, kannst du diese Warnung ignorieren. Benutze den „Escapen“-Button, um versteckte Zeichen anzuzeigen.`
|
||||
invisible_runes_description=`Diese Datei enthält unsichtbare Unicode-Zeichen, die für Menschen nicht unterscheidbar sind, jedoch von einem Computer unterschiedlich verarbeitet werden können. Wenn du glaubst, dass das absichtlich so ist, kannst du diese Warnung ignorieren. Benutze den „Escapen“-Button, um versteckte Zeichen anzuzeigen.`
|
||||
ambiguous_runes_header=`Diese Datei enthält mehrdeutige Unicode-Zeichen`
|
||||
ambiguous_runes_description=`Diese Datei enthält Unicode-Zeichen, die mit anderen Zeichen verwechselt werden können. Wenn du glaubst, dass das absichtlich so ist, kannst du diese Warnung ignorieren. Benutze den „Escapen“-Button, um versteckte Zeichen anzuzeigen.`
|
||||
invisible_runes_line=`Diese Zeile enthält unsichtbare Unicode-Zeichen`
|
||||
|
@ -1679,7 +1687,7 @@ issues.dependency.issue_no_dependencies=Keine Abhängigkeiten gesetzt.
|
|||
issues.dependency.pr_no_dependencies=Keine Abhängigkeiten gesetzt.
|
||||
issues.dependency.no_permission_1=Du bist nicht berechtigt, %d Abhängigkeit zu lesen
|
||||
issues.dependency.no_permission_n=Du bist nicht berechtigt, %d Abhängigkeiten zu lesen
|
||||
issues.dependency.no_permission.can_remove=Du hast keine Berechtigung, diese Abhängigkeit zu lesen, kannst diese Abhängigkeit aber entfernen
|
||||
issues.dependency.no_permission.can_remove=Du hast keine Berechtigung, diese Abhängigkeit zu lesen, kannst diese Abhängigkeit jedoch entfernen
|
||||
issues.dependency.add=Abhängigkeit hinzufügen …
|
||||
issues.dependency.cancel=Abbrechen
|
||||
issues.dependency.remove=Entfernen
|
||||
|
@ -1798,7 +1806,7 @@ pulls.remove_prefix=Präfix „<strong>%s</strong>“ entfernen
|
|||
pulls.data_broken=Dieser Pull-Requests ist kaputt, da Fork-Informationen gelöscht wurden.
|
||||
pulls.files_conflicted=Dieser Pull-Request hat Änderungen, die im Widerspruch zum Ziel-Branch stehen.
|
||||
pulls.is_checking=Die Merge-Konfliktprüfung läuft noch. Bitte aktualisiere die Seite in wenigen Augenblicken.
|
||||
pulls.is_ancestor=Dieser Branch ist bereits im Zielbranch enthalten. Es gibt nichts zusammenzuführen.
|
||||
pulls.is_ancestor=Dieser Branch ist bereits im Zielbranch enthalten. Es existiert nichts zusammenzuführen.
|
||||
pulls.is_empty=Die Änderungen an diesem Branch sind bereits auf dem Zielbranch. Dies wird ein leerer Commit sein.
|
||||
pulls.required_status_check_failed=Einige erforderliche Prüfungen waren nicht erfolgreich.
|
||||
pulls.required_status_check_missing=Einige erforderliche Prüfungen fehlen.
|
||||
|
@ -1810,7 +1818,7 @@ pulls.blocked_by_outdated_branch=Dieser Pull-Request ist blockiert, da er veralt
|
|||
pulls.blocked_by_changed_protected_files_1=Dieser Pull-Request ist blockiert, weil er eine geschützte Datei ändert:
|
||||
pulls.blocked_by_changed_protected_files_n=Dieser Pull-Request ist blockiert, weil er geschützte Dateien ändert:
|
||||
pulls.can_auto_merge_desc=Dieser Pull-Request kann automatisch zusammengeführt werden.
|
||||
pulls.cannot_auto_merge_desc=Dieser Pull-Request kann nicht automatisch zusammengeführt werden, da es Konflikte gibt.
|
||||
pulls.cannot_auto_merge_desc=Dieser Pull-Request kann nicht automatisch zusammengeführt werden, da Konflikte existieren.
|
||||
pulls.cannot_auto_merge_helper=Bitte manuell zusammenführen, um die Konflikte zu beheben.
|
||||
pulls.num_conflicting_files_1=%d Datei mit Konflikten
|
||||
pulls.num_conflicting_files_n=%d Dateien mit Konflikten
|
||||
|
@ -1836,9 +1844,9 @@ pulls.merge_commit_id=Die Merge-Commit-ID
|
|||
pulls.require_signed_wont_sign=Der Branch erfordert einen signierten Commit, aber dieser Merge wird nicht signiert
|
||||
|
||||
pulls.invalid_merge_option=Du kannst diese Merge-Option auf diesen Pull-Request nicht anwenden.
|
||||
pulls.merge_conflict=Merge fehlgeschlagen: Beim Zusammenführen gab es einen Konflikt. Tipp: Probiere eine andere Strategie
|
||||
pulls.merge_conflict=Merge fehlgeschlagen: Beim Zusammenführen existierte ein Konflikt. Tipp: Probiere eine andere Strategie
|
||||
pulls.merge_conflict_summary=Fehlermeldung
|
||||
pulls.rebase_conflict=Merge fehlgeschlagen: Es gab einen Konflikt beim Rebasen des Commits: %[1]s. Tipp: Versuche eine andere Strategie
|
||||
pulls.rebase_conflict=Merge fehlgeschlagen: Es existierte ein Konflikt beim Rebasen des Commits: %[1]s. Tipp: Versuche eine andere Strategie
|
||||
pulls.rebase_conflict_summary=Fehlermeldung
|
||||
pulls.unrelated_histories=Merge fehlgeschlagen: Der Head des Merges und die Basis haben keinen gemeinsamen Verlauf. Tipp: Versuche eine andere Strategie
|
||||
pulls.merge_out_of_date=Merge fehlgeschlagen: Während des Zusammenführens wurde die Basis aktualisiert. Tipp: Versuche es erneut.
|
||||
|
@ -1846,7 +1854,7 @@ pulls.head_out_of_date=Mergen fehlgeschlagen: Der Head wurde aktualisiert, währ
|
|||
pulls.has_merged=Fehler: Der Pull-Request wurde zusammengeführt, du kannst den Zielbranch nicht wieder zusammenführen oder ändern.
|
||||
pulls.push_rejected=Pushen fehlgeschlagen: Der Push wurde abgelehnt. Überprüfe die Git-Hooks für dieses Repository.
|
||||
pulls.push_rejected_summary=Vollständige Ablehnungsmeldung
|
||||
pulls.push_rejected_no_message=Pushen fehlgeschlagen: Der Push wurde abgelehnt, aber es gab keine Fehlermeldung. Überprüfe die Git-Hooks für dieses Repository
|
||||
pulls.push_rejected_no_message=Pushen fehlgeschlagen: Der Push wurde abgelehnt, doch es existierte keine Fehlermeldung. Überprüfe die Git-Hooks für dieses Repository
|
||||
pulls.open_unmerged_pull_exists=`Du kannst diesen Pull-Request nicht erneut öffnen, da noch ein anderer (#%d) mit identischen Eigenschaften offen ist.`
|
||||
pulls.status_checking=Einige Prüfungen sind noch ausstehend
|
||||
pulls.status_checks_success=Alle Prüfungen waren erfolgreich
|
||||
|
@ -2344,7 +2352,7 @@ settings.protect_this_branch_desc=Verhindert das Löschen und schränkt Git auf
|
|||
settings.protect_disable_push=Push deaktivieren
|
||||
settings.protect_disable_push_desc=Kein Push auf diesen Branch erlauben.
|
||||
settings.protect_enable_push=Push aktivieren
|
||||
settings.protect_enable_push_desc=Jeder, der Schreibzugriff hat, darf in diesen Branch pushen (aber kein Force-Push).
|
||||
settings.protect_enable_push_desc=Jeder, der Schreibzugriff hat, darf in diesen Branch pushen (jedoch kein Force-Push).
|
||||
settings.protect_enable_merge=Merge aktivieren
|
||||
settings.protect_enable_merge_desc=Jeder mit Schreibzugriff darf die Pull-Requests in diesen Branch zusammenführen.
|
||||
settings.protect_whitelist_committers=Whitelist-eingeschränkter Push
|
||||
|
@ -2369,7 +2377,7 @@ settings.protect_no_valid_status_check_patterns=Keine gültigen Statuscheck-Must
|
|||
settings.protect_required_approvals=Erforderliche Genehmigungen:
|
||||
settings.protect_required_approvals_desc=Erlaube das Zusammenführen des Pull-Requests nur mit genügend positiven Reviews.
|
||||
settings.protect_approvals_whitelist_enabled=Genehmigungen auf Benutzer oder Teams auf der Whitelist beschränken
|
||||
settings.protect_approvals_whitelist_enabled_desc=Nur Reviews von Benutzern auf der Whitelist oder Teams zählen zu den erforderlichen Genehmigungen. Gibt es keine Whitelist, so zählen Reviews von jedem mit Schreibzugriff zu den erforderlichen Genehmigungen.
|
||||
settings.protect_approvals_whitelist_enabled_desc=Nur Reviews von Benutzern auf der Whitelist oder Teams zählen zu den erforderlichen Genehmigungen. Existiert keine Whitelist, so zählen Reviews von jedem mit Schreibzugriff zu den erforderlichen Genehmigungen.
|
||||
settings.protect_approvals_whitelist_users=Reviewer auf der Whitelist:
|
||||
settings.protect_approvals_whitelist_teams=Für Reviews gewhitelistete Teams:
|
||||
settings.dismiss_stale_approvals=Entferne alte Genehmigungen
|
||||
|
@ -2390,9 +2398,9 @@ settings.remove_protected_branch_failed=Entfernen der Branchschutzregel „%s“
|
|||
settings.protected_branch_deletion=Branch-Schutz löschen
|
||||
settings.protected_branch_deletion_desc=Wenn du den Branch-Schutz deaktivierst, können alle Nutzer mit Schreibrechten auf den Branch pushen. Fortfahren?
|
||||
settings.block_rejected_reviews=Zusammenführung bei abgelehnten Reviews blockieren
|
||||
settings.block_rejected_reviews_desc=Merge ist nicht möglich, wenn Änderungen durch offizielle Reviewer angefragt werden, auch wenn es genügend Genehmigungen gibt.
|
||||
settings.block_rejected_reviews_desc=Merge ist nicht möglich, wenn Änderungen durch offizielle Reviewer angefragt werden, auch wenn genügend Genehmigungen existieren.
|
||||
settings.block_on_official_review_requests=Merge bei offiziellen Review-Anfragen blockieren
|
||||
settings.block_on_official_review_requests_desc=Merge ist nicht möglich, wenn offizielle Review-Anfrangen vorliegen, selbst wenn es genügend Genehmigungen gibt.
|
||||
settings.block_on_official_review_requests_desc=Merge ist nicht möglich, wenn offizielle Review-Anfrangen vorliegen, selbst wenn genügend Genehmigungen existieren.
|
||||
settings.block_outdated_branch=Merge blockieren, wenn der Pull-Request veraltet ist
|
||||
settings.block_outdated_branch_desc=Merge ist nicht möglich, wenn der Head-Branch hinter dem Basis-Branch ist.
|
||||
settings.default_branch_desc=Wähle einen Standardbranch für Pull-Requests und Code-Commits:
|
||||
|
@ -2428,8 +2436,8 @@ settings.archive.error=Beim Versuch, das Repository zu archivieren, ist ein Fehl
|
|||
settings.archive.error_ismirror=Du kannst kein gespiegeltes Repo archivieren.
|
||||
settings.archive.branchsettings_unavailable=Branch-Einstellungen sind nicht verfügbar wenn das Repo archiviert ist.
|
||||
settings.archive.tagsettings_unavailable=Tag Einstellungen sind nicht verfügbar, wenn das Repo archiviert wurde.
|
||||
settings.unarchive.button=Archivieren rückgängig machen
|
||||
settings.unarchive.header=Archivieren dieses Repositorys rückgängig machen
|
||||
settings.unarchive.button=Archivierung zurücksetzen
|
||||
settings.unarchive.header=Archivierung dieses Repositorys zurücksetzen
|
||||
settings.unarchive.text=Durch das Aufheben der Archivierung kann das Repo wieder Commits und Pushes sowie neue Issues und Pull-Requests empfangen.
|
||||
settings.unarchive.success=Die Archivierung des Repos wurde erfolgreich wieder rückgängig gemacht.
|
||||
settings.unarchive.error=Beim Versuch, die Archivierung des Repos aufzuheben, ist ein Fehler aufgetreten. Weitere Details finden sich im Log.
|
||||
|
@ -2698,7 +2706,7 @@ open_with_editor = Öffnen mit %s
|
|||
commits.search_branch = Dieser Branch
|
||||
pulls.ready_for_review = Bereit zum Review?
|
||||
settings.rename_branch_failed_protected = Branch %s kann nicht umbenannt werden, weil er ein geschützter Branch ist.
|
||||
editor.commit_id_not_matching = Die Commit-ID passt nicht zur ID die du bearbeitet hast hast. Committe in einen neuen Branch, dann mach einen Merge.
|
||||
editor.commit_id_not_matching = Die Commit-ID passt nicht zur ID die du bearbeitet hast hast. Committe in einen neuen Branch, dann führe einen Merge durch.
|
||||
editor.push_out_of_date = Der Push scheint veraltet zu sein.
|
||||
n_commit_few = %s Commits
|
||||
n_branch_one = %s Branch
|
||||
|
@ -2723,6 +2731,10 @@ settings.sourcehut_builds.visibility = Job-Sichtbarkeit
|
|||
settings.sourcehut_builds.secrets = Geheimnisse
|
||||
settings.sourcehut_builds.secrets_helper = Dem Job zugriff auf die Build-Geheimnisse geben (benötigt die SECRETS:RO-Berechtigung)
|
||||
settings.web_hook_name_sourcehut_builds = SourceHut-Builds
|
||||
settings.graphql_url = GraphQL-URL
|
||||
settings.matrix.room_id_helper = Die Raum-ID kann über den Element-Webclient ermittelt werden: Raumeinstellungen > Erweitert > Interne Raum-ID. Beispielsweise %s.
|
||||
settings.sourcehut_builds.access_token_helper = Zugangstoken der die JOBS:RW-Freigabe hat. Generiere auf meta.sr.ht einen <a target="_blank" rel="noopener noreferrer" href="%s">builds.sr.ht-Token</a> oder einen <a target="_blank" rel="noopener noreferrer" href="%s">builds.sr.ht-Token mit Zugriff auf die Secrets</a>.
|
||||
settings.matrix.access_token_helper = Es wird empfohlen, einen dedizierten Matrix-Account hierfür anzulegen. Der Zugangstoken kann in einem Incognito-Tab über den Element-Webclient geholt werden: Benutzermenü (oben links) > Alle Einstellungen > Hilfe & Über > Erweitert > Zugangstoken (direkt unter der Homeserver-URL). Schließe das Incognito-Tab dann (Abmelden würde den Token ungültig werden lassen).
|
||||
|
||||
[graphs]
|
||||
|
||||
|
@ -3376,7 +3388,7 @@ notices.type_2=Aufgabe
|
|||
notices.desc=Beschreibung
|
||||
notices.op=Aktion
|
||||
notices.delete_success=Diese Systemmeldung wurde gelöscht.
|
||||
self_check.database_fix_mysql = Für MySQL-/MariaDB-Benutzer: Du kannst den Befehl „gitea doctor convert“ benutzen, um die Collation-Probleme zu lösen, oder du kannst das Problem mit „ALTER … COLLATE …“-SQLs manuell lösen.
|
||||
self_check.database_fix_mysql = Für MySQL-/MariaDB-Benutzer: Du kannst den Befehl „gitea doctor convert“ verwenden, um die Collation-Probleme zu lösen, oder du kannst das Problem mit „ALTER … COLLATE …“-SQLs manuell lösen.
|
||||
dashboard.sync_tag.started = Tags-Synchronisierung gestartet
|
||||
self_check.database_collation_case_insensitive = Datenbank benutzt eine Collation %s, welcher der Groß-/Kleinschreibung egal ist. Obwohl Forgejo damit arbeiten könnte, könnte es ein paar seltene Fälle geben, bei denen es nicht wie erwartet funktioniert.
|
||||
self_check = Selbstprüfung
|
||||
|
@ -3384,7 +3396,7 @@ dashboard.sync_repo_tags = Tags aus Git-Daten zu Datenbank synchronisieren
|
|||
emails.change_email_text = Bist du dir sicher, dass du diese E-Mail-Addresse aktualisieren möchtest?
|
||||
packages.cleanup.success = Abgelaufene Daten erfolgreich gesäubert
|
||||
self_check.no_problem_found = Noch kein Problem gefunden.
|
||||
self_check.database_inconsistent_collation_columns = Datenbank benutzt Collation %s, aber diese Spalten benutzen Collations, die nicht zusammenpassen. Das könnte ein paar unerwartete Probleme verursachen.
|
||||
self_check.database_inconsistent_collation_columns = Datenbank benutzt Collation %s, doch diese Spalten verwenden Collations, die nicht zusammenpassen. Das könnte ein paar unerwartete Probleme verursachen.
|
||||
self_check.database_collation_mismatch = Erwarte von Datenbank, folgende Collation zu verwenden: %s
|
||||
auths.tips.gmail_settings = Gmail-Einstellungen:
|
||||
config_settings = Einstellungen
|
||||
|
@ -3474,7 +3486,7 @@ error.no_committer_account=Es ist kein Account mit der E-Mail-Adresse des Commit
|
|||
error.no_gpg_keys_found=Es konnte kein GPG-Schlüssel zu dieser Signatur gefunden werden
|
||||
error.not_signed_commit=Kein signierter Commit
|
||||
error.failed_retrieval_gpg_keys=Fehler beim Abrufen eines Keys des Commiter-Kontos
|
||||
error.probable_bad_signature=WARNHINWEIS! Obwohl es einen Schlüssel mit dieser ID in der Datenbank gibt, verifiziert er nicht diesen Commit! Dieser Commit ist VERDÄCHTIG.
|
||||
error.probable_bad_signature=WARNHINWEIS! Obwohl ein Schlüssel mit dieser ID in der Datenbank existiert, verifiziert er nicht diesen Commit! Dieser Commit ist VERDÄCHTIG.
|
||||
error.probable_bad_default_signature=WARNHINWEIS! Obwohl der Standardschlüssel diese ID hat, verifiziert er nicht diesen Commit! Dieser Commit ist VERDÄCHTIG.
|
||||
|
||||
[units]
|
||||
|
@ -3738,8 +3750,8 @@ variables.creation.success=Die Variable „%s“ wurde hinzugefügt.
|
|||
variables.update.failed=Fehler beim Bearbeiten der Variable.
|
||||
variables.update.success=Die Variable wurde bearbeitet.
|
||||
runs.no_workflows.quick_start = Weißt du nicht, wie du mit Forgejo Actions anfangen sollst? Sieh dir die <a target="_blank" rel="noopener noreferrer" href="%s">Schnellstartanleitung</a> an.
|
||||
runs.no_matching_online_runner_helper = Es gibt keinen passenden Online-Runner mit dem Label: %s
|
||||
runs.no_workflows = Es gibt noch keine Workflows.
|
||||
runs.no_matching_online_runner_helper = Es existiert kein passender Online-Runner mit dem Label: %s
|
||||
runs.no_workflows = Es existieren noch keine Workflows.
|
||||
runs.no_workflows.documentation = Für weitere Informationen über Forgejo Actions, siehe <a target="_blank" rel="noopener noreferrer" href="%s">die Dokumentation</a>.
|
||||
runs.empty_commit_message = (leere Commit-Nachricht)
|
||||
variables.id_not_exist = Variable mit ID %d existiert nicht.
|
||||
|
|
|
@ -99,6 +99,7 @@ disabled = Disabled
|
|||
locked = Locked
|
||||
|
||||
copy = Copy
|
||||
copy_generic = Copy to clipboard
|
||||
copy_url = Copy URL
|
||||
copy_hash = Copy hash
|
||||
copy_content = Copy content
|
||||
|
@ -2599,7 +2600,7 @@ diff.comment.add_single_comment = Add single comment
|
|||
diff.comment.add_review_comment = Add comment
|
||||
diff.comment.start_review = Start review
|
||||
diff.comment.reply = Reply
|
||||
diff.review = Review
|
||||
diff.review = Finish review
|
||||
diff.review.header = Submit review
|
||||
diff.review.placeholder = Review comment
|
||||
diff.review.comment = Comment
|
||||
|
|
|
@ -228,8 +228,8 @@ 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_admin_name_is_reserved = Hindi angkop ang Administrator Username, naka-reserve ang username
|
||||
err_admin_name_is_invalid = Hindi angkop ang Administrator Username
|
||||
err_admin_name_is_reserved = Hindi angkop ang Username ng Tagapangasiwa, naka-reserve ang username
|
||||
err_admin_name_is_invalid = Hindi angkop ang Username ng Tagapangasiwa
|
||||
general_title = Mga General Setting
|
||||
app_name = Pamagat ng instansya
|
||||
app_name_helper = Maari mong ilagay ang pangalan ng iyong kompanya dito.
|
||||
|
@ -246,7 +246,7 @@ lfs_path_helper = Ang mga file na naka-track sa Git LFS ay ilalagay sa directory
|
|||
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.
|
||||
err_admin_name_pattern_not_allowed = Hindi angkop ang administrator username, ang username ay tumutugma sa reserved pattern
|
||||
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
|
||||
offline_mode = Paganahin ang local mode
|
||||
|
@ -278,8 +278,8 @@ openid_signup_popup = I-enable ang OpenID-based na pansariling pagrehistro ng us
|
|||
enable_captcha = I-enable ang CAPTCHA sa pagrehistro
|
||||
enable_captcha_popup = Kailanganin ang CAPTCHA sa pansariling pagrehistro ng user.
|
||||
require_sign_in_view_popup = Limitahan ang access ng pahina sa mga naka-sign in na user. Makikita lang ng mga bisita ang sign-in at pagrehistro na mga pahina.
|
||||
admin_title = Mga setting ng administrator account
|
||||
admin_name = Username ng administrator
|
||||
admin_title = Mga setting ng account ng tagapangasiwa
|
||||
admin_name = Username ng tagapangasiwa
|
||||
admin_password = Password
|
||||
confirm_password = Kumpirmahin ang password
|
||||
admin_email = Email address
|
||||
|
@ -294,7 +294,7 @@ run_user_not_match = Ang "user na tatakbo bilang" na username ay hindi ang kasul
|
|||
internal_token_failed = Nabigong maka-generate ng internal token: %v
|
||||
secret_key_failed = Nabigong maka-generate ng secret key: %v
|
||||
save_config_failed = Nabigong i-save ang configuration: %v
|
||||
invalid_admin_setting = Hindi angkop ang setting ng administrator account: %v
|
||||
invalid_admin_setting = Hindi angkop ang setting ng account ng tagapangasiwa: %v
|
||||
invalid_log_root_path = Hindi angkop ang log path: %v
|
||||
default_keep_email_private = Itago ang mga email address bilang default
|
||||
default_keep_email_private_popup = Itago ang mga email address ng mga bagong user account bilang default.
|
||||
|
@ -315,9 +315,9 @@ require_sign_in_view = Kailanganin ang pag-sign in para tignan ang nilalaman ng
|
|||
enable_update_checker_helper_forgejo = Pansamantalang susuriin ito para sa mga bagong bersyon ng Forgejo sa pamamagitan ng pagsuri sa isang tala ng TXT DNS sa release.forgejo.org.
|
||||
sqlite3_not_available = Ang itong bersyon ng Forgejo ay hindi sinusuportahan ang SQLite3. Paki-download ang opisyal na bersyon ng binary sa %s (hindi ang "gobuild" na bersyon).
|
||||
default_allow_create_organization = Payagan ang paggawa ng mga organisasyon bilang default
|
||||
disable_registration_popup = I-disable ang pansariling pagrehistro ng user. Ang mga pangangasiwa lamang ang makakagawa ng mga bagong user account.
|
||||
disable_registration_popup = I-disable ang pansariling pagrehistro ng user. Ang mga tagapangasiwa lamang ang makakagawa ng mga bagong user account.
|
||||
disable_gravatar_popup = I-disable ang Gravatar at mga third-party na avatar source. Ang isang default na avatar ay gagamitin maliban kung maga-upload ng avatar ang user.
|
||||
admin_setting_desc = Ang paggawa ng administrator account ay opsyonal. Ang pinakaunang nakarehistro na user ay awtomatikong magiging administrator.
|
||||
admin_setting_desc = Ang paggawa ng administrator account ay opsyonal. Ang pinakaunang nakarehistro na user ay awtomatikong magiging tagapangasiwa.
|
||||
|
||||
[heatmap]
|
||||
number_of_contributions_in_the_last_12_months = %s mga kontribusyon sa nakalipas na 12 buwan
|
||||
|
@ -364,7 +364,7 @@ license_desc = Kunin ang <a target="_blank" rel="noopener noreferrer" href="http
|
|||
create_new_account = Magrehistro ng Account
|
||||
register_helper_msg = May account ka na? Mag-sign in ngayon!
|
||||
social_register_helper_msg = May account ka na? I-link ngayon!
|
||||
disable_register_prompt = Naka-disable ang pagrehistro. Mangyaring makipag-ugnayan sa site administrator.
|
||||
disable_register_prompt = Naka-disable ang pagrehistro. Mangyaring makipag-ugnayan sa tagapangasiwa ng site.
|
||||
disable_register_mail = Ang kumpirmasyon sa pamamagitan ng Email sa pagrehistro ay naka-disable.
|
||||
remember_me = Tandaan ang device na ito
|
||||
forgot_password_title = Nakalimutan ang Password
|
||||
|
@ -377,7 +377,7 @@ reset_password_mail_sent_prompt = Ang isang bagong email pang-kumpirma ay ipinad
|
|||
active_your_account = Aktibahin Ang Iyong Account
|
||||
account_activated = Naaktiba na ang account
|
||||
prohibit_login = Ipinagbawalan ang Pag-sign in
|
||||
prohibit_login_desc = Pinagbawalan ang iyong account sa pag-sign in, mangyaring makipag-ugnayan sa site administrator.
|
||||
prohibit_login_desc = Pinagbawalan ang iyong account sa pag-sign in, mangyaring makipag-ugnayan sa tagapangasiwa ng site.
|
||||
resent_limit_prompt = Humiling ka na ng activation email kamakailan. Mangyaring maghintay ng 3 minuto at subukang muli.
|
||||
change_unconfirmed_email_summary = Palitan ang email address kung saan ipapadala ang activation email.
|
||||
change_unconfirmed_email = Kung nagbigay ka ng maling email address habang nagpaparehistro, pwede mong palitan sa ibaba, at ang isang kumpirmasyon ay ipapadala sa bagong address sa halip.
|
||||
|
@ -413,14 +413,14 @@ invalid_code_forgot_password = Ang iyong confirmation code ay hindi wasto o nag-
|
|||
confirmation_mail_sent_prompt = Ang isang bagong email pang-kumpirma ay ipinadala sa <b>%s</b>. Pakisuri ang iyong inbox sa loob ng %s para tapusin ang proseso ng pagrehistro. Kung mali ang email, maari kang mag-log in, at humingi ng isa pang email pang-kumpirma na ipapadala sa ibang address.
|
||||
invalid_password = Ang iyong password ay hindi tugma sa password na ginamit para gawin ang account.
|
||||
twofa_scratch_used = Ginamit mo na ang scratch code. Na-redirect ka sa two-factor settings page para tanggalin ang device enrollment o mag-generate ng bagong scratch code.
|
||||
manual_activation_only = Makipag-ugnayan sa site administrator para kumpletuhin ang pagrehistro.
|
||||
oauth.signin.error = Nagkaroon ng error sa pagproseso ng iyong hiling sa pahintulutan. Kung magpapatuloy ang error, mangyaring makipag-ugnayan sa site administrator.
|
||||
manual_activation_only = Makipag-ugnayan sa tagapangangasiwa ng site para kumpletuhin ang pagrehistro.
|
||||
oauth.signin.error = Nagkaroon ng error sa pagproseso ng iyong hiling sa pahintulutan. Kung magpapatuloy ang error, mangyaring makipag-ugnayan sa tagapangasiwa ng site.
|
||||
remember_me.compromised = Ang login token ay hindi na wasto na maaaring magpahiwatig ng isang nakompromisong account. Pakisuri ang iyong account para sa mga hindi pangkaraniwang aktibidad.
|
||||
has_unconfirmed_mail = Kamusta %s, mayroon kang isang hindi kinumpirmang email address (<b>%s</b>). Kung hindi ka pa nakatanggap ng email na pang-kumpirma o kailangang muling magpadala ng bago, mangyaring i-click ang button sa ibaba.
|
||||
openid_register_title = Gumawa ng bagong account
|
||||
openid_register_desc = Ang piniling OpenID URI ay hindi alam. Iugnay iyan sa bagong account dito.
|
||||
openid_signin_desc = Ilagay ang iyong OpenID URI. Halimbawa: kita.openid.example.org o https://openid.example.org/kita.
|
||||
disable_forgot_password_mail = Naka-disable ang account recovery dahil walang nakatakda na email. Mangyaring makipag-ugnayan sa site administrator.
|
||||
disable_forgot_password_mail = Naka-disable ang account recovery dahil walang nakatakda na email. Mangyaring makipag-ugnayan sa tagapangasiwa ng site.
|
||||
disable_forgot_password_mail_admin = Available lamang ang account recovery kung may nakatakda na email. I-set up ang email para i-enable ang account recovery.
|
||||
email_domain_blacklisted = Hindi ka makakapagrehistro gamit ng iyong email address.
|
||||
authorize_application = Pahintulutan ang Aplikasyon
|
||||
|
@ -590,6 +590,8 @@ org_still_own_packages = Ang organisasyon na ito ay nagmamay-ari ng isa o higit
|
|||
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.
|
||||
required_prefix = Ang input ay dapat magsimula sa "%s"
|
||||
FullName = Buong pangalan
|
||||
Description = Paglalarawan
|
||||
|
||||
[user]
|
||||
joined_on = Sumali noong %s
|
||||
|
@ -615,7 +617,7 @@ block = Harangan
|
|||
unblock = I-unblock
|
||||
user_bio = Byograpya
|
||||
email_visibility.limited = Ang iyong email address ay makikita ng lahat ng mga naka-authenticate na user
|
||||
email_visibility.private = Makikita mo lang at mga administrator ang iyong email address
|
||||
email_visibility.private = Makikita mo lang at mga tagapangasiwa ang iyong email address
|
||||
show_on_map = Ipakita ang lugar na ito sa mapa
|
||||
settings = Mga setting ng user
|
||||
form.name_pattern_not_allowed = Ang pattern na "%s" ay hindi pinapayagan sa username.
|
||||
|
@ -874,7 +876,7 @@ twofa_scratch_token_regenerate = I-regenerate ang isang-beses na paggamit na rec
|
|||
twofa_enroll = Mag-enroll sa authentikasyong two-factor
|
||||
twofa_disable_note = Maari mong i-disable ang authentikasyong two-factor kapag kinakailangan.
|
||||
twofa_disabled = Na-disable na ang authentikasyong two-factor.
|
||||
scan_this_image = I-scah ang image na ito gamit ng iyong aplikasyong pang-authentikasyon:
|
||||
scan_this_image = I-scan ang image na ito gamit ng iyong aplikasyong pang-authentikasyon:
|
||||
or_enter_secret = O ilagay ang sikreto: %s
|
||||
then_enter_passcode = At ilagay ang passcode na pinapakita sa aplikasyon:
|
||||
passcode_invalid = Mali ang passcode. Subukan muli.
|
||||
|
@ -1068,7 +1070,7 @@ archive.pull.nocomment = Naka-archive ang repo na ito. Hindi ka makakakomento sa
|
|||
archive.title = Naka-archive ang repo na ito. Maari mong itignan ang mga file at i-clone ito, pero hindi makaka-push o magbukas ng mga isyu o mga pull request.
|
||||
archive.title_date = Naka-archive ang repositoryo na ito noong %s. Maari mong itignan ang mga file at i-clone ito, pero hindi makaka-push o magbukas ng mga isyu o mga pull request.
|
||||
pulls = Mga hiling sa paghatak
|
||||
activity.merged_prs_count_n = Naisamang mga [pull request]
|
||||
activity.merged_prs_count_n = Mga naisamang hiling sa paghatak
|
||||
wiki.last_updated = Huling binago %s
|
||||
file.title = %s sa %s
|
||||
file_view_raw = Tingnan ng raw
|
||||
|
@ -1084,15 +1086,15 @@ issues.action_open = Buksan
|
|||
issues.closed_title = Sarado
|
||||
issues.reopen_issue = Buksang muli
|
||||
pulls.merged = Naisama na
|
||||
pulls.merged_info_text = Maari nang burahin ang [branch] %s.
|
||||
pulls.merged_info_text = Maari nang burahin ang branch %s.
|
||||
milestones.update_ago = Binago %s
|
||||
activity.closed_issue_label = Sarado
|
||||
activity.merged_prs_label = Naisama na
|
||||
activity.merged_prs_label = Naisama
|
||||
editor.delete_this_file = Burahin ang file
|
||||
editor.file_delete_success = Nabura na ang file na "%s".
|
||||
tree = Puno
|
||||
issues.filter_sort = Isaayos ayon sa
|
||||
activity.title.issues_closed_from = Naisara ang %s mula sa %s
|
||||
activity.title.issues_closed_from = Sinara ang %s mula sa %s
|
||||
pulls.merged_success = Matagumpay na naisama at sinara ang [pull request]
|
||||
activity.title.prs_merged_by = Sinama ang %s ni/ng %s
|
||||
find_tag = Maghanap ng tag
|
||||
|
@ -1212,7 +1214,7 @@ editor.upload_file = Mag-upload ng file
|
|||
editor.cannot_edit_lfs_files = Hindi mababago ang mga LFS file sa web interface.
|
||||
migrate.migrating_issues = Nililipat ang mga isyu
|
||||
fork_from_self = Hindi ka makaka-fork ng repositoryo na minamay-ari mo.
|
||||
broken_message = Ang Git data na pinagbabatayan sa repositoryo na ito ay hindi mabasa. Makipag-ugnayan sa pangangasiwa ng instansya na ito o burahin ang repositoryo na ito.
|
||||
broken_message = Ang Git data na pinagbabatayan sa repositoryo na ito ay hindi mabasa. Makipag-ugnayan sa tagapangasiwa ng instansya na ito o burahin ang repositoryo na ito.
|
||||
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.
|
||||
|
@ -1270,12 +1272,12 @@ issues.cancel = Kanselahin
|
|||
issues.save = IImbak
|
||||
issues.label_title = Pangalan
|
||||
issues.delete.title = Burahin ang isyung ito?
|
||||
settings.pulls_desc = Paganahin ang mga [pull request] para sa [repository]
|
||||
settings.pulls_desc = Paganahin ang mga hiling sa paghatak para sa repositoryo
|
||||
editor.branch_does_not_exist = Walang natagpuang [branch] na "%s" sa [repository] na ito.
|
||||
commits.nothing_to_compare = Magkapareho ang mga branch na ito.
|
||||
commits.search_all = Lahat na mga branch
|
||||
editor.file_deleting_no_longer_exists = Walang natagpuang binuburang file na "%s" sa [repository] na ito.
|
||||
issues.role.owner_helper = May-ari ng [repository] ang tagagamit na ito.
|
||||
editor.file_deleting_no_longer_exists = Walang natagpuang binuburang file na "%s" sa repositoryo na ito.
|
||||
issues.role.owner_helper = May-ari ng repositoryo ang tagagamit na ito.
|
||||
issues.remove_request_review = Tanggalin ang hiling sa pagsuri
|
||||
issues.force_push_compare = Ikumpara
|
||||
editor.propose_file_change = Magmunkahi ng mga pagbabago sa file
|
||||
|
@ -1290,24 +1292,24 @@ issues.filter_project_all = Lahat ng mga proyekto
|
|||
issues.filter_project_none = Walang proyekto
|
||||
issues.ref_from = `mula %[1]s`
|
||||
issues.due_date_form_remove = Tanggalin
|
||||
issues.due_date_form_edit = Baguhin
|
||||
issues.lock_with_reason = kinandado bilang <strong>%s</strong> at nilimitahan ang paguusap sa mga [collaborators] %s
|
||||
issues.lock_no_reason = kinandado at nilimitahan ang paguusap sa mga [collaborators] %s
|
||||
issues.due_date_form_edit = I-edit
|
||||
issues.lock_with_reason = kinandado bilang <strong>%s</strong> at nilimitahan ang paguusap sa mga katulong %s
|
||||
issues.lock_no_reason = kinandado at nilimitahan ang paguusap sa mga katulong %s
|
||||
commit.revert = Ibalik
|
||||
commit.revert-header = Ibalik: %s
|
||||
projects.title =Pamagat
|
||||
projects.create_success = Ginawa na ang proyektong "%s".
|
||||
projects.modify = Baguhin ang proyekto
|
||||
issues.delete_comment_confirm = Gusto mo bang burahin ang [comment] na ito?
|
||||
issues.context.edit = Baguhin
|
||||
projects.modify = I-edit ang proyekto
|
||||
issues.delete_comment_confirm = Gusto mo bang burahin ang komento na ito?
|
||||
issues.context.edit = I-edit
|
||||
issues.lock.title = Kandaduhin ang paguusap sa isyung ito.
|
||||
issues.unlock.title = [Unlock] ang paguusap sa isyung ito.
|
||||
issues.unlock.title = I-unlock ang paguusap sa isyung ito.
|
||||
pulls.nothing_to_compare_and_allow_empty_pr = Magkapareho ang mga branch na ito. Magiging walang laman ang PR na ito.
|
||||
pulls.has_pull_request =
|
||||
issues.delete = Burahin
|
||||
issues.choose.open_external_link = Buksan
|
||||
issues.deleted_project = `(binura)`
|
||||
issues.self_assign_at = `itinalaga ang sarili %s`
|
||||
issues.self_assign_at = `itinalaga sa sarili ang %s`
|
||||
issues.filter_poster_no_select = Lahat ng may-akda
|
||||
issues.filter_type = Uri
|
||||
issues.filter_type.assigned_to_you = Itinalaga sa iyo
|
||||
|
@ -1316,7 +1318,7 @@ issues.author_helper = May-akda ang tagagamit na ito.
|
|||
issues.role.owner = May-ari
|
||||
activity.title.prs_n = %d mga kahilingan sa paghatak
|
||||
issues.label_color = Kulay
|
||||
pulls.nothing_to_compare = Magkapareho ang mga branch na ito. Hindi na kailangang gumawa ng pull request.
|
||||
pulls.nothing_to_compare = Magkapareho ang mga branch na ito. Hindi na kailangang gumawa ng hiling sa paghatak.
|
||||
projects.column.assigned_to = Itinalaga sa/kay
|
||||
issues.new_label_desc_placeholder = Paglalarawan
|
||||
issues.next = Susunod
|
||||
|
@ -1334,61 +1336,61 @@ issues.no_content = Walang nakalaang paglalarawan.
|
|||
issues.close = Isara ang isyu
|
||||
editor.revert = Ibalik ang %s sa:
|
||||
commits.signed_by = Nilagdaan ni/ng
|
||||
commits.signed_by_untrusted_user = Nilagdaan ng [untrusted] na tagagamit
|
||||
projects.description = Paglalarawan ([optional])
|
||||
commits.signed_by_untrusted_user = Nilagdaan ng hindi pinagkakatiwalaan na tagagamit
|
||||
projects.description = Paglalarawan (opsyonal)
|
||||
projects.create = Gumawa ng proyekto
|
||||
projects.new = Bagong proyekto
|
||||
projects.edit = Baguhin ang proyekto
|
||||
editor.filename_help = Idagdag ang direktoryo sa pamamagitan ng pag-type ng pangalan at isunod ang slash ("/"). Tanggalin ang direktoryo sa pamamagitan ng pag-type ng backspace sa simula ng field ng pasukan.
|
||||
editor.new_branch_name = Ipangalan ang bagong [branch] para sa [commit] na ito
|
||||
editor.new_branch_name = Ipangalan ang bagong branch para sa commit na ito
|
||||
issues.cancel_tracking = Pagpaliban
|
||||
issues.new.open_projects = Mga nakabukas na proyekto
|
||||
issues.review.remove_review_request_self = tinanggihan ang pagsuri %s
|
||||
issues.review.remove_review_request_self = tinanggihan na suriin ang %s
|
||||
issues.review.reviewers = Mga tagasuri
|
||||
editor.signoff_desc = Idagdag ang [Signed-off-by trailer] ng taga-[commit] sa dulo ng [log message] ng [commit].
|
||||
editor.commit_message_desc = Idagdag ang [optional] na pinahabang paglalarawan…
|
||||
editor.signoff_desc = Idagdag ang Signed-off-by trailer ng taga-commit sa dulo ng log message ng commit.
|
||||
editor.commit_message_desc = Magdagdag ng opsyonal na pinahabang paglalarawan…
|
||||
issues.new.closed_projects = Mga saradong proyekto
|
||||
projects = Mga proyekto
|
||||
projects.deletion_success = Nabura na ang proyekto.
|
||||
issues.add_time_short = Idagdag ang oras
|
||||
editor.push_rejected_summary = Buong mensahe ng pagtanggi:
|
||||
commitstatus.success = Tagumpay
|
||||
commitstatus.failure = Kabiguan
|
||||
commitstatus.failure = Nabigo
|
||||
projects.type.none = Wala
|
||||
issues.label_edit =
|
||||
issues.deleted_milestone = `(binura)`
|
||||
issues.add_time_hours = Oras
|
||||
projects.column.color = Kulay
|
||||
projects.card_type.images_and_text = Mga larawan at [text]
|
||||
projects.card_type.text_only = [Text] lamang
|
||||
projects.card_type.images_and_text = Mga larawan at teksto
|
||||
projects.card_type.text_only = Teksto lamang
|
||||
issues.create = Gumawa ng isyu
|
||||
commits.gpg_key_id = ID ng susi ng GPG
|
||||
editor.no_changes_to_show = Walang maipakitang pagbabago.
|
||||
editor.no_changes_to_show = Walang maipapakitang pagbabago.
|
||||
editor.name_your_file = Ipangalan ang iyong file…
|
||||
pulls.new = Bagong [pull request]
|
||||
issues.ref_reopened_from = `<a href="%[3]s">binuksang muli ang isyung ito %[4]s</a> <a id="%[1]s" href="#%[1]s">%[2]s</a>`
|
||||
settings.event_issues_desc = Nakabukas, nakasara, nabuksang muli, o binago ang isyu.
|
||||
pulls.new = Bagong hiling sa paghatak
|
||||
issues.ref_reopened_from = `<a href="%[3]s">binuksang muli ang isyung %[4]s</a> <a id="%[1]s" href="#%[1]s">%[2]s</a>`
|
||||
settings.event_issues_desc = Binuksan, sinara, muling binuksan, o binago ang isyu.
|
||||
activity.new_issue_label = Nabuksan
|
||||
activity.merged_prs_count_1 = Naisamang [pull request]
|
||||
activity.opened_prs_count_1 = Inimungkahing [pull request]
|
||||
activity.merged_prs_count_1 = Naisamang hiling sa paghatak
|
||||
activity.opened_prs_count_1 = Inimungkahing hiling sa paghatak
|
||||
activity.opened_prs_label = Inimungkahi
|
||||
pulls.reopened_at = `nabuksang muli ang [pull request] na ito <a id="%[1]s" href="#%[1]s">%[2]s</a>`
|
||||
issues.opened_by_fake = binuksan %[1]s ni/ng %[2]s
|
||||
pulls.reopen_failed.base_branch = Hindi mabuksang muli ang [pull request] na ito dahil hindi na umiiral ang [base] [branch].
|
||||
pulls.reopened_at = `nabuksang muli ang hiling sa paghatak na <a id="%[1]s" href="#%[1]s">%[2]s</a>`
|
||||
issues.opened_by_fake = binuksan ang %[1]s ni/ng %[2]s
|
||||
pulls.reopen_failed.base_branch = Hindi mabuksang muli ang hiling sa paghatak na ito dahil hindi na umiiral ang base branch.
|
||||
issues.reopened_at = `binuksang muli ang isyung ito <a id="%[1]s" href="#%[1]s">%[2]s</a>`
|
||||
pulls.reopen_failed.head_branch = Hindi mabuksang muli ang [pull request] na ito dahil nabura ang punong [branch].
|
||||
settings.event_pull_request_desc = Nakabukas, nakasara, nabuksang muli, o binago ang [pull request].
|
||||
activity.opened_prs_count_n = Inimungkahing mga [pull request]
|
||||
settings.event_pull_request_desc = Binuksan, sinara, muling binuksan, o binago ang hiling sa paghatak.
|
||||
activity.opened_prs_count_n = Mga inimungkahing hiling sa paghatak
|
||||
editor.filename_is_invalid = Hindi wasto ang pangalan ng file: "%s".
|
||||
activity.title.prs_opened_by = %s inimungkahi ni/ng %s
|
||||
pulls.cant_reopen_deleted_branch = Hindi mabuksang muli ang [pull request] na ito dahil nabura ang [branch].
|
||||
pulls.cant_reopen_deleted_branch = Hindi mabuksang muli ang hiling sa paghatak na ito dahil nabura ang branch.
|
||||
issues.new = Bagong isyu
|
||||
issues.commented_at = `iniwan ang komento <a href="#%s">%s</a>`
|
||||
editor.patch = Ilapat ang Patch
|
||||
editor.new_patch = Bagong Patch
|
||||
editor.create_new_branch = Gumawa ng <strong>bagong [branch]</strong> para sa [commit] na ito at simulan ang [pull request].
|
||||
editor.create_new_branch_np = Gumawa ng <strong>bagong [branch]</strong> para sa [commit] na ito.
|
||||
editor.invalid_commit_mail = Hindi wastong [mail] para sa paggawa ng [commit].
|
||||
editor.create_new_branch = Gumawa ng <strong>bagong branch</strong> para sa commit na ito at simulan ang hiling sa paghatak.
|
||||
editor.create_new_branch_np = Gumawa ng <strong>bagong branch</strong> para sa commit na ito.
|
||||
editor.invalid_commit_mail = Hindi wastong mail para sa paggawa ng commit.
|
||||
issues.filter_sort.leastupdate = Unang nabago
|
||||
editor.fork_before_edit = Kailangan mong i-fork ang repositoryo na ito upang gumawa o magmungkahi ng mga pagbabago sa file na ito.
|
||||
editor.must_have_write_access = Kailangang may access ka sa pagbabago upang gumawa o magmungkahi ng mga pagbabago sa file na ito.
|
||||
|
@ -1401,6 +1403,32 @@ issues.content_history.created = ginawa
|
|||
editor.patching = Pina-patch:
|
||||
editor.fail_to_apply_patch = Hindi malapat ang patch na "%s"
|
||||
settings.danger_zone = Mapanganib na lugar
|
||||
issues.closed_at = `isinara ang isyung <a id="%[1]s" href="#%[1]s">%[2]s</a>`
|
||||
settings.collaboration.admin = Tagapangasiwa
|
||||
settings.admin_settings = Mga setting ng tagapangasiwa
|
||||
issues.start_tracking_history = `sinimulan ang trabaho %s`
|
||||
milestones.close = Isara
|
||||
wiki.save_page = IImbak ang pahina
|
||||
wiki.page = Pahina
|
||||
wiki.page_content = Nilalaman ng pahina
|
||||
wiki.new_page = Bagong pahina
|
||||
wiki.page_title = Pamagat ng pahina
|
||||
issues.lock_confirm = Kandaduhin
|
||||
issues.stop_tracking_history = `itinigil ang trabaho %s`
|
||||
issues.label_delete = Burahin
|
||||
milestones.closed = Isinara %s
|
||||
issues.unlock_confirm = I-unlock
|
||||
milestones.open = Buksan
|
||||
issues.content_history.delete_from_history = Burahin mula sa kasaysayan
|
||||
issues.content_history.delete_from_history_confirm = Burahin mula sa kasaysayan?
|
||||
issues.content_history.options = Mga pagpipilian
|
||||
wiki.edit_page_button = Baguhin
|
||||
wiki.new_page_button = Bagong pahina
|
||||
wiki.delete_page_button = Burahin ang pahina
|
||||
milestones.title = Pamagat
|
||||
milestones.desc = paglalarawan
|
||||
pulls.blocked_by_user = Hindi ka makakagawa ng [pull request] sa [repository] na ito dahil hinarang ka ng may-ari ng [repository].
|
||||
pulls.no_merge_access = Hindi ka pinapayagang isali ang [pull request] na ito.
|
||||
|
||||
[search]
|
||||
commit_kind = Maghanap ng mga commit...
|
||||
|
@ -1426,8 +1454,8 @@ code_search_by_git_grep = Ang kasalukuyang mga resulta ng paghahanap ng code ay
|
|||
|
||||
[admin]
|
||||
auths.updated = Nabago
|
||||
emails.updated = Napalitan na ang [email]
|
||||
emails.not_updated = Nabigong baguhin ang hinihiling na [email address]: %v
|
||||
emails.updated = Napalitan na ang email
|
||||
emails.not_updated = Nabigong baguhin ang hinihiling na email address: %v
|
||||
monitor.next = Susunod na oras
|
||||
monitor.last_execution_result = Resulta
|
||||
dashboard.last_gc_time = Oras noong huling GC
|
||||
|
@ -1443,7 +1471,7 @@ users.edit_account = I-edit ang user account
|
|||
users.update_profile_success = Na-update na ang user account.
|
||||
users.still_own_packages = Ang user na ito ay nagmamay-ari ng isa o higit pang mga package, burahin muna ang mga package.
|
||||
users.reset_2fa = I-reset ang 2FA
|
||||
users.purge = I-purge ang User
|
||||
users.purge = I-purge ang user
|
||||
users.purge_help = Piliting burahin ang user at anumang mga repositoryo, organisasyon, at package na minamay-ari ng user na ito. Ang mga komento at isyu na na-post ng user ay buburahin din.
|
||||
config_settings = Mga setting
|
||||
dashboard.statistic = Buod
|
||||
|
@ -1500,7 +1528,7 @@ users.restricted = Pinaghihigpitan
|
|||
users.2fa = 2FA
|
||||
users.repos = Mga Repo
|
||||
users.send_register_notify = Ipadala ang notification ng pagrehistro ng user
|
||||
users.is_admin = Ay pangangasiwa
|
||||
users.is_admin = Ay tagapangasiwa
|
||||
users.is_restricted = Ay pinaghihigpitan
|
||||
users.allow_import_local = Maaring mag-import ng mga lokal na repositoryo
|
||||
users.allow_create_organization = Makakagawa ng mga organisasyon
|
||||
|
@ -1510,13 +1538,13 @@ users.cannot_delete_self = Hindi mo maaring 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
|
||||
users.list_status_filter.is_admin = Pangangasiwa
|
||||
users.list_status_filter.not_admin = Hindi Pangangasiwa
|
||||
users.list_status_filter.is_admin = Tagapangasiwa
|
||||
users.list_status_filter.not_admin = Hindi tagapangasiwa
|
||||
users.list_status_filter.is_restricted = Pinaghihigpitan
|
||||
users.list_status_filter.is_prohibit_login = Pinagbawalan ang pag-login
|
||||
users.list_status_filter.not_prohibit_login = Pinapayagan ang pag-login
|
||||
users.list_status_filter.is_2fa_enabled = Naka-enable ang 2FA
|
||||
users.details = Mga Detalye ng User
|
||||
users.details = Mga detalye ng user
|
||||
dashboard.memory_allocate_times = Mga allocation ng memory
|
||||
users.edit = I-edit
|
||||
users = Mga user account
|
||||
|
@ -1530,9 +1558,9 @@ emails = Mga email ng user
|
|||
config = Pagsasaayos
|
||||
notices = Mga paunawa ng sistema
|
||||
monitor = Pag-monitor
|
||||
settings = Mga setting ng pangangasiwa
|
||||
settings = Mga setting ng tagapangasiwa
|
||||
users.activated = Naka-activate
|
||||
users.admin = Pangangasiwa
|
||||
users.admin = Tagapangasiwa
|
||||
users.bot = Bot
|
||||
users.remote = Remote
|
||||
users.local = Lokal
|
||||
|
@ -1556,7 +1584,7 @@ users.allow_git_hook = Makakagawa ng mga Git hook
|
|||
dashboard.current_memory_usage = Kasalukuyang paggamit ng memory
|
||||
dashboard.gc_times = Mga oras ng GC
|
||||
users.list_status_filter.reset = I-reset
|
||||
users.list_status_filter.not_restricted = Hindi Pinaghihigpitan
|
||||
users.list_status_filter.not_restricted = Hindi pinaghihigpitan
|
||||
config_summary = Buod
|
||||
dashboard.new_version_hint = Available na ang Forgejo %s, tumatakbo ka ng %s. Suriin ang <a target="_blank" rel="noreferrer" href="https://forgejo.org/news">blog</a> para sa karagdagang detalye.
|
||||
dashboard.operations = Mga operasyon ng pagpapanatili
|
||||
|
@ -1593,6 +1621,75 @@ dashboard.last_gc_pause = Huling GC pause
|
|||
users.still_has_org = Ang user na ito ay isang miyembro ng isang organisasyon. Tanggalin ang user sa anumang mga organisasyon muna.
|
||||
users.deletion_success = Binura na ang user account.
|
||||
dashboard.heap_memory_in_use = Ginagamit na heap memory
|
||||
emails.filter_sort.name = Username
|
||||
emails.primary = Pauna
|
||||
emails.filter_sort.email = Email
|
||||
orgs.name = Pangalan
|
||||
emails.activated = Naka-activate
|
||||
emails.duplicate_active = Ang email address na ito ay aktibo na para sa ibang user.
|
||||
emails.change_email_header = I-update ang Ari-arian ng Email
|
||||
emails.filter_sort.email_reverse = Email (pabaligtad)
|
||||
emails.filter_sort.name_reverse = Username (pabaligtad)
|
||||
orgs.org_manage_panel = Ipamahala ang mga organisasyon
|
||||
orgs.teams = Mga koponan
|
||||
orgs.members = Mga miyembro
|
||||
emails.change_email_text = Sigurado kang gusto mong i-update ang email address na ito?
|
||||
config.app_ver = Bersyon ng Forgejo
|
||||
config.git_version = Bersyon ng Git
|
||||
packages.creator = Gumawa
|
||||
defaulthooks.add_webhook = Magdagdag ng Default Webhook
|
||||
auths.auth_manage_panel = Ipamahala ang mga source ng authentikasyon
|
||||
auths.auth_name = Pangalan ng authentikasyon
|
||||
auths.security_protocol = Protocol ng seguridad
|
||||
auths.domain = Domain
|
||||
auths.host = Host
|
||||
packages.total_size = Kabuuang Laki: %s
|
||||
auths.attribute_avatar = Attribute ng avatar
|
||||
auths.enabled = Naka-enable
|
||||
auths.syncenabled = I-enable ang user synchronization
|
||||
auths.auth_type = Uri ng authentikasyon
|
||||
auths.port = Port
|
||||
auths.bind_dn = Bind DN
|
||||
auths.bind_password = Password ng bind
|
||||
auths.attribute_ssh_public_key = Attribute ng Publikong SSH key
|
||||
repos.name = Pangalan
|
||||
repos.private = Pribado
|
||||
repos.issues = Mga isyu
|
||||
repos.size = Laki
|
||||
packages.type = Uri
|
||||
packages.repository = Repositoryo
|
||||
packages.size = Laki
|
||||
auths.new = Magdagdag ng source ng authentikasyon
|
||||
auths.attribute_surname = Attribute ng surname
|
||||
packages.version = Bersyon
|
||||
systemhooks.add_webhook = Magdagdag ng Sistemang Webhook
|
||||
systemhooks.desc = Awtomatikong gumagawa ang mga Webhook ng mga HTTP POST request sa isang server kapag nag-trigger ang ilang partikular na kaganapan sa Forgejo. Ang mga webhook na tinukoy dito ay kikilos sa lahat ng mga repositoryo sa system, kaya mangyaring isaalang-alang ang anumang mga implikasyon ng performance na maaaring mayroon ito. Magbasa pa sa <a target="_blank" rel="noopener" href="https://forgejo.org/docs/latest/user/webhooks/">guide ng mga webhook</a>.
|
||||
packages.cleanup.success = Matagumpay na nalinis ang na-expire na data
|
||||
defaulthooks.desc = Awtomatikong gumagawa ang mga Webhook ng mga HTTP POST request sa isang server kapag nag-trigger ang ilang partikular na kaganapan sa Forgejo. Ang mga webhook na tinukoy dito ay mga default at makokopya sa lahat ng mga bagong repositoryo. Magbasa pa sa <a target="_blank" rel="noopener" href="https://forgejo.org/docs/latest/user/webhooks/">guide ng mga webhook</a>.
|
||||
packages.published = Na-publish
|
||||
defaulthooks = Mga default webhook
|
||||
systemhooks.update_webhook = I-update ang Sistemang Webhook
|
||||
auths.name = Pangalan
|
||||
auths.type = Uri
|
||||
defaulthooks.update_webhook = I-update ang Default Webhook
|
||||
systemhooks = Mga sistemang webhook
|
||||
auths.user_base = Base ng paghahanap ng user
|
||||
auths.user_dn = DN ng User
|
||||
auths.attribute_username = Attribute ng username
|
||||
auths.attribute_username_placeholder = Iwanang walang laman para gamitin ang username na inilagay sa Forgejo.
|
||||
auths.attribute_name = Attribute ng unang pangalan
|
||||
packages.unreferenced_size = Walang Sangguniang Laki: %s
|
||||
packages.owner = May-ari
|
||||
packages.name = Pangalan
|
||||
packages.cleanup = Linisin ang na-expire na data
|
||||
orgs.new_orga = Bagong organisasyon
|
||||
repos.repo_manage_panel = Ipamahala ang mga repositoryo
|
||||
repos.unadopted = Mga unadopted na repositoryo
|
||||
repos.unadopted.no_more = Wala nang mga unadopted na repositoryo na nahanap
|
||||
repos.owner = May-ari
|
||||
repos.lfs_size = Laki ng LFS
|
||||
packages.package_manage_panel = Ipamahala ang mga package
|
||||
auths.attribute_mail = Attribute ng email
|
||||
|
||||
[org]
|
||||
repo_updated = Binago
|
||||
|
@ -1619,22 +1716,70 @@ code = Code
|
|||
[packages]
|
||||
alpine.repository.branches = Mga branch
|
||||
owner.settings.cargo.initialize.success = Matagumpay na nagawa ang Cargo index.
|
||||
details = Mga detalye
|
||||
empty = Wala pang anumang mga package.
|
||||
filter.container.tagged = Naka-tag
|
||||
filter.container.untagged = Hindi naka-tag
|
||||
filter.type = Uri
|
||||
filter.type.all = Lahat
|
||||
filter.no_result = Walang resulta ang iyong filter.
|
||||
about = Tungkol sa package na ito
|
||||
installation = Pag-install
|
||||
details.repository_site = Website ng repositoryo
|
||||
details.documentation_site = Website ng dokumentasyon
|
||||
alpine.repository.repositories = Mga Repositoryo
|
||||
alpine.repository.architectures = Mga architechture
|
||||
chef.install = Para i-install ang package na ito, patakbuhin ang sumusunod na command:
|
||||
composer.registry = I-setup ang registry na ito sa iyong <code>~/.composee/config.json</code> file:
|
||||
composer.install = Para i-install ang package gamit ang Composer, patakbuhin ang sumusunod na command:
|
||||
empty.repo = Nag-upload ka ba ng package, ngunit hindi pinapakita dito? Pumunta sa <a href="%[1]s">mga setting ng package</a> at i-link iyan sa repo na ito.
|
||||
keywords = Mga keyword
|
||||
versions = Mga bersyon
|
||||
title = Mga package
|
||||
desc = Ipamahala ang mga package ng repositoryo.
|
||||
registry.documentation = Para sa higit pang impormasyon tungkol sa %s registry, tignan ang <a target="_blank" rel="noopener noreferrer" href="%s">dokumentasyon</a>.
|
||||
published_by = Na-publish ang %[1]s ni/ng <a href="%[2]s">%[3]s</a>
|
||||
requirements = Mga kinakailangan
|
||||
dependencies = Mga dependency
|
||||
details.author = Autor
|
||||
details.project_site = Website ng proyekto
|
||||
details.license = Lisensya
|
||||
versions.view_all = Tignan lahat
|
||||
dependency.id = ID
|
||||
dependency.version = Bersyon
|
||||
alpine.registry = I-setup ang registry na ito sa pamamagitan ng pagdagdag ng url sa iyong <code>/etc/apk/repositories</code> file:
|
||||
alpine.registry.info = Pumili ng $branch at $repository mula sa listahan sa ibaba.
|
||||
alpine.install = Para i-install ang package, patakbuhin ang sumusunod na command:
|
||||
alpine.repository = Info ng Repositoryo
|
||||
cargo.registry = I-setup ang registry na ito sa Cargo configuration file (halimbawa <code>~/.cargo/config.toml</code>):
|
||||
chef.registry = I-setup ang registry na ito sa iyong <code>~/.chef/config.rb</code> file:
|
||||
composer.dependencies = Mga dependency
|
||||
composer.dependencies.development = Mga dependency ng pag-develop
|
||||
conan.details.repository = Repositoryo
|
||||
conan.registry = I-setup ang registry na ito mula sa command line:
|
||||
assets = Mga asset
|
||||
empty.documentation = Para sa higit pang impormasyon sa package registry, tignan ang <a target="_blank" rel="noopener noreferrer" href="%s">dokumentasyon</a>.
|
||||
cargo.install = Para i-install ang package gamit ang Cargo, patakbuhin ang sumusunod na command:
|
||||
published_by_in = Na-publish ang %[1]s ni <a href="%[2]s">%[3]s </a> sa <a href="%[4]s"><strong>%[5]s</strong></a>
|
||||
alpine.registry.key = I-download ang registry public RSA key sa <code>/etc/apk/keys</code> folder para i-verify ang index signature:
|
||||
|
||||
[actions]
|
||||
runners.last_online = Huling oras [online]
|
||||
runs.no_workflows.quick_start = Hindi alam kung paano magsimula gamit ang Forgejo Actions? Tingnan ang <a target="_blank" rel="noopener noreferrer" href="%s">[quick start guide]</a>.
|
||||
runs.no_workflows.documentation = Para sa higit pang impormasyon tungkol sa Forgejo Actions, tingnan ang <a target="_blank" rel="noopener noreferrer" href="%s">[documentation]</a>.
|
||||
runners.last_online = Huling oras na online
|
||||
runs.no_workflows.quick_start = Hindi alam kung paano magsimula gamit ang Forgejo Actions? Tingnan ang <a target="_blank" rel="noopener noreferrer" href="%s">gabay sa mabilis na pagsisimula</a>.
|
||||
runs.no_workflows.documentation = Para sa higit pang impormasyon tungkol sa Forgejo Actions, tingnan ang <a target="_blank" rel="noopener noreferrer" href="%s">Dokumentasyon</a>.
|
||||
|
||||
[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 <a href="%[1]s">%[3]s#%[2]s</a>`
|
||||
comment_issue = `nagkomento sa isyu <a href="%[1]s">%[3]s#%[2]s</a>`
|
||||
reopen_pull_request = `binuksang muli ang [pull request]<a href="%[1]s">%[3]s#%[2]s</a>`
|
||||
comment_pull = `iniwan ang komento sa [pull request] <a href="%[1]s">%[3]s#%[2]s</a>`
|
||||
reopen_pull_request = `binuksang muli ang hiling sa paghatak <a href="%[1]s">%[3]s#%[2]s</a>`
|
||||
comment_pull = `nagiwan ng komento sa hiling sa paghatak <a href="%[1]s">%[3]s#%[2]s</a>`
|
||||
reopen_issue = `binuksang muli ang isyu <a href="%[1]s">%[3]s#%[2]s</a>`
|
||||
create_pull_request = `ginawa ang hiling sa paghatak <a href="%[1]s">%[3]s#%[2]s</a>`
|
||||
create_branch = ginawa ang branch na <a href="%[2]s">%[3]s</a> sa <a href="%[1]s">%[4]s</a>
|
||||
create_repo = ginawa ang repositoryo na <a href="%s">%s</a>
|
||||
starred_repo = na-star ang <a href="%[1]s">%[2]s</a>
|
||||
watched_repo = ay sinimulang panoorin ang <a href="%[1]s">%[2]s</a>
|
||||
|
||||
[tool]
|
||||
1m = 1 minuto
|
||||
|
@ -1642,4 +1787,61 @@ create_repo = ginawa ang repositoryo na <a href="%s">%s</a>
|
|||
1d = 1 araw
|
||||
1s = 1 segundo
|
||||
now = ngayon
|
||||
future = sa madaling panahon
|
||||
future = sa madaling panahon
|
||||
months = %d buwan
|
||||
1w = 1 linggo
|
||||
1mon = 1 buwan
|
||||
1y = 1 taon
|
||||
seconds = %d segundo
|
||||
minutes = %d minuto
|
||||
hours = %d oras
|
||||
days = %d araw
|
||||
weeks = %d linggo
|
||||
years = %d taon
|
||||
raw_seconds = segundo
|
||||
raw_minutes = minuto
|
||||
|
||||
[munits.data]
|
||||
mib = MiB
|
||||
gib = GiB
|
||||
b = B
|
||||
kib = KiB
|
||||
tib = TiB
|
||||
pib = PiB
|
||||
eib = EiB
|
||||
|
||||
[gpg]
|
||||
error.not_signed_commit = Hindi isang naka-sign na commit
|
||||
error.probable_bad_signature = BABALA! Bagaman na may key na may ID na ito sa database hindi nito pinapatunayan ang commit na ito! Ang commit na ito ay KAHINA-HINALA.
|
||||
error.extract_sign = Nabigong i-extract ang signature
|
||||
error.no_committer_account = Walang account na naka-link sa email address ng committer
|
||||
error.no_gpg_keys_found = Walang kilalang key na nahanap para sa signature na ito sa database
|
||||
default_key = Naka-sign gamit ang default key
|
||||
error.generate_hash = Nabigong i-generate ang hash ng commit
|
||||
error.failed_retrieval_gpg_keys = Nabigong kumuha ng anumang key na naka-attach sa account ng committer
|
||||
error.probable_bad_default_signature = BABALA! Bagaman na ang default key ay may ID na ito hindi nito pinapatunayan ang commit na ito! Ang commit na ito ay KAHINA-HINALA.
|
||||
|
||||
[notification]
|
||||
unread = Hindi nabasa
|
||||
read = Nabasa
|
||||
no_unread = Walang mga hindi nabasang notification.
|
||||
notifications = Mga abiso
|
||||
no_read = Walang mga nabasang notification.
|
||||
pin = I-pin ang notification
|
||||
mark_as_read = Markahan bilang nabasa
|
||||
mark_as_unread = Markahan bilang hindi nabasa
|
||||
subscriptions = Mga subscription
|
||||
watching = Pinapanood
|
||||
no_subscriptions = Walang mga subscription
|
||||
mark_all_as_read = Markahan lahat bilang nabasa
|
||||
|
||||
[units]
|
||||
error.no_unit_allowed_repo = Hindi ka pinapayagang ma-access ang anumang seksyon ng repositoryong ito.
|
||||
unit = Yunit
|
||||
error.unit_not_allowed = Hindi ka pinapayagang ma-access ang seksyon ng repositoryong ito.
|
||||
|
||||
[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.
|
||||
file_too_big = Ang laki ng file ({{filesize}}) MB) ay lumalagpas sa pinakamataas na size na ({{maxFilesize}} MB).
|
||||
remove_file = Tanggalin ang file
|
|
@ -667,6 +667,7 @@ follow_blocked_user = Vous ne pouvez pas suivre cet utilisateur parce vous avez
|
|||
block = Bloquer
|
||||
unblock = Débloquer
|
||||
following_one = Suit %d personnes
|
||||
followers_one = Suivi par %d
|
||||
|
||||
[settings]
|
||||
profile=Profil
|
||||
|
@ -990,6 +991,9 @@ additional_repo_units_hint_description = Afficher un bouton "Ajouter plus d'unit
|
|||
additional_repo_units_hint = Encourager l'ajout de nouvelles unités pour le dépôt
|
||||
update_hints = Mettre à jour les suggestions
|
||||
update_hints_success = Les suggestions ont été mises à jour.
|
||||
pronouns_custom = Sur mesure
|
||||
pronouns = Qualités
|
||||
pronouns_unspecified = Non spécifié
|
||||
|
||||
[repo]
|
||||
new_repo_helper=Un dépôt contient tous les fichiers d’un projet, ainsi que l’historique de leurs modifications. Vous avez déjà ça ailleurs ? <a href="%s">Migrez-le ici.</a>
|
||||
|
@ -1929,7 +1933,7 @@ milestones.filter_sort.least_issues=Le moins de tickets
|
|||
|
||||
signing.will_sign=Cette révision sera signée avec la clé « %s ».
|
||||
signing.wont_sign.error=Impossible de vérifier la signature de la révision.
|
||||
signing.wont_sign.nokey=Aucune clé n’est disponible pour signer cette révision.
|
||||
signing.wont_sign.nokey=Aucune clé n’est disponible sur cette instance pour signer cette révision.
|
||||
signing.wont_sign.never=Les révisions ne sont jamais signées.
|
||||
signing.wont_sign.always=Les révisions sont toujours signées.
|
||||
signing.wont_sign.pubkey=La révision ne sera pas signée car vous votre compte ne possède pas de clé publique.
|
||||
|
@ -2311,7 +2315,7 @@ settings.update_webhook=Actualiser le déclencheur
|
|||
settings.update_hook_success=Déclencheur Web actualisé.
|
||||
settings.delete_webhook=Retirer le webhook
|
||||
settings.recent_deliveries=Livraisons récentes
|
||||
settings.hook_type=Type de Hook
|
||||
settings.hook_type=Type de déclencheur
|
||||
settings.slack_token=Jeton
|
||||
settings.slack_domain=Domaine
|
||||
settings.slack_channel=Canal
|
||||
|
@ -2374,7 +2378,7 @@ settings.protect_merge_whitelist_committers=Activer la liste blanche pour la fus
|
|||
settings.protect_merge_whitelist_committers_desc=N'autoriser que les utilisateurs et les équipes en liste blanche d'appliquer les demandes de fusion sur cette branche.
|
||||
settings.protect_merge_whitelist_users=Utilisateurs en liste blanche de fusion :
|
||||
settings.protect_merge_whitelist_teams=Équipes en liste blanche de fusion :
|
||||
settings.protect_check_status_contexts=Activer le Contrôle Qualité
|
||||
settings.protect_check_status_contexts=Activer le contrôle qualité
|
||||
settings.protect_status_check_patterns=Motifs de vérification des statuts :
|
||||
settings.protect_status_check_patterns_desc=Entrez des motifs pour spécifier quelles vérifications doivent réussir avant que des branches puissent être fusionnées. Un motif par ligne. Un motif ne peut être vide.
|
||||
settings.protect_check_status_contexts_desc=Exiger le status « succès » avant de fusionner. Quand activée, une branche protégée ne peux accepter que des soumissions ou des fusions ayant le status « succès ». Lorsqu'il n'y a pas de contexte, la dernière révision fait foi.
|
||||
|
@ -2430,10 +2434,10 @@ settings.tags.protection.allowed=Autorisé
|
|||
settings.tags.protection.allowed.users=Utilisateurs autorisés
|
||||
settings.tags.protection.allowed.teams=Équipes autorisées
|
||||
settings.tags.protection.allowed.noone=Personne
|
||||
settings.tags.protection.create=Protéger l'étiquette
|
||||
settings.tags.protection.create=Ajouter une règle
|
||||
settings.tags.protection.none=Il n'y a pas d'étiquettes protégées.
|
||||
settings.tags.protection.pattern.description=Vous pouvez utiliser au choix un nom unique, un motif de glob ou une expression régulière qui correspondra à plusieurs étiquettes. Pour plus d’informations, consultez le <a target="_blank" rel="noopener" href="https://forgejo.org/docs/latest/user/protection/#protected-tags">guide sur les étiquettes protégées</a>.
|
||||
settings.bot_token=Jeton de Bot
|
||||
settings.bot_token=Jeton de bot
|
||||
settings.chat_id=ID de conversation
|
||||
settings.thread_id=ID du fil
|
||||
settings.matrix.homeserver_url=URL du serveur d'accueil
|
||||
|
@ -2490,11 +2494,11 @@ diff.browse_source=Parcourir la source
|
|||
diff.parent=Parent
|
||||
diff.commit=révision
|
||||
diff.git-notes=Notes
|
||||
diff.data_not_available=Contenu de la comparaison indisponible
|
||||
diff.options_button=Option de Diff
|
||||
diff.show_diff_stats=Voir les Statistiques
|
||||
diff.download_patch=Télécharger le Fichier Patch
|
||||
diff.download_diff=Télécharger le Fichier des Différences
|
||||
diff.data_not_available=Contenu de la comparaison (diff) indisponible
|
||||
diff.options_button=Option de comparaison (diff)
|
||||
diff.show_diff_stats=Voir les statistiques
|
||||
diff.download_patch=Télécharger le patch en tant que fichier
|
||||
diff.download_diff=Télécharger le fichier diff
|
||||
diff.show_split_view=Vue séparée
|
||||
diff.show_unified_view=Vue unifiée
|
||||
diff.whitespace_button=Espace
|
||||
|
@ -2516,7 +2520,7 @@ diff.file_suppressed=Fichier diff supprimé car celui-ci est trop grand
|
|||
diff.file_suppressed_line_too_long=Diff de fichier supprimé car une ou plusieurs lignes sont trop longues
|
||||
diff.too_many_files=Certains fichiers ne sont pas affichés car ce diff contient trop de modifications
|
||||
diff.show_more=Voir plus
|
||||
diff.load=Voir la Diff
|
||||
diff.load=Voir la diff
|
||||
diff.generated=générée
|
||||
diff.vendored=externe
|
||||
diff.comment.add_line_comment=Commenter cette ligne
|
||||
|
@ -2594,7 +2598,7 @@ release.tags_for=Étiquettes pour %s
|
|||
branch.name=Nom de la branche
|
||||
branch.already_exists=Une branche nommée "%s" existe déjà.
|
||||
branch.delete_head=Supprimer
|
||||
branch.delete=`Supprimer la branche "%s"`
|
||||
branch.delete=Supprimer la branche "%s"
|
||||
branch.delete_html=Supprimer la branche
|
||||
branch.delete_desc=La suppression d’une branche est permanente. Bien qu’une branche supprimée puisse temporairement subsister, elle NE PEUT PAS être facilement restaurée. Continuer ?
|
||||
branch.deletion_success=La branche "%s" a été supprimée.
|
||||
|
@ -2611,9 +2615,9 @@ branch.restore_success=La branche "%s" a été restaurée.
|
|||
branch.restore_failed=Impossible de restaurer la branche "%s".
|
||||
branch.protected_deletion_failed=La branche "%s" est protégé. Elle ne peut pas être supprimée.
|
||||
branch.default_deletion_failed=La branche "%s" est la branche par défaut. Elle ne peut pas être supprimée.
|
||||
branch.restore=`Restaurer la branche "%s"`
|
||||
branch.download=`Télécharger la branche "%s"`
|
||||
branch.rename=`Renommer la branche "%s"`
|
||||
branch.restore=Restaurer la branche "%s"
|
||||
branch.download=Télécharger la branche "%s"
|
||||
branch.rename=Renommer la branche "%s"
|
||||
branch.search=Rechercher une branche
|
||||
branch.included_desc=Cette branche fait partie de la branche par défaut
|
||||
branch.included=Incluses
|
||||
|
@ -2724,6 +2728,16 @@ settings.sourcehut_builds.secrets_helper = Permettre au job d'accéder aux secre
|
|||
size_format = %[1]s : %[2]s ; %[3]s : %[4]s
|
||||
settings.sourcehut_builds.visibility = Visibilité du job
|
||||
settings.sourcehut_builds.secrets = Secrets
|
||||
settings.sourcehut_builds.manifest_path = Construire le chemin du manifeste
|
||||
settings.sourcehut_builds.graphql_url = URL GraphQL (e.g. https://builds.sr.ht/query)
|
||||
release.download_count_one = %s téléchargement
|
||||
release.download_count_few = %s téléchargements
|
||||
release.system_generated = Cet attachement a été généré automatiquement.
|
||||
settings.enforce_on_admins_desc = Les administrateurs du dépôt ne peuvent pas contourner cette règle.
|
||||
settings.web_hook_name_sourcehut_builds = SourceHut Builds
|
||||
settings.enforce_on_admins = Contraindre les administrateurs du dépôt par cette règle
|
||||
settings.rename_branch_failed_protected = Impossible de renommer la branche %s car il s'agit d'une branche protégée.
|
||||
settings.event_pull_request_enforcement = Amélioration
|
||||
|
||||
[graphs]
|
||||
component_loading=Chargement de %s…
|
||||
|
@ -2752,7 +2766,7 @@ team_name_helper=Le nom d'équipe doit être court et mémorable.
|
|||
team_desc_helper=Décrire le but ou le rôle de l’équipe.
|
||||
team_access_desc=Accès au dépôt
|
||||
team_permission_desc=Autorisation
|
||||
team_unit_desc=Permettre l’accès aux Sections du dépôt
|
||||
team_unit_desc=Permettre l’accès aux sections du dépôt
|
||||
team_unit_disabled=(Désactivé)
|
||||
|
||||
form.name_reserved=Le nom d'organisation "%s" est réservé.
|
||||
|
@ -2761,7 +2775,7 @@ form.create_org_not_allowed=Vous n'êtes pas autorisé à créer une organisatio
|
|||
|
||||
settings=Paramètres
|
||||
settings.options=Organisation
|
||||
settings.full_name=Nom Complet
|
||||
settings.full_name=Nom complet
|
||||
settings.email=Courriel de contact
|
||||
settings.website=Site Web
|
||||
settings.location=Localisation
|
||||
|
@ -2771,7 +2785,7 @@ settings.visibility=Visibilité
|
|||
settings.visibility.public=Public
|
||||
settings.visibility.limited=Limité (Visible uniquement aux utilisateurs authentifiés)
|
||||
settings.visibility.limited_shortname=Limité
|
||||
settings.visibility.private=Privé (Visible uniquement aux membres de l’organisation)
|
||||
settings.visibility.private=Privé (visible uniquement aux membres de l’organisation)
|
||||
settings.visibility.private_shortname=Privé
|
||||
|
||||
settings.update_settings=Appliquer les paramètres
|
||||
|
@ -2817,15 +2831,15 @@ teams.read_access=Lecture
|
|||
teams.read_access_helper=Les membres peuvent voir et cloner les dépôts de l'équipe.
|
||||
teams.write_access=Écriture
|
||||
teams.write_access_helper=Les membres peuvent voir et pousser dans les dépôts de l'équipe.
|
||||
teams.admin_access=Accès Administrateur
|
||||
teams.admin_access=Accès administrateur
|
||||
teams.admin_access_helper=Les membres peuvent tirer et pousser des modifications vers les dépôts de l'équipe, et y ajouter des collaborateurs.
|
||||
teams.no_desc=Aucune description
|
||||
teams.settings=Paramètres
|
||||
teams.owners_permission_desc=Les propriétaires ont un accès complet à <strong>tous les dépôts</strong> et disposent <strong> d'un accès administrateur</strong> de l'organisation.
|
||||
teams.members=Membres de L'Équipe
|
||||
teams.members=Membres de L'équipe
|
||||
teams.update_settings=Appliquer les paramètres
|
||||
teams.delete_team=Supprimer l'équipe
|
||||
teams.add_team_member=Ajouter un Membre
|
||||
teams.add_team_member=Ajouter un membre
|
||||
teams.invite_team_member=Inviter à %s
|
||||
teams.invite_team_member.list=Invitations en attente
|
||||
teams.delete_team_title=Supprimer l'équipe
|
||||
|
@ -2835,7 +2849,7 @@ teams.read_permission_desc=Cette équipe permet l'accès en <strong>lecture</str
|
|||
teams.write_permission_desc=Cette équipe permet l'accès en <strong>écriture</strong> : les membres peuvent participer à ses dépôts.
|
||||
teams.admin_permission_desc=Cette équipe permet l'accès <strong>administrateur</strong> : les membres peuvent voir, participer et ajouter des collaborateurs à ses dépôts.
|
||||
teams.create_repo_permission_desc=De plus, cette équipe accorde la permission <strong>Créer un dépôt</strong> : les membres peuvent créer de nouveaux dépôts dans l'organisation.
|
||||
teams.repositories=Dépôts de l'Équipe
|
||||
teams.repositories=Dépôts de l'équipe
|
||||
teams.search_repo_placeholder=Rechercher dans le dépôt…
|
||||
teams.remove_all_repos_title=Supprimer tous les dépôts de l'équipe
|
||||
teams.remove_all_repos_desc=Ceci supprimera tous les dépôts de l'équipe.
|
||||
|
@ -2868,9 +2882,9 @@ repositories=Dépôts
|
|||
hooks=Déclencheurs web
|
||||
integrations=Intégrations
|
||||
authentication=Sources d'authentification
|
||||
emails=Emails de l'utilisateur
|
||||
emails=Courriels de l'utilisateur
|
||||
config=Configuration
|
||||
notices=Informations
|
||||
notices=Informations système
|
||||
monitor=Surveillance
|
||||
first_page=Première
|
||||
last_page=Dernière
|
||||
|
@ -2966,7 +2980,7 @@ dashboard.rebuild_issue_indexer=Reconstruire l’indexeur des tickets
|
|||
users.user_manage_panel=Gestion du compte utilisateur
|
||||
users.new_account=Créer un compte
|
||||
users.name=Nom d'utilisateur
|
||||
users.full_name=Nom Complet
|
||||
users.full_name=Nom complet
|
||||
users.activated=Activé
|
||||
users.admin=Administrateur
|
||||
users.restricted=Restreint
|
||||
|
@ -2991,9 +3005,9 @@ users.max_repo_creation=Nombre maximal de dépôts
|
|||
users.max_repo_creation_desc=(Mettre à -1 pour utiliser la limite globale par défaut.)
|
||||
users.is_activated=Ce compte est activé
|
||||
users.prohibit_login=Désactiver la connexion
|
||||
users.is_admin=Est Administrateur
|
||||
users.is_admin=Est administrateur
|
||||
users.is_restricted=Est restreint
|
||||
users.allow_git_hook=Autoriser la création de Git Hooks
|
||||
users.allow_git_hook=Autoriser la création de déclencheurs Git
|
||||
users.allow_git_hook_tooltip=Les Déclencheurs Git sont exécutés par le même utilisateur que Forgejo, qui a des privilèges systèmes élevés. Les utilisateurs ayant ce droit peuvent altérer touts les dépôts, compromettre la base de données applicative, et se promouvoir administrateurs de Forgejo.
|
||||
users.allow_import_local=Autoriser l'importation de dépôts locaux
|
||||
users.allow_create_organization=Autoriser la création d'organisations
|
||||
|
@ -3041,7 +3055,7 @@ orgs.members=Membres
|
|||
orgs.new_orga=Nouvelle organisation
|
||||
|
||||
repos.repo_manage_panel=Gestion des dépôts
|
||||
repos.unadopted=Dépôts dépossédés
|
||||
repos.unadopted=Dépôts non adoptés
|
||||
repos.unadopted.no_more=Aucun dépôt dépossédé trouvé.
|
||||
repos.owner=Propriétaire
|
||||
repos.name=Nom
|
||||
|
@ -3091,8 +3105,8 @@ auths.domain=Domaine
|
|||
auths.host=Hôte
|
||||
auths.port=Port
|
||||
auths.bind_dn=Bind DN
|
||||
auths.bind_password=Bind mot de passe
|
||||
auths.user_base=Utilisateur Search Base
|
||||
auths.bind_password=Mot de passe Bind
|
||||
auths.user_base=Utilisateur search base
|
||||
auths.user_dn=Utilisateur DN
|
||||
auths.attribute_username=Attribut nom d'utilisateur
|
||||
auths.attribute_username_placeholder=Laisser vide afin d'utiliser le nom d'utilisateur spécifié dans Forgejo.
|
||||
|
@ -3388,7 +3402,7 @@ notices.desc=Description
|
|||
notices.op=Opération
|
||||
notices.delete_success=Les informations systèmes ont été supprimées.
|
||||
self_check = Auto vérification
|
||||
dashboard.sync_repo_tags = Synchorniser les étiquettes depuis git vers la base de donnée
|
||||
dashboard.sync_repo_tags = Synchroniser les étiquettes depuis Git vers la base de donnée
|
||||
dashboard.sync_tag.started = La synchronisation des étiquettes a commencé
|
||||
self_check.no_problem_found = Aucun problème n'a encore été trouvé.
|
||||
self_check.database_collation_mismatch = La base de donnée devrait utiliser la collation %s
|
||||
|
@ -3401,6 +3415,8 @@ self_check.database_collation_mismatch=Exige que la base de données utilise la
|
|||
self_check.database_collation_case_insensitive=La base de données utilise la collation %s, insensible à la casse. Bien que Gitea soit compatible, il peut y avoir quelques rares cas qui ne fonctionnent pas comme prévu.
|
||||
self_check.database_inconsistent_collation_columns=La base de données utilise la collation %s, mais ces colonnes utilisent des collations différentes. Cela peut causer des problèmes imprévus.
|
||||
self_check.database_fix_mysql=Pour les utilisateurs de MySQL ou MariaDB, vous pouvez utiliser la commande « gitea doctor convert » dans un terminal ou exécuter une requête du type « ALTER … COLLATE ... » pour résoudre les problèmes de collation.
|
||||
config_settings = Paramètres
|
||||
config_summary = Résumé
|
||||
|
||||
[action]
|
||||
create_repo=a créé le dépôt <a href="%s">%s</a>
|
||||
|
|
|
@ -73,7 +73,7 @@ forks=Fork
|
|||
|
||||
activities=Attivitá
|
||||
pull_requests=Pull request
|
||||
issues=Problemi
|
||||
issues=Segnalazioni
|
||||
milestones=Milestones
|
||||
|
||||
ok=OK
|
||||
|
@ -117,7 +117,7 @@ concept_user_organization=Organizzazione
|
|||
name=Nome
|
||||
value=Valore
|
||||
enable_javascript = Questo sito richiede JavaScript.
|
||||
tracked_time_summary = Resoconto del tempo tracciato in base ai filtri dell'elenco dei problemi
|
||||
tracked_time_summary = Resoconto del tempo cronometrato in base ai filtri dell'elenco delle segnalazioni
|
||||
retry = Riprova
|
||||
rerun = Ri-esegui
|
||||
rerun_all = Ri-esegui tutti gli incarichi
|
||||
|
@ -199,7 +199,7 @@ missing_csrf=Richiesta errata: nessun token CSRF presente
|
|||
invalid_csrf=Richiesta errata: token CSRF non valido
|
||||
not_found=Il bersaglio non è stato trovato.
|
||||
network_error=Errore di rete
|
||||
report_message = Se credi che questo sia un bug di Forgejo, per favore verifica i problemi su <a href="https://codeberg.org/forgejo/forgejo/issues" target="_blank">Codeberg</a> o pubblica un nuovo problema se necessario.
|
||||
report_message = Se credi che questo sia un errore di Forgejo, per favore controlla le segnalazioni su <a href="https://codeberg.org/forgejo/forgejo/issues" target="_blank">Codeberg</a> o aprine una nuova se necessario.
|
||||
server_internal = Errore interno del server
|
||||
|
||||
[startpage]
|
||||
|
@ -230,7 +230,7 @@ ssl_mode=SSL
|
|||
path=Percorso
|
||||
sqlite_helper=Percorso file del database SQLite3.<br>Inserisci un percorso assoluto se stai usando Forgejo come servizio.
|
||||
reinstall_error=Stai cercando di installare in un database Forgejo esistente
|
||||
reinstall_confirm_message=La reinstallazione con un database Forgejo esistente può causare problemi multipli. Nella maggior parte dei casi, dovresti usare il tuo "app.ini" esistente per eseguire Forgejo. Se sai cosa stai facendo, confermi quanto segue:
|
||||
reinstall_confirm_message=La reinstallazione con una base dati Forgejo esistente può causare vari problemi. Nella maggior parte dei casi, dovresti usare il tuo "app.ini" per eseguire Forgejo. Se sai cosa stai facendo, conferma quanto segue:
|
||||
reinstall_confirm_check_1=I dati crittografati da SECRET_KEY nell'app. ni potrebbe essere perso: gli utenti potrebbero non essere in grado di accedere con 2FA/OTP & mirror potrebbe non funzionare correttamente. Selezionando questa casella confermi che il file attuale app.ini contiene il corretto SECRET_KEY.
|
||||
reinstall_confirm_check_2=I repository e le impostazioni potrebbero avere bisogno di essere ri-sincronizzati. Selezionando questa casella confermi che potrai risincronizzare manualmente gli hook per i repository e il file authorized_keys. Confermi che assicurerai che le impostazioni del repository e del mirror siano corrette.
|
||||
reinstall_confirm_check_3=Confermi di essere assolutamente sicuro che questo Forgejo è in esecuzione con l'app corretta. ni posizione e che sei sicuro di dover reinstallare. Confermi di aver riconosciuto i rischi di cui sopra.
|
||||
|
@ -547,7 +547,7 @@ TeamName=Nome Team
|
|||
AuthName=Nome autorizzazione
|
||||
AdminEmail=Email dell'Admin
|
||||
|
||||
NewBranchName=Nuovo nome del branch
|
||||
NewBranchName=Nuovo nome del ramo
|
||||
CommitSummary=Riepilogo dei commit
|
||||
CommitMessage=Messaggio di commit
|
||||
CommitChoice=Scelta di commit
|
||||
|
@ -608,7 +608,7 @@ invalid_ssh_principal=Principal non valido: %s
|
|||
auth_failed=Autenticazione non riuscita: %v
|
||||
|
||||
|
||||
target_branch_not_exist=Il ramo (branch) di destinazione non esiste.
|
||||
target_branch_not_exist=Il ramo di destinazione non esiste.
|
||||
org_still_own_packages = Questa organizzazione è ancora proprietaria di uno o più pacchetti, devi prima eliminarli.
|
||||
org_still_own_repo = Questa organizzazione è ancora proprietaria di una o più repository, devi prima eliminarle o trasferirle.
|
||||
still_own_packages = Il tuo profilo è ancora proprietario di uno o più pacchetti, devi prima eliminarli.
|
||||
|
@ -629,6 +629,14 @@ still_has_org = Il tuo profilo è ancora membro di una o più organizzazioni, de
|
|||
unsupported_login_type = Il tipo di accesso non è supportato per l'eliminazione del profilo.
|
||||
unset_password = L'utente non ha impostato la password.
|
||||
required_prefix = L'input deve iniziare con "%s"
|
||||
Description = Descrizione
|
||||
Pronouns = Pronomi
|
||||
Biography = Biografia
|
||||
Website = Sito web
|
||||
Location = Posizione
|
||||
AccessToken = Token di accesso
|
||||
FullName = Nome e cognome
|
||||
To = Nome del ramo
|
||||
|
||||
|
||||
[user]
|
||||
|
@ -648,7 +656,7 @@ disabled_public_activity=L'utente ha disabilitato la vista pubblica dell'attivit
|
|||
joined_on = Membro dal %s
|
||||
block_user = Blocca utente
|
||||
block_user.detail_1 = Questo utente non ti seguirà più.
|
||||
block_user.detail_2 = Questo utente non potrà interagire con le tue repository, con i problemi che hai creato o con i tuoi commenti.
|
||||
block_user.detail_2 = Quest'utente non potrà interagire con le tue repository, con le segnalazioni che hai aperto né con i tuoi commenti.
|
||||
block_user.detail_3 = Questo utente non ti potrà aggiungere come un collaboratore, né potrai tu aggiungerlo come un collaboratore.
|
||||
code = Codice
|
||||
block = Blocca
|
||||
|
@ -772,7 +780,7 @@ add_key=Aggiungi chiave
|
|||
ssh_desc=Queste chiavi SSH pubbliche sono associate al tuo profilo. Le corrispondenti chiavi private consentono l'accesso completo ai tuoi progetti. Le chiavi SSH che sono state verificate possono essere usate per verificare commit Git firmati tramite SSH.
|
||||
principal_desc=Questi certificati SSH principali sono associati al tuo account e permettono l'accesso completo alle tue repository.
|
||||
gpg_desc=Queste chiavi GPG pubbliche sono associate con il tuo profilo e sono usate per verificare i tuoi commit. Proteggi le tue chiavi private perché permettono di firmare i commit con la tua identità.
|
||||
ssh_helper=<strong> Hai bisogno di aiuto?</strong> Dai un'occhiata alla guida di GitHub per<a href="%s">crea le tue chiavi SSH </a> o risolvere <a href="%s"> problemi comuni </a> che potresti trovare utilizzando SSH.
|
||||
ssh_helper=<strong> Hai bisogno di aiuto?</strong> Dài un'occhiata alla guida per<a href="%s">creare le tue chiavi SSH </a> o risolvere quei <a href="%s"> problemi comuni </a> in cui potresti imbatterti utilizzando SSH.
|
||||
gpg_helper=<strong>Hai bisogno di aiuto?</strong> Dai un'occhiata alla guida di GitHub <a href="%s">riguardo il GPG</a>.
|
||||
add_new_key=Aggiungi chiave SSH
|
||||
add_new_gpg_key=Aggiungi chiave GPG
|
||||
|
@ -968,7 +976,7 @@ user_unblock_success = L'utente è stato bloccato correttamente.
|
|||
user_block_success = L'utente è stato bloccato correttamente.
|
||||
at_least_one_permission = Devi selezionare almeno un permesso per creare un token
|
||||
oauth2_confidential_client = Client confidenziale. Seleziona per applicazioni che tengono il segreto confidenziale, come le applicazioni web. Non selezionare per applicazioni native incluse quelle desktop e mobile.
|
||||
hidden_comment_types.issue_ref_tooltip = Commenti in cui l'utente ha cambiato la branch/tag associata con l'issue
|
||||
hidden_comment_types.issue_ref_tooltip = Commenti in cui l'utente ha cambiato il ramo/etichetta associati con la segnalazione
|
||||
add_key_success = La chiave SSH "%s" è stata aggiunta.
|
||||
add_gpg_key_success = La chiave GPG "%s" è stata aggiunta.
|
||||
add_principal_success = Il certificato principale SSH "%s" è stato aggiunto.
|
||||
|
@ -1025,7 +1033,7 @@ repo_lang=Lingua
|
|||
repo_gitignore_helper=Seleziona i template di .gitignore.
|
||||
repo_gitignore_helper_desc=Scegli di quali file non tenere traccia da un elenco di modelli per le lingue comuni. Gli artefatti tipici generati dagli strumenti di build di ogni lingua sono inclusi su .gitignore per impostazione predefinita.
|
||||
issue_labels=Etichette segnalazioni
|
||||
issue_labels_helper=Seleziona un set di etichette per problemi.
|
||||
issue_labels_helper=Seleziona una raccolta di etichette per le segnalazioni.
|
||||
license=Licenza
|
||||
license_helper=Seleziona un file di licenza.
|
||||
license_helper_desc=Una licenza governa ciò che gli altri possono e non possono fare con il tuo codice. Non sei sicuro di chi è giusto per il tuo progetto? Vedi <a target="_blank" rel="noopener noreferrer" href="%s">Scegli una licenza.</a>
|
||||
|
@ -1040,7 +1048,7 @@ trust_model_helper_collaborator_committer=Collaboratore+Committer: Fidati delle
|
|||
trust_model_helper_default=Predefinito: utilizzare il modello di trust predefinito per questa installazione
|
||||
create_repo=Crea progetto
|
||||
default_branch=Ramo predefinito
|
||||
default_branch_helper=Il ramo predefinito è il ramo base per le richieste di pull e i commit di codice.
|
||||
default_branch_helper=Il ramo predefinito è il ramo base per le richieste di modifica e i commit.
|
||||
mirror_prune=Rimuovi
|
||||
mirror_prune_desc=Rimuovi i riferimenti di puntamento-remoto obsoleti
|
||||
mirror_interval=Intervallo di specchio (le unità di tempo valide sono "h", "m", "s"). 0 per disabilitare la sincronizzazione periodica. (Intervallo minimo: %s)
|
||||
|
@ -1096,7 +1104,7 @@ template.issue_labels=Etichette segnalazioni
|
|||
template.one_item=Deve selezionare almeno un elemento del modello
|
||||
template.invalid=Devi selezionare un modello di repository
|
||||
|
||||
archive.issue.nocomment=Questo repository è archiviato. Non puoi commentare i problemi.
|
||||
archive.issue.nocomment=Questo repository è archiviato. Non puoi commentare le segnalazioni.
|
||||
archive.pull.nocomment=Questo repository è archiviato. Non puoi commentare le richieste di pull.
|
||||
|
||||
form.reach_limit_of_creation_1=Hai già raggiunto il tuo limite di %d repository.
|
||||
|
@ -1173,15 +1181,15 @@ empty_message=Questo repository non contiene alcun contenuto.
|
|||
broken_message=I dati Git sottostanti a questo repository non possono essere letti. Contattare l'amministratore di questa istanza o eliminare questo repository.
|
||||
|
||||
code=Codice
|
||||
code.desc=Accedi al codice sorgente, file, commits e branches.
|
||||
branch=Ramo (Branch)
|
||||
code.desc=Accedi al codice sorgente, ai file, ai commit e ai rami.
|
||||
branch=Ramo
|
||||
tree=Albero (Tree)
|
||||
clear_ref=`Cancella il riferimento corrente`
|
||||
filter_branch_and_tag=Filtra per branch o tag
|
||||
filter_branch_and_tag=Filtra per ramo o etichetta
|
||||
find_tag=Trova etichetta
|
||||
branches=Rami (Branch)
|
||||
branches=Rami
|
||||
tags=Tag
|
||||
issues=Problemi
|
||||
issues=Segnalazioni
|
||||
pulls=Richieste di modifica
|
||||
project_board=Progetti
|
||||
packages=Pacchetti
|
||||
|
@ -1236,7 +1244,7 @@ editor.cannot_edit_lfs_files=I file LFS non possono essere modificati nell'inter
|
|||
editor.cannot_edit_non_text_files=I file binari non possono essere modificati tramite interfaccia web.
|
||||
editor.edit_this_file=Modifica file
|
||||
editor.this_file_locked=Il file è bloccato
|
||||
editor.must_be_on_a_branch=È necessario essere in un branch per eseguire o proporre modifiche su questo file.
|
||||
editor.must_be_on_a_branch=È necessario essere in un ramo per eseguire o proporre modifiche su questo file.
|
||||
editor.fork_before_edit=È necessario effettuare il fork di questo repository per eseguire o proporre modifiche su questo file.
|
||||
editor.delete_this_file=Elimina file
|
||||
editor.must_have_write_access=È necessaria l'autorizzazione di scrittura per eseguire o proporre modifiche su questo file.
|
||||
|
@ -1252,11 +1260,11 @@ editor.patching=Patching:
|
|||
editor.new_patch=Nuova Patch
|
||||
editor.commit_message_desc=Aggiungi una descrizione estesa facoltativa…
|
||||
editor.signoff_desc=Aggiungi "firmato da" dal committer alla fine del messaggio di log di commit.
|
||||
editor.commit_directly_to_this_branch=Impegnarsi direttamente con il <strong class="branch-name">%s</strong> branch.
|
||||
editor.create_new_branch=Creare un <strong> nuovo branch</strong> per questo commit e inizia una pull request.
|
||||
editor.commit_directly_to_this_branch=Fai un commit direttamente sul ramo <strong class="branch-name">%s</strong>.
|
||||
editor.create_new_branch=Crea un <strong> nuovo ramo</strong> per questo commit e avvia una richiesta di modifica.
|
||||
editor.create_new_branch_np=Crea un <strong>nuovo ramo</strong> per questo commit.
|
||||
editor.propose_file_change=Proponi la modifica del file
|
||||
editor.new_branch_name_desc=Nome del nuovo branch…
|
||||
editor.new_branch_name_desc=Nome del nuovo ramo…
|
||||
editor.cancel=Cancellare
|
||||
editor.filename_cannot_be_empty=Il nome del file non può essere vuoto.
|
||||
editor.file_changed_while_editing=I contenuti di questo file hanno subito dei cambiamenti da quando hai iniziato la modifica. <a target="_blank" rel="noopener noreferrer" href="%s">Clicca qui</a> per visualizzarli o <strong>Conferma nuovamente le modifiche</strong> per sovrascriverli.
|
||||
|
@ -1268,9 +1276,9 @@ editor.push_rejected_no_message=La modifica è stata rifiutata dal server senza
|
|||
editor.push_rejected=La modifica è stata rifiutata dal server. Controlla Git hooks.
|
||||
editor.push_rejected_summary=Messaggio Di Rifiuto Completo:
|
||||
editor.add_subdir=Aggiungi una directory…
|
||||
editor.no_commit_to_branch=Impossibile effettuare il commit direttamente sul branch perché:
|
||||
editor.user_no_push_to_branch=L'utente non può effettuare il push sul branch
|
||||
editor.require_signed_commit=Il branch richiede un commit firmato
|
||||
editor.no_commit_to_branch=Impossibile effettuare il commit direttamente sul ramo perché:
|
||||
editor.user_no_push_to_branch=L'utente non può immettere nel ramo
|
||||
editor.require_signed_commit=Il ramo richiede un commit firmato
|
||||
editor.cherry_pick=Cherry-pick %s suto:
|
||||
editor.revert=Ripristina %s su:
|
||||
|
||||
|
@ -1279,7 +1287,7 @@ commits.commits=Commit
|
|||
commits.nothing_to_compare=Questi rami sono uguali.
|
||||
commits.search=Ricerca commits…
|
||||
commits.find=Cerca
|
||||
commits.search_all=Tutti i branch
|
||||
commits.search_all=Tutti i Rami
|
||||
commits.author=Autore
|
||||
commits.message=Messaggio
|
||||
commits.date=Data
|
||||
|
@ -1293,10 +1301,10 @@ commits.ssh_key_fingerprint=Impronta chiave SSH
|
|||
|
||||
commit.revert=Ripristina
|
||||
commit.revert-header=Ripristina: %s
|
||||
commit.revert-content=Selezionare il ramo su cui ripristinare:
|
||||
commit.revert-content=Seleziona il ramo sul cui ripristinare:
|
||||
commit.cherry-pick=Cherry-pick
|
||||
commit.cherry-pick-header=Cherry-pick: %s
|
||||
commit.cherry-pick-content=Seleziona il ramo su cui scegliere:
|
||||
commit.cherry-pick-content=Seleziona il ramo su cui fare una selezione selettiva:
|
||||
|
||||
commitstatus.error=Errore
|
||||
commitstatus.pending=In sospeso
|
||||
|
@ -1305,7 +1313,7 @@ ext_issues=Accesso a segnalazioni esterne
|
|||
ext_issues.desc=Collegamento al puntatore di una issue esterna.
|
||||
|
||||
projects=Progetti
|
||||
projects.desc=Gestisci problemi e pull nelle schede di progetto.
|
||||
projects.desc=Gestisci segnalazioni e richieste di modifica nelle schede di progetto.
|
||||
projects.description=Descrizione (opzionale)
|
||||
projects.description_placeholder=Descrizione
|
||||
projects.create=Crea progetto
|
||||
|
@ -1316,7 +1324,7 @@ projects.deletion=Elimina progetto
|
|||
projects.deletion_desc=Eliminare un progetto lo rimuove fra tutte le issue relative. Continuare?
|
||||
projects.deletion_success=Il progetto è stato cancellato.
|
||||
projects.edit=Modifica progetto
|
||||
projects.edit_subheader=I progetti organizzano i problemi e monitorano i progressi.
|
||||
projects.edit_subheader=I progetti servono a coordinare le segnalazioni e a monitorare i progressi.
|
||||
projects.modify=Aggiorna progetto
|
||||
projects.type.none=Nessuno
|
||||
projects.type.basic_kanban=Kanban semplice
|
||||
|
@ -1360,7 +1368,7 @@ issues.choose.get_started=Inizia
|
|||
issues.choose.open_external_link=Apri
|
||||
issues.choose.blank=Default
|
||||
issues.choose.blank_about=Crea un problema dal modello predefinito.
|
||||
issues.no_ref=Nessun ramo/etichetta specificato
|
||||
issues.no_ref=Nessun ramo/etichetta specificati
|
||||
issues.create=Crea segnalazione
|
||||
issues.new_label=Nuova etichetta
|
||||
issues.new_label_placeholder=Nome etichetta
|
||||
|
@ -1391,7 +1399,7 @@ issues.change_title_at=`Titolo modificato da <b><strike>%s</strike></b> a <b>%s<
|
|||
issues.change_ref_at=`ha cambiato il riferimento da <b><strike>%s</strike></b> a <b>%s</b> %s`
|
||||
issues.remove_ref_at=`riferimento rimosso <b>%s</b> %s`
|
||||
issues.add_ref_at=`aggiunto riferimento <b>%s</b> %s`
|
||||
issues.delete_branch_at=`branch <b>%s</b> eliminato %s`
|
||||
issues.delete_branch_at=`ramo <b>%s</b> eliminato %s`
|
||||
issues.filter_label=Etichetta
|
||||
issues.filter_label_exclude=`Usa <code>alt</code> + <code>click/enter</code> per escludere le etichette`
|
||||
issues.filter_label_no_select=Tutte le etichette
|
||||
|
@ -1404,7 +1412,7 @@ issues.filter_assginee_no_assignee=Nessun assegnatario
|
|||
issues.filter_poster=Autore
|
||||
issues.filter_poster_no_select=Tutti gli autori
|
||||
issues.filter_type=Tipo
|
||||
issues.filter_type.all_issues=Tutti i problemi
|
||||
issues.filter_type.all_issues=Tutte le segnalazioni
|
||||
issues.filter_type.assigned_to_you=Assegnati a te
|
||||
issues.filter_type.created_by_you=Creati da te
|
||||
issues.filter_type.mentioning_you=Che ti riguardano
|
||||
|
@ -1479,7 +1487,7 @@ issues.label_title=Nome etichetta
|
|||
issues.label_description=Descrizione etichetta
|
||||
issues.label_color=Colore etichetta
|
||||
issues.label_count=%d etichette
|
||||
issues.label_open_issues=%d problemi aperti
|
||||
issues.label_open_issues=%d segnalazioni/richieste aperte
|
||||
issues.label_edit=Modifica
|
||||
issues.label_delete=Elimina
|
||||
issues.label_modify=Modifica etichetta
|
||||
|
@ -1564,10 +1572,10 @@ issues.dependency.remove=Rimuovi
|
|||
issues.dependency.remove_info=Rimuovi questa dipendenza
|
||||
issues.dependency.added_dependency=`ha aggiunto una nuova dipendenza %s`
|
||||
issues.dependency.removed_dependency=`ha rimosso una dipendenza %s`
|
||||
issues.dependency.pr_closing_blockedby=La chiusura di questa pull request è bloccata dai seguenti problemi
|
||||
issues.dependency.issue_closing_blockedby=La chiusura di questo problema è bloccata dai seguenti problemi
|
||||
issues.dependency.issue_close_blocks=Questo problema impedisce la chiusura dei seguenti problemi
|
||||
issues.dependency.pr_close_blocks=Questa richiesta di pull impedisce la chiusura dei seguenti problemi
|
||||
issues.dependency.pr_closing_blockedby=Questa richiesta di modifica non può essere chiusa per via delle seguenti segnalazioni
|
||||
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.pr_close_blocked=Chiudere tutte le anomalie che bloccano la richiesta di pull prima di effettaure il merge.
|
||||
issues.dependency.blocks_short=Blocchi
|
||||
|
@ -1580,8 +1588,8 @@ issues.dependency.add_error_same_issue=Non si può fare dipendere un problema da
|
|||
issues.dependency.add_error_dep_issue_not_exist=Il problema dipendente 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 problemi che si bloccano a vicenda.
|
||||
issues.dependency.add_error_dep_not_same_repo=Entrambi i problemi devono essere nello stesso repository.
|
||||
issues.dependency.add_error_cannot_create_circular=Non puoi creare una dipendenza con due segnalazioni che si bloccano a vicenda.
|
||||
issues.dependency.add_error_dep_not_same_repo=Entrambe le segnalazioni devono essere nello stesso repository.
|
||||
issues.review.self.approval=Non puoi approvare la tua pull request.
|
||||
issues.review.self.rejection=Non puoi richiedere modifiche sulla tua pull request.
|
||||
issues.review.approve=hanno approvato queste modifiche %s
|
||||
|
@ -1624,9 +1632,9 @@ pulls.new=Nuova richiesta di modifica
|
|||
pulls.view=Visualizza richiesta di modifica
|
||||
pulls.compare_changes=Nuova richiesta di modifica
|
||||
pulls.allow_edits_from_maintainers=Consenti modifiche dai manutentori
|
||||
pulls.allow_edits_from_maintainers_desc=Gli utenti con accesso in scrittura al ramo base possono anche inviare a questo ramo
|
||||
pulls.allow_edits_from_maintainers_desc=Gli utenti con accesso di scrittura al ramo base possono anche immettere in questo ramo
|
||||
pulls.allow_edits_from_maintainers_err=Aggiornamento non riuscito
|
||||
pulls.compare_changes_desc=Selezione il branch su cui eseguire il merge e il branch da cui eseguire il pull.
|
||||
pulls.compare_changes_desc=Seleziona il ramo su cui fondere e il ramo da cui prelevare.
|
||||
pulls.has_viewed_file=Visualizzato
|
||||
pulls.has_changed_since_last_review=Modificato dalla tua ultima recensione
|
||||
pulls.viewed_files_label=%[1]d / %[2]d file visti
|
||||
|
@ -1634,20 +1642,20 @@ pulls.compare_base=unisci a
|
|||
pulls.compare_compare=esegui un pull da
|
||||
pulls.switch_comparison_type=Cambia tipo di confronto
|
||||
pulls.switch_head_and_base=Testa e base di commutazione
|
||||
pulls.filter_branch=Filtra branch
|
||||
pulls.filter_branch=Filtra ramo
|
||||
pulls.no_results=Nessun risultato trovato.
|
||||
pulls.nothing_to_compare=Questi rami sono uguali. Non c'è alcuna necessità di creare una pull request.
|
||||
pulls.nothing_to_compare_and_allow_empty_pr=Questi rami sono uguali. Questa PR sarà vuota.
|
||||
pulls.has_pull_request=`Una pull request tra questi rami esiste già: <a href="%[1]s">%[2]s#%[3]d</a>`
|
||||
pulls.nothing_to_compare=Questi rami sono uguali. Non c'è bisogno di creare una richiesta di modifica.
|
||||
pulls.nothing_to_compare_and_allow_empty_pr=Questi rami sono uguali. Questa richiesta sarà vuota.
|
||||
pulls.has_pull_request=`Una richiesta di modifica fra questi rami esiste già: <a href="%[1]s">%[2]s#%[3]d</a>`
|
||||
pulls.create=Crea richiesta di modifica
|
||||
pulls.title_desc_few=vorrebbe unire %[1]d commit da <code>%[2]s</code> a <code id="branch_target">%[3]s</code>
|
||||
pulls.title_desc_few=vuole unire %[1]d commit da <code>%[2]s</code> a <code id="branch_target">%[3]s</code>
|
||||
pulls.merged_title_desc_few=ha unito %[1]d commit da <code>%[2]s</code> a <code>%[3]s</code> %[4]s
|
||||
pulls.change_target_branch_at=`cambiato il branch di destinazione da <b>%s</b> a <b>%s</b> %s`
|
||||
pulls.change_target_branch_at=`cambiato il ramo di destinazione da <b>%s</b> a <b>%s</b> %s`
|
||||
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 pull request non può essere riaperta perché il branch è stato eliminato.
|
||||
pulls.cant_reopen_deleted_branch=Questa richiesta di modifia non può essere riaperta perché il ramo è stato eliminato.
|
||||
pulls.merged=Unito
|
||||
pulls.manually_merged=Unito manualmente
|
||||
pulls.is_closed=La pull request è stata chiusa.
|
||||
|
@ -1657,7 +1665,7 @@ 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.files_conflicted=Questa pull request ha modifiche in conflitto con il branch di destinazione.
|
||||
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.
|
||||
pulls.is_empty=Le modifiche di questo ramo sono già nel ramo di destinazione. Questo sarà un commit vuoto.
|
||||
|
@ -1675,7 +1683,7 @@ pulls.reject_count_1=%d richiesta di cambiamento
|
|||
pulls.reject_count_n=%d richieste di cambiamento
|
||||
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.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_helper=Attiva le opzioni di merge nelle impostazioni del repository o unisci la pull request manualmente.
|
||||
|
@ -1688,7 +1696,7 @@ pulls.rebase_merge_commit_pull_request=Ricostruisci quindi crea commit unito
|
|||
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 branch richiede commit firmati ma questo merge non verrà firmato
|
||||
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.merge_conflict=Unione non riuscita: C'è stato un conflitto durante l'operazione. Suggerimento: Prova una strategia diversa
|
||||
|
@ -1709,11 +1717,11 @@ pulls.status_checks_failure=Alcuni controlli sono falliti
|
|||
pulls.status_checks_error=Alcuni controlli hanno segnalato errori
|
||||
pulls.status_checks_requested=Richiesto
|
||||
pulls.status_checks_details=Dettagli
|
||||
pulls.update_branch=Aggiorna il ramo tramite merge
|
||||
pulls.update_branch=Aggiorna il ramo tramite fusione
|
||||
pulls.update_branch_rebase=Aggiorna il ramo per cambio base
|
||||
pulls.update_branch_success=Brench aggiornato con successo
|
||||
pulls.update_not_allowed=Non sei abilitato ad aggiornare il branch
|
||||
pulls.outdated_with_base_branch=Questo brench non è aggiornato con il branch di base
|
||||
pulls.update_branch_success=Ramo aggiornato con successo
|
||||
pulls.update_not_allowed=Non ti è permesso aggiornare il ramo
|
||||
pulls.outdated_with_base_branch=Questo ramo non è aggiornato con il ramo di base
|
||||
pulls.closed_at=`chiusa questa pull request <a id="%[1]s" href="#%[1]s">%[2]s</a>`
|
||||
pulls.reopened_at=`riaperta questa pull request <a id="%[1]s" href="#%[1]s">%[2]s</a>`
|
||||
|
||||
|
@ -1755,8 +1763,8 @@ milestones.deletion_desc=Eliminare una pietra miliare la rimuove da tutte le rel
|
|||
milestones.deletion_success=La pietra miliare è stata eliminata.
|
||||
milestones.filter_sort.least_complete=Meno completato
|
||||
milestones.filter_sort.most_complete=Più completato
|
||||
milestones.filter_sort.most_issues=Più problemi
|
||||
milestones.filter_sort.least_issues=Meno problemi
|
||||
milestones.filter_sort.most_issues=Maggior parte delle segnalazioni
|
||||
milestones.filter_sort.least_issues=Meno segnalazioni
|
||||
|
||||
|
||||
ext_wiki=Accesso al Wiki esterno
|
||||
|
@ -1837,7 +1845,7 @@ activity.git_stats_pushed_n=hanno pushato
|
|||
activity.git_stats_commit_1=%d commit
|
||||
activity.git_stats_commit_n=%d commit
|
||||
activity.git_stats_push_to_branch=su %s e
|
||||
activity.git_stats_push_to_all_branches=a tutti i brench.
|
||||
activity.git_stats_push_to_all_branches=a tutti i rami.
|
||||
activity.git_stats_on_default_branch=Su %s,
|
||||
activity.git_stats_file_1=%d file
|
||||
activity.git_stats_file_n=%d file
|
||||
|
@ -1884,7 +1892,7 @@ settings.mirror_settings.push_mirror.add=Aggiungi specchio di immissione
|
|||
|
||||
settings.sync_mirror=Sincronizza ora
|
||||
settings.site=Sito web
|
||||
settings.update_settings=Aggiorna impostazioni
|
||||
settings.update_settings=Salva impostazioni
|
||||
settings.branches.update_default_branch=Aggiorna ramo predefinito
|
||||
settings.advanced_settings=Opzioni avanzate
|
||||
settings.wiki_desc=Abilita wiki del progetto
|
||||
|
@ -1900,7 +1908,7 @@ settings.external_tracker_url=URL del tracciatore di segnalazioni esterno
|
|||
settings.external_tracker_url_error=L'URL del tracciatore di issue esterno non è un URL valido.
|
||||
settings.external_tracker_url_desc=I visitatori verranno reindirizzati all'URL del tracciatore di issue esterno cliccando sulla scheda delle issue.
|
||||
settings.tracker_url_format=Formato URL del gestore segnalazioni esterno
|
||||
settings.tracker_url_format_error=L'URL del tracker di problemi esterno non è un URL valido.
|
||||
settings.tracker_url_format_error=L'URL del tracciatore esterno delle segnalazioni non è un URL valido.
|
||||
settings.tracker_issue_style=Formato numerico del tracciatore di segnalazioni esterno
|
||||
settings.tracker_issue_style.numeric=Numerico
|
||||
settings.tracker_issue_style.alphanumeric=Alfanumerico
|
||||
|
@ -1913,8 +1921,8 @@ settings.allow_only_contributors_to_track_time=Consenti soltanto ai contributori
|
|||
settings.pulls_desc=Abilita le richieste di modifica del progetto
|
||||
settings.pulls.ignore_whitespace=Ignora gli spazi bianchi per evitare conflitti
|
||||
settings.pulls.enable_autodetect_manual_merge=Abilita il rilevamento automatico della fusione manuale (Nota: in alcuni casi speciali possono verificarsi errori)
|
||||
settings.pulls.allow_rebase_update=Abilita l'aggiornamento del ramo pull request per rebase
|
||||
settings.pulls.default_delete_branch_after_merge=Elimina il ramo pull request dopo la fusione per impostazione predefinita
|
||||
settings.pulls.allow_rebase_update=Abilita l'aggiornamento del ramo della richiesta per rebase
|
||||
settings.pulls.default_delete_branch_after_merge=Elimina il ramo della richiesta dopo la fusione per impostazione predefinita
|
||||
settings.packages_desc=Abilita registro dei pacchetti del progetto
|
||||
settings.projects_desc=Abilita progetti del progetto
|
||||
settings.admin_settings=Impostazioni amministratore
|
||||
|
@ -1925,7 +1933,7 @@ settings.admin_indexer_commit_sha=Ultimo SHA indicizzato
|
|||
settings.admin_indexer_unindexed=Non indicizzato
|
||||
settings.reindex_button=Aggiungi alla coda di re-indicizzazione
|
||||
settings.reindex_requested=Re-indicizzazione richiesta
|
||||
settings.admin_enable_close_issues_via_commit_in_any_branch=Chiudi un issue tramite un commit eseguito in un branch non predefinito
|
||||
settings.admin_enable_close_issues_via_commit_in_any_branch=Chiudi una segnalazione tramite un commit eseguito su un ramo non predefinito
|
||||
settings.danger_zone=Zona pericolosa
|
||||
settings.new_owner_has_same_repo=Il nuovo proprietario ha già un repository con lo stesso nome. Per favore scegli un altro nome.
|
||||
settings.convert=Converti in un progetto regolare
|
||||
|
@ -2034,9 +2042,9 @@ settings.event_send_everything=Tutti gli eventi
|
|||
settings.event_choose=Eventi personalizzati…
|
||||
settings.event_header_repository=Eventi del progetto
|
||||
settings.event_create=Crea
|
||||
settings.event_create_desc=Branch o tag creato.
|
||||
settings.event_create_desc=Ramo o etichetta creati.
|
||||
settings.event_delete=Elimina
|
||||
settings.event_delete_desc=Branch o tag eliminati.
|
||||
settings.event_delete_desc=Ramo o etichetta eliminati.
|
||||
settings.event_fork=Fork
|
||||
settings.event_fork_desc=Repository forkato.
|
||||
settings.event_wiki=Wiki
|
||||
|
@ -2052,7 +2060,7 @@ settings.event_issues_desc=Issue aperto, chiuso, riaperto o modificato.
|
|||
settings.event_issue_assign=Segnalazione assegnata
|
||||
settings.event_issue_assign_desc=Issue assegnata o non assegnata.
|
||||
settings.event_issue_label=Segnalazione etichettata
|
||||
settings.event_issue_label_desc=Etichette dei Problemi aggiornate o cancellate.
|
||||
settings.event_issue_label_desc=Etichette delle segnalazioni aggiornate o cancellate.
|
||||
settings.event_issue_milestone=Segnalazione risolta
|
||||
settings.event_issue_milestone_desc=Obiettivo raggiunto o abbandonato.
|
||||
settings.event_issue_comment=Commento segnalazione
|
||||
|
@ -2074,7 +2082,7 @@ settings.event_pull_request_sync=Richiesta di modifica sincronizzata
|
|||
settings.event_pull_request_sync_desc=Pull request sincronizzata.
|
||||
settings.event_package=Pacchetto
|
||||
settings.event_package_desc=Pacchetto creato o eliminato in un repository.
|
||||
settings.branch_filter=Filtro branch
|
||||
settings.branch_filter=Filtro rami
|
||||
settings.branch_filter_desc=Whitelist dei rami per gli eventi di spinta, creazione dei rami e cancellazione dei rami, specificati come modello globo. Se vuoto o <code>*</code>, gli eventi per tutti i rami sono segnalati. Vedi la documentazione <a href="https://pkg.go.dev/github.com/gobwas/glob#Compile">github.com/gobwas/glob</a> per la sintassi. Esempi: <code>master</code>, <code>{master,release*}</code>.
|
||||
settings.active=Attivo
|
||||
settings.active_helper=Le informazioni sugli eventi innescati saranno inviate a questo URL del webhook.
|
||||
|
@ -2348,8 +2356,8 @@ error.csv.unexpected=Impossibile visualizzare questo file perché contiene un ca
|
|||
error.csv.invalid_field_count=Impossibile visualizzare questo file perché ha un numero errato di campi alla riga %d.
|
||||
pulls.cmd_instruction_merge_desc = Unisci le modifiche e aggiornale su Forgejo.
|
||||
pulls.cmd_instruction_merge_title = Merge
|
||||
pulls.cmd_instruction_checkout_desc = Dalla tua repository del progetto, accedi ad un nuovo ramo e prova le modifiche.
|
||||
milestones.new_subheader = I traguardi possono aiutarti ad organizzare i problemi e a tracciare i loro progressi.
|
||||
pulls.cmd_instruction_checkout_desc = Dalla tua repository del progetto, accedi a un nuovo ramo e prova le modifiche.
|
||||
milestones.new_subheader = I traguardi possono aiutarti ad organizzare le segnalazioni e a tracciarne i progressi.
|
||||
activity.navbar.contributors = Contributori
|
||||
migrate.cancel_migrating_title = Annulla migrazione
|
||||
more_operations = Ulteriori operazioni
|
||||
|
@ -2390,7 +2398,7 @@ issues.label_exclusive = Esclusivo
|
|||
pulls.made_using_agit = AGit
|
||||
milestones.create_success = Il traguardo "%s" è stato creato.
|
||||
search.fuzzy.tooltip = Includi risultati di ricerca che combaciano anche approssimativamente al termine di ricerca
|
||||
default_branch_label = default
|
||||
default_branch_label = predefinito
|
||||
pulls.cmd_instruction_checkout_title = Checkout
|
||||
pull.deleted_branch = (eliminato):%s
|
||||
issues.filter_label_select_no_label = Senza etichette
|
||||
|
@ -2410,7 +2418,7 @@ wiki.reserved_page = La nome della pagina della wiki "%s" è riservato.
|
|||
wiki.delete_page_notice_1 = La rimozione della pagina della wiki "%s" non può essere annullata. Continuare?
|
||||
settings.webhook.test_delivery_desc_disabled = Per testare questo richiamo HTTP con un evento finto, attivalo.
|
||||
settings.protected_branch_duplicate_rule_name = Esiste già una regola per questo insieme di rami
|
||||
rss.must_be_on_branch = Devi essere su ramo per avere un feed RSS.
|
||||
rss.must_be_on_branch = Devi essere su un ramo per avere un feed RSS.
|
||||
admin.manage_flags = Gestisci flag
|
||||
admin.enabled_flags = Flag abilitate per il progetto:
|
||||
admin.update_flags = Aggiorna flag
|
||||
|
@ -2436,11 +2444,11 @@ ambiguous_runes_description = `Questo file contiene caratteri Unicode che potreb
|
|||
vendored = Vendored
|
||||
generated = Generato
|
||||
commit.contained_in = Questo commit è contenuto in:
|
||||
commit.contained_in_default_branch = Questo commit è parte del ramo predefinito
|
||||
commit.contained_in_default_branch = Questo commit fa parte del ramo predefinito
|
||||
commit.load_referencing_branches_and_tags = Carica rami ed etichette che fanno riferimento a questo commit
|
||||
editor.fail_to_apply_patch = Impossibile applicare toppa "%s"
|
||||
editor.new_branch_name = Dai un nome al nuovo ramo per questo commit
|
||||
editor.branch_already_exists = Il ramo "%s" esiste già nel progetto.
|
||||
editor.new_branch_name = Dài un nome al nuovo ramo per questo commit
|
||||
editor.branch_already_exists = Il ramo "%s" esiste già nella repo.
|
||||
editor.directory_is_a_file = Il nome cartella "%s" è già usato come nome file in questo progetto.
|
||||
editor.file_is_a_symlink = `"%s" è un collegamento simbolico. I collegamenti simbolici non possono essere modificati nell'editor web`
|
||||
editor.filename_is_a_directory = Il nome file "%s" è già usato come nome cartella in questo progetto.
|
||||
|
@ -2449,7 +2457,7 @@ editor.file_deleting_no_longer_exists = Il file in eliminazione, "%s", non esist
|
|||
editor.file_already_exists = Un file chiamato "%s" esiste già in questo progetto.
|
||||
editor.fail_to_update_file = Impossibile aggiornare/creare il file "%s".
|
||||
editor.upload_file_is_locked = Il file "%s" è bloccato da %s.
|
||||
editor.cannot_commit_to_protected_branch = Non si può fare commit sul ramo protetto "%s".
|
||||
editor.cannot_commit_to_protected_branch = Non si possono fare commit sul ramo protetto "%s".
|
||||
commits.search.tooltip = Puoi prefissare parole chiave con "autore:", "committer:", "dopo:", o "prima:", esempio "ripristino autore:Alice prima:2019-01-13".
|
||||
issues.filter_project_all = Tutti i progetti
|
||||
issues.label_exclusive_desc = Dai all'etichetta il nome <code>ambito/oggetto</code> per renderla mutualmente esclusiva con altre etichette in <code>ambito/</code>.
|
||||
|
@ -2473,7 +2481,7 @@ pulls.filter_changes_by_commit = Filtra per commit
|
|||
pulls.nothing_to_compare_have_tag = I rami/etichette selezionati sono uguali.
|
||||
pulls.merged_success = Richiesta di modifica fusa correttamente e chiusa
|
||||
pulls.closed = Richiesta di modifica chiusa
|
||||
pulls.merged_info_text = Il ramo %s può essere eliminato ora.
|
||||
pulls.merged_info_text = Il ramo %s può ora essere eliminato.
|
||||
pulls.blocked_by_user = Non puoi creare una richiesta di modifica in questo progetto perché sei bloccato dal proprietario.
|
||||
pulls.status_checks_hide_all = Nascondi tutti i controlli
|
||||
pulls.status_checks_show_all = Mostra tutti i controlli
|
||||
|
@ -2482,7 +2490,7 @@ pulls.close = Chiudi la richiesta di modifica
|
|||
pulls.reopen_failed.head_branch = La richiesta di modifica non può essere riaperta perché il ramo genitore non esiste più.
|
||||
pulls.clear_merge_message = Cancella messaggio di fusione
|
||||
pulls.reopen_failed.base_branch = La richiesta di modifica non può essere riaperta perché il ramo di base non esiste più.
|
||||
pulls.agit_explanation = Creata usando flusso di lavoro AGit. AGit permette ai contributori di proporre modifiche usando "git push" senza creare una derivazione o un nuovo ramo.
|
||||
pulls.agit_explanation = Creata usando il flusso di lavoro AGit. AGit permette a chi contribuisce di proporre modifiche usando "git push" senza creare una derivazione o un nuovo ramo.
|
||||
pulls.recently_pushed_new_branches = Hai immesso sul ramo <a href="%[3]s"><strong>%[1]s</strong></a> %[2]s
|
||||
milestones.filter_sort.earliest_due_data = Scadenza più vicina
|
||||
signing.wont_sign.twofa = Devi avere la verifica a due fattori abilitata per firmare i commit.
|
||||
|
@ -2497,7 +2505,7 @@ activity.navbar.recent_commits = Commit recenti
|
|||
contributors.contribution_type.filter_label = Tipi di contributo:
|
||||
search.type.tooltip = Cerca tipo
|
||||
search.match.tooltip = Includi solo risultati che corrispondono esattamente ai termini di ricerca
|
||||
settings.mirror_settings.docs.disabled_push_mirror.instructions = Imposta il tuo progetto in modo che prelevi commit, etichette e rami da un altro progetto.
|
||||
settings.mirror_settings.docs.disabled_push_mirror.instructions = Imposta il tuo progetto in modo che prelevi commit, etichette e rami da un'altra repo.
|
||||
settings.mirror_settings.docs.no_new_mirrors = Il tuo progetto sta specchiando i cambiamenti a/da un altro progetto. Tieni a mente che non puoi creare nuovi specchi al momento.
|
||||
settings.mirror_settings.docs.can_still_use = Nonostante tu non possa modificare specchi esistenti o crearne di nuovi puoi comunque il tuo specchio esistente.
|
||||
settings.mirror_settings.docs.pull_mirror_instructions = Per impostare uno specchio di prelievo consulta:
|
||||
|
@ -2507,13 +2515,13 @@ settings.mirror_settings.docs.pulling_remote_title = Prelievo da un progetto rem
|
|||
settings.transfer_abort_success = Il trasferimento del progetto a %s è stato correttamente cancellato.
|
||||
settings.enter_repo_name = Inserisci il proprietario e il nome del progetto esattamente come mostrato:
|
||||
settings.confirmation_string = Stringa di conferma
|
||||
settings.wiki_rename_branch_main = Normalizza il nome del ramo della wiki
|
||||
settings.wiki_rename_branch_main_desc = Rinomina il ramo usato internamente dalla wiki come "%s". Questo è permanente è non può essere annullato.
|
||||
settings.wiki_rename_branch_main = Normalizza il nome del ramo della Wiki
|
||||
settings.wiki_rename_branch_main_desc = Rinomina il ramo usato internamente dalla Wiki in "%s". L'operazione è permanente è non può essere annullata.
|
||||
settings.wiki_rename_branch_main_notices_1 = Questa operazione <strong>NON PUÒ</strong> essere annullata.
|
||||
settings.wiki_branch_rename_success = Il nome del ramo della wiki del progetto è stato normalizzato correttamente.
|
||||
settings.wiki_branch_rename_failure = Impossibile normalizzare il nome del ramo della wiki del progetto.
|
||||
settings.confirm_wiki_branch_rename = Rinomina ramo della wiki
|
||||
settings.wiki_rename_branch_main_notices_2 = Questo rinominerà permanentemente il ramo interno della wiki del progetto di %s. Passaggi esistenti dovranno essere aggiornati.
|
||||
settings.wiki_branch_rename_success = Il nome del ramo della wiki della repo è stato normalizzato correttamente.
|
||||
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.webhook.replay.description_disabled = Per riprodurre questo richiamo HTTP, attivalo.
|
||||
settings.event_wiki_desc = Pagina wiki creata, rinominata, modificata o rimossa.
|
||||
|
@ -2535,9 +2543,9 @@ issues.role.contributor_helper = Questo utente ha precedentemente fatto commit a
|
|||
pulls.blocked_by_official_review_requests = Questa richiesta di modifica è bloccata perché manca l'approvazione di uno o più revisori ufficiali.
|
||||
pulls.blocked_by_changed_protected_files_1 = Questa richiesta di modifica è bloccata perché modifica un file protetto:
|
||||
pulls.blocked_by_changed_protected_files_n = Questa richiesta di modifica è bloccata perché modifica file protetti:
|
||||
pulls.has_merged = Respinto: la richiesta di modifica è stata fusa, non puoi fonderla di nuovo o cambiare il ramo di destinazione.
|
||||
pulls.has_merged = Errore: la richiesta di modifica è stata fusa, non puoi fonderla di nuovo o cambiare il ramo di destinazione.
|
||||
milestones.filter_sort.latest_due_date = Scadenza più lontana
|
||||
settings.mirror_settings.docs = Imposta il tuo progetto in modo che sincronizzi automaticamente commit, etichette e rami con un altro progetto.
|
||||
settings.mirror_settings.docs = Imposta la tua repo in modo che sincronizzi automaticamente commit, etichette e rami con un'altra repo.
|
||||
settings.mirror_settings.docs.disabled_pull_mirror.instructions = Imposta il tuo progetto in modo che immetta commit, etichette e rami in un altro progetto automaticamente. Gli specchi di prelievo sono stati disabilitati dall'amministratore del sito.
|
||||
settings.mirror_settings.docs.disabled_push_mirror.info = Gli specchi di immissione sono stati disabilitati dall'amministratore del sito.
|
||||
settings.mirror_settings.docs.more_information_if_disabled = Puoi scoprire di più riguardo specchi di prelievo e di immissione qui:
|
||||
|
@ -2586,7 +2594,7 @@ issues.role.member_helper = questo utente è un membro dell'organizzazione che p
|
|||
issues.review.pending.tooltip = Questo commento non è attualmente visibile ad altri utenti. Per inviare il tuo commento in attesa selezione "%s" -> "%s/%s/%s" in cima alla pagina.
|
||||
pulls.blocked_by_approvals = Questa richiesta di modifica non ha ancora sufficienti approvazioni. %d di %d approvazioni concesse.
|
||||
pulls.blocked_by_rejection = Questa richiesta di modifica ha modifiche richieste da un revisore ufficiale.
|
||||
pulls.blocked_by_outdated_branch = Questa richiesta di modifica è bloccata perché è obsoleta.
|
||||
pulls.blocked_by_outdated_branch = Questa richiesta di modifica è bloccata poiché obsoleta.
|
||||
pulls.fast_forward_only_merge_pull_request = Solo fast-forward
|
||||
signing.will_sign = Questo commit verrà firmato con la chiave "%s".
|
||||
signing.wont_sign.error = C'è stato un errore durante il controllo per la firma del commit.
|
||||
|
@ -2605,14 +2613,14 @@ settings.pull_mirror_sync_in_progress = Prelevando cambiamenti dal progetto remo
|
|||
settings.push_mirror_sync_in_progress = Immettendo cambiamenti al progetto remoto %s.
|
||||
settings.update_mirror_settings = Aggiorna impostazioni dello specchio
|
||||
settings.branches.switch_default_branch = Passa al ramo predefinito
|
||||
settings.branches.add_new_rule = Aggiungi nuova regola
|
||||
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.
|
||||
branch.delete_desc = Eliminare un ramo è permanente. 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?
|
||||
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 = Il ramo "%s" non esiste nel progetto.
|
||||
editor.branch_does_not_exist = Il ramo "%s" non esiste nella repo.
|
||||
issues.label_archive = Archivia etichetta
|
||||
issues.label_archived_filter = Mostra etichette archiviate
|
||||
issues.dependency.no_permission_n = Non hai il permesso di lettura per leggere %s dipendenze
|
||||
|
@ -2661,7 +2669,7 @@ tag.ahead.target = a %s da questa etichetta
|
|||
release.tag_helper_new = Nuova etichetta. Questa etichetta sarà creata dalla destinazione.
|
||||
release.tag_helper_existing = Etichetta esistente.
|
||||
release.deletion_desc = La rimozione di un rilascio lo rimuove solo da Forgejo. Non influenza l'etichetta Git, i contenuti del tuo progetto o la sua cronologia. Continuare?
|
||||
branch.already_exists = Un ramo chiamato "%s" esiste già.
|
||||
branch.already_exists = Esiste già un ramo chiamato "%s".
|
||||
settings.merge_style_desc = Modalità di fusione
|
||||
settings.remove_protected_branch_failed = Impossibile rimuovere la regola di protezione del ramo "%s".
|
||||
settings.remove_protected_branch_success = La regola di protezione del ramo "%s" è stata rimossa.
|
||||
|
@ -2715,12 +2723,16 @@ release.download_count_one = %s download
|
|||
release.download_count_few = %s downloads
|
||||
release.system_generated = Questo allegato è stato generato automaticamente.
|
||||
pulls.ready_for_review = Pronto alla revisione?
|
||||
editor.commit_id_not_matching = L'ID del commit non combacia con quello che stavi modificando. Conferma le tue modifiche su un nuovo ramo, poi uniscilo al ramo desiderato.
|
||||
editor.commit_id_not_matching = L'ID del commit non combacia con quello del commit che stavi modificando. Conferma le tue modifiche su un nuovo ramo, poi fondilo col ramo desiderato.
|
||||
n_branch_few = %s rami
|
||||
n_tag_one = %s tag
|
||||
commits.search_branch = Questo Ramo
|
||||
settings.rename_branch_failed_protected = Non è possibile rinominare il ramo %s perché è un ramo protetto.
|
||||
settings.event_pull_request_enforcement = Imposizione
|
||||
settings.matrix.room_id_helper = L'ID della Stanza può essere ricavato dal web client Element > Stanza > Impostazioni > Avanzato > ID interno stanza. Esempio: %s.
|
||||
settings.graphql_url = URL GraphQL
|
||||
settings.sourcehut_builds.access_token_helper = Token di accesso con grant JOBS:RW. Genera un <a target="_blank" rel="noopener noreferrer" href="%s">token builds.sr.ht</a> o un <a target="_blank" rel="noopener noreferrer" href="%s">token builds.sr.ht con accesso ai segreti</a> su meta.sr.ht.
|
||||
settings.matrix.access_token_helper = È consigliata l'impostazione di un account Matrix dedicato per questa funzione. Il token di accesso può essere prelevato dal web client Element (in una pagina privata/incognito) > Menu utente (in alto a sinistra) > Tutte le impostazioni > Aiuto e informazioni > Avanzato > Token di accesso (sotto all'URL del Homeserver). Chiudi la pagina privata/incognito (La disconnessione invaliderebbe il token).
|
||||
|
||||
[graphs]
|
||||
contributors.what = contribuzioni
|
||||
|
@ -2978,7 +2990,7 @@ users.delete_account=Elimina profilo utente
|
|||
users.cannot_delete_self=Non puoi eliminare te stesso
|
||||
users.still_own_repo=Questo utente possiede ancora una o più repository. Eliminare o trasferire questi repository prima di continuare.
|
||||
users.still_has_org=Questo utente è membro di un'organizzazione. Rimuovi l'utente da tutte le organizzazioni prima di proseguire.
|
||||
users.purge=Elimina Utente
|
||||
users.purge=Elimina utente
|
||||
users.purge_help=Eliminare forzatamente l'utente e tutti i progetti, le organizzazioni e i pacchetti di proprietà dell'utente. Anche tutti i commenti e le segnalazioni verranno eliminati.
|
||||
users.deletion_success=L'account utente è stato eliminato.
|
||||
users.reset_2fa=Resetta 2FA
|
||||
|
@ -2987,13 +2999,13 @@ users.list_status_filter.reset=Ripristina
|
|||
users.list_status_filter.is_active=Attivo
|
||||
users.list_status_filter.not_active=Inattivo
|
||||
users.list_status_filter.is_admin=Amministratore
|
||||
users.list_status_filter.not_admin=Non Amministratore
|
||||
users.list_status_filter.not_admin=Non amministratore
|
||||
users.list_status_filter.is_restricted=Limitato
|
||||
users.list_status_filter.not_restricted=Non Limitato
|
||||
users.list_status_filter.is_prohibit_login=Divieto Di Login
|
||||
users.list_status_filter.not_prohibit_login=Consenti Login
|
||||
users.list_status_filter.is_2fa_enabled=2FA Abilitato
|
||||
users.list_status_filter.not_2fa_enabled=2FA Disabilitato
|
||||
users.list_status_filter.not_restricted=Non limitato
|
||||
users.list_status_filter.is_prohibit_login=Accesso vietato
|
||||
users.list_status_filter.not_prohibit_login=Accesso consentito
|
||||
users.list_status_filter.is_2fa_enabled=2FA abilitato
|
||||
users.list_status_filter.not_2fa_enabled=2FA disabilitato
|
||||
|
||||
emails.email_manage_panel=Gestisci email dell'utente
|
||||
emails.primary=Primario
|
||||
|
@ -3022,7 +3034,7 @@ repos.private=Privati
|
|||
repos.watches=Segue
|
||||
repos.stars=Voti
|
||||
repos.forks=Fork
|
||||
repos.issues=Problemi
|
||||
repos.issues=Segnalazioni
|
||||
repos.size=Dimensione
|
||||
|
||||
packages.package_manage_panel=Gestisci pacchetti
|
||||
|
@ -3721,7 +3733,7 @@ runners.new_notice = Come avviare un esecutore
|
|||
runners.new = Crea un nuovo esecutore
|
||||
variables.update.success = La variabile è stata modificata.
|
||||
variables.update.failed = Impossibile modificare la variabile.
|
||||
variables.creation.failed = Impossibile aggiungere variabile.
|
||||
variables.creation.failed = Errore nell'aggiunta della variabile.
|
||||
variables.deletion.success = La variabile è stata rimossa.
|
||||
variables.deletion.failed = Impossibile rimuovere la variabile.
|
||||
variables.edit = Modifica variabile
|
||||
|
@ -3775,7 +3787,7 @@ package_kind = Ricerca pacchetti...
|
|||
code_search_unavailable = La ricerca del codice non è attualmente disponibile. Contatta l'amministratore del sito.
|
||||
code_kind = Cerca codice...
|
||||
team_kind = Cerca team...
|
||||
code_search_by_git_grep = I risultati della ricerca del codice sono forniti da "git grep". Potrebbero esserci risultati migliori se l'amministratore del sito avesse abilitato l'Indicizzatore del Codice.
|
||||
code_search_by_git_grep = I risultati della ricerca del codice sono forniti da "git grep". Potrebbero esserci risultati migliori se l'amministratore del sito avesse abilitato l'indicizzatore del codice.
|
||||
project_kind = Ricerca progetti...
|
||||
commit_kind = Ricerca commit...
|
||||
branch_kind = Ricerca rami...
|
||||
|
|
|
@ -19,8 +19,8 @@ language=Idioma
|
|||
notifications=Notificações
|
||||
active_stopwatch=Cronômetro ativo
|
||||
create_new=Criar…
|
||||
user_profile_and_more=Perfil e Configurações...
|
||||
signed_in_as=Acessado como
|
||||
user_profile_and_more=Perfil e configurações…
|
||||
signed_in_as=Sessão iniciada como
|
||||
enable_javascript=Este site requer JavaScript.
|
||||
toc=Índice
|
||||
licenses=Licenças
|
||||
|
@ -37,18 +37,18 @@ twofa_scratch=Código de backup da autenticação de dois fatores
|
|||
passcode=Senha
|
||||
|
||||
webauthn_insert_key=Insira sua chave de segurança
|
||||
webauthn_sign_in=Pressione o botão na sua chave de segurança. Se a sua chave de segurança não tiver um botão, insira-a novamente.
|
||||
webauthn_press_button=Por favor, pressione o botão na sua chave de segurança…
|
||||
webauthn_sign_in=Pressione o botão na sua chave de segurança. Caso a sua chave de segurança não possuir um botão, insira-a novamente.
|
||||
webauthn_press_button=Pressione o botão na sua chave de segurança…
|
||||
webauthn_use_twofa=Use um código de duas etapas do seu telefone
|
||||
webauthn_error=Não foi possível ler sua chave de segurança.
|
||||
webauthn_unsupported_browser=Seu navegador não oferece suporte ao WebAuthn.
|
||||
webauthn_error_unknown=Ocorreu um erro desconhecido. Por favor, tente novamente.
|
||||
webauthn_error_insecure=`WebAuthn suporta apenas conexões seguras. Para testar via HTTP, você pode usar a origem "localhost" ou "127.0.0.1"`
|
||||
webauthn_error_unknown=Ocorreu um erro desconhecido. Tente novamente.
|
||||
webauthn_error_insecure=WebAuthn suporta apenas conexões seguras. Para testar via HTTP, você pode usar a origem "localhost" ou "127.0.0.1"
|
||||
webauthn_error_unable_to_process=O servidor não pôde processar sua solicitação.
|
||||
webauthn_error_duplicated=A chave de segurança não é permitida para esta solicitação. Por favor, certifique-se que a chave já não está registrada.
|
||||
webauthn_error_empty=Você deve definir um nome para esta chave.
|
||||
webauthn_error_timeout=Tempo limite atingido antes de sua chave poder ser lida. Por favor, recarregue esta página e tente novamente.
|
||||
webauthn_reload=Recarregar
|
||||
webauthn_error_timeout=Não foi possível ler a sua chave de segurança antes do tempo limite. Atualize a página e tente novamente.
|
||||
webauthn_reload=Atualizar
|
||||
|
||||
repository=Repositório
|
||||
organization=Organização
|
||||
|
@ -79,7 +79,7 @@ pull_requests=Pull requests
|
|||
issues=Issues
|
||||
milestones=Marcos
|
||||
|
||||
ok=Ok
|
||||
ok=OK
|
||||
cancel=Cancelar
|
||||
retry=Tentar novamente
|
||||
rerun=Reexecutar
|
||||
|
@ -614,6 +614,7 @@ org_still_own_packages=Esta organização ainda possui pacotes, exclua-os primei
|
|||
target_branch_not_exist=O branch de destino não existe.
|
||||
username_error_no_dots = ` pode conter apenas caracteres alfanuméricos ("0-9, "a-z", "A-Z"), hífens ("-") e traços inferiores ("_"). Não é permitido conter caracteres não alfanuméricos no início ou fim. Caracteres não alfanuméricos consecutivos também não são permitidos.`
|
||||
admin_cannot_delete_self = Você não pode excluir a si mesmo quando você é um administrador. Por favor, remova suas permissões de administrador primeiro.
|
||||
AccessToken = Token de acesso
|
||||
|
||||
|
||||
[user]
|
||||
|
@ -1057,9 +1058,9 @@ author_search_tooltip=Mostra um máximo de 30 usuários
|
|||
|
||||
|
||||
transfer.accept=Aceitar transferência
|
||||
transfer.accept_desc=`Transferir para "%s"`
|
||||
transfer.accept_desc=Transferir para "%s"
|
||||
transfer.reject=Rejeitar transferência
|
||||
transfer.reject_desc=`Cancelar a transferência para "%s"`
|
||||
transfer.reject_desc=Cancelar a transferência para "%s"
|
||||
transfer.no_permission_to_accept=Você não tem permissão para aceitar essa transferência.
|
||||
transfer.no_permission_to_reject=Você não tem permissão para rejeitar essa transferência.
|
||||
|
||||
|
@ -2870,31 +2871,31 @@ users.list_status_filter.not_restricted=Não restrito
|
|||
users.list_status_filter.is_prohibit_login=Proibir login
|
||||
users.list_status_filter.not_prohibit_login=Permitir login
|
||||
users.list_status_filter.is_2fa_enabled=2FA Ativado
|
||||
users.list_status_filter.not_2fa_enabled=2FA Desativado
|
||||
users.list_status_filter.not_2fa_enabled=Autenticação em duas etapas desativada
|
||||
users.details=Detalhes do usuário
|
||||
|
||||
emails.email_manage_panel=Gerenciamento de E-mail de Usuário
|
||||
emails.email_manage_panel=Gerenciar e-mails de usuários
|
||||
emails.primary=Principal
|
||||
emails.activated=Ativado
|
||||
emails.activated=Em uso
|
||||
emails.filter_sort.email=E-mail
|
||||
emails.filter_sort.email_reverse=E-mail (reverso)
|
||||
emails.filter_sort.name=Nome de Usuário
|
||||
emails.filter_sort.name_reverse=Nome de Usuário (reverso)
|
||||
emails.updated=E-mail atualizado
|
||||
emails.filter_sort.email_reverse=E-mail (decrescente)
|
||||
emails.filter_sort.name=Usuário
|
||||
emails.filter_sort.name_reverse=Usuário (decrescente)
|
||||
emails.updated=Endereço de e-mail atualizado
|
||||
emails.not_updated=Falha ao atualizar o endereço de e-mail solicitado: %v
|
||||
emails.duplicate_active=Este endereço de e-mail já está ativo para um usuário diferente.
|
||||
emails.duplicate_active=Este endereço de e-mail já está em uso por outro usuário.
|
||||
emails.change_email_header=Atualizar Propriedades do E-mail
|
||||
|
||||
orgs.org_manage_panel=Gerenciamento da organização
|
||||
orgs.org_manage_panel=Gerenciar organizações
|
||||
orgs.name=Nome
|
||||
orgs.teams=Equipes
|
||||
orgs.members=Membros
|
||||
orgs.new_orga=Nova organização
|
||||
|
||||
repos.repo_manage_panel=Gerenciamento do repositório
|
||||
repos.repo_manage_panel=Gerenciar repositórios
|
||||
repos.unadopted=Repositórios Não Adotados
|
||||
repos.unadopted.no_more=Não foram encontrados mais repositórios não adotados
|
||||
repos.owner=Proprietário
|
||||
repos.owner=Proprietário(a)
|
||||
repos.name=Nome
|
||||
repos.private=Privado
|
||||
repos.watches=Observadores
|
||||
|
@ -2904,9 +2905,9 @@ repos.issues=Issues
|
|||
repos.size=Tamanho
|
||||
repos.lfs_size=Tamanho do LFS
|
||||
|
||||
packages.package_manage_panel=Gerenciamento de Pacotes
|
||||
packages.total_size=Tamanho Total: %s
|
||||
packages.unreferenced_size=Tamanho Não Referenciado: %s
|
||||
packages.package_manage_panel=Gerenciar pacotes
|
||||
packages.total_size=Tamanho total: %s
|
||||
packages.unreferenced_size=Tamanho não referenciado: %s
|
||||
packages.cleanup=Limpar dados expirados
|
||||
packages.owner=Proprietário
|
||||
packages.creator=Criador
|
||||
|
@ -2925,13 +2926,13 @@ systemhooks=Webhooks do Sistema
|
|||
systemhooks.add_webhook=Adicionar Webhook do Sistema
|
||||
systemhooks.update_webhook=Atualizar Webhook do Sistema
|
||||
|
||||
auths.auth_manage_panel=Gerenciamento de fonte de autenticação
|
||||
auths.auth_manage_panel=Gerenciar fontes de autenticação
|
||||
auths.new=Adicionar fonte de autenticação
|
||||
auths.name=Nome
|
||||
auths.type=Tipo
|
||||
auths.enabled=Habilitado
|
||||
auths.enabled=Habilitada
|
||||
auths.syncenabled=Habilitar sincronização de usuário
|
||||
auths.updated=Atualizado
|
||||
auths.updated=Atualizada
|
||||
auths.auth_type=Tipo de autenticação
|
||||
auths.auth_name=Nome da autenticação
|
||||
auths.security_protocol=Protocolo de segurança
|
||||
|
@ -2941,7 +2942,7 @@ auths.port=Porta
|
|||
auths.bind_dn=Vincular DN
|
||||
auths.bind_password=Vincular senha
|
||||
auths.user_base=Base de pesquisa do usuário
|
||||
auths.user_dn=Usuário do DN
|
||||
auths.user_dn=DN do usuário
|
||||
auths.attribute_username=Atributo nome de usuário
|
||||
auths.attribute_username_placeholder=Deixe em branco para usar o nome de usuário inserido no Forgejo.
|
||||
auths.attribute_name=Atributo primeiro nome
|
||||
|
@ -2951,11 +2952,11 @@ auths.attribute_ssh_public_key=Atributo de chave SSH pública
|
|||
auths.attribute_avatar=Atributo do avatar
|
||||
auths.attributes_in_bind=Buscar os atributos no contexto de Bind DN
|
||||
auths.allow_deactivate_all=Permitir que um resultado de pesquisa vazio para desativar todos os usuários
|
||||
auths.use_paged_search=Use a pesquisa paginada
|
||||
auths.use_paged_search=Usar pesquisa paginada
|
||||
auths.search_page_size=Tamanho da página
|
||||
auths.filter=Filtro de usuário
|
||||
auths.admin_filter=Filtro de administrador
|
||||
auths.restricted_filter=Filtro de restrição
|
||||
auths.restricted_filter=Filtro restrito
|
||||
auths.restricted_filter_helper=Deixe em branco para não definir nenhum usuário como restrito. Use um asterisco ('*') para definir todos os usuários que não correspondem ao Filtro de administrador como restritos.
|
||||
auths.verify_group_membership=Verificar associação ao grupo no LDAP (deixe o filtro vazio para ignorar)
|
||||
auths.group_search_base=Grupo de Pesquisa DN Base
|
||||
|
@ -2963,34 +2964,34 @@ auths.group_attribute_list_users=Atributo do Grupo que Contém a Lista de Usuár
|
|||
auths.user_attribute_in_group=Atributo do Usuário Listado em Grupo
|
||||
auths.map_group_to_team=Mapear grupos LDAP para Organizações (deixe o campo vazio para pular)
|
||||
auths.map_group_to_team_removal=Remover usuários de equipes sincronizadas se o usuário não pertence ao grupo LDAP correspondente
|
||||
auths.enable_ldap_groups=Habilitar grupos do LDAP
|
||||
auths.enable_ldap_groups=Habilitar grupos LDAP
|
||||
auths.ms_ad_sa=Atributos de pesquisa do MS AD
|
||||
auths.smtp_auth=Tipo de autenticação SMTP
|
||||
auths.smtphost=Host SMTP
|
||||
auths.smtpport=Porta SMTP
|
||||
auths.smtphost=Servidor
|
||||
auths.smtpport=Porta
|
||||
auths.allowed_domains=Domínios permitidos
|
||||
auths.allowed_domains_helper=Deixe em branco para permitir todos os domínios. Separe vários domínios com uma vírgula (',').
|
||||
auths.skip_tls_verify=Pular verificação de TLS
|
||||
auths.allowed_domains_helper=Deixe em branco para permitir todos os domínios. Separe múltiplos domínios com uma vírgula (",").
|
||||
auths.skip_tls_verify=Ignorar validação TLS
|
||||
auths.force_smtps=Forçar SMTPS
|
||||
auths.force_smtps_helper=SMTPS é sempre usado no porto 465. Defina isso para forçar o SMTPS em outros portos. (Caso contrário STARTTLS será usado em outros portos se for suportado pelo host.)
|
||||
auths.helo_hostname=HELO Hostname
|
||||
auths.helo_hostname=Nome de servidor HELO
|
||||
auths.helo_hostname_helper=Hostname enviado com HELO. Deixe em branco para enviar o hostname atual.
|
||||
auths.disable_helo=Desativar HELO
|
||||
auths.pam_service_name=Nome de Serviço PAM
|
||||
auths.pam_service_name=Nome do serviço PAM
|
||||
auths.pam_email_domain=Domínio de e-mail do PAM (opcional)
|
||||
auths.oauth2_provider=Provedor OAuth2
|
||||
auths.oauth2_icon_url=URL do Ícone
|
||||
auths.oauth2_icon_url=URL do ícone
|
||||
auths.oauth2_clientID=ID do cliente (chave)
|
||||
auths.oauth2_clientSecret=Client Secret
|
||||
auths.openIdConnectAutoDiscoveryURL=URL do OpenID Connect Auto Discovery
|
||||
auths.oauth2_use_custom_url=Usar URLs personalizadas em vez de URLs padrão
|
||||
auths.oauth2_tokenURL=URL do Token
|
||||
auths.oauth2_authURL=URL de Authorização
|
||||
auths.oauth2_clientSecret=Segredo do cliente
|
||||
auths.openIdConnectAutoDiscoveryURL=URL de descoberta automática de conexão do OpenID
|
||||
auths.oauth2_use_custom_url=Usar URLs personalizados em vez de URLs padrão
|
||||
auths.oauth2_tokenURL=URL do código
|
||||
auths.oauth2_authURL=URL da autorização
|
||||
auths.oauth2_profileURL=URL do perfil
|
||||
auths.oauth2_emailURL=URL de e-mail
|
||||
auths.skip_local_two_fa=Pular 2FA local
|
||||
auths.oauth2_emailURL=URL do e-mail
|
||||
auths.skip_local_two_fa=Ignorar autenticação em duas etapas local
|
||||
auths.skip_local_two_fa_helper=Deixar desligado significa que os usuários locais com 2FA ligada ainda terão que fazer login com 2FA
|
||||
auths.oauth2_tenant=Tenant
|
||||
auths.oauth2_tenant=Locatário
|
||||
auths.oauth2_scopes=Escopos Adicionais
|
||||
auths.oauth2_required_claim_name=Nome do Claim Obrigatorio
|
||||
auths.oauth2_required_claim_name_helper=Defina este nome para permitir o login desta fonte apenas para usuários que tenham um claim com este nome
|
||||
|
@ -3484,7 +3485,7 @@ rpm.repository.multiple_groups = Este pacote está disponível em vários grupos
|
|||
secrets=Segredos
|
||||
description=Os segredos serão passados a certas ações e não poderão ser lidos de outra forma.
|
||||
none=Não há segredos ainda.
|
||||
creation=Adicionar Segredo
|
||||
creation=Adicionar segredo
|
||||
creation.name_placeholder=apenas caracteres alfanuméricos ou underline (_), não pode começar com GITEA_ ou GITHUB_
|
||||
creation.value_placeholder=Insira qualquer conteúdo. Espaços em branco no início e no fim serão omitidos.
|
||||
creation.success=O segredo "%s" foi adicionado.
|
||||
|
@ -3513,7 +3514,7 @@ runners=Runners
|
|||
runners.runner_manage_panel=Gerenciamento de Runners
|
||||
runners.new=Criar novo Runner
|
||||
runners.new_notice=Como iniciar um runner
|
||||
runners.status=Status
|
||||
runners.status=Estado
|
||||
runners.id=ID
|
||||
runners.name=Nome
|
||||
runners.owner_type=Tipo
|
||||
|
@ -3524,10 +3525,10 @@ runners.runner_title=Runner
|
|||
runners.task_list=Tarefas recentes neste runner
|
||||
runners.task_list.no_tasks=Ainda não há nenhuma tarefa.
|
||||
runners.task_list.run=Executar
|
||||
runners.task_list.status=Status
|
||||
runners.task_list.status=Estado
|
||||
runners.task_list.repository=Repositório
|
||||
runners.task_list.commit=Commit
|
||||
runners.task_list.done_at=Feito em
|
||||
runners.task_list.done_at=Realizada em
|
||||
runners.edit_runner=Editar Runner
|
||||
runners.update_runner=Atualizar as Alterações
|
||||
runners.update_runner_success=Runner atualizado com sucesso
|
||||
|
@ -3541,7 +3542,7 @@ runners.none=Nenhum runner disponível
|
|||
runners.status.unspecified=Desconhecido
|
||||
runners.status.idle=Inativo
|
||||
runners.status.active=Ativo
|
||||
runners.status.offline=Offiline
|
||||
runners.status.offline=Offline
|
||||
runners.version=Versão
|
||||
runners.reset_registration_token_success=Token de registro de runner redefinido com sucesso
|
||||
|
||||
|
@ -3581,7 +3582,7 @@ type-3.display_name=Projeto da organização
|
|||
|
||||
[git.filemode]
|
||||
; Ordered by git filemode value, ascending. E.g. directory has "040000", normal file has "100644", …
|
||||
symbolic_link=Link simbólico
|
||||
symbolic_link=Ligação simbólica
|
||||
changed_filemode = %[1]s → %[2]s
|
||||
directory = Diretório
|
||||
normal_file = Arquivo normal
|
||||
|
@ -3611,4 +3612,5 @@ fuzzy = Aproximada
|
|||
fuzzy_tooltip = Inclui resultados que se aproximam dos termos de busca
|
||||
match = Correspondente
|
||||
match_tooltip = Inclui apenas os resultados que correspondem exatamente aos termos de busca
|
||||
repo_kind = Buscar repositórios...
|
||||
repo_kind = Buscar repositórios...
|
||||
type_tooltip = Tipo de busca
|
|
@ -627,6 +627,12 @@ admin_cannot_delete_self=Não se pode auto-remover quando tem privilégios de ad
|
|||
username_error_no_dots = ` só pode conter caracteres alfanuméricos ("0-9","a-z","A-Z"), hífen ('-'), sublinhado ('_') e ponto ('.') Não pode começar nem terminar com caracteres não alfanuméricos, e caracteres não alfanuméricos consecutivos também são proibidos.`
|
||||
unset_password = O utilizador não definiu a senha.
|
||||
unsupported_login_type = O tipo de início de sessão não é suportado para eliminar a conta.
|
||||
Biography = Biografia
|
||||
Website = Sítio web
|
||||
Location = Localização
|
||||
To = Nome do ramo
|
||||
required_prefix = A entrada tem de começar com "%s"
|
||||
AccessToken = Código de acesso
|
||||
|
||||
[user]
|
||||
change_avatar=Mude o seu avatar…
|
||||
|
@ -652,6 +658,16 @@ settings=Configurações do utilizador
|
|||
form.name_reserved=O nome de utilizador "%s" está reservado.
|
||||
form.name_pattern_not_allowed=O padrão "%s" não é permitido no nome de utilizador.
|
||||
form.name_chars_not_allowed=O nome de utilizador "%s" contém caracteres inválidos.
|
||||
block = Bloquear
|
||||
unblock = Desbloquear
|
||||
followers_one = %d seguidor
|
||||
following_one = %d seguindo
|
||||
block_user.detail = Note que se bloquear este utilizador, serão executadas outras operações, tais como:
|
||||
block_user.detail_1 = Está a deixar de ser seguido por este utilizador.
|
||||
block_user.detail_2 = Este utilizador não pode interagir com os seus repositórios, questões criadas e comentários.
|
||||
block_user.detail_3 = Este/a utilizador/a não o/a pode adicionar como colaborador/a nem você pode o/a adicionar como colaborador/a.
|
||||
follow_blocked_user = Não pode seguir este/a utilizador/a porque você o/a bloqueou ou este/a utilizador/a bloqueou-o/a a si.
|
||||
block_user = Bloquear utilizador
|
||||
|
||||
[settings]
|
||||
profile=Perfil
|
||||
|
@ -964,6 +980,20 @@ visibility.limited=Limitada
|
|||
visibility.limited_tooltip=Visível apenas para utilizadores autenticados
|
||||
visibility.private=Privada
|
||||
visibility.private_tooltip=Visível apenas para membros das organizações a que se associou
|
||||
additional_repo_units_hint = Encorajar a habilitação de unidades do repositório adicionais
|
||||
update_hints = Modificar sugestões
|
||||
change_password = Modificar a senha
|
||||
pronouns = Pronomes
|
||||
pronouns_custom = Personalizado
|
||||
pronouns_unspecified = Não especificado
|
||||
hints = Sugestões
|
||||
blocked_users = Utilizadores bloqueados
|
||||
blocked_since = Bloqueado desde %s
|
||||
user_block_success = O utilizador foi bloqueado com sucesso.
|
||||
additional_repo_units_hint_description = Mostrar um botão "Adicionar mais unidades..." para repositórios que não têm todas as unidades disponíveis habilitadas.
|
||||
update_hints_success = As sugestões foram modificadas.
|
||||
blocked_users_none = Não há utilizadores bloqueados.
|
||||
user_unblock_success = O utilizador foi desbloqueado com sucesso.
|
||||
|
||||
[repo]
|
||||
new_repo_helper=Um repositório contém todos os ficheiros do trabalho, incluindo o histórico das revisões. Já tem um hospedado noutro sítio? <a href="%s">Migre o repositório</a>.
|
||||
|
@ -2624,6 +2654,32 @@ find_file.no_matching=Não foi encontrado qualquer ficheiro correspondente
|
|||
error.csv.too_large=Não é possível apresentar este ficheiro por ser demasiado grande.
|
||||
error.csv.unexpected=Não é possível apresentar este ficheiro porque contém um caractere inesperado na linha %d e coluna %d.
|
||||
error.csv.invalid_field_count=Não é possível apresentar este ficheiro porque tem um número errado de campos na linha %d.
|
||||
issues.blocked_by_user = Não pode criar uma questão neste repositório porque foi bloqueado/a pelo/a proprietário/a do repositório.
|
||||
issues.num_participants_one = %d participante
|
||||
stars = Favoritos
|
||||
editor.invalid_commit_mail = Email inválido para criar um cometimento.
|
||||
editor.push_out_of_date = O envio parece estar fora de prazo.
|
||||
admin.enabled_flags = Marcadores habilitados no repositório:
|
||||
admin.update_flags = Modificar marcadores
|
||||
admin.flags_replaced = Os marcadores do repositório foram substituídos
|
||||
commits.browse_further = Explorar mais um pouco
|
||||
commits.renamed_from = Renomeado de %s
|
||||
size_format = %[1]s: %[2]s, %[3]s: %[4]s
|
||||
issues.archived_label_description = (arquivado) %s
|
||||
admin.failed_to_replace_flags = Falhou a reposição dos marcadores do repositório
|
||||
open_with_editor = Abrir com %s
|
||||
admin.manage_flags = Gerir marcadores
|
||||
file_follow = Seguir ligação simbólica
|
||||
rss.must_be_on_branch = Tem que estar num ramo que tenha uma fonte RSS.
|
||||
n_commit_few = %s cometimentos
|
||||
n_branch_one = %s ramo
|
||||
n_branch_few = %s ramos
|
||||
n_tag_one = %s etiqueta
|
||||
n_tag_few = %s etiquetas
|
||||
migrate.forgejo.description = Migrar dados de codeberg.org ou de outras instâncias Forgejo.
|
||||
n_commit_one = %s cometimento
|
||||
editor.commit_id_not_matching = O ID de cometimento não corresponde ao que estava a editar. Cometa para um ramo novo e depois integre.
|
||||
commits.search_branch = Este ramo
|
||||
|
||||
[graphs]
|
||||
component_loading=A carregar %s...
|
||||
|
|
|
@ -629,6 +629,14 @@ username_error_no_dots = ` может состоять только из лат
|
|||
unsupported_login_type = Удаление аккаунта невозможно с этим типом авторизации.
|
||||
unset_password = У пользователя не задан пароль.
|
||||
required_prefix = Должно начинаться с «%s»
|
||||
AccessToken = Токен доступа
|
||||
FullName = Полное имя
|
||||
Description = Описание
|
||||
Pronouns = Местоимения
|
||||
Biography = О себе
|
||||
Website = Веб-сайт
|
||||
Location = Местоположение
|
||||
To = Название ветки
|
||||
|
||||
|
||||
[user]
|
||||
|
@ -914,7 +922,7 @@ revoke_oauth2_grant=Отозвать доступ
|
|||
revoke_oauth2_grant_description=Отзыв доступа у этого стороннего приложения не позволит ему получать доступ к вашим данным. Вы уверены?
|
||||
revoke_oauth2_grant_success=Доступ был успешно отозван.
|
||||
|
||||
twofa_desc=Двухфакторная аутентификация повышает уровень безопасности вашей учётной записи.
|
||||
twofa_desc=Для дополнительной защиты учётной записи вы можете настроить аутентификацию по одноразовым «TOTP» кодам, генерируемым на смартфоне или другом устройстве.
|
||||
twofa_recovery_tip=При утере устройства вы сможете восстановить доступ к учётной записи, использовав одноразовый ключ восстановления.
|
||||
twofa_is_enrolled=Ваша учётная запись в настоящее время <strong>использует</strong> двухфакторную аутентификацию.
|
||||
twofa_not_enrolled=Ваша учётная запись в настоящее время не использует двухфакторную аутентификацию.
|
||||
|
@ -1306,8 +1314,8 @@ editor.commit_empty_file_text=Файл, который вы собираетес
|
|||
editor.no_changes_to_show=Нет изменений.
|
||||
editor.fail_to_update_file=Не удалось обновить/создать файл «%s».
|
||||
editor.fail_to_update_file_summary=Ошибка:
|
||||
editor.push_rejected_no_message=Изменение отклонено сервером без сообщения. Пожалуйста, проверьте хуки Git.
|
||||
editor.push_rejected=Изменение отклонено сервером. Пожалуйста, проверьте хуки Git.
|
||||
editor.push_rejected_no_message=Изменение отклонено сервером без сообщения. Пожалуйста, проверьте Git-хуки.
|
||||
editor.push_rejected=Изменение отклонено сервером. Пожалуйста, проверьте Git-хуки.
|
||||
editor.push_rejected_summary=Полное сообщение об отклонении:
|
||||
editor.add_subdir=Добавить каталог…
|
||||
editor.unable_to_upload_files=Не удалось загрузить файлы в «%s» из-за ошибки: %v
|
||||
|
@ -1435,9 +1443,9 @@ issues.new_label=Новая метка
|
|||
issues.new_label_placeholder=Имя метки
|
||||
issues.new_label_desc_placeholder=Описание
|
||||
issues.create_label=Добавить метку
|
||||
issues.label_templates.title=Загрузить набор предопределённых меток
|
||||
issues.label_templates.title=Загрузить набор меток
|
||||
issues.label_templates.info=Меток пока нет. Создайте новую метку или используйте этот набор меток:
|
||||
issues.label_templates.helper=Выберите метку
|
||||
issues.label_templates.helper=Выберите набор меток
|
||||
issues.label_templates.use=Использовать набор меток
|
||||
issues.label_templates.fail_to_load_file=Не удалось загрузить файл шаблона меток «%s»: %v
|
||||
issues.add_label=добавлена метка %s %s
|
||||
|
@ -1526,7 +1534,7 @@ issues.commented_at=`оставлен комментарий в <a href="#%s"> %
|
|||
issues.delete_comment_confirm=Вы уверены, что хотите удалить этот комментарий?
|
||||
issues.context.copy_link=Копировать ссылку
|
||||
issues.context.quote_reply=Цитировать ответ
|
||||
issues.context.reference_issue=Ссылка в новой задаче
|
||||
issues.context.reference_issue=Сослаться в новой задаче
|
||||
issues.context.edit=Редактировать
|
||||
issues.context.delete=Удалить
|
||||
issues.no_content=Описание отсутствует.
|
||||
|
@ -2722,6 +2730,11 @@ settings.event_pull_request_enforcement = Форсирование
|
|||
pulls.cmd_instruction_checkout_desc = В репозитории вашего проекта перейдите на эта ветку и протестируйте изменения.
|
||||
error.broken_git_hook = Гит-хуки этого репозитория сломаны. Ознакомьтесь с <a target="_blank" rel="noreferrer" href="%s">документацией</a> и почините их, затем отправьте какие-нибудь коммиты для обновления статуса.
|
||||
pulls.cmd_instruction_checkout_title = Перейдите на ветку
|
||||
settings.graphql_url = Ссылка GraphQL
|
||||
settings.sourcehut_builds.access_token_helper = Токен builds.sr.ht с разрешением JOBS:RW. Создайте <a target="_blank" rel="noopener noreferrer" href="%s">обычный токен</a> или <a target="_blank" rel="noopener noreferrer" href="%s">токен с доступом к секретам</a> на meta.sr.ht.
|
||||
settings.matrix.room_id_helper = ID комнаты можно получить в веб-клиенте Element: Настройки комнаты > Подробности > Внутренний ID комнаты. Пример: %s.
|
||||
settings.matrix.access_token_helper = Рекомендуется создать отдельный аккаунт. Токен доступа можно получить в веб-клиенте Element (в приватной вкладке или режиме инкогнито): Пользовательское меню (сверху слева) > Все настройки > Помощь и о программе > Токен доступа (под ссылкой Homeserver). Закройте вкладку/окно, не выходя из Element. Выход аннулирует токен.
|
||||
settings.mirror_settings.pushed_repository = Удалённый репозиторий
|
||||
|
||||
[graphs]
|
||||
|
||||
|
@ -2861,7 +2874,7 @@ integrations=Интеграции
|
|||
authentication=Аутентификация
|
||||
emails=Адреса эл. почты пользователей
|
||||
config=Конфигурация
|
||||
notices=Системные уведомления
|
||||
notices=Системные оповещения
|
||||
monitor=Мониторинг
|
||||
first_page=Первая
|
||||
last_page=Последняя
|
||||
|
@ -2998,7 +3011,7 @@ users.list_status_filter.is_admin=Администраторы
|
|||
users.list_status_filter.not_admin=Не администраторы
|
||||
users.list_status_filter.is_restricted=Ограниченные
|
||||
users.list_status_filter.not_restricted=Не ограниченные
|
||||
users.list_status_filter.is_prohibit_login=Запрещён вход
|
||||
users.list_status_filter.is_prohibit_login=Вход запрещён
|
||||
users.list_status_filter.not_prohibit_login=Вход разрешён
|
||||
users.list_status_filter.is_2fa_enabled=2ФА включена
|
||||
users.list_status_filter.not_2fa_enabled=2ФА отключена
|
||||
|
@ -3351,7 +3364,7 @@ monitor.queue.settings.changed=Настройки обновлены
|
|||
monitor.queue.settings.remove_all_items=Удалить все
|
||||
monitor.queue.settings.remove_all_items_done=Все элементы в очереди были удалены.
|
||||
|
||||
notices.system_notice_list=Уведомления системы
|
||||
notices.system_notice_list=Системные оповещения
|
||||
notices.view_detail_header=Подробности уведомления
|
||||
notices.operations=Операции
|
||||
notices.select_all=Выбрать всё
|
||||
|
@ -3389,6 +3402,7 @@ config.open_with_editor_app_help = Приложения для "Открыть
|
|||
config_settings = Настройки
|
||||
auths.tips.gmail_settings = Настройки Gmail:
|
||||
auths.tip.gitlab_new = Создайте новое приложение в https://gitlab.com/-/profile/applications
|
||||
monitor.queue.review_add = Подробности / добавить рабочих
|
||||
|
||||
|
||||
[action]
|
||||
|
@ -3750,6 +3764,8 @@ runs.no_workflows.quick_start = Не знаете, как начать испо
|
|||
runs.no_workflows.documentation = Чтобы узнать больше о Действиях Forgejo, читайте <a target="_blank" rel="noopener noreferrer" href="%s">документацию</a>.
|
||||
runs.workflow = Рабочий поток
|
||||
runs.status_no_select = Любой статус
|
||||
runs.no_matching_online_runner_helper = Нет работающего раннера с меткой: %s
|
||||
runs.no_job_without_needs = Рабочий процесс должен содержать хотя бы одну задачу без зависимостей.
|
||||
|
||||
[projects]
|
||||
type-1.display_name=Индивидуальный проект
|
||||
|
|
153
package-lock.json
generated
153
package-lock.json
generated
|
@ -34,17 +34,17 @@
|
|||
"katex": "0.16.10",
|
||||
"license-checker-webpack-plugin": "0.2.1",
|
||||
"mermaid": "10.9.0",
|
||||
"mini-css-extract-plugin": "2.8.1",
|
||||
"mini-css-extract-plugin": "2.9.0",
|
||||
"minimatch": "9.0.4",
|
||||
"monaco-editor": "0.47.0",
|
||||
"monaco-editor-webpack-plugin": "7.1.0",
|
||||
"pdfobject": "2.3.0",
|
||||
"postcss": "8.4.38",
|
||||
"postcss-loader": "8.1.1",
|
||||
"postcss-nesting": "12.1.1",
|
||||
"postcss-nesting": "12.1.2",
|
||||
"pretty-ms": "9.0.0",
|
||||
"sortablejs": "1.15.2",
|
||||
"swagger-ui-dist": "5.13.0",
|
||||
"swagger-ui-dist": "5.17.0",
|
||||
"tailwindcss": "3.4.3",
|
||||
"temporal-polyfill": "0.2.4",
|
||||
"throttle-debounce": "5.0.0",
|
||||
|
@ -54,7 +54,7 @@
|
|||
"tributejs": "5.1.3",
|
||||
"uint8-to-base64": "0.2.0",
|
||||
"vanilla-colorful": "0.7.2",
|
||||
"vue": "3.4.23",
|
||||
"vue": "3.4.24",
|
||||
"vue-bar-graph": "2.0.0",
|
||||
"vue-chartjs": "5.3.1",
|
||||
"vue-loader": "17.4.2",
|
||||
|
@ -95,7 +95,7 @@
|
|||
"stylelint-value-no-unknown-custom-properties": "6.0.1",
|
||||
"svgo": "3.2.0",
|
||||
"updates": "16.0.1",
|
||||
"vite-string-plugin": "1.1.5",
|
||||
"vite-string-plugin": "1.2.0",
|
||||
"vitest": "1.4.0"
|
||||
},
|
||||
"engines": {
|
||||
|
@ -2668,105 +2668,102 @@
|
|||
}
|
||||
},
|
||||
"node_modules/@vue/compiler-core": {
|
||||
"version": "3.4.23",
|
||||
"resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.23.tgz",
|
||||
"integrity": "sha512-HAFmuVEwNqNdmk+w4VCQ2pkLk1Vw4XYiiyxEp3z/xvl14aLTUBw2OfVH3vBcx+FtGsynQLkkhK410Nah1N2yyQ==",
|
||||
"version": "3.4.24",
|
||||
"resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.24.tgz",
|
||||
"integrity": "sha512-vbW/tgbwJYj62N/Ww99x0zhFTkZDTcGh3uwJEuadZ/nF9/xuFMC4693P9r+3sxGXISABpDKvffY5ApH9pmdd1A==",
|
||||
"dependencies": {
|
||||
"@babel/parser": "^7.24.1",
|
||||
"@vue/shared": "3.4.23",
|
||||
"@babel/parser": "^7.24.4",
|
||||
"@vue/shared": "3.4.24",
|
||||
"entities": "^4.5.0",
|
||||
"estree-walker": "^2.0.2",
|
||||
"source-map-js": "^1.2.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@vue/compiler-dom": {
|
||||
"version": "3.4.23",
|
||||
"resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.23.tgz",
|
||||
"integrity": "sha512-t0b9WSTnCRrzsBGrDd1LNR5HGzYTr7LX3z6nNBG+KGvZLqrT0mY6NsMzOqlVMBKKXKVuusbbB5aOOFgTY+senw==",
|
||||
"version": "3.4.24",
|
||||
"resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.24.tgz",
|
||||
"integrity": "sha512-4XgABML/4cNndVsQndG6BbGN7+EoisDwi3oXNovqL/4jdNhwvP8/rfRMTb6FxkxIxUUtg6AI1/qZvwfSjxJiWA==",
|
||||
"dependencies": {
|
||||
"@vue/compiler-core": "3.4.23",
|
||||
"@vue/shared": "3.4.23"
|
||||
"@vue/compiler-core": "3.4.24",
|
||||
"@vue/shared": "3.4.24"
|
||||
}
|
||||
},
|
||||
"node_modules/@vue/compiler-sfc": {
|
||||
"version": "3.4.23",
|
||||
"resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.4.23.tgz",
|
||||
"integrity": "sha512-fSDTKTfzaRX1kNAUiaj8JB4AokikzStWgHooMhaxyjZerw624L+IAP/fvI4ZwMpwIh8f08PVzEnu4rg8/Npssw==",
|
||||
"version": "3.4.24",
|
||||
"resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.4.24.tgz",
|
||||
"integrity": "sha512-nRAlJUK02FTWfA2nuvNBAqsDZuERGFgxZ8sGH62XgFSvMxO2URblzulExsmj4gFZ8e+VAyDooU9oAoXfEDNxTA==",
|
||||
"dependencies": {
|
||||
"@babel/parser": "^7.24.1",
|
||||
"@vue/compiler-core": "3.4.23",
|
||||
"@vue/compiler-dom": "3.4.23",
|
||||
"@vue/compiler-ssr": "3.4.23",
|
||||
"@vue/shared": "3.4.23",
|
||||
"@babel/parser": "^7.24.4",
|
||||
"@vue/compiler-core": "3.4.24",
|
||||
"@vue/compiler-dom": "3.4.24",
|
||||
"@vue/compiler-ssr": "3.4.24",
|
||||
"@vue/shared": "3.4.24",
|
||||
"estree-walker": "^2.0.2",
|
||||
"magic-string": "^0.30.8",
|
||||
"magic-string": "^0.30.10",
|
||||
"postcss": "^8.4.38",
|
||||
"source-map-js": "^1.2.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@vue/compiler-sfc/node_modules/magic-string": {
|
||||
"version": "0.30.9",
|
||||
"resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.9.tgz",
|
||||
"integrity": "sha512-S1+hd+dIrC8EZqKyT9DstTH/0Z+f76kmmvZnkfQVmOpDEF9iVgdYif3Q/pIWHmCoo59bQVGW0kVL3e2nl+9+Sw==",
|
||||
"version": "0.30.10",
|
||||
"resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.10.tgz",
|
||||
"integrity": "sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==",
|
||||
"dependencies": {
|
||||
"@jridgewell/sourcemap-codec": "^1.4.15"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=12"
|
||||
}
|
||||
},
|
||||
"node_modules/@vue/compiler-ssr": {
|
||||
"version": "3.4.23",
|
||||
"resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.4.23.tgz",
|
||||
"integrity": "sha512-hb6Uj2cYs+tfqz71Wj6h3E5t6OKvb4MVcM2Nl5i/z1nv1gjEhw+zYaNOV+Xwn+SSN/VZM0DgANw5TuJfxfezPg==",
|
||||
"version": "3.4.24",
|
||||
"resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.4.24.tgz",
|
||||
"integrity": "sha512-ZsAtr4fhaUFnVcDqwW3bYCSDwq+9Gk69q2r/7dAHDrOMw41kylaMgOP4zRnn6GIEJkQznKgrMOGPMFnLB52RbQ==",
|
||||
"dependencies": {
|
||||
"@vue/compiler-dom": "3.4.23",
|
||||
"@vue/shared": "3.4.23"
|
||||
"@vue/compiler-dom": "3.4.24",
|
||||
"@vue/shared": "3.4.24"
|
||||
}
|
||||
},
|
||||
"node_modules/@vue/reactivity": {
|
||||
"version": "3.4.23",
|
||||
"resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.4.23.tgz",
|
||||
"integrity": "sha512-GlXR9PL+23fQ3IqnbSQ8OQKLodjqCyoCrmdLKZk3BP7jN6prWheAfU7a3mrltewTkoBm+N7qMEb372VHIkQRMQ==",
|
||||
"version": "3.4.24",
|
||||
"resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.4.24.tgz",
|
||||
"integrity": "sha512-nup3fSYg4i4LtNvu9slF/HF/0dkMQYfepUdORBcMSsankzRPzE7ypAFurpwyRBfU1i7Dn1kcwpYsE1wETSh91g==",
|
||||
"dependencies": {
|
||||
"@vue/shared": "3.4.23"
|
||||
"@vue/shared": "3.4.24"
|
||||
}
|
||||
},
|
||||
"node_modules/@vue/runtime-core": {
|
||||
"version": "3.4.23",
|
||||
"resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.4.23.tgz",
|
||||
"integrity": "sha512-FeQ9MZEXoFzFkFiw9MQQ/FWs3srvrP+SjDKSeRIiQHIhtkzoj0X4rWQlRNHbGuSwLra6pMyjAttwixNMjc/xLw==",
|
||||
"version": "3.4.24",
|
||||
"resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.4.24.tgz",
|
||||
"integrity": "sha512-c7iMfj6cJMeAG3s5yOn9Rc5D9e2/wIuaozmGf/ICGCY3KV5H7mbTVdvEkd4ZshTq7RUZqj2k7LMJWVx+EBiY1g==",
|
||||
"dependencies": {
|
||||
"@vue/reactivity": "3.4.23",
|
||||
"@vue/shared": "3.4.23"
|
||||
"@vue/reactivity": "3.4.24",
|
||||
"@vue/shared": "3.4.24"
|
||||
}
|
||||
},
|
||||
"node_modules/@vue/runtime-dom": {
|
||||
"version": "3.4.23",
|
||||
"resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.4.23.tgz",
|
||||
"integrity": "sha512-RXJFwwykZWBkMiTPSLEWU3kgVLNAfActBfWFlZd0y79FTUxexogd0PLG4HH2LfOktjRxV47Nulygh0JFXe5f9A==",
|
||||
"version": "3.4.24",
|
||||
"resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.4.24.tgz",
|
||||
"integrity": "sha512-uXKzuh/Emfad2Y7Qm0ABsLZZV6H3mAJ5ZVqmAOlrNQRf+T5mxpPGZBfec1hkP41t6h6FwF6RSGCs/gd8WbuySQ==",
|
||||
"dependencies": {
|
||||
"@vue/runtime-core": "3.4.23",
|
||||
"@vue/shared": "3.4.23",
|
||||
"@vue/runtime-core": "3.4.24",
|
||||
"@vue/shared": "3.4.24",
|
||||
"csstype": "^3.1.3"
|
||||
}
|
||||
},
|
||||
"node_modules/@vue/server-renderer": {
|
||||
"version": "3.4.23",
|
||||
"resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.4.23.tgz",
|
||||
"integrity": "sha512-LDwGHtnIzvKFNS8dPJ1SSU5Gvm36p2ck8wCZc52fc3k/IfjKcwCyrWEf0Yag/2wTFUBXrqizfhK9c/mC367dXQ==",
|
||||
"version": "3.4.24",
|
||||
"resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.4.24.tgz",
|
||||
"integrity": "sha512-H+DLK4sQF6sRgzKyofmlEVBIV/9KrQU6HIV7nt6yIwSGGKvSwlV8pqJlebUKLpbXaNHugdSfAbP6YmXF69lxow==",
|
||||
"dependencies": {
|
||||
"@vue/compiler-ssr": "3.4.23",
|
||||
"@vue/shared": "3.4.23"
|
||||
"@vue/compiler-ssr": "3.4.24",
|
||||
"@vue/shared": "3.4.24"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"vue": "3.4.23"
|
||||
"vue": "3.4.24"
|
||||
}
|
||||
},
|
||||
"node_modules/@vue/shared": {
|
||||
"version": "3.4.23",
|
||||
"resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.23.tgz",
|
||||
"integrity": "sha512-wBQ0gvf+SMwsCQOyusNw/GoXPV47WGd1xB5A1Pgzy0sQ3Bi5r5xm3n+92y3gCnB3MWqnRDdvfkRGxhKtbBRNgg=="
|
||||
"version": "3.4.24",
|
||||
"resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.24.tgz",
|
||||
"integrity": "sha512-BW4tajrJBM9AGAknnyEw5tO2xTmnqgup0VTnDAMcxYmqOX0RG0b9aSUGAbEKolD91tdwpA6oCwbltoJoNzpItw=="
|
||||
},
|
||||
"node_modules/@vue/test-utils": {
|
||||
"version": "2.4.5",
|
||||
|
@ -8813,9 +8810,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/mini-css-extract-plugin": {
|
||||
"version": "2.8.1",
|
||||
"resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.8.1.tgz",
|
||||
"integrity": "sha512-/1HDlyFRxWIZPI1ZpgqlZ8jMw/1Dp/dl3P0L1jtZ+zVcHqwPhGwaJwKL00WVgfnBy6PWCde9W65or7IIETImuA==",
|
||||
"version": "2.9.0",
|
||||
"resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.9.0.tgz",
|
||||
"integrity": "sha512-Zs1YsZVfemekSZG+44vBsYTLQORkPMwnlv+aehcxK/NLKC+EGhDB39/YePYYqx/sTk6NnYpuqikhSn7+JIevTA==",
|
||||
"dependencies": {
|
||||
"schema-utils": "^4.0.0",
|
||||
"tapable": "^2.2.1"
|
||||
|
@ -9768,9 +9765,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/postcss-nesting": {
|
||||
"version": "12.1.1",
|
||||
"resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-12.1.1.tgz",
|
||||
"integrity": "sha512-qc74KvIAQNa5ujZKG1UV286dhaDW6basbUy2i9AzNU/T8C9hpvGu9NZzm1SfePe2yP7sPYgpA8d4sPVopn2Hhw==",
|
||||
"version": "12.1.2",
|
||||
"resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-12.1.2.tgz",
|
||||
"integrity": "sha512-FUmTHGDNundodutB4PUBxt/EPuhgtpk8FJGRsBhOuy+6FnkR2A8RZWIsyyy6XmhvX2DZQQWIkvu+HB4IbJm+Ew==",
|
||||
"funding": [
|
||||
{
|
||||
"type": "github",
|
||||
|
@ -11398,9 +11395,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/swagger-ui-dist": {
|
||||
"version": "5.13.0",
|
||||
"resolved": "https://registry.npmjs.org/swagger-ui-dist/-/swagger-ui-dist-5.13.0.tgz",
|
||||
"integrity": "sha512-uaWhh6j18IIs5tOX0arvIBnVINAzpTXaQXkr7qAk8zoupegJVg0UU/5+S/FgsgVCnzVsJ9d7QLjIxkswEeTg0Q=="
|
||||
"version": "5.17.0",
|
||||
"resolved": "https://registry.npmjs.org/swagger-ui-dist/-/swagger-ui-dist-5.17.0.tgz",
|
||||
"integrity": "sha512-PtEozc87rN6i6rqLYNVTK+1ZAYmCMy6poU6I2MOJXD19BVv6D7U9zwS8geRbtfamCM5yUwWkSNQKWGK58vculg=="
|
||||
},
|
||||
"node_modules/sync-fetch": {
|
||||
"version": "0.4.5",
|
||||
|
@ -12182,9 +12179,9 @@
|
|||
}
|
||||
},
|
||||
"node_modules/vite-string-plugin": {
|
||||
"version": "1.1.5",
|
||||
"resolved": "https://registry.npmjs.org/vite-string-plugin/-/vite-string-plugin-1.1.5.tgz",
|
||||
"integrity": "sha512-KRCIFX3PWVUuEjpi9O7EKLT9E27OqOA3RimIvVx6cziLAUxvnk2VvHQfMrP+mKkqyqqSmnnYyTig3OyDnK/zlA==",
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/vite-string-plugin/-/vite-string-plugin-1.2.0.tgz",
|
||||
"integrity": "sha512-IijlLgTxUDUwOpLoBLZCZO2us4fZWPRpj8XWoD9OAYjjUEge8enV4gaDTOs7uEsC8EJ9+NmusdLwmgWajFO45Q==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/vite/node_modules/@types/estree": {
|
||||
|
@ -12319,15 +12316,15 @@
|
|||
}
|
||||
},
|
||||
"node_modules/vue": {
|
||||
"version": "3.4.23",
|
||||
"resolved": "https://registry.npmjs.org/vue/-/vue-3.4.23.tgz",
|
||||
"integrity": "sha512-X1y6yyGJ28LMUBJ0k/qIeKHstGd+BlWQEOT40x3auJFTmpIhpbKLgN7EFsqalnJXq1Km5ybDEsp6BhuWKciUDg==",
|
||||
"version": "3.4.24",
|
||||
"resolved": "https://registry.npmjs.org/vue/-/vue-3.4.24.tgz",
|
||||
"integrity": "sha512-NPdx7dLGyHmKHGRRU5bMRYVE+rechR+KDU5R2tSTNG36PuMwbfAJ+amEvOAw7BPfZp5sQulNELSLm5YUkau+Sg==",
|
||||
"dependencies": {
|
||||
"@vue/compiler-dom": "3.4.23",
|
||||
"@vue/compiler-sfc": "3.4.23",
|
||||
"@vue/runtime-dom": "3.4.23",
|
||||
"@vue/server-renderer": "3.4.23",
|
||||
"@vue/shared": "3.4.23"
|
||||
"@vue/compiler-dom": "3.4.24",
|
||||
"@vue/compiler-sfc": "3.4.24",
|
||||
"@vue/runtime-dom": "3.4.24",
|
||||
"@vue/server-renderer": "3.4.24",
|
||||
"@vue/shared": "3.4.24"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"typescript": "*"
|
||||
|
|
10
package.json
10
package.json
|
@ -33,17 +33,17 @@
|
|||
"katex": "0.16.10",
|
||||
"license-checker-webpack-plugin": "0.2.1",
|
||||
"mermaid": "10.9.0",
|
||||
"mini-css-extract-plugin": "2.8.1",
|
||||
"mini-css-extract-plugin": "2.9.0",
|
||||
"minimatch": "9.0.4",
|
||||
"monaco-editor": "0.47.0",
|
||||
"monaco-editor-webpack-plugin": "7.1.0",
|
||||
"pdfobject": "2.3.0",
|
||||
"postcss": "8.4.38",
|
||||
"postcss-loader": "8.1.1",
|
||||
"postcss-nesting": "12.1.1",
|
||||
"postcss-nesting": "12.1.2",
|
||||
"pretty-ms": "9.0.0",
|
||||
"sortablejs": "1.15.2",
|
||||
"swagger-ui-dist": "5.13.0",
|
||||
"swagger-ui-dist": "5.17.0",
|
||||
"tailwindcss": "3.4.3",
|
||||
"temporal-polyfill": "0.2.4",
|
||||
"throttle-debounce": "5.0.0",
|
||||
|
@ -53,7 +53,7 @@
|
|||
"tributejs": "5.1.3",
|
||||
"uint8-to-base64": "0.2.0",
|
||||
"vanilla-colorful": "0.7.2",
|
||||
"vue": "3.4.23",
|
||||
"vue": "3.4.24",
|
||||
"vue-bar-graph": "2.0.0",
|
||||
"vue-chartjs": "5.3.1",
|
||||
"vue-loader": "17.4.2",
|
||||
|
@ -94,7 +94,7 @@
|
|||
"stylelint-value-no-unknown-custom-properties": "6.0.1",
|
||||
"svgo": "3.2.0",
|
||||
"updates": "16.0.1",
|
||||
"vite-string-plugin": "1.1.5",
|
||||
"vite-string-plugin": "1.2.0",
|
||||
"vitest": "1.4.0"
|
||||
},
|
||||
"browserslist": ["defaults"]
|
||||
|
|
|
@ -15,6 +15,7 @@
|
|||
"helpers:pinGitHubActionDigests"
|
||||
],
|
||||
"semanticCommits": "disabled",
|
||||
"automergeStrategy": "merge-commit",
|
||||
"postUpdateOptions": ["gomodTidy", "gomodUpdateImportPaths", "npmDedupe"],
|
||||
"prConcurrentLimit": 5,
|
||||
"packageRules": [
|
||||
|
|
|
@ -30,7 +30,7 @@ import (
|
|||
user_service "code.gitea.io/gitea/services/user"
|
||||
)
|
||||
|
||||
func parseAuthSource(ctx *context.APIContext, u *user_model.User, sourceID int64, loginName string) {
|
||||
func parseAuthSource(ctx *context.APIContext, u *user_model.User, sourceID int64) {
|
||||
if sourceID == 0 {
|
||||
return
|
||||
}
|
||||
|
@ -47,7 +47,6 @@ func parseAuthSource(ctx *context.APIContext, u *user_model.User, sourceID int64
|
|||
|
||||
u.LoginType = source.Type
|
||||
u.LoginSource = source.ID
|
||||
u.LoginName = loginName
|
||||
}
|
||||
|
||||
// CreateUser create a user
|
||||
|
@ -83,12 +82,13 @@ func CreateUser(ctx *context.APIContext) {
|
|||
Passwd: form.Password,
|
||||
MustChangePassword: true,
|
||||
LoginType: auth.Plain,
|
||||
LoginName: form.LoginName,
|
||||
}
|
||||
if form.MustChangePassword != nil {
|
||||
u.MustChangePassword = *form.MustChangePassword
|
||||
}
|
||||
|
||||
parseAuthSource(ctx, u, form.SourceID, form.LoginName)
|
||||
parseAuthSource(ctx, u, form.SourceID)
|
||||
if ctx.Written() {
|
||||
return
|
||||
}
|
||||
|
|
|
@ -983,6 +983,8 @@ func Routes() *web.Route {
|
|||
m.Post("/migrate", reqToken(), bind(api.MigrateRepoOptions{}), repo.Migrate)
|
||||
|
||||
m.Group("/{username}/{reponame}", func() {
|
||||
m.Get("/compare/*", reqRepoReader(unit.TypeCode), repo.CompareDiff)
|
||||
|
||||
m.Combo("").Get(reqAnyRepoReader(), repo.Get).
|
||||
Delete(reqToken(), reqOwner(), repo.Delete).
|
||||
Patch(reqToken(), reqAdmin(), bind(api.EditRepoOption{}), repo.Edit)
|
||||
|
|
|
@ -437,7 +437,7 @@ func GetBranchProtection(ctx *context.APIContext) {
|
|||
return
|
||||
}
|
||||
|
||||
ctx.JSON(http.StatusOK, convert.ToBranchProtection(ctx, bp))
|
||||
ctx.JSON(http.StatusOK, convert.ToBranchProtection(ctx, bp, repo))
|
||||
}
|
||||
|
||||
// ListBranchProtections list branch protections for a repo
|
||||
|
@ -470,7 +470,7 @@ func ListBranchProtections(ctx *context.APIContext) {
|
|||
}
|
||||
apiBps := make([]*api.BranchProtection, len(bps))
|
||||
for i := range bps {
|
||||
apiBps[i] = convert.ToBranchProtection(ctx, bps[i])
|
||||
apiBps[i] = convert.ToBranchProtection(ctx, bps[i], repo)
|
||||
}
|
||||
|
||||
ctx.JSON(http.StatusOK, apiBps)
|
||||
|
@ -682,7 +682,7 @@ func CreateBranchProtection(ctx *context.APIContext) {
|
|||
return
|
||||
}
|
||||
|
||||
ctx.JSON(http.StatusCreated, convert.ToBranchProtection(ctx, bp))
|
||||
ctx.JSON(http.StatusCreated, convert.ToBranchProtection(ctx, bp, repo))
|
||||
}
|
||||
|
||||
// EditBranchProtection edits a branch protection for a repo
|
||||
|
@ -964,7 +964,7 @@ func EditBranchProtection(ctx *context.APIContext) {
|
|||
return
|
||||
}
|
||||
|
||||
ctx.JSON(http.StatusOK, convert.ToBranchProtection(ctx, bp))
|
||||
ctx.JSON(http.StatusOK, convert.ToBranchProtection(ctx, bp, repo))
|
||||
}
|
||||
|
||||
// DeleteBranchProtection deletes a branch protection for a repo
|
||||
|
|
99
routers/api/v1/repo/compare.go
Normal file
99
routers/api/v1/repo/compare.go
Normal file
|
@ -0,0 +1,99 @@
|
|||
// Copyright 2024 The Gitea Authors. All rights reserved.
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
package repo
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
"strings"
|
||||
|
||||
user_model "code.gitea.io/gitea/models/user"
|
||||
"code.gitea.io/gitea/modules/gitrepo"
|
||||
api "code.gitea.io/gitea/modules/structs"
|
||||
"code.gitea.io/gitea/services/context"
|
||||
"code.gitea.io/gitea/services/convert"
|
||||
)
|
||||
|
||||
// CompareDiff compare two branches or commits
|
||||
func CompareDiff(ctx *context.APIContext) {
|
||||
// swagger:operation GET /repos/{owner}/{repo}/compare/{basehead} Get commit comparison information
|
||||
// ---
|
||||
// summary: Get commit comparison information
|
||||
// produces:
|
||||
// - application/json
|
||||
// parameters:
|
||||
// - name: owner
|
||||
// in: path
|
||||
// description: owner of the repo
|
||||
// type: string
|
||||
// required: true
|
||||
// - name: repo
|
||||
// in: path
|
||||
// description: name of the repo
|
||||
// type: string
|
||||
// required: true
|
||||
// - name: basehead
|
||||
// in: path
|
||||
// description: compare two branches or commits
|
||||
// type: string
|
||||
// required: true
|
||||
// responses:
|
||||
// "200":
|
||||
// "$ref": "#/responses/Compare"
|
||||
// "404":
|
||||
// "$ref": "#/responses/notFound"
|
||||
|
||||
if ctx.Repo.GitRepo == nil {
|
||||
gitRepo, err := gitrepo.OpenRepository(ctx, ctx.Repo.Repository)
|
||||
if err != nil {
|
||||
ctx.Error(http.StatusInternalServerError, "OpenRepository", err)
|
||||
return
|
||||
}
|
||||
ctx.Repo.GitRepo = gitRepo
|
||||
defer gitRepo.Close()
|
||||
}
|
||||
|
||||
infoPath := ctx.Params("*")
|
||||
infos := []string{ctx.Repo.Repository.DefaultBranch, ctx.Repo.Repository.DefaultBranch}
|
||||
if infoPath != "" {
|
||||
infos = strings.SplitN(infoPath, "...", 2)
|
||||
if len(infos) != 2 {
|
||||
if infos = strings.SplitN(infoPath, "..", 2); len(infos) != 2 {
|
||||
infos = []string{ctx.Repo.Repository.DefaultBranch, infoPath}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
_, _, headGitRepo, ci, _, _ := parseCompareInfo(ctx, api.CreatePullRequestOption{
|
||||
Base: infos[0],
|
||||
Head: infos[1],
|
||||
})
|
||||
if ctx.Written() {
|
||||
return
|
||||
}
|
||||
defer headGitRepo.Close()
|
||||
|
||||
verification := ctx.FormString("verification") == "" || ctx.FormBool("verification")
|
||||
files := ctx.FormString("files") == "" || ctx.FormBool("files")
|
||||
|
||||
apiCommits := make([]*api.Commit, 0, len(ci.Commits))
|
||||
userCache := make(map[string]*user_model.User)
|
||||
for i := 0; i < len(ci.Commits); i++ {
|
||||
apiCommit, err := convert.ToCommit(ctx, ctx.Repo.Repository, ctx.Repo.GitRepo, ci.Commits[i], userCache,
|
||||
convert.ToCommitOptions{
|
||||
Stat: true,
|
||||
Verification: verification,
|
||||
Files: files,
|
||||
})
|
||||
if err != nil {
|
||||
ctx.ServerError("toCommit", err)
|
||||
return
|
||||
}
|
||||
apiCommits = append(apiCommits, apiCommit)
|
||||
}
|
||||
|
||||
ctx.JSON(http.StatusOK, &api.Compare{
|
||||
TotalCommits: len(ci.Commits),
|
||||
Commits: apiCommits,
|
||||
})
|
||||
}
|
|
@ -421,3 +421,9 @@ type swaggerBlockedUserList struct {
|
|||
// in:body
|
||||
Body []api.BlockedUser `json:"body"`
|
||||
}
|
||||
|
||||
// swagger:response Compare
|
||||
type swaggerCompare struct {
|
||||
// in:body
|
||||
Body api.Compare `json:"body"`
|
||||
}
|
||||
|
|
21
routers/common/compare.go
Normal file
21
routers/common/compare.go
Normal file
|
@ -0,0 +1,21 @@
|
|||
// Copyright 2024 The Gitea Authors. All rights reserved.
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
package common
|
||||
|
||||
import (
|
||||
repo_model "code.gitea.io/gitea/models/repo"
|
||||
user_model "code.gitea.io/gitea/models/user"
|
||||
"code.gitea.io/gitea/modules/git"
|
||||
)
|
||||
|
||||
// CompareInfo represents the collected results from ParseCompareInfo
|
||||
type CompareInfo struct {
|
||||
HeadUser *user_model.User
|
||||
HeadRepo *repo_model.Repository
|
||||
HeadGitRepo *git.Repository
|
||||
CompareInfo *git.CompareInfo
|
||||
BaseBranch string
|
||||
HeadBranch string
|
||||
DirectComparison bool
|
||||
}
|
|
@ -132,7 +132,7 @@ func InitWebInstalled(ctx context.Context) {
|
|||
if setting.EnableSQLite3 {
|
||||
log.Info("SQLite3 support is enabled")
|
||||
} else if setting.Database.Type.IsSQLite3() {
|
||||
log.Fatal("SQLite3 support is disabled, but it is used for database setting. Please get or build a Gitea release with SQLite3 support.")
|
||||
log.Fatal("SQLite3 support is disabled, but it is used for database setting. Please get or build a Forgejo release with SQLite3 support.")
|
||||
}
|
||||
|
||||
mustInitCtx(ctx, common.InitDBEngine)
|
||||
|
|
|
@ -212,7 +212,7 @@ func checkDatabase(ctx *context.Context, form *forms.InstallForm) bool {
|
|||
}
|
||||
|
||||
if hasPostInstallationUser && dbMigrationVersion > 0 {
|
||||
log.Error("The database is likely to have been used by Gitea before, database migration version=%d", dbMigrationVersion)
|
||||
log.Error("The database is likely to have been used by Forgejo before, database migration version=%d", dbMigrationVersion)
|
||||
confirmed := form.ReinstallConfirmFirst && form.ReinstallConfirmSecond && form.ReinstallConfirmThird
|
||||
if !confirmed {
|
||||
ctx.Data["Err_DbInstalledBefore"] = true
|
||||
|
@ -220,11 +220,11 @@ func checkDatabase(ctx *context.Context, form *forms.InstallForm) bool {
|
|||
return false
|
||||
}
|
||||
|
||||
log.Info("User confirmed re-installation of Gitea into a pre-existing database")
|
||||
log.Info("User confirmed re-installation of Forgejo into a pre-existing database")
|
||||
}
|
||||
|
||||
if hasPostInstallationUser || dbMigrationVersion > 0 {
|
||||
log.Info("Gitea will be installed in a database with: hasPostInstallationUser=%v, dbMigrationVersion=%v", hasPostInstallationUser, dbMigrationVersion)
|
||||
log.Info("Forgejo will be installed in a database with: hasPostInstallationUser=%v, dbMigrationVersion=%v", hasPostInstallationUser, dbMigrationVersion)
|
||||
}
|
||||
|
||||
return true
|
||||
|
|
|
@ -69,7 +69,7 @@ func QueueSet(ctx *context.Context) {
|
|||
}
|
||||
|
||||
func QueueRemoveAllItems(ctx *context.Context) {
|
||||
// Gitea's queue doesn't have transaction support
|
||||
// Queue in Forgejo doesn't have transaction support
|
||||
// So in rare cases, the queue could be corrupted/out-of-sync
|
||||
// Site admin could remove all items from the queue to make it work again
|
||||
qid := ctx.ParamsInt64("qid")
|
||||
|
|
|
@ -104,7 +104,7 @@ func Projects(ctx *context.Context) {
|
|||
}
|
||||
|
||||
for _, project := range projects {
|
||||
project.RenderedContent = templates.SanitizeHTML(project.Description) // FIXME: is it right? why not render?
|
||||
project.RenderedContent = templates.RenderMarkdownToHtml(ctx, project.Description)
|
||||
}
|
||||
|
||||
err = shared_user.LoadHeaderCount(ctx)
|
||||
|
@ -372,7 +372,7 @@ func ViewProject(ctx *context.Context) {
|
|||
}
|
||||
}
|
||||
|
||||
project.RenderedContent = templates.SanitizeHTML(project.Description) // FIXME: is it right? why not render?
|
||||
project.RenderedContent = templates.RenderMarkdownToHtml(ctx, project.Description)
|
||||
ctx.Data["LinkedPRs"] = linkedPrsMap
|
||||
ctx.Data["PageIsViewProjects"] = true
|
||||
ctx.Data["CanWriteProjects"] = canWriteProjects(ctx)
|
||||
|
|
|
@ -35,6 +35,7 @@ import (
|
|||
api "code.gitea.io/gitea/modules/structs"
|
||||
"code.gitea.io/gitea/modules/typesniffer"
|
||||
"code.gitea.io/gitea/modules/util"
|
||||
"code.gitea.io/gitea/routers/common"
|
||||
"code.gitea.io/gitea/services/context"
|
||||
"code.gitea.io/gitea/services/context/upload"
|
||||
"code.gitea.io/gitea/services/gitdiff"
|
||||
|
@ -185,21 +186,10 @@ func setCsvCompareContext(ctx *context.Context) {
|
|||
}
|
||||
}
|
||||
|
||||
// CompareInfo represents the collected results from ParseCompareInfo
|
||||
type CompareInfo struct {
|
||||
HeadUser *user_model.User
|
||||
HeadRepo *repo_model.Repository
|
||||
HeadGitRepo *git.Repository
|
||||
CompareInfo *git.CompareInfo
|
||||
BaseBranch string
|
||||
HeadBranch string
|
||||
DirectComparison bool
|
||||
}
|
||||
|
||||
// ParseCompareInfo parse compare info between two commit for preparing comparing references
|
||||
func ParseCompareInfo(ctx *context.Context) *CompareInfo {
|
||||
func ParseCompareInfo(ctx *context.Context) *common.CompareInfo {
|
||||
baseRepo := ctx.Repo.Repository
|
||||
ci := &CompareInfo{}
|
||||
ci := &common.CompareInfo{}
|
||||
|
||||
fileOnly := ctx.FormBool("file-only")
|
||||
|
||||
|
@ -576,7 +566,7 @@ func ParseCompareInfo(ctx *context.Context) *CompareInfo {
|
|||
// PrepareCompareDiff renders compare diff page
|
||||
func PrepareCompareDiff(
|
||||
ctx *context.Context,
|
||||
ci *CompareInfo,
|
||||
ci *common.CompareInfo,
|
||||
whitespaceBehavior git.TrustedCmdArgs,
|
||||
) bool {
|
||||
var (
|
||||
|
|
|
@ -556,7 +556,7 @@ func renderFile(ctx *context.Context, entry *git.TreeEntry) {
|
|||
|
||||
// The Open Group Base Specification: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap03.html
|
||||
// empty: 0 lines; "a": 1 incomplete-line; "a\n": 1 line; "a\nb": 1 line, 1 incomplete-line;
|
||||
// Gitea uses the definition (like most modern editors):
|
||||
// Forgejo uses the definition (like most modern editors):
|
||||
// empty: 0 lines; "a": 1 line; "a\n": 2 lines; "a\nb": 2 lines;
|
||||
// When rendering, the last empty line is not rendered in UI, while the line-number is still counted, to tell users that the file contains a trailing EOL.
|
||||
// To make the UI more consistent, it could use an icon mark to indicate that there is no trailing EOL, and show line-number as the rendered lines.
|
||||
|
|
|
@ -258,7 +258,7 @@ func Routes() *web.Route {
|
|||
routes.Get("/metrics", append(mid, Metrics)...)
|
||||
}
|
||||
|
||||
routes.Get("/robots.txt", append(mid, misc.RobotsTxt)...)
|
||||
routes.Methods("GET,HEAD", "/robots.txt", append(mid, misc.RobotsTxt)...)
|
||||
routes.Get("/ssh_info", misc.SSHInfo)
|
||||
routes.Get("/api/healthz", healthcheck.Check)
|
||||
|
||||
|
|
|
@ -80,6 +80,11 @@ func newNotifyInput(repo *repo_model.Repository, doer *user_model.User, event we
|
|||
}
|
||||
}
|
||||
|
||||
func newNotifyInputForSchedules(repo *repo_model.Repository) *notifyInput {
|
||||
// the doer here will be ignored as we force using action user when handling schedules
|
||||
return newNotifyInput(repo, user_model.NewActionsUser(), webhook_module.HookEventSchedule)
|
||||
}
|
||||
|
||||
func (input *notifyInput) WithDoer(doer *user_model.User) *notifyInput {
|
||||
input.Doer = doer
|
||||
return input
|
||||
|
@ -562,7 +567,7 @@ func DetectAndHandleSchedules(ctx context.Context, repo *repo_model.Repository)
|
|||
// We need a notifyInput to call handleSchedules
|
||||
// if repo is a mirror, commit author maybe an external user,
|
||||
// so we use action user as the Doer of the notifyInput
|
||||
notifyInput := newNotifyInput(repo, user_model.NewActionsUser(), webhook_module.HookEventSchedule)
|
||||
notifyInput := newNotifyInputForSchedules(repo)
|
||||
|
||||
return handleSchedules(ctx, scheduleWorkflows, commit, notifyInput, repo.DefaultBranch)
|
||||
}
|
||||
|
|
|
@ -21,6 +21,7 @@ import (
|
|||
repo_model "code.gitea.io/gitea/models/repo"
|
||||
"code.gitea.io/gitea/models/unit"
|
||||
user_model "code.gitea.io/gitea/models/user"
|
||||
"code.gitea.io/gitea/modules/container"
|
||||
"code.gitea.io/gitea/modules/git"
|
||||
"code.gitea.io/gitea/modules/log"
|
||||
api "code.gitea.io/gitea/modules/structs"
|
||||
|
@ -105,33 +106,46 @@ func ToBranch(ctx context.Context, repo *repo_model.Repository, branchName strin
|
|||
return branch, nil
|
||||
}
|
||||
|
||||
// getWhitelistEntities returns the names of the entities that are in the whitelist
|
||||
func getWhitelistEntities[T *user_model.User | *organization.Team](entities []T, whitelistIDs []int64) []string {
|
||||
whitelistUserIDsSet := container.SetOf(whitelistIDs...)
|
||||
whitelistNames := make([]string, 0)
|
||||
for _, entity := range entities {
|
||||
switch v := any(entity).(type) {
|
||||
case *user_model.User:
|
||||
if whitelistUserIDsSet.Contains(v.ID) {
|
||||
whitelistNames = append(whitelistNames, v.Name)
|
||||
}
|
||||
case *organization.Team:
|
||||
if whitelistUserIDsSet.Contains(v.ID) {
|
||||
whitelistNames = append(whitelistNames, v.Name)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return whitelistNames
|
||||
}
|
||||
|
||||
// ToBranchProtection convert a ProtectedBranch to api.BranchProtection
|
||||
func ToBranchProtection(ctx context.Context, bp *git_model.ProtectedBranch) *api.BranchProtection {
|
||||
pushWhitelistUsernames, err := user_model.GetUserNamesByIDs(ctx, bp.WhitelistUserIDs)
|
||||
func ToBranchProtection(ctx context.Context, bp *git_model.ProtectedBranch, repo *repo_model.Repository) *api.BranchProtection {
|
||||
readers, err := access_model.GetRepoReaders(ctx, repo)
|
||||
if err != nil {
|
||||
log.Error("GetUserNamesByIDs (WhitelistUserIDs): %v", err)
|
||||
log.Error("GetRepoReaders: %v", err)
|
||||
}
|
||||
mergeWhitelistUsernames, err := user_model.GetUserNamesByIDs(ctx, bp.MergeWhitelistUserIDs)
|
||||
|
||||
pushWhitelistUsernames := getWhitelistEntities(readers, bp.WhitelistUserIDs)
|
||||
mergeWhitelistUsernames := getWhitelistEntities(readers, bp.MergeWhitelistUserIDs)
|
||||
approvalsWhitelistUsernames := getWhitelistEntities(readers, bp.ApprovalsWhitelistUserIDs)
|
||||
|
||||
teamReaders, err := organization.OrgFromUser(repo.Owner).TeamsWithAccessToRepo(ctx, repo.ID, perm.AccessModeRead)
|
||||
if err != nil {
|
||||
log.Error("GetUserNamesByIDs (MergeWhitelistUserIDs): %v", err)
|
||||
}
|
||||
approvalsWhitelistUsernames, err := user_model.GetUserNamesByIDs(ctx, bp.ApprovalsWhitelistUserIDs)
|
||||
if err != nil {
|
||||
log.Error("GetUserNamesByIDs (ApprovalsWhitelistUserIDs): %v", err)
|
||||
}
|
||||
pushWhitelistTeams, err := organization.GetTeamNamesByID(ctx, bp.WhitelistTeamIDs)
|
||||
if err != nil {
|
||||
log.Error("GetTeamNamesByID (WhitelistTeamIDs): %v", err)
|
||||
}
|
||||
mergeWhitelistTeams, err := organization.GetTeamNamesByID(ctx, bp.MergeWhitelistTeamIDs)
|
||||
if err != nil {
|
||||
log.Error("GetTeamNamesByID (MergeWhitelistTeamIDs): %v", err)
|
||||
}
|
||||
approvalsWhitelistTeams, err := organization.GetTeamNamesByID(ctx, bp.ApprovalsWhitelistTeamIDs)
|
||||
if err != nil {
|
||||
log.Error("GetTeamNamesByID (ApprovalsWhitelistTeamIDs): %v", err)
|
||||
log.Error("Repo.Owner.TeamsWithAccessToRepo: %v", err)
|
||||
}
|
||||
|
||||
pushWhitelistTeams := getWhitelistEntities(teamReaders, bp.WhitelistTeamIDs)
|
||||
mergeWhitelistTeams := getWhitelistEntities(teamReaders, bp.MergeWhitelistTeamIDs)
|
||||
approvalsWhitelistTeams := getWhitelistEntities(teamReaders, bp.ApprovalsWhitelistTeamIDs)
|
||||
|
||||
branchName := ""
|
||||
if !git_model.IsRuleNameSpecial(bp.RuleName) {
|
||||
branchName = bp.RuleName
|
||||
|
|
|
@ -76,6 +76,7 @@ func toUser(ctx context.Context, user *user_model.User, signed, authed bool) *ap
|
|||
if authed {
|
||||
result.IsAdmin = user.IsAdmin
|
||||
result.LoginName = user.LoginName
|
||||
result.SourceID = user.LoginSource
|
||||
result.LastLogin = user.LastLoginUnix.AsTime()
|
||||
result.Language = user.Language
|
||||
result.IsActive = user.IsActive
|
||||
|
|
|
@ -82,31 +82,34 @@ func (h *ReplyHandler) Handle(ctx context.Context, content *MailContent, doer *u
|
|||
return nil
|
||||
}
|
||||
|
||||
log.Trace("incoming mail related to %T", ref)
|
||||
|
||||
attachmentIDs := make([]string, 0, len(content.Attachments))
|
||||
if setting.Attachment.Enabled {
|
||||
for _, attachment := range content.Attachments {
|
||||
a, err := attachment_service.UploadAttachment(ctx, bytes.NewReader(attachment.Content), setting.Attachment.AllowedTypes, int64(len(attachment.Content)), &repo_model.Attachment{
|
||||
Name: attachment.Name,
|
||||
UploaderID: doer.ID,
|
||||
RepoID: issue.Repo.ID,
|
||||
})
|
||||
if err != nil {
|
||||
if upload.IsErrFileTypeForbidden(err) {
|
||||
log.Info("Skipping disallowed attachment type: %s", attachment.Name)
|
||||
continue
|
||||
}
|
||||
return err
|
||||
}
|
||||
attachmentIDs = append(attachmentIDs, a.UUID)
|
||||
}
|
||||
}
|
||||
|
||||
if content.Content == "" && len(attachmentIDs) == 0 {
|
||||
log.Trace("incoming mail has no content and no attachement", ref)
|
||||
return nil
|
||||
}
|
||||
|
||||
switch r := ref.(type) {
|
||||
case *issues_model.Issue:
|
||||
attachmentIDs := make([]string, 0, len(content.Attachments))
|
||||
if setting.Attachment.Enabled {
|
||||
for _, attachment := range content.Attachments {
|
||||
a, err := attachment_service.UploadAttachment(ctx, bytes.NewReader(attachment.Content), setting.Attachment.AllowedTypes, int64(len(attachment.Content)), &repo_model.Attachment{
|
||||
Name: attachment.Name,
|
||||
UploaderID: doer.ID,
|
||||
RepoID: issue.Repo.ID,
|
||||
})
|
||||
if err != nil {
|
||||
if upload.IsErrFileTypeForbidden(err) {
|
||||
log.Info("Skipping disallowed attachment type: %s", attachment.Name)
|
||||
continue
|
||||
}
|
||||
return err
|
||||
}
|
||||
attachmentIDs = append(attachmentIDs, a.UUID)
|
||||
}
|
||||
}
|
||||
|
||||
if content.Content == "" && len(attachmentIDs) == 0 {
|
||||
return nil
|
||||
}
|
||||
|
||||
_, err = issue_service.CreateIssueComment(ctx, doer, issue.Repo, issue, content.Content, attachmentIDs)
|
||||
if err != nil {
|
||||
return fmt.Errorf("CreateIssueComment failed: %w", err)
|
||||
|
@ -114,11 +117,13 @@ func (h *ReplyHandler) Handle(ctx context.Context, content *MailContent, doer *u
|
|||
case *issues_model.Comment:
|
||||
comment := r
|
||||
|
||||
if content.Content == "" {
|
||||
return nil
|
||||
}
|
||||
|
||||
if comment.Type == issues_model.CommentTypeCode {
|
||||
switch comment.Type {
|
||||
case issues_model.CommentTypeComment, issues_model.CommentTypeReview:
|
||||
_, err = issue_service.CreateIssueComment(ctx, doer, issue.Repo, issue, content.Content, attachmentIDs)
|
||||
if err != nil {
|
||||
return fmt.Errorf("CreateIssueComment failed: %w", err)
|
||||
}
|
||||
case issues_model.CommentTypeCode:
|
||||
_, err := pull_service.CreateCodeComment(
|
||||
ctx,
|
||||
doer,
|
||||
|
@ -130,12 +135,16 @@ func (h *ReplyHandler) Handle(ctx context.Context, content *MailContent, doer *u
|
|||
false, // not pending review but a single review
|
||||
comment.ReviewID,
|
||||
"",
|
||||
nil,
|
||||
attachmentIDs,
|
||||
)
|
||||
if err != nil {
|
||||
return fmt.Errorf("CreateCodeComment failed: %w", err)
|
||||
}
|
||||
default:
|
||||
log.Trace("incoming mail related to comment of type %v is ignored", comment.Type)
|
||||
}
|
||||
default:
|
||||
log.Trace("incoming mail related to %T is ignored", ref)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
|
|
@ -356,7 +356,7 @@ var slackChannel = regexp.MustCompile(`^#?[a-z0-9_-]{1,80}$`)
|
|||
// IsValidSlackChannel validates a channel name conforms to what slack expects:
|
||||
// https://api.slack.com/methods/conversations.rename#naming
|
||||
// Conversation names can only contain lowercase letters, numbers, hyphens, and underscores, and must be 80 characters or less.
|
||||
// Gitea accepts if it starts with a #.
|
||||
// Forgejo accepts if it starts with a #.
|
||||
func IsValidSlackChannel(name string) bool {
|
||||
return slackChannel.MatchString(name)
|
||||
}
|
||||
|
|
27
templates/devtest/label.tmpl
Normal file
27
templates/devtest/label.tmpl
Normal file
|
@ -0,0 +1,27 @@
|
|||
{{template "base/head" .}}
|
||||
<link rel="stylesheet" href="{{AssetUrlPrefix}}/css/devtest.css?v={{AssetVersion}}">
|
||||
<div class="page-content devtest ui container">
|
||||
<div>
|
||||
<h1>Label</h1>
|
||||
<div class="flex-text-block tw-my-2">
|
||||
<span class="ui label">simple label</span>
|
||||
<span class="ui red label">red label</span>
|
||||
<span class="ui green label">green label</span>
|
||||
</div>
|
||||
<div class="flex-text-block tw-my-2">
|
||||
<span class="ui basic label">basic label</span>
|
||||
<span class="ui basic red label">basic red label</span>
|
||||
<span class="ui basic green label">basic green label</span>
|
||||
</div>
|
||||
<div class="flex-text-block tw-my-2">
|
||||
<span class="ui label">long content must be in a non-flex "gt-ellipsis" element, otherwise it won't get ellipsis. very looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong label</span>
|
||||
</div>
|
||||
<div class="flex-text-block tw-my-2">
|
||||
<span class="ui label"><span class="gt-ellipsis">very looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong label</span></span>
|
||||
</div>
|
||||
<div class="tw-my-2">
|
||||
<span class="ui label tw-max-w-full"><span class="gt-ellipsis">very looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong label</span></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{template "base/footer" .}}
|
|
@ -1,4 +1,4 @@
|
|||
<div class="flex-list">
|
||||
<div class="flex-list run-list">
|
||||
{{if not .Runs}}
|
||||
<div class="empty-placeholder">
|
||||
{{svg "octicon-no-entry" 48}}
|
||||
|
@ -28,14 +28,14 @@
|
|||
</div>
|
||||
<div class="flex-item-trailing">
|
||||
{{if .RefLink}}
|
||||
<a class="ui label tw-px-1 tw-mx-0" href="{{.RefLink}}">{{.PrettyRef}}</a>
|
||||
<a class="ui label run-list-ref gt-ellipsis" href="{{.RefLink}}">{{.PrettyRef}}</a>
|
||||
{{else}}
|
||||
<span class="ui label tw-px-1 tw-mx-0">{{.PrettyRef}}</span>
|
||||
<span class="ui label run-list-ref gt-ellipsis">{{.PrettyRef}}</span>
|
||||
{{end}}
|
||||
</div>
|
||||
<div class="run-list-item-right">
|
||||
<div class="run-list-meta">{{svg "octicon-calendar" 16}}{{TimeSinceUnix .Updated ctx.Locale}}</div>
|
||||
<div class="run-list-meta">{{svg "octicon-stopwatch" 16}}{{.Duration}}</div>
|
||||
<div class="run-list-item-right">
|
||||
<div class="run-list-meta">{{svg "octicon-calendar" 16}}{{TimeSinceUnix .Updated ctx.Locale}}</div>
|
||||
<div class="run-list-meta">{{svg "octicon-stopwatch" 16}}{{.Duration}}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{end}}
|
||||
|
|
|
@ -28,7 +28,7 @@
|
|||
</div>
|
||||
</div>
|
||||
</h4>
|
||||
<div class="ui attached table unstackable segment">
|
||||
<div class="ui bottom attached table unstackable segment">
|
||||
<div class="file-view code-view unicode-escaped">
|
||||
{{if .IsFileTooLarge}}
|
||||
<table>
|
||||
|
|
|
@ -6,14 +6,23 @@
|
|||
<div class="singular-commit" id="{{$tag}}">
|
||||
<span class="badge badge-commit">{{svg "octicon-git-commit"}}</span>
|
||||
{{if .User}}
|
||||
<a class="avatar" href="{{.User.HomeLink}}">{{ctx.AvatarUtils.Avatar .User}}</a>
|
||||
<a class="avatar" href="{{.User.HomeLink}}">{{ctx.AvatarUtils.Avatar .User 20}}</a>
|
||||
{{else}}
|
||||
{{ctx.AvatarUtils.AvatarByEmail .Author.Email .Author.Name}}
|
||||
{{ctx.AvatarUtils.AvatarByEmail .Author.Email .Author.Name 20}}
|
||||
{{end}}
|
||||
|
||||
{{$commitLink:= printf "%s/commit/%s" $.comment.Issue.PullRequest.BaseRepo.Link (PathEscape .ID.String)}}
|
||||
|
||||
<span class="shabox tw-flex tw-items-center tw-float-right">
|
||||
<span class="tw-flex-1 gt-ellipsis tw-font-mono{{if gt .ParentCount 1}} grey text{{end}}" title="{{.Summary}}">{{RenderCommitMessageLinkSubject $.root.Context .Message $commitLink ($.comment.Issue.PullRequest.BaseRepo.ComposeMetas ctx)}}</span>
|
||||
|
||||
{{if IsMultilineCommitMessage .Message}}
|
||||
<button class="ui button js-toggle-commit-body ellipsis-button" aria-expanded="false">...</button>
|
||||
{{end}}
|
||||
{{if IsMultilineCommitMessage .Message}}
|
||||
<pre class="commit-body tw-hidden">{{RenderCommitBody $.root.Context .Message ($.comment.Issue.PullRequest.BaseRepo.ComposeMetas ctx)}}</pre>
|
||||
{{end}}
|
||||
|
||||
<span class="shabox tw-flex tw-items-center">
|
||||
{{template "repo/commit_statuses" dict "Status" .Status "Statuses" .Statuses}}
|
||||
{{$class := "ui sha label"}}
|
||||
{{if .Signature}}
|
||||
|
@ -37,14 +46,6 @@
|
|||
{{end}}
|
||||
</a>
|
||||
</span>
|
||||
|
||||
<span class="tw-font-mono commit-summary {{if gt .ParentCount 1}} grey text{{end}}" title="{{.Summary}}">{{RenderCommitMessageLinkSubject $.root.Context .Message $commitLink ($.comment.Issue.PullRequest.BaseRepo.ComposeMetas ctx)}}</span>
|
||||
{{if IsMultilineCommitMessage .Message}}
|
||||
<button class="ui button js-toggle-commit-body ellipsis-button" aria-expanded="false">...</button>
|
||||
{{end}}
|
||||
{{if IsMultilineCommitMessage .Message}}
|
||||
<pre class="commit-body tw-hidden">{{RenderCommitBody $.root.Context .Message ($.comment.Issue.PullRequest.BaseRepo.ComposeMetas ctx)}}</pre>
|
||||
{{end}}
|
||||
</div>
|
||||
{{end}}
|
||||
</div>
|
||||
|
|
|
@ -130,7 +130,7 @@
|
|||
</div>
|
||||
<span class="file tw-flex tw-items-center tw-font-mono tw-flex-1"><a class="muted file-link" title="{{if $file.IsRenamed}}{{$file.OldName}} → {{end}}{{$file.Name}}" href="#diff-{{$file.NameHash}}">{{if $file.IsRenamed}}{{$file.OldName}} → {{end}}{{$file.Name}}</a>
|
||||
{{if .IsLFSFile}} ({{ctx.Locale.Tr "repo.stored_lfs"}}){{end}}
|
||||
<button class="btn interact-fg tw-p-2" data-clipboard-text="{{$file.Name}}">{{svg "octicon-copy" 14}}</button>
|
||||
<button class="btn interact-fg tw-p-2" data-clipboard-text="{{$file.Name}}" data-tooltip-content="{{ctx.Locale.Tr "copy_generic"}}" aria-label="{{ctx.Locale.Tr "copy_generic"}}">{{svg "octicon-copy" 14}}</button>
|
||||
{{if $file.IsGenerated}}
|
||||
<span class="ui label">{{ctx.Locale.Tr "repo.diff.generated"}}</span>
|
||||
{{end}}
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
{{range $i, $v := .TreeNames}}
|
||||
<div class="breadcrumb-divider">/</div>
|
||||
{{if eq $i $l}}
|
||||
<input id="file-name" maxlength="500" value="{{$v}}" placeholder="{{ctx.Locale.Tr "repo.editor.name_your_file"}}" data-editorconfig="{{$.EditorconfigJson}}" required autofocus>
|
||||
<input id="file-name" maxlength="255" value="{{$v}}" placeholder="{{ctx.Locale.Tr "repo.editor.name_your_file"}}" data-editorconfig="{{$.EditorconfigJson}}" required autofocus>
|
||||
<span data-tooltip-content="{{ctx.Locale.Tr "repo.editor.filename_help"}}">{{svg "octicon-info"}}</span>
|
||||
{{else}}
|
||||
<span class="section"><a href="{{$.BranchLink}}/{{index $.TreePaths $i | PathEscapeSegments}}">{{$v}}</a></span>
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
{{range $i, $v := .TreeNames}}
|
||||
<div class="breadcrumb-divider">/</div>
|
||||
{{if eq $i $l}}
|
||||
<input type="text" id="file-name" maxlength="500" value="{{$v}}" placeholder="{{ctx.Locale.Tr "repo.editor.add_subdir"}}" autofocus>
|
||||
<input type="text" id="file-name" maxlength="255" value="{{$v}}" placeholder="{{ctx.Locale.Tr "repo.editor.add_subdir"}}" autofocus>
|
||||
<span data-tooltip-content="{{ctx.Locale.Tr "repo.editor.filename_help"}}">{{svg "octicon-info"}}</span>
|
||||
{{else}}
|
||||
<span class="section"><a href="{{$.BranchLink}}/{{index $.TreePaths $i | PathEscapeSegments}}">{{$v}}</a></span>
|
||||
|
|
|
@ -3,16 +3,16 @@
|
|||
{{template "repo/header" .}}
|
||||
<div class="ui container">
|
||||
{{template "base/alert" .}}
|
||||
<div class="tw-flex">
|
||||
<div class="tw-flex tw-items-center tw-justify-between">
|
||||
<h1 class="tw-mb-2">{{.Milestone.Name}}</h1>
|
||||
{{if not .Repository.IsArchived}}
|
||||
<div class="text right tw-flex-1">
|
||||
<div class="tw-flex top-right-buttons">
|
||||
{{if or .CanWriteIssues .CanWritePulls}}
|
||||
{{if .Milestone.IsClosed}}
|
||||
<a class="ui primary basic button link-action" href data-url="{{$.RepoLink}}/milestones/{{.MilestoneID}}/open">{{ctx.Locale.Tr "repo.milestones.open"}}
|
||||
<a class="ui primary button link-action" href data-url="{{$.RepoLink}}/milestones/{{.MilestoneID}}/open">{{ctx.Locale.Tr "repo.milestones.open"}}
|
||||
</a>
|
||||
{{else}}
|
||||
<a class="ui red basic button link-action" href data-url="{{$.RepoLink}}/milestones/{{.MilestoneID}}/close">{{ctx.Locale.Tr "repo.milestones.close"}}
|
||||
<a class="ui red button link-action" href data-url="{{$.RepoLink}}/milestones/{{.MilestoneID}}/close">{{ctx.Locale.Tr "repo.milestones.close"}}
|
||||
</a>
|
||||
{{end}}
|
||||
<a class="ui button" href="{{.RepoLink}}/milestones/{{.MilestoneID}}/edit">{{ctx.Locale.Tr "repo.milestones.edit"}}</a>
|
||||
|
|
|
@ -4,11 +4,13 @@
|
|||
<div class="ui container">
|
||||
{{template "base/alert" .}}
|
||||
|
||||
<div class="list-header">
|
||||
<div class="list-header list-header-issues">
|
||||
{{template "repo/issue/navbar" .}}
|
||||
{{template "repo/issue/search" .}}
|
||||
{{if and (or .CanWriteIssues .CanWritePulls) (not .Repository.IsArchived)}}
|
||||
<a class="ui small primary button" href="{{$.Link}}/new">{{ctx.Locale.Tr "repo.milestones.new"}}</a>
|
||||
<div class="top-right-buttons">
|
||||
<a class="ui small primary button" href="{{$.Link}}/new">{{ctx.Locale.Tr "repo.milestones.new"}}</a>
|
||||
</div>
|
||||
{{end}}
|
||||
</div>
|
||||
|
||||
|
|
|
@ -2,29 +2,27 @@
|
|||
<div class="header">
|
||||
{{ctx.Locale.Tr "repo.issues.context.reference_issue"}}
|
||||
</div>
|
||||
<div class="content tw-text-left">
|
||||
<form class="ui form form-fetch-action" action="{{printf "%s/issues/new" .Repository.Link}}" method="post">
|
||||
<div class="content">
|
||||
<form class="ui form form-fetch-action" action="{{.Repository.Link}}/issues/new" method="post">
|
||||
{{.CsrfTokenHtml}}
|
||||
<div class="ui segment content">
|
||||
<div class="field">
|
||||
<span class="text"><strong>{{ctx.Locale.Tr "repository"}}</strong></span>
|
||||
<div class="ui search normal selection dropdown issue_reference_repository_search">
|
||||
<div class="default text">{{.Repository.FullName}}</div>
|
||||
<div class="menu"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="field">
|
||||
<span class="text"><strong>{{ctx.Locale.Tr "repo.milestones.title"}}</strong></span>
|
||||
<input name="title" value="" autofocus required maxlength="255" autocomplete="off">
|
||||
</div>
|
||||
<div class="field">
|
||||
<span class="text"><strong>{{ctx.Locale.Tr "repo.issues.reference_issue.body"}}</strong></span>
|
||||
<textarea name="content" class="form-control"></textarea>
|
||||
</div>
|
||||
<div class="text right">
|
||||
<button class="ui primary button">{{ctx.Locale.Tr "repo.issues.create"}}</button>
|
||||
<div class="field">
|
||||
<label><strong>{{ctx.Locale.Tr "repository"}}</strong></label>
|
||||
<div class="ui search selection dropdown issue_reference_repository_search">
|
||||
<div class="default text gt-ellipsis">{{.Repository.FullName}}</div>
|
||||
<div class="menu"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="field">
|
||||
<label><strong>{{ctx.Locale.Tr "repo.milestones.title"}}</strong></label>
|
||||
<input name="title" value="" autofocus required maxlength="255" autocomplete="off">
|
||||
</div>
|
||||
<div class="field">
|
||||
<label><strong>{{ctx.Locale.Tr "repo.issues.reference_issue.body"}}</strong></label>
|
||||
<textarea name="content"></textarea>
|
||||
</div>
|
||||
<div class="text right">
|
||||
<button class="ui primary button">{{ctx.Locale.Tr "repo.issues.create"}}</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -114,7 +114,7 @@
|
|||
</div>
|
||||
</div>
|
||||
{{if and (or .HasIssuesOrPullsWritePermission .IsIssuePoster) (not .HasMerged) (not .Issue.IsClosed)}}
|
||||
<div class="toggle-wip" data-title="{{.Issue.Title}}" data-wip-prefix="{{index .PullRequestWorkInProgressPrefixes 0}}" data-update-url="{{.Issue.Link}}/title">
|
||||
<div class="toggle-wip" data-title="{{.Issue.Title}}" data-wip-prefixes="{{JsonUtils.EncodeToString .PullRequestWorkInProgressPrefixes}}" data-update-url="{{.Issue.Link}}/title">
|
||||
<a class="muted">
|
||||
{{if .IsPullWorkInProgress}}
|
||||
{{ctx.Locale.Tr "repo.pulls.ready_for_review"}} {{ctx.Locale.Tr "repo.pulls.remove_prefix" (index .PullRequestWorkInProgressPrefixes 0)}}
|
||||
|
|
|
@ -25,12 +25,14 @@
|
|||
<div class="column">
|
||||
{{if gt .Activity.ActivePRCount 0}}
|
||||
<div class="stats-table">
|
||||
<a href="#merged-pull-requests" class="table-cell tiny background purple" style="width: {{.Activity.MergedPRPerc}}{{if ne .Activity.MergedPRPerc 0}}%{{end}}"></a>
|
||||
<a href="#proposed-pull-requests" class="table-cell tiny background green"></a>
|
||||
{{if gt .Activity.MergedPRPerc 0}}
|
||||
<a href="#merged-pull-requests" class="table-cell tiny tw-bg-purple" style="width: {{.Activity.MergedPRPerc}}%"></a>
|
||||
{{end}}
|
||||
<a href="#proposed-pull-requests" class="table-cell tiny tw-bg-green"></a>
|
||||
</div>
|
||||
{{else}}
|
||||
<div class="stats-table">
|
||||
<a class="table-cell tiny background light grey"></a>
|
||||
<a class="table-cell tiny tw-bg-grey"></a>
|
||||
</div>
|
||||
{{end}}
|
||||
{{ctx.Locale.TrN .Activity.ActivePRCount "repo.activity.active_prs_count_1" "repo.activity.active_prs_count_n" .Activity.ActivePRCount}}
|
||||
|
@ -40,8 +42,10 @@
|
|||
<div class="column">
|
||||
{{if gt .Activity.ActiveIssueCount 0}}
|
||||
<div class="stats-table">
|
||||
<a href="#closed-issues" class="table-cell tiny background red" style="width: {{.Activity.ClosedIssuePerc}}{{if ne .Activity.ClosedIssuePerc 0}}%{{end}}"></a>
|
||||
<a href="#new-issues" class="table-cell tiny background green"></a>
|
||||
{{if gt .Activity.ClosedIssuePerc 0}}
|
||||
<a href="#closed-issues" class="table-cell tiny tw-bg-red" style="width: {{.Activity.ClosedIssuePerc}}%"></a>
|
||||
{{end}}
|
||||
<a href="#new-issues" class="table-cell tiny tw-bg-green"></a>
|
||||
</div>
|
||||
{{else}}
|
||||
<div class="stats-table">
|
||||
|
@ -108,7 +112,7 @@
|
|||
{{end}}
|
||||
|
||||
{{if gt .Activity.PublishedReleaseCount 0}}
|
||||
<h4 class="divider divider-text tw-normal-case" id="published-releases">
|
||||
<h4 class="divider divider-text" id="published-releases">
|
||||
{{svg "octicon-tag" 16 "tw-mr-2"}}
|
||||
{{ctx.Locale.Tr "repo.activity.title.releases_published_by"
|
||||
(ctx.Locale.TrN .Activity.PublishedReleaseCount "repo.activity.title.releases_1" "repo.activity.title.releases_n" .Activity.PublishedReleaseCount)
|
||||
|
@ -130,7 +134,7 @@
|
|||
{{end}}
|
||||
|
||||
{{if gt .Activity.MergedPRCount 0}}
|
||||
<h4 class="divider divider-text tw-normal-case" id="merged-pull-requests">
|
||||
<h4 class="divider divider-text" id="merged-pull-requests">
|
||||
{{svg "octicon-git-pull-request" 16 "tw-mr-2"}}
|
||||
{{ctx.Locale.Tr "repo.activity.title.prs_merged_by"
|
||||
(ctx.Locale.TrN .Activity.MergedPRCount "repo.activity.title.prs_1" "repo.activity.title.prs_n" .Activity.MergedPRCount)
|
||||
|
@ -149,7 +153,7 @@
|
|||
{{end}}
|
||||
|
||||
{{if gt .Activity.OpenedPRCount 0}}
|
||||
<h4 class="divider divider-text tw-normal-case" id="proposed-pull-requests">
|
||||
<h4 class="divider divider-text" id="proposed-pull-requests">
|
||||
{{svg "octicon-git-branch" 16 "tw-mr-2"}}
|
||||
{{ctx.Locale.Tr "repo.activity.title.prs_opened_by"
|
||||
(ctx.Locale.TrN .Activity.OpenedPRCount "repo.activity.title.prs_1" "repo.activity.title.prs_n" .Activity.OpenedPRCount)
|
||||
|
@ -168,7 +172,7 @@
|
|||
{{end}}
|
||||
|
||||
{{if gt .Activity.ClosedIssueCount 0}}
|
||||
<h4 class="divider divider-text tw-normal-case" id="closed-issues">
|
||||
<h4 class="divider divider-text" id="closed-issues">
|
||||
{{svg "octicon-issue-closed" 16 "tw-mr-2"}}
|
||||
{{ctx.Locale.Tr "repo.activity.title.issues_closed_from"
|
||||
(ctx.Locale.TrN .Activity.ClosedIssueCount "repo.activity.title.issues_1" "repo.activity.title.issues_n" .Activity.ClosedIssueCount)
|
||||
|
@ -187,7 +191,7 @@
|
|||
{{end}}
|
||||
|
||||
{{if gt .Activity.OpenedIssueCount 0}}
|
||||
<h4 class="divider divider-text tw-normal-case" id="new-issues">
|
||||
<h4 class="divider divider-text" id="new-issues">
|
||||
{{svg "octicon-issue-opened" 16 "tw-mr-2"}}
|
||||
{{ctx.Locale.Tr "repo.activity.title.issues_created_by"
|
||||
(ctx.Locale.TrN .Activity.OpenedIssueCount "repo.activity.title.issues_1" "repo.activity.title.issues_n" .Activity.OpenedIssueCount)
|
||||
|
@ -206,7 +210,7 @@
|
|||
{{end}}
|
||||
|
||||
{{if gt .Activity.UnresolvedIssueCount 0}}
|
||||
<h4 class="divider divider-text tw-normal-case" id="unresolved-conversations" data-tooltip-content="{{ctx.Locale.Tr "repo.activity.unresolved_conv_desc"}}">
|
||||
<h4 class="divider divider-text" id="unresolved-conversations" data-tooltip-content="{{ctx.Locale.Tr "repo.activity.unresolved_conv_desc"}}">
|
||||
{{svg "octicon-comment-discussion" 16 "tw-mr-2"}}
|
||||
{{ctx.Locale.TrN .Activity.UnresolvedIssueCount "repo.activity.title.unresolved_conv_1" "repo.activity.title.unresolved_conv_n" .Activity.UnresolvedIssueCount}}
|
||||
</h4>
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
<a class="ui primary tiny button" href="{{.LFSFilesLink}}/find?oid={{.LFSFile.Oid}}&size={{.LFSFile.Size}}">{{ctx.Locale.Tr "repo.settings.lfs_findcommits"}}</a>
|
||||
</div>
|
||||
</h4>
|
||||
<div class="ui attached table unstackable segment">
|
||||
<div class="ui bottom attached table unstackable segment">
|
||||
{{template "repo/unicode_escape_prompt" dict "EscapeStatus" .EscapeStatus "root" $}}
|
||||
<div class="file-view{{if .IsMarkup}} markup {{.MarkupType}}{{else if .IsPlainText}} plain-text{{else if .IsTextFile}} code-view{{end}}">
|
||||
{{if .IsMarkup}}
|
||||
|
|
|
@ -9,8 +9,8 @@
|
|||
{{.CsrfTokenHtml}}
|
||||
<input type="hidden" name="action" value="update">
|
||||
<div class="required field {{if .Err_RepoName}}error{{end}}">
|
||||
<label for="repo_name">{{ctx.Locale.Tr "repo.repo_name"}}</label>
|
||||
<input id="repo_name" name="repo_name" value="{{.Repository.Name}}" data-repo-name="{{.Repository.Name}}" autofocus required>
|
||||
<label>{{ctx.Locale.Tr "repo.repo_name"}}</label>
|
||||
<input name="repo_name" value="{{.Repository.Name}}" data-repo-name="{{.Repository.Name}}" autofocus required>
|
||||
</div>
|
||||
<div class="inline field">
|
||||
<label>{{ctx.Locale.Tr "repo.repo_size"}}</label>
|
||||
|
@ -539,8 +539,8 @@
|
|||
</label>
|
||||
</div>
|
||||
<div class="required field">
|
||||
<label for="repo_name">{{ctx.Locale.Tr "repo.settings.confirmation_string"}}</label>
|
||||
<input id="repo_name" name="repo_name" required maxlength="100">
|
||||
<label>{{ctx.Locale.Tr "repo.settings.confirmation_string"}}</label>
|
||||
<input name="repo_name" required maxlength="100">
|
||||
</div>
|
||||
|
||||
<div class="text right actions">
|
||||
|
@ -570,8 +570,8 @@
|
|||
</label>
|
||||
</div>
|
||||
<div class="required field">
|
||||
<label for="repo_name">{{ctx.Locale.Tr "repo.settings.confirmation_string"}}</label>
|
||||
<input id="repo_name" name="repo_name" required>
|
||||
<label>{{ctx.Locale.Tr "repo.settings.confirmation_string"}}</label>
|
||||
<input name="repo_name" required>
|
||||
</div>
|
||||
|
||||
<div class="text right actions">
|
||||
|
@ -602,8 +602,8 @@
|
|||
</label>
|
||||
</div>
|
||||
<div class="required field">
|
||||
<label for="repo_name">{{ctx.Locale.Tr "repo.settings.confirmation_string"}}</label>
|
||||
<input id="repo_name" name="repo_name" required>
|
||||
<label>{{ctx.Locale.Tr "repo.settings.confirmation_string"}}</label>
|
||||
<input name="repo_name" required>
|
||||
</div>
|
||||
<div class="required field">
|
||||
<label for="new_owner_name">{{ctx.Locale.Tr "repo.settings.transfer_owner"}}</label>
|
||||
|
@ -672,8 +672,8 @@
|
|||
</label>
|
||||
</div>
|
||||
<div class="required field">
|
||||
<label for="repo_name">{{ctx.Locale.Tr "repo.settings.confirmation_string"}}</label>
|
||||
<input id="repo_name" name="repo_name" required>
|
||||
<label>{{ctx.Locale.Tr "repo.settings.confirmation_string"}}</label>
|
||||
<input name="repo_name" required>
|
||||
</div>
|
||||
|
||||
<div class="text right actions">
|
||||
|
@ -705,8 +705,8 @@
|
|||
</label>
|
||||
</div>
|
||||
<div class="required field">
|
||||
<label for="repo_name">{{ctx.Locale.Tr "repo.settings.confirmation_string"}}</label>
|
||||
<input id="repo_name" name="repo_name" required>
|
||||
<label>{{ctx.Locale.Tr "repo.settings.confirmation_string"}}</label>
|
||||
<input name="repo_name" required>
|
||||
</div>
|
||||
|
||||
<div class="text right actions">
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
{{end}}
|
||||
|
||||
{{if not .ReadmeInList}}
|
||||
<div id="repo-file-commit-box" class="ui top attached header list-header tw-mb-4 tw-flex tw-justify-between">
|
||||
<div id="repo-file-commit-box" class="ui segment list-header tw-mb-4 tw-flex tw-justify-between">
|
||||
<div class="latest-commit">
|
||||
{{template "repo/latest_commit" .}}
|
||||
</div>
|
||||
|
@ -93,7 +93,7 @@
|
|||
{{end}}
|
||||
</div>
|
||||
</h4>
|
||||
<div class="ui attached table unstackable segment">
|
||||
<div class="ui bottom attached table unstackable segment">
|
||||
{{if not (or .IsMarkup .IsRenderedHTML)}}
|
||||
{{template "repo/unicode_escape_prompt" dict "EscapeStatus" .EscapeStatus "root" $}}
|
||||
{{end}}
|
||||
|
|
76
templates/swagger/v1_json.tmpl
generated
76
templates/swagger/v1_json.tmpl
generated
|
@ -5210,6 +5210,51 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"/repos/{owner}/{repo}/compare/{basehead}": {
|
||||
"get": {
|
||||
"produces": [
|
||||
"application/json"
|
||||
],
|
||||
"tags": [
|
||||
"Get",
|
||||
"commit",
|
||||
"comparison"
|
||||
],
|
||||
"summary": "Get commit comparison information",
|
||||
"operationId": "information",
|
||||
"parameters": [
|
||||
{
|
||||
"type": "string",
|
||||
"description": "owner of the repo",
|
||||
"name": "owner",
|
||||
"in": "path",
|
||||
"required": true
|
||||
},
|
||||
{
|
||||
"type": "string",
|
||||
"description": "name of the repo",
|
||||
"name": "repo",
|
||||
"in": "path",
|
||||
"required": true
|
||||
},
|
||||
{
|
||||
"type": "string",
|
||||
"description": "compare two branches or commits",
|
||||
"name": "basehead",
|
||||
"in": "path",
|
||||
"required": true
|
||||
}
|
||||
],
|
||||
"responses": {
|
||||
"200": {
|
||||
"$ref": "#/responses/Compare"
|
||||
},
|
||||
"404": {
|
||||
"$ref": "#/responses/notFound"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"/repos/{owner}/{repo}/contents": {
|
||||
"get": {
|
||||
"produces": [
|
||||
|
@ -19017,6 +19062,25 @@
|
|||
},
|
||||
"x-go-package": "code.gitea.io/gitea/modules/structs"
|
||||
},
|
||||
"Compare": {
|
||||
"type": "object",
|
||||
"title": "Compare represents a comparison between two commits.",
|
||||
"properties": {
|
||||
"commits": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"$ref": "#/definitions/Commit"
|
||||
},
|
||||
"x-go-name": "Commits"
|
||||
},
|
||||
"total_commits": {
|
||||
"type": "integer",
|
||||
"format": "int64",
|
||||
"x-go-name": "TotalCommits"
|
||||
}
|
||||
},
|
||||
"x-go-package": "code.gitea.io/gitea/modules/structs"
|
||||
},
|
||||
"ContentsResponse": {
|
||||
"description": "ContentsResponse contains information about a repo's entry's (dir, file, symlink, submodule) metadata and content",
|
||||
"type": "object",
|
||||
|
@ -24608,6 +24672,12 @@
|
|||
"type": "boolean",
|
||||
"x-go-name": "Restricted"
|
||||
},
|
||||
"source_id": {
|
||||
"description": "The ID of the user's Authentication Source",
|
||||
"type": "integer",
|
||||
"format": "int64",
|
||||
"x-go-name": "SourceID"
|
||||
},
|
||||
"starred_repos_count": {
|
||||
"type": "integer",
|
||||
"format": "int64",
|
||||
|
@ -25088,6 +25158,12 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"Compare": {
|
||||
"description": "",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/Compare"
|
||||
}
|
||||
},
|
||||
"ContentsListResponse": {
|
||||
"description": "ContentsListResponse",
|
||||
"schema": {
|
||||
|
|
|
@ -1,15 +1,13 @@
|
|||
{{template "base/head" .}}
|
||||
<div role="main" aria-label="{{.Title}}" class="page-content dashboard feeds">
|
||||
{{template "user/dashboard/navbar" .}}
|
||||
<div class="ui container">
|
||||
<div class="ui container flex-container">
|
||||
{{template "base/alert" .}}
|
||||
<div class="ui mobile reversed stackable grid">
|
||||
<div class="ui container ten wide column">
|
||||
{{template "user/heatmap" .}}
|
||||
{{template "user/dashboard/feeds" .}}
|
||||
</div>
|
||||
{{template "user/dashboard/repolist" .}}
|
||||
<div class="flex-container-main">
|
||||
{{template "user/heatmap" .}}
|
||||
{{template "user/dashboard/feeds" .}}
|
||||
</div>
|
||||
{{template "user/dashboard/repolist" .}}
|
||||
</div>
|
||||
</div>
|
||||
{{template "base/footer" .}}
|
||||
|
|
|
@ -52,4 +52,4 @@ data.organizationId = {{.ContextUser.ID}};
|
|||
window.config.pageData.dashboardRepoList = data;
|
||||
</script>
|
||||
|
||||
<div id="dashboard-repo-list" class="six wide column"></div>
|
||||
<div id="dashboard-repo-list" class="flex-container-sidebar"></div>
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
// Copyright 2021 The Gitea Authors. All rights reserved.
|
||||
// Use of this source code is governed by a MIT-style
|
||||
// license that can be found in the LICENSE file.
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
package integration
|
||||
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
// Copyright 2021 The Gitea Authors. All rights reserved.
|
||||
// Use of this source code is governed by a MIT-style
|
||||
// license that can be found in the LICENSE file.
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
package integration
|
||||
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
// Copyright 2021 The Gitea Authors. All rights reserved.
|
||||
// Use of this source code is governed by a MIT-style
|
||||
// license that can be found in the LICENSE file.
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
package integration
|
||||
|
||||
|
|
38
tests/integration/api_repo_compare_test.go
Normal file
38
tests/integration/api_repo_compare_test.go
Normal file
|
@ -0,0 +1,38 @@
|
|||
// Copyright 2024 The Gitea Authors. All rights reserved.
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
package integration
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
"testing"
|
||||
|
||||
auth_model "code.gitea.io/gitea/models/auth"
|
||||
"code.gitea.io/gitea/models/unittest"
|
||||
user_model "code.gitea.io/gitea/models/user"
|
||||
api "code.gitea.io/gitea/modules/structs"
|
||||
"code.gitea.io/gitea/tests"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
func TestAPICompareBranches(t *testing.T) {
|
||||
defer tests.PrepareTestEnv(t)()
|
||||
|
||||
user := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 2})
|
||||
// Login as User2.
|
||||
session := loginUser(t, user.Name)
|
||||
token := getTokenForLoggedInUser(t, session, auth_model.AccessTokenScopeWriteRepository)
|
||||
|
||||
repoName := "repo20"
|
||||
|
||||
req := NewRequestf(t, "GET", "/api/v1/repos/user2/%s/compare/add-csv...remove-files-b", repoName).
|
||||
AddTokenAuth(token)
|
||||
resp := MakeRequest(t, req, http.StatusOK)
|
||||
|
||||
var apiResp *api.Compare
|
||||
DecodeJSON(t, resp, &apiResp)
|
||||
|
||||
assert.Equal(t, 2, apiResp.TotalCommits)
|
||||
assert.Len(t, apiResp.Commits, 2)
|
||||
}
|
|
@ -10,7 +10,9 @@ import (
|
|||
auth_model "code.gitea.io/gitea/models/auth"
|
||||
"code.gitea.io/gitea/models/unittest"
|
||||
user_model "code.gitea.io/gitea/models/user"
|
||||
"code.gitea.io/gitea/modules/setting"
|
||||
api "code.gitea.io/gitea/modules/structs"
|
||||
"code.gitea.io/gitea/modules/test"
|
||||
"code.gitea.io/gitea/tests"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
|
@ -57,6 +59,25 @@ func TestAPIUserSearchNotLoggedIn(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
func TestAPIUserSearchPaged(t *testing.T) {
|
||||
defer tests.PrepareTestEnv(t)()
|
||||
defer test.MockVariableValue(&setting.API.DefaultPagingNum, 5)()
|
||||
|
||||
req := NewRequest(t, "GET", "/api/v1/users/search?limit=1")
|
||||
resp := MakeRequest(t, req, http.StatusOK)
|
||||
|
||||
var limitedResults SearchResults
|
||||
DecodeJSON(t, resp, &limitedResults)
|
||||
assert.Len(t, limitedResults.Data, 1)
|
||||
|
||||
req = NewRequest(t, "GET", "/api/v1/users/search")
|
||||
resp = MakeRequest(t, req, http.StatusOK)
|
||||
|
||||
var results SearchResults
|
||||
DecodeJSON(t, resp, &results)
|
||||
assert.Len(t, results.Data, 5)
|
||||
}
|
||||
|
||||
func TestAPIUserSearchSystemUsers(t *testing.T) {
|
||||
defer tests.PrepareTestEnv(t)()
|
||||
for _, systemUser := range []*user_model.User{
|
||||
|
|
|
@ -76,14 +76,11 @@ func TestIncomingEmail(t *testing.T) {
|
|||
|
||||
t.Run("Handler", func(t *testing.T) {
|
||||
t.Run("Reply", func(t *testing.T) {
|
||||
t.Run("Comment", func(t *testing.T) {
|
||||
defer tests.PrintCurrentTest(t)()
|
||||
checkReply := func(t *testing.T, payload []byte, issue *issues_model.Issue, commentType issues_model.CommentType) {
|
||||
t.Helper()
|
||||
|
||||
handler := &incoming.ReplyHandler{}
|
||||
|
||||
payload, err := incoming_payload.CreateReferencePayload(issue)
|
||||
assert.NoError(t, err)
|
||||
|
||||
assert.Error(t, handler.Handle(db.DefaultContext, &incoming.MailContent{}, nil, payload))
|
||||
assert.NoError(t, handler.Handle(db.DefaultContext, &incoming.MailContent{}, user, payload))
|
||||
|
||||
|
@ -101,7 +98,7 @@ func TestIncomingEmail(t *testing.T) {
|
|||
|
||||
comments, err := issues_model.FindComments(db.DefaultContext, &issues_model.FindCommentsOptions{
|
||||
IssueID: issue.ID,
|
||||
Type: issues_model.CommentTypeComment,
|
||||
Type: commentType,
|
||||
})
|
||||
assert.NoError(t, err)
|
||||
assert.NotEmpty(t, comments)
|
||||
|
@ -113,6 +110,14 @@ func TestIncomingEmail(t *testing.T) {
|
|||
attachment := comment.Attachments[0]
|
||||
assert.Equal(t, content.Attachments[0].Name, attachment.Name)
|
||||
assert.EqualValues(t, 4, attachment.Size)
|
||||
}
|
||||
t.Run("Issue", func(t *testing.T) {
|
||||
defer tests.PrintCurrentTest(t)()
|
||||
|
||||
payload, err := incoming_payload.CreateReferencePayload(issue)
|
||||
assert.NoError(t, err)
|
||||
|
||||
checkReply(t, payload, issue, issues_model.CommentTypeComment)
|
||||
})
|
||||
|
||||
t.Run("CodeComment", func(t *testing.T) {
|
||||
|
@ -121,33 +126,22 @@ func TestIncomingEmail(t *testing.T) {
|
|||
comment := unittest.AssertExistsAndLoadBean(t, &issues_model.Comment{ID: 6})
|
||||
issue := unittest.AssertExistsAndLoadBean(t, &issues_model.Issue{ID: comment.IssueID})
|
||||
|
||||
handler := &incoming.ReplyHandler{}
|
||||
content := &incoming.MailContent{
|
||||
Content: "code reply by mail",
|
||||
Attachments: []*incoming.Attachment{
|
||||
{
|
||||
Name: "attachment.txt",
|
||||
Content: []byte("test"),
|
||||
},
|
||||
},
|
||||
}
|
||||
payload, err := incoming_payload.CreateReferencePayload(comment)
|
||||
assert.NoError(t, err)
|
||||
|
||||
checkReply(t, payload, issue, issues_model.CommentTypeCode)
|
||||
})
|
||||
|
||||
t.Run("Comment", func(t *testing.T) {
|
||||
defer tests.PrintCurrentTest(t)()
|
||||
|
||||
comment := unittest.AssertExistsAndLoadBean(t, &issues_model.Comment{ID: 2})
|
||||
issue := unittest.AssertExistsAndLoadBean(t, &issues_model.Issue{ID: comment.IssueID})
|
||||
|
||||
payload, err := incoming_payload.CreateReferencePayload(comment)
|
||||
assert.NoError(t, err)
|
||||
|
||||
assert.NoError(t, handler.Handle(db.DefaultContext, content, user, payload))
|
||||
|
||||
comments, err := issues_model.FindComments(db.DefaultContext, &issues_model.FindCommentsOptions{
|
||||
IssueID: issue.ID,
|
||||
Type: issues_model.CommentTypeCode,
|
||||
})
|
||||
assert.NoError(t, err)
|
||||
assert.NotEmpty(t, comments)
|
||||
comment = comments[len(comments)-1]
|
||||
assert.Equal(t, user.ID, comment.PosterID)
|
||||
assert.Equal(t, content.Content, comment.Content)
|
||||
assert.NoError(t, comment.LoadAttachments(db.DefaultContext))
|
||||
assert.Empty(t, comment.Attachments)
|
||||
checkReply(t, payload, issue, issues_model.CommentTypeComment)
|
||||
})
|
||||
})
|
||||
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
// Copyright 2022 The Gitea Authors. All rights reserved.
|
||||
// Use of this source code is governed by a MIT-style
|
||||
// license that can be found in the LICENSE file.
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
package integration
|
||||
|
||||
|
|
|
@ -1,3 +1,6 @@
|
|||
// Copyright 2024 The Gitea Authors. All rights reserved.
|
||||
// SPDX-License-Identifier: MIT
|
||||
|
||||
package integration
|
||||
|
||||
import (
|
||||
|
|
|
@ -44,9 +44,10 @@
|
|||
}
|
||||
|
||||
.run-list-item-right {
|
||||
flex: 0 0 min(20%, 130px);
|
||||
width: 130px;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
flex-shrink: 0;
|
||||
gap: 3px;
|
||||
color: var(--color-text-light);
|
||||
}
|
||||
|
@ -57,3 +58,26 @@
|
|||
gap: .25rem;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.run-list .flex-item-trailing {
|
||||
flex-wrap: nowrap;
|
||||
width: 280px;
|
||||
flex: 0 0 280px;
|
||||
}
|
||||
|
||||
.run-list-ref {
|
||||
display: inline-block !important;
|
||||
}
|
||||
|
||||
@media (max-width: 767.98px) {
|
||||
.run-list .flex-item-trailing {
|
||||
flex-direction: column;
|
||||
align-items: flex-end;
|
||||
width: auto;
|
||||
flex-basis: auto;
|
||||
}
|
||||
.run-list-item-right,
|
||||
.run-list-ref {
|
||||
max-width: 110px;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -453,6 +453,7 @@ a.label,
|
|||
|
||||
.ui.selection.dropdown .menu > .item {
|
||||
border-color: var(--color-secondary);
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.ui.selection.visible.dropdown > .text:not(.default) {
|
||||
|
@ -1562,6 +1563,7 @@ table th[data-sortt-desc] .svg {
|
|||
align-items: center;
|
||||
gap: .25rem;
|
||||
vertical-align: middle;
|
||||
min-width: 0;
|
||||
}
|
||||
|
||||
.ui.ui.button {
|
||||
|
@ -1582,4 +1584,5 @@ table th[data-sortt-desc] .svg {
|
|||
display: flex;
|
||||
align-items: center;
|
||||
gap: .25rem;
|
||||
min-width: 0;
|
||||
}
|
||||
|
|
|
@ -7,7 +7,6 @@
|
|||
.dashboard.feeds .context.user.menu .ui.header,
|
||||
.dashboard.issues .context.user.menu .ui.header {
|
||||
font-size: 1rem;
|
||||
text-transform: none;
|
||||
}
|
||||
|
||||
.dashboard.feeds .filter.menu,
|
||||
|
|
|
@ -18,7 +18,8 @@
|
|||
width: auto;
|
||||
}
|
||||
|
||||
.page-content.install form.ui.form input {
|
||||
.page-content.install form.ui.form input:not([type="checkbox"],[type="radio"]),
|
||||
.page-content.install form.ui.form .ui.selection.dropdown {
|
||||
width: 60%;
|
||||
}
|
||||
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue