Merge branch 'master' into techknowlogick-patch-2

This commit is contained in:
techknowlogick 2018-06-04 18:51:07 -04:00 committed by GitHub
commit ecadae8e90
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
30 changed files with 677 additions and 60 deletions

View File

@ -114,7 +114,7 @@ pull request workflow to do that. And, we also use [LGTM](http://lgtm.co)
to ensure every PR is reviewed by at least 2 maintainers.
Please try to make your pull request easy to review for us. And, please read
the *[How to get faster PR reviews](https://github.com/kubernetes/community/blob/master/contributors/devel/pull-requests.md#best-practices-for-faster-reviews)* guide;
the *[How to get faster PR reviews](https://github.com/kubernetes/community/blob/261cb0fd089b64002c91e8eddceebf032462ccd6/contributors/guide/pull-requests.md#best-practices-for-faster-reviews)* guide;
it has lots of useful tips for any project you may want to contribute.
Some of the key points:

View File

@ -100,6 +100,13 @@ swagger-check: generate-swagger
exit 1; \
fi;
.PHONY: swagger-validate
swagger-validate:
@hash swagger > /dev/null 2>&1; if [ $$? -ne 0 ]; then \
$(GO) get -u github.com/go-swagger/go-swagger/cmd/swagger; \
fi
swagger validate ./public/swagger.v1.json
.PHONY: errcheck
errcheck:
@hash errcheck > /dev/null 2>&1; if [ $$? -ne 0 ]; then \

View File

@ -268,7 +268,7 @@ func runServ(c *cli.Context) error {
claims := jwt.MapClaims{
"repo": repo.ID,
"op": lfsVerb,
"exp": now.Add(5 * time.Minute).Unix(),
"exp": now.Add(setting.LFS.HTTPAuthExpiry).Unix(),
"nbf": now.Unix(),
}
if user != nil {

View File

@ -189,6 +189,8 @@ LFS_START_SERVER = false
LFS_CONTENT_PATH = data/lfs
; LFS authentication secret, change this yourself
LFS_JWT_SECRET =
; LFS authentication validity period (in time.Duration), pushes taking longer than this may fail.
LFS_HTTP_AUTH_EXPIRY = 20m
; Define allowed algorithms and their minimum key length (use -1 to disable a type)
[ssh.minimum_key_sizes]

View File

@ -115,6 +115,7 @@ Values containing `#` or `;` must be quoted using `` ` `` or `"""`.
- `LFS_START_SERVER`: **false**: Enables git-lfs support.
- `LFS_CONTENT_PATH`: **./data/lfs**: Where to store LFS files.
- `LFS_JWT_SECRET`: **\<empty\>**: LFS authentication secret, change this a unique string.
- `LFS_HTTP_AUTH_EXPIRY`: **20m**: LFS authentication validity period in time.Duration, pushes taking longer than this may fail.
- `REDIRECT_OTHER_PORT`: **false**: If true and `PROTOCOL` is https, redirects http requests
on another (https) port.
- `PORT_TO_REDIRECT`: **80**: Port used when `REDIRECT_OTHER_PORT` is true.

View File

@ -37,6 +37,7 @@ _Symbols used in table:_
<td>GitLab CE</td>
<td>GitLab EE</td>
<td>BitBucket</td>
<td>RhodeCode CE</td>
</tr>
</thead>
<tbody>
@ -48,6 +49,7 @@ _Symbols used in table:_
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>Issue tracker</td>
@ -57,6 +59,7 @@ _Symbols used in table:_
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>Pull/Merge requests</td>
@ -66,6 +69,7 @@ _Symbols used in table:_
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>Squash merging</td>
@ -75,6 +79,7 @@ _Symbols used in table:_
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>Rebase merging</td>
@ -84,6 +89,7 @@ _Symbols used in table:_
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>Pull/Merge request inline comments</td>
@ -93,6 +99,7 @@ _Symbols used in table:_
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>Pull/Merge request approval</td>
@ -102,6 +109,7 @@ _Symbols used in table:_
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>Merge conflict resolution</td>
@ -111,6 +119,7 @@ _Symbols used in table:_
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>Restrict push and merge access to certain users</td>
@ -120,6 +129,7 @@ _Symbols used in table:_
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>Markdown support</td>
@ -129,6 +139,7 @@ _Symbols used in table:_
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>Issues and pull/merge requests templates</td>
@ -138,6 +149,7 @@ _Symbols used in table:_
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>Revert specific commits or a merge request</td>
@ -147,6 +159,7 @@ _Symbols used in table:_
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>Labels</td>
@ -156,6 +169,7 @@ _Symbols used in table:_
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>Time tracking</td>
@ -165,6 +179,7 @@ _Symbols used in table:_
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>Multiple assignees for issues</td>
@ -174,6 +189,7 @@ _Symbols used in table:_
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>Related issues</td>
@ -183,6 +199,7 @@ _Symbols used in table:_
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>Confidential issues</td>
@ -192,6 +209,7 @@ _Symbols used in table:_
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>Comment reactions</td>
@ -201,6 +219,7 @@ _Symbols used in table:_
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>Lock Discussion</td>
@ -210,6 +229,7 @@ _Symbols used in table:_
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>Batch issue handling</td>
@ -219,6 +239,7 @@ _Symbols used in table:_
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>Issue Boards</td>
@ -228,6 +249,7 @@ _Symbols used in table:_
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>Create new branches from issues</td>
@ -237,6 +259,7 @@ _Symbols used in table:_
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>Commit graph</td>
@ -246,6 +269,7 @@ _Symbols used in table:_
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>Web code editor</td>
@ -255,6 +279,7 @@ _Symbols used in table:_
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>Branch manager</td>
@ -264,6 +289,7 @@ _Symbols used in table:_
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>Create new branches</td>
@ -273,6 +299,7 @@ _Symbols used in table:_
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>Repository topics</td>
@ -282,6 +309,7 @@ _Symbols used in table:_
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>Repository code search</td>
@ -291,6 +319,7 @@ _Symbols used in table:_
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>Global code search</td>
@ -300,6 +329,7 @@ _Symbols used in table:_
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>Issue search</td>
@ -309,6 +339,7 @@ _Symbols used in table:_
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>Global issue search</td>
@ -318,6 +349,7 @@ _Symbols used in table:_
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>Git LFS 2.0</td>
@ -327,6 +359,7 @@ _Symbols used in table:_
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>Integrated Git-powered wiki</td>
@ -336,6 +369,7 @@ _Symbols used in table:_
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>Static Git-powered pages</td>
@ -345,6 +379,7 @@ _Symbols used in table:_
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>Group Milestones</td>
@ -354,6 +389,7 @@ _Symbols used in table:_
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>Granular user roles (Code, Issues, Wiki etc)</td>
@ -363,6 +399,7 @@ _Symbols used in table:_
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>Cherry-picking changes</td>
@ -372,6 +409,7 @@ _Symbols used in table:_
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>GPG Signed Commits</td>
@ -381,6 +419,7 @@ _Symbols used in table:_
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>Reject unsigned commits</td>
@ -390,6 +429,7 @@ _Symbols used in table:_
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>Verified Committer</td>
@ -399,6 +439,7 @@ _Symbols used in table:_
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>Subgroups: groups within groups</td>
@ -408,6 +449,7 @@ _Symbols used in table:_
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>Custom Git Hooks</td>
@ -417,6 +459,7 @@ _Symbols used in table:_
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>Repository Activity page</td>
@ -426,6 +469,7 @@ _Symbols used in table:_
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>Deploy Tokens</td>
@ -435,6 +479,7 @@ _Symbols used in table:_
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>Repository Tokens with write rights</td>
@ -444,6 +489,7 @@ _Symbols used in table:_
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>Easy upgrade process</td>
@ -453,6 +499,7 @@ _Symbols used in table:_
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>Built-in Container Registry</td>
@ -462,6 +509,7 @@ _Symbols used in table:_
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>External git mirroring</td>
@ -471,6 +519,7 @@ _Symbols used in table:_
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>AD / LDAP integration</td>
@ -480,6 +529,7 @@ _Symbols used in table:_
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>Multiple LDAP / AD server support</td>
@ -489,6 +539,7 @@ _Symbols used in table:_
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>LDAP user synchronization</td>
@ -498,6 +549,7 @@ _Symbols used in table:_
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>OpenId Connect support</td>
@ -507,6 +559,7 @@ _Symbols used in table:_
<td></td>
<td></td>
<td>?</td>
<td></td>
</tr>
<tr>
<td>OAuth 2.0 integration (external authorization)</td>
@ -516,6 +569,7 @@ _Symbols used in table:_
<td></td>
<td></td>
<td>?</td>
<td></td>
</tr>
<tr>
<td>Act as OAuth 2.0 provider</td>
@ -525,6 +579,7 @@ _Symbols used in table:_
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>Two factor authentication (2FA)</td>
@ -534,6 +589,7 @@ _Symbols used in table:_
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>FIDO U2F (2FA)</td>
@ -543,6 +599,7 @@ _Symbols used in table:_
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>Webhook support</td>
@ -552,6 +609,7 @@ _Symbols used in table:_
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>Mattermost/Slack integration</td>
@ -561,6 +619,7 @@ _Symbols used in table:_
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>Discord integration</td>
@ -570,6 +629,7 @@ _Symbols used in table:_
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>Built-in CI/CD</td>
@ -579,6 +639,7 @@ _Symbols used in table:_
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>External CI/CD status display</td>
@ -588,6 +649,7 @@ _Symbols used in table:_
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>Multiple database support</td>
@ -597,6 +659,7 @@ _Symbols used in table:_
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>Multiple OS support</td>
@ -606,6 +669,7 @@ _Symbols used in table:_
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>Low resource usage (RAM/CPU)</td>
@ -615,6 +679,7 @@ _Symbols used in table:_
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
</tbody>
</table>

View File

@ -0,0 +1,46 @@
---
date: "2018-06-02T11:00:00+02:00"
title: "Usage: HTTPS setup"
slug: "https-setup"
weight: 12
toc: true
draft: false
menu:
sidebar:
parent: "usage"
name: "HTTPS setup"
weight: 12
identifier: "https-setup"
---
# HTTPS setup to encrypt connections to Gitea
## Using built-in server
Before you enable HTTPS make sure that you have valid SSL/TLS certificates.
You could use self-generated certificates for evaluation and testing. Please run `gitea cert --host [HOST]` to generate a self signed certificate.
To use Gitea's built-in HTTPS support you must change your `app.ini` file:
```ini
[server]
PROTOCOL=https
ROOT_URL = `https://git.example.com:3000/`
HTTP_PORT = 3000
CERT_FILE = cert.pem
KEY_FILE = key.pem
```
To learn more about the config values, please checkout the [Config Cheat Sheet](../config-cheat-sheet#server).
## Using reverse proxy
Setup up your reverse proxy like shown in the [reverse proxy guide](../reverse-proxies).
After that, enable HTTPS by following one of these guides:
* [nginx](https//nginx.org/en/docs/http/configuring_https_servers.html)
* [apache2/httpd](https://httpd.apache.org/docs/2.4/ssl/ssl_howto.html)
* [caddy](https://caddyserver.com/docs/tls)
Note: You connection between your reverse proxy and gitea might be unencrypted. To encrypt it too follow the [built-in server guide](#using-built-in-server) and change
the proxy url to `https://[URL]`.

View File

@ -371,7 +371,7 @@ func (f *MergePullRequestForm) Validate(ctx *macaron.Context, errs binding.Error
// NewReleaseForm form for creating release
type NewReleaseForm struct {
TagName string `binding:"Required"`
TagName string `binding:"Required;GitRefName"`
Target string `form:"tag_target" binding:"Required"`
Title string `binding:"Required"`
Content string

View File

@ -136,10 +136,11 @@ var (
}
LFS struct {
StartServer bool `ini:"LFS_START_SERVER"`
ContentPath string `ini:"LFS_CONTENT_PATH"`
JWTSecretBase64 string `ini:"LFS_JWT_SECRET"`
JWTSecretBytes []byte `ini:"-"`
StartServer bool `ini:"LFS_START_SERVER"`
ContentPath string `ini:"LFS_CONTENT_PATH"`
JWTSecretBase64 string `ini:"LFS_JWT_SECRET"`
JWTSecretBytes []byte `ini:"-"`
HTTPAuthExpiry time.Duration `ini:"LFS_HTTP_AUTH_EXPIRY"`
}
// Security settings
@ -828,6 +829,8 @@ func NewContext() {
LFS.ContentPath = filepath.Join(AppWorkPath, LFS.ContentPath)
}
LFS.HTTPAuthExpiry = sec.Key("LFS_HTTP_AUTH_EXPIRY").MustDuration(20 * time.Minute)
if LFS.StartServer {
if err := os.MkdirAll(LFS.ContentPath, 0700); err != nil {

View File

@ -7,6 +7,7 @@ package util
import (
"net/url"
"path"
"strings"
"code.gitea.io/gitea/modules/log"
)
@ -56,16 +57,25 @@ func Max(a, b int) int {
// URLJoin joins url components, like path.Join, but preserving contents
func URLJoin(base string, elems ...string) string {
u, err := url.Parse(base)
if !strings.HasSuffix(base, "/") {
base += "/"
}
baseURL, err := url.Parse(base)
if err != nil {
log.Error(4, "URLJoin: Invalid base URL %s", base)
return ""
}
joinArgs := make([]string, 0, len(elems)+1)
joinArgs = append(joinArgs, u.Path)
joinArgs = append(joinArgs, elems...)
u.Path = path.Join(joinArgs...)
return u.String()
joinedPath := path.Join(elems...)
argURL, err := url.Parse(joinedPath)
if err != nil {
log.Error(4, "URLJoin: Invalid arg %s", joinedPath)
return ""
}
joinedURL := baseURL.ResolveReference(argURL).String()
if !baseURL.IsAbs() && !strings.HasPrefix(base, "/") {
return joinedURL[1:] // Removing leading '/' if needed
}
return joinedURL
}
// Min min of two ints

View File

@ -30,6 +30,14 @@ func TestURLJoin(t *testing.T) {
"a", "b/c/"),
newTest("a/b/d",
"a/", "b/c/", "/../d/"),
newTest("https://try.gitea.io/a/b/c#d",
"https://try.gitea.io", "a/b", "c#d"),
newTest("/a/b/d",
"/a/", "b/c/", "/../d/"),
newTest("/a/b/c",
"/a", "b/c/"),
newTest("/a/b/c#hash",
"/a", "b/c#hash"),
} {
assert.Equal(t, test.Expected, URLJoin(test.Base, test.Elements...))
}

View File

@ -19,7 +19,7 @@ const (
)
var (
// GitRefNamePattern is regular expression wirh unallowed characters in git reference name
// GitRefNamePattern is regular expression with unallowed characters in git reference name
GitRefNamePattern = regexp.MustCompile("[^\\d\\w-_\\./]")
)

View File

@ -102,11 +102,13 @@ lfs_path_helper=В этой папке будут храниться файлы
run_user=Запуск от имени пользователя
run_user_helper=Введите имя пользователя операционной системы, под которым работает Gitea. Обратите внимание, что этот пользователь должен иметь доступ к корневому пути репозиториев.
domain=Домен SSH сервера
domain_helper=Влияет на URL-адреса для клонирования по SSH.
ssh_port=Порт SSH сервера
ssh_port_helper=Номер порта, который использует SSH сервер. Оставьте пустым, чтобы отключить SSH.
http_port=Gitea HTTP порт
http_port_helper=Номер порта, который будет прослушиваться Gitea веб-сервером.
app_url=Базовый URL-адрес Gitea
app_url_helper=Этот параметр влияет на URL для клонирования по HTTP/HTTPS и на некоторые уведомления по электронной почте.
log_root_path=Путь к журналу
log_root_path_helper=Файлы журнала будут записываться в этот каталог.
@ -124,6 +126,7 @@ offline_mode=Включить локальный режим
offline_mode_popup=Отключить сторонние сети доставки контента и отдавать все ресурсы из их локальных копий.
disable_gravatar=Отключить Gravatar
disable_gravatar_popup=Отключить Gravatar и сторонние источники аватаров. Если пользователь не загрузит аватар локально, то по умолчанию будет использоваться стандартный аватар.
federated_avatar_lookup=Включить федеративные аватары
federated_avatar_lookup_popup=Включите поиск федеративного аватара для использования службы с открытым исходным кодом на основе libravatar.
disable_registration=Отключить самостоятельную регистрацию
disable_registration_popup=Запретить самостоятельную регистрацию. Только администраторы смогут создавать новые учетные записи пользователей.
@ -136,6 +139,7 @@ enable_captcha=Включить CAPTCHA
enable_captcha_popup=Запрашивать капчу при регистрации пользователя.
require_sign_in_view=Требовать авторизации для просмотра страниц
require_sign_in_view_popup=Ограничение доступа к страницам только для пользователей, выполнивших вход. Посетители увидят только страницы входа и регистрации.
admin_setting_desc=Создание учетной записи администратора необязательно. Первый зарегистрированный пользователь автоматически становится администратором.
admin_title=Настройки учётной записи администратора
admin_name=Логин администратора
admin_password=Пароль
@ -146,6 +150,7 @@ test_git_failed=Не удалось проверить 'git' команду: %v
sqlite3_not_available=Эта версия Gitea не поддерживает SQLite3. Пожалуйста, загрузите официальную бинарную версию из %s (не 'go build' версия).
invalid_db_setting=Недопустимые параметры настройки базы данных: %v
invalid_repo_path=Недопустимый путь к корню репозитория: %v
run_user_not_match=Текущий пользователь не является пользователем для запуска: %s -> %s
save_config_failed=Не удалось сохранить конфигурацию: %v
invalid_admin_setting=Указан недопустимый параметр учетной записи администратора: %v
install_success=Добро пожаловать! Благодарим вас за выбор Gitea, пользуйтесь с удовольствием!
@ -157,11 +162,13 @@ default_allow_create_organization_popup=Разрешить новым учетн
default_enable_timetracking=Включение отслеживания времени по умолчанию
default_enable_timetracking_popup=Включить отслеживание времени для новых репозиториев по умолчанию.
no_reply_address=Скрытый почтовый домен
no_reply_address_helper=Доменное имя для пользователей со скрытым адресом электронной почты. Например, имя пользователя 'joe' будет зарегистрировано в Git как 'joe@noreply.example.org' если скрытый домен электронной почты установлен как 'noreply.example.org'.
[home]
uname_holder=Имя пользователя / Email
password_holder=Пароль
switch_dashboard_context=Переключить контекст панели управления
my_repos=Репозитории
show_more_repos=Показать больше репозиториев…
collaborative_repos=Совместные репозитории
my_orgs=Мои организации
@ -186,6 +193,7 @@ code_search_results=Результаты поиска для '%s'
[auth]
create_new_account=Регистрация аккаунта
register_helper_msg=Уже есть аккаунт? Авторизуйтесь!
social_register_helper_msg=Уже есть аккаунт? Свяжите его сейчас!
disable_register_prompt=Извините, возможность регистрации отключена. Пожалуйста, свяжитесь с администратором сайта.
disable_register_mail=Подтверждение регистрации по электронной почте отключено.
remember_me=Запомнить меня
@ -217,7 +225,9 @@ login_userpass=Вход
login_openid=OpenID
openid_connect_submit=Подключить
openid_connect_title=Подключение к существующей учетной записи
openid_connect_desc=Выбранный OpenID URI неизвестен. Свяжите с новой учетной записью здесь.
openid_register_title=Создать новый аккаунт
openid_register_desc=Выбранный OpenID URI неизвестен. Свяжите с новой учетной записью здесь.
openid_signin_desc=Введите свой OpenID URI. Например: https://anne.me, bob.openid.org.cn или gnusocial.net/carry.
disable_forgot_password_mail=К сожалению сброс пароля отключен. Пожалуйста, свяжитесь с администратором сайта.
@ -254,6 +264,8 @@ TreeName=Путь к файлу
Content=Содержимое
require_error=` не может быть пустым.`
alpha_dash_error=` должен содержать только буквенно-цифровые символы, тире (' - ') и подчеркивания ('_').`
alpha_dash_dot_error=` должен содержать только буквенно-цифровые символы, тире ('-'), подчеркивания ('_') и точки ('.').`
git_ref_name_error=` должно быть правильным ссылочным именем Git.`
size_error=` должен быть размер %s.`
min_size_error=«должен содержать по крайней мере %s символов.»
@ -277,31 +289,43 @@ enterred_invalid_repo_name=Введенное вами имя репозитор
enterred_invalid_owner_name=Имя нового владельца недоступно.
enterred_invalid_password=Введенный пароль неверный.
user_not_exist=Пользователь не существует.
last_org_owner=Вы не можете удалить последнего пользователя из команды 'владельцы'. В любой команде должен быть хотя бы один владелец.
cannot_add_org_to_team=Организацию нельзя добавить в качестве члена команды.
invalid_ssh_key=Не удается проверить SSH ключ: %s
invalid_gpg_key=Не удается проверить GPG ключ: %s
unable_verify_ssh_key=Не удается проверить ключ SSH; дважды проверьте его на наличие ошибок.
auth_failed=Ошибка аутентификации: %v
still_own_repo=Ваша учетная запись владеет одним или несколькими репозиториями; удалите или перенесите их в первую очередь.
still_has_org=Ваша учетная запись является членом одной или нескольких организаций; выйдите из них в первую очередь.
org_still_own_repo=Эта организация по-прежнему владеет одним или несколькими репозиториями; сначала удалите или перенесите их.
target_branch_not_exist=Целевая ветка не существует
[user]
change_avatar=Измените свой авататар…
join_on=Присоединился
repositories=Репозитории
activity=Активность
followers=Подписчики
starred=Избранные репозитории
following=Подписан
follow=Подписаться
unfollow=Отписаться
form.name_reserved=Имя пользователя '%s' зарезервировано.
form.name_pattern_not_allowed=Шаблон '%s' не допускается в имени пользователя.
[settings]
profile=Профиль
account=Аккаунт
password=Пароль
security=Безопасность
avatar=Аватар
ssh_gpg_keys=SSH / GPG ключи
social=Учетные записи в соцсетях
applications=Приложения
orgs=Управление организациями
repos=Репозитории
delete=Удалить аккаунт
@ -309,6 +333,7 @@ twofa=Двухфакторная аутентификация
account_link=Привязанные аккаунты
organization=Организации
uid=UID
u2f=Ключи безопасности
public_profile=Открытый профиль
profile_desc=Ваш адрес электронной почты будет использован для уведомлений и других операций.
@ -350,19 +375,32 @@ email_deletion=Удалить адрес электронной почты
email_deletion_desc=Адрес электронной почты и вся связанная с ним информация будет удалена из вашего аккаунта. Коммиты, сделанные от имени этого адреса электронной почты, не будут изменены. Продолжить?
email_deletion_success=Ваш Email адрес был удален.
openid_deletion=Удалить OpenID URI
openid_deletion_desc=После удаления адреса OpenID вы не сможете войти в вашу учётную запись с его помощью. Вы уверены?
openid_deletion_success=OpenID был удален.
add_new_email=Добавить новый адрес электронной почты
add_new_openid=Добавить новый OpenID URI
add_email=Добавить новый адрес электронной почты
add_openid=Добавить адрес OpenID
add_email_confirmation_sent=Письмо для подтверждения было отправлено на '%s'. Пожалуйста, проверьте ваш почтовый ящик в течение %s, чтобы завершить процесс подтверждения.
add_email_success=Добавлен новый адрес электронной почты.
add_openid_success=Добавлен новый адрес OpenID.
keep_email_private=Скрыть адрес электронной почты
keep_email_private_popup=Ваш адрес электронной почты будет скрыт от других пользователей.
openid_desc=OpenID позволяет делегировать проверку подлинности внешнему поставщику.
manage_ssh_keys=Управление SSH ключами
manage_gpg_keys=Управление GPG ключами
add_key=Добавить ключ
ssh_desc=Эти открытые SSH ключи связаны с вашей учетной записью. Соответствующие закрытые ключи обеспечивают полный доступ к вашим хранилищам.
gpg_desc=Эти открытые GPG ключи связаны с вашей учетной записью. Храните закрытые ключи в безопасности, так как они позволяют проверять подлинности коммитов.
ssh_helper=<strong>Нужна помощь?</strong> Ознакомьтесь с руководством GitHub по <a href="%s">созданию SSH ключей</a> или решению <a href="%s">возникающих проблем</a> при использовании SSH.
gpg_helper=<strong>Нужна помощь?</strong> Взгляните на руководство GitHub <a href="%s"> по GPG</a>.
add_new_key=Добавить SSH ключ
add_new_gpg_key=Добавить GPG ключ
ssh_key_been_used=Этот SSH ключ уже добавлен в вашу учетную запись.
ssh_key_name_used=SSH ключ с таким именем уже добавлен в вашу учетную запись.
gpg_key_id_used=Публичный GPG ключ с таким же идентификатором уже существует.
gpg_no_key_email_found=Этот ключ GPG не может использоваться с любым адресом электронной почты, привязанной к вашей учетной записи.
subkeys=Подключи
key_id=ИД ключа
key_name=Имя ключа
@ -370,6 +408,10 @@ key_content=Содержимое
add_key_success=SSH ключ '%s' добавлен.
add_gpg_key_success=GPG ключ '%s' добавлен.
delete_key=Удалить
ssh_key_deletion=Удалить SSH ключ
gpg_key_deletion=Удалить GPG ключ
ssh_key_deletion_desc=Удаление SSH ключа аннулирует его доступ к вашей учетной записи. Продолжить?
gpg_key_deletion_desc=Удаление GPG ключа отменяет проверку подписанных им коммитов. Продолжить?
ssh_key_deletion_success=SSH ключ был удален.
gpg_key_deletion_success=GPG ключ был удален.
add_on=Добавлено
@ -389,7 +431,9 @@ manage_social=Управление привязанными учетными з
unbind=Удалить связь
unbind_success=Связанная внешняя учётная запись была удалена.
manage_access_token=Управление токенами
generate_new_token=Создать новый токен
tokens_desc=Эти токены предоставляют доступ к вашей учетной записи с помощью Gitea API.
token_name=Имя токена
generate_token=Генерировать токен
generate_token_success=Новый токен создан. Скопируйте и сохраните его сейчас, так как он не будет показан снова.
@ -413,6 +457,7 @@ scan_this_image=Сканируйте это изображение вашим п
or_enter_secret=Или введите кодовое слово: %s
then_enter_passcode=И введите пароль, показанный в приложении:
passcode_invalid=Неверный пароль. попробуйте снова.
twofa_enrolled=Для вашего аккаунта была включена двухфакторная аутентификация. Сохраните ваш scratch-токен (%s), он не сохраняется на сервере!
u2f_register_key=Добавить ключ безопасности
u2f_nickname=Имя пользователя
@ -420,14 +465,21 @@ u2f_press_button=Нажмите кнопку на ключе безопасно
u2f_delete_key=Удалить ключ безопасности
u2f_delete_key_desc=Если вы удалите ключ безопасности, вы не сможете использовать его для входа. Вы уверены?
manage_account_links=Управление привязанными аккаунтами
manage_account_links_desc=Эти внешние аккаунты привязаны к вашему аккаунту Gitea.
account_links_not_available=В настоящее время нет внешних аккаунтов, привязанных к вашему аккаунту Gitea.
remove_account_link=Удалить привязанный аккаунт
remove_account_link_desc=Удаление привязанной учетной записи отменит её доступ к вашей учетной записи Gitea. Продолжить?
remove_account_link_success=Привязанная учетная запись удалена.
orgs_none=Вы не состоите ни в одной организации.
repos_none=Вы не владеете репозиториями
delete_account=Удалить свой аккаунт
delete_prompt=Эта операция навсегда удалит вашу учетную запись. Это <strong>НЕВОЗМОЖНО</strong> будет отменить.
confirm_delete_account=Подтвердите удаление
delete_account_title=Удалить аккаунт
delete_account_desc=Вы уверены, что хотите навсегда удалить этот аккаунт?
[repo]
owner=Владелец
@ -436,6 +488,7 @@ repo_name_helper=Лучшие названия репозиториев сост
visibility=Видимость
visiblity_helper=Сделать репозиторий приватным
visiblity_fork_helper=(Изменение этого повлияет на все форки.)
clone_helper=Нужна помощь в клонировании? Посетите страницу <a target="_blank" rel="noopener" href="%s">справки</a>.
fork_repo=Форкнуть репозиторий
fork_from=Форк от
fork_visiblity_helper=Видимость форкнутого репозитория изменить нельзя.
@ -452,6 +505,8 @@ default_branch=Ветка по умолчанию
mirror_prune=Очистить
mirror_interval=Интервал зеркалирования (допустимы единицы времени 'h', 'm', 's')
mirror_interval_invalid=Недопустимый интервал зеркалирования.
mirror_address=Клонировать по URL
mirror_address_desc=Укажите необходимые учетные данные в адресе.
mirror_last_synced=Последняя синхронизация
watchers=Наблюдатели
stargazers=Звездочеты
@ -461,10 +516,13 @@ reactions_more=и ещё %d
form.reach_limit_of_creation=Вы уже достигли ваш предел %d репозиториев.
form.name_reserved=Имя репозитория '%s' зарезервировано.
form.name_pattern_not_allowed=Шаблон имени репозитория '%s' не допускается.
migrate_type=Тип миграции
migrate_type_helper=Этот репозиторий будет <span class="text blue">зеркалом</span>
migrate_repo=Перенос репозитория
migrate.clone_address=Перенос / Клонирование по URL
migrate.clone_address_desc=Это может быть HTTP/HTTPS/GIT адрес или локальный путь существующего репозитория на сервере.
migrate.clone_local_path=или путь к локальному серверу
migrate.permission_denied=У вас нет прав на импорт локальных репозиториев.
migrate.invalid_local_path=Недопустимый локальный путь. Возможно он не существует или не является папкой.
@ -510,8 +568,10 @@ file_raw=Исходник
file_history=История
file_view_raw=Посмотреть исходник
file_permalink=Постоянная ссылка
file_too_large=Этот файл слишком большой, поэтому он не может быть отображён.
video_not_supported_in_browser=Ваш браузер не поддерживает HTML5 'video' тэг.
stored_lfs=Хранится Git LFS
commit_graph=Граф коммитов
editor.new_file=Новый файл
editor.upload_file=Загрузить файл
@ -522,6 +582,7 @@ editor.edit_this_file=Редактировать файл
editor.delete_this_file=Удалить файл
editor.file_delete_success=Файл '%s' удалён.
editor.name_your_file=Назовите свой файл…
editor.filename_help=Чтобы добавить каталог, просто наберите название и нажмите /. Чтобы удалить каталог, перейдите к началу поля и нажмите клавишу backspace.
editor.or=или
editor.cancel_lower=Отменить
editor.commit_changes=Сохранить правки
@ -536,12 +597,22 @@ editor.new_branch_name_desc=Новое название ветки…
editor.cancel=Отмена
editor.filename_cannot_be_empty=Имя файла не может быть пустым.
editor.branch_already_exists=Ветка «%s» уже существует в этом репозитории.
editor.directory_is_a_file=Имя каталога '%s' уже используется в качестве имени файла в этом репозитории.
editor.file_is_a_symlink='%s' является символической ссылкой. Символические ссылки нельзя редактировать в веб-редакторе
editor.filename_is_a_directory=Имя файла '%s' уже используется в качестве имени каталога в этом репозитории.
editor.file_editing_no_longer_exists=Редактируемый файл '%s' больше не существует в этом репозитории.
editor.file_changed_while_editing=Содержимое файла изменилось с момента начала редактирования. <a target="_blank" rel="noopener" href="%s">Нажмите здесь</a>, чтобы увидеть, что было изменено, или <strong>Зафиксировать изменения снова</strong>, чтобы заменить их.
editor.file_already_exists=Файл с именем '%s' уже существует в репозитории.
editor.no_changes_to_show=Нет изменений.
editor.fail_to_update_file=Не удалось обновить/создать файл «%s» из-за ошибки: %v
editor.add_subdir=Добавить каталог…
editor.unable_to_upload_files=Не удалось загрузить файлы в «%s» из-за ошибки: %v
editor.upload_files_to_dir=Загрузить файлы '%s'
editor.cannot_commit_to_protected_branch=Нельзя коммитить в защищённую ветку '%s'.
commits.desc=Просмотр истории изменений исходного кода.
commits.commits=Коммиты
commits.search=Поиск коммитов…
commits.find=Поиск
commits.search_all=Все ветки
commits.author=Автор
@ -550,8 +621,12 @@ commits.date=Дата
commits.older=Раньше
commits.newer=Новее
commits.signed_by=Подписано
commits.gpg_key_id=Идентификатор GPG ключа
ext_issues=Внешние задачи
ext_issues.desc=Ссылка на внешнюю систему отслеживания ошибок.
issues.desc=Организация отчетов об ошибках, задач и этапов.
issues.new=Новая задача
issues.new.labels=Метки
issues.new.no_label=Нет меток
@ -561,12 +636,18 @@ issues.new.no_milestone=Нет этапа
issues.new.clear_milestone=Очистить этап
issues.new.open_milestone=Открыть этап
issues.new.closed_milestone=Завершенные этапы
issues.new.assignees=Назначенные
issues.new.clear_assignees=Убрать ответственных
issues.new.no_assignees=Никто не назначен
issues.no_ref=Не указана ветка или тэг
issues.create=Добавить задачу
issues.new_label=Новая метка
issues.new_label_placeholder=Имя метки
issues.new_label_desc_placeholder=Описание
issues.create_label=Добавить метку
issues.label_templates.title=Загрузить набор предопределённых меток
issues.label_templates.helper=Выберите метку
issues.label_templates.use=Использовать набор меток
issues.label_templates.fail_to_load_file=Не удалось загрузить файл шаблона метки «%s»: %v
issues.add_label_at=добавил(а) метку <div class="ui label" style="color: %s\; background-color: %s">%s</div> %s
issues.remove_label_at=убрал(а) метку <div class="ui label" style="color: %s\; background-color: %s">%s</div> %s
@ -586,6 +667,7 @@ issues.filter_label_no_select=Все метки
issues.filter_milestone=Этап
issues.filter_milestone_no_select=Все этапы
issues.filter_assignee=Назначено
issues.filter_assginee_no_select=Все назначения
issues.filter_type=Тип
issues.filter_type.all_issues=Все задачи
issues.filter_type.assigned_to_you=Назначено вам
@ -598,6 +680,10 @@ issues.filter_sort.recentupdate=Недавно обновленные
issues.filter_sort.leastupdate=Давно обновленные
issues.filter_sort.mostcomment=Большего комментариев
issues.filter_sort.leastcomment=Меньше комментариев
issues.filter_sort.moststars=Больше звезд
issues.filter_sort.feweststars=Меньше звезд
issues.filter_sort.mostforks=Больше форков
issues.filter_sort.fewestforks=Меньше форков
issues.action_open=Открыть
issues.action_close=Закрыть
issues.action_label=Метка
@ -616,7 +702,9 @@ issues.commented_at=`прокомментировал <a href="#%s"> %s</a>`
issues.delete_comment_confirm=Вы уверены, что хотите удалить этот комментарий?
issues.no_content=Пока нет содержимого.
issues.close_issue=Закрыть
issues.close_comment_issue=Прокомментировать и закрыть
issues.reopen_issue=Открыть снова
issues.reopen_comment_issue=Прокомментировать и открыть снова
issues.create_comment=Комментировать
issues.closed_at=`закрыл <a id="%[1]s" href="#%[1]s">%[2]s</a>`
issues.reopened_at=`открыл снова <a id="%[1]s" href="#%[1]s">%[2]s</a>`
@ -637,6 +725,8 @@ issues.label_edit=Редактировать
issues.label_delete=Удалить
issues.label_modify=Изменить метку
issues.label_deletion=Удалить метку
issues.label_deletion_desc=Удаление метки удаляет ее из всех обсуждений. Продолжить?
issues.label_deletion_success=Метка была удалена.
issues.label.filter_sort.alphabetically=По алфавиту
issues.label.filter_sort.reverse_alphabetically=С конца алфавита
issues.label.filter_sort.by_size=Размер
@ -646,23 +736,43 @@ issues.attachment.open_tab=`Нажмите, чтобы увидеть "%s" в н
issues.attachment.download=`Нажмите, чтобы скачать "%s"`
issues.subscribe=Подписаться
issues.unsubscribe=Отказаться от подписки
issues.tracker=Отслеживание времени
issues.start_tracking_short=Начать
issues.start_tracking=Начать отслеживание времени
issues.start_tracking_history=`начал работать %s`
issues.tracking_already_started=`Вы уже начали отслеживать время для этой <a href="%s">задачи</a>!`
issues.stop_tracking=Остановить
issues.stop_tracking_history=`перестал работать %s`
issues.add_time=Вручную добавить время
issues.add_time_short=Добавить время
issues.add_time_cancel=Отмена
issues.add_time_history=`добавил потраченное время %s`
issues.add_time_hours=Часы
issues.add_time_minutes=Минуты
issues.add_time_sum_to_small=Время не было введено.
issues.cancel_tracking=Отмена
issues.cancel_tracking_history=`отменил отслеживание %s`
issues.time_spent_total=Общее затраченное время
issues.time_spent_from_all_authors=`Общее затраченное время: %s`
issues.due_date=Срок выполнения
issues.invalid_due_date_format=Дата окончания должна быть в формате 'гггг-мм-дд'.
issues.error_modifying_due_date=Не удалось изменить срок выполнения.
issues.error_removing_due_date=Не удалось убрать срок выполнения.
issues.due_date_form=гггг-мм-дд
issues.due_date_not_set=Срок выполнения не установлен.
issues.due_date_remove=удалён срок выполнения %s %s
issues.due_date_overdue=Просроченные
pulls.desc=Включить Pull Request'ы и интерфейс согласования правок.
pulls.new=Новый Pull Request
pulls.compare_changes=Новый Pull Request
pulls.compare_changes_desc=Сравнить две ветки и создать запрос на слияние для изменений.
pulls.compare_base=родительская ветка
pulls.compare_compare=сравнить
pulls.filter_branch=Фильтр по ветке
pulls.no_results=Результатов не найдено.
pulls.nothing_to_compare=Нечего сравнивать, родительская и текущая ветка одинаковые.
pulls.has_pull_request=`Уже существует запрос на слияние между двумя целями: <a href="%[1]s/pulls/%[3]d">%[2]s#%[3]d</a>`
pulls.create=Создать Pull Request
pulls.title_desc=хочет смерджить %[1]d коммит(ов) из <code>%[2]s</code> в <code>%[3]s</code>
pulls.merged_title_desc=слито %[1]d коммит(ов) из <code>%[2]s</code> в <code>%[3]s</code> %[4]s
@ -671,10 +781,17 @@ pulls.tab_commits=Коммиты
pulls.tab_files=Измененные файлы
pulls.reopen_to_merge=Пожалуйста, переоткройте этот Pull Request для выполнения слияния.
pulls.merged=Слито
pulls.has_merged=Слияние этого запроса успешно завершено.
pulls.data_broken=Содержимое этого запроса было нарушено вследствие удаления информации форка.
pulls.is_checking=Продолжается проверка конфликтов, пожалуйста обновите страницу несколько позже.
pulls.can_auto_merge_desc=Этот Pull Request может быть объединён автоматически.
pulls.cannot_auto_merge_desc=Этот запрос на слияние не может быть объединён автоматически.
pulls.cannot_auto_merge_helper=Пожалуйста, совершите слияние вручную для урегулирования конфликтов.
pulls.no_merge_desc=Pull Request не может быть принят, так как запрещены все методы организации рабочего потока.
pulls.merge_pull_request=Принять Pull Request
pulls.rebase_merge_pull_request=Выполнить rebase и принять PR
pulls.squash_merge_pull_request=Объединить и принять PR
pulls.open_unmerged_pull_exists=`Вы не можете снова открыть, поскольку уже существует запрос на слияние (#%d) из того же репозитория с той же информацией о слиянии и ожидающий слияния.`
milestones.new=Новый этап
milestones.open_tab=%d открыты
@ -683,13 +800,21 @@ milestones.closed=Закрыт %s
milestones.no_due_date=Срок не указан
milestones.open=Открыть
milestones.close=Закрыть
milestones.new_subheader=Создавайте этапы для организации ваших задач.
milestones.create=Создать этап
milestones.title=Заголовок
milestones.desc=Описание
milestones.due_date=Дата окончания (опционально)
milestones.clear=Очистить
milestones.invalid_due_date_format=Дата окончания должна быть в формате 'гггг-мм-дд'.
milestones.create_success=Этап '%s' создан.
milestones.edit=Редактировать этап
milestones.edit_subheader=Используйте лучшее описание контрольной точки, во избежание непонимания со стороны других людей.
milestones.cancel=Отмена
milestones.modify=Обновить этап
milestones.edit_success=Этап '%s' был обновлен.
milestones.deletion=Удалить этап
milestones.deletion_success=Контрольная точка успешно удалена.
milestones.filter_sort.closest_due_date=Ближайшее по дате
milestones.filter_sort.furthest_due_date=Дальнее по дате
milestones.filter_sort.least_complete=Менее полное
@ -697,17 +822,25 @@ milestones.filter_sort.most_complete=Более полное
milestones.filter_sort.most_issues=Большинство задач
milestones.filter_sort.least_issues=Меньшинство задач
ext_wiki=Внешняя вики
ext_wiki.desc=Ссылка на внешнюю вики.
wiki=Вики
wiki.welcome=Добро пожаловать в Вики.
wiki.desc=Вики - это место для хранения документации.
wiki.create_first_page=Создать первую страницу
wiki.page=Страница
wiki.filter_page=Фильтр страницы
wiki.new_page=Страница
wiki.default_commit_message=Описание изменения вики-страницы (необязательно).
wiki.save_page=Сохранить страницу
wiki.last_commit_info=%s редактировал эту страницу %s
wiki.edit_page_button=Редактировать
wiki.new_page_button=Новая страница
wiki.delete_page_button=Удалить страницу
wiki.delete_page_notice_1=Удаление вики-страницы '%s' не может быть отменено. Продолжить?
wiki.page_already_exists=Вики-страница с таким именем уже существует.
wiki.reserved_page=Имя вики-страницы '%s' зарезервировано.
wiki.pages=Страницы
wiki.last_updated=Последнее обновление %s
@ -744,6 +877,9 @@ activity.closed_issue_label=Закрыто
activity.new_issues_count_1=Новая задача
activity.new_issues_count_n=Новых задач
activity.new_issue_label=Открытые
activity.title.unresolved_conv_1=%d Незавершённое обсуждение
activity.title.unresolved_conv_n=%d Незавершённых обсуждений
activity.unresolved_conv_desc=Список всех старых тикетов и Pull Request'ов с недавней активностью, но ещё не закрытых либо принятых.
activity.unresolved_conv_label=Открытые
activity.title.releases_1=%d релиз
activity.title.releases_n=%d релизов
@ -766,66 +902,176 @@ settings.hooks=Автоматическое обновление
settings.githooks=Git хуки
settings.basic_settings=Основные параметры
settings.mirror_settings=Настройки зеркалирования
settings.sync_mirror=Синхронизировать
settings.mirror_sync_in_progress=Синхронизируются репозитории-зеркала. Подождите минуту и обновите страницу.
settings.site=Сайт
settings.update_settings=Обновить настройки
settings.advanced_settings=Расширенные настройки
settings.wiki_desc=Включить Вики для репозитория
settings.use_internal_wiki=Использовать встроенную вики-систему
settings.use_external_wiki=Использовать внешнюю вики-систему
settings.external_wiki_url=URL-адрес внешней Вики
settings.external_wiki_url_error=URL внешней вики не является допустимым URL-адресом.
settings.external_wiki_url_desc=Посетители будут перенаправлены на URL-адрес, когда они кликнут по вкладке.
settings.issues_desc=Включить систему учёта задач репозитория
settings.use_internal_issue_tracker=Использовать встроенную систему учета задач
settings.use_external_issue_tracker=Использовать внешнюю систему учета задач
settings.external_tracker_url=URL внешней системы отслеживания ошибок
settings.external_tracker_url_error=URL внешнего баг-трекера не является допустимым URL-адресом.
settings.external_tracker_url_desc=Посетители будут перенаправлены на URL-адрес, когда они кликнут по вкладке.
settings.tracker_url_format=Внешний формат ссылки системы отслеживания ошибок.
settings.tracker_issue_style=Формат нумерации для внешней системы учета задач
settings.tracker_issue_style.numeric=Цифровой
settings.tracker_issue_style.alphanumeric=Буквенноцифровой
settings.tracker_url_format_desc=Вы можете использовать шаблоны <code>{user}</code>, <code>{repo}</code> и <code>{index}</code> для имени пользователя, репозитория и номера задачи.
settings.enable_timetracker=Включить отслеживание времени
settings.allow_only_contributors_to_track_time=Учитывать только участников разработки в подсчёте времени
settings.pulls_desc=Включить публичные запросы на слияние
settings.pulls.ignore_whitespace=Игнорировать незначащие изменения (пробелы, табуляция) при проверке на конфликты слияния
settings.pulls.allow_merge_commits=Разрешить коммиты слияния
settings.pulls.allow_rebase_merge=Разрешить rebase-слияние
settings.pulls.allow_squash_commits=Разрешить объединять коммиты перед слиянием (squash)
settings.admin_settings=Настройки администратора
settings.admin_enable_health_check=Выполнять проверки целостности этого репозитория (git fsck)
settings.danger_zone=Опасная зона
settings.new_owner_has_same_repo=У нового владельца уже есть хранилище с таким названием.
settings.convert=Преобразовать в обычный репозиторий
settings.convert_desc=Это зеркало можно преобразовать в обычный репозиторий. Это не может быть отменено.
settings.convert_notices_1=Эта операция преобразует это зеркало в обычный репозиторий, и она не может быть отменена.
settings.convert_confirm=Подтвердите преобразование
settings.convert_succeed=Репозиторий успешно преобразован в обычный.
settings.transfer=Передать права собственности
settings.transfer_desc=Передать репозиторий другому пользователю или организации где у вас есть права администратора.
settings.transfer_notices_1=- Вы можете потерять доступ, если новый владелец является отдельным пользователем.
settings.transfer_notices_2=- Вы сохраните доступ, если новым владельцем станет организация, владельцем которой вы являетесь.
settings.transfer_form_title=Введите сопутствующую информацию для подтверждения операции:
settings.wiki_delete=Стереть данные Вики
settings.wiki_delete_desc=Будьте внимательны! Как только вы удалите Вики — пути назад не будет.
settings.wiki_delete_notices_1=- Это навсегда удалит и отключит Вики для %s.
settings.confirm_wiki_delete=Стереть данные Вики
settings.wiki_deletion_success=Данные Вики успешно стерты.
settings.delete=Удалить этот репозиторий
settings.delete_desc=Будьте внимательны! Как только вы удалите репозиторий — пути назад не будет.
settings.delete_notices_1=- Эта операция <strong>НЕ МОЖЕТ</strong> быть отменена.
settings.delete_notices_2=- Эта операция навсегда удалит всё из репозитория <strong>%s</strong>, включая данные Git, связанные с ним задачи, комментарии и права доступа для сотрудников.
settings.delete_notices_fork_1=- Все форки станут независимыми репозиториями после удаления.
settings.deletion_success=Репозиторий удален.
settings.update_settings_success=Настройки репозитория обновлены.
settings.transfer_owner=Новый владелец
settings.make_transfer=Выполнить передачу
settings.transfer_succeed=Репозиторий перенесён.
settings.confirm_delete=Удалить репозиторий
settings.add_collaborator=Добавить соавтора
settings.add_collaborator_success=Соавтор добавлен.
settings.delete_collaborator=Удалить
settings.collaborator_deletion=Удалить соавтора
settings.collaborator_deletion_desc=Этот пользователь больше не будет иметь доступа для совместной работы в этом репозитории после удаления. Вы хотите продолжить?
settings.remove_collaborator_success=Соавтор удалён.
settings.search_user_placeholder=Поиск пользователя…
settings.org_not_allowed_to_be_collaborator=Организации не могут быть добавлены как соавторы.
settings.user_is_org_member=Пользователь является членом организации, члены которой не могут быть добавлены в качестве соавтора.
settings.add_webhook=Добавить Webhook
settings.hooks_desc=Webhooks позволяют внешним службам получать уведомления при возникновении определенных событий на Gitea. При возникновении указанных событий мы отправим запрос POST на каждый заданный вами URL. Узнать больше можно в нашем <a target="_blank" rel="noopener" href="%s">руководстве по webhooks</a>.
settings.webhook_deletion=Удалить Webhook
settings.webhook_deletion_desc=Удаление этого веб-хука приведет к удалению всей связанной с ним информации, включая историю. Хотите продолжить?
settings.webhook_deletion_success=Webhook был удалён.
settings.webhook.test_delivery=Проверить доставку
settings.webhook.test_delivery_desc=Отправить тестовое событие для тестирования настройки веб-хука.
settings.webhook.test_delivery_success=Тест веб-хука была добавлен в очередь доставки. Это может занять несколько секунд, прежде чем он отобразится в истории доставки.
settings.webhook.request=Запрос
settings.webhook.response=Ответ
settings.webhook.headers=Заголовки
settings.webhook.payload=Содержимое
settings.webhook.body=Тело ответа
settings.githooks_desc=Git-хуки предоставляются Git самим по себе, вы можете изменять файлы поддерживаемых хуков из списка ниже чтобы выполнять внешние операции.
settings.githook_edit_desc=Если хук не активен, будет подставлен пример содержимого. Пустое значение в этом поле приведет к отключению хука.
settings.githook_name=Название Hook'a
settings.githook_content=Перехватить содержание
settings.update_githook=Обновить Hook
settings.add_webhook_desc=Gitea будет оправлять <code>POST</code> запросы на указанный URL адрес, с информацией о происходящих событиях. Вы также можете указать формат данных (JSON, x-www-form-urlencoded, XML и т.д.). Подробности на странице <a target="_blank" rel="noopener" href="%s">инструкции по использованию webhooks</a>.
settings.payload_url=URL обработчика
settings.content_type=Тип содержимого
settings.secret=Секретный ключ
settings.slack_username=Имя пользователя
settings.slack_icon_url=URL иконки
settings.discord_username=Имя пользователя
settings.discord_icon_url=URL иконки
settings.slack_color=Цвет
settings.event_desc=На какие события этот webhook должен срабатывать?
settings.event_push_only=Просто push событие
settings.event_send_everything=Все события
settings.event_choose=Позвольте мне выбрать то, что нужно.
settings.event_create=Создать
settings.event_create_desc=Ветка или тэг созданы.
settings.event_delete=Удалить
settings.event_delete_desc=Ветка или метка удалена
settings.event_fork=Форкнуть
settings.event_fork_desc=Репозиторий склонирован
settings.event_issues=Задачи
settings.event_issue_comment=Комментарии в задаче
settings.event_issue_comment_desc=Комментарий создан, изменен или удален.
settings.event_release=Релиз
settings.event_pull_request=Pull Request
settings.event_pull_request_desc=Запрос слияния открыт, закрыт, переоткрыт, изменён, назначен, снят, метка обновлена, метка убрана, или синхронизирован.
settings.event_push=Push
settings.event_push_desc=Push в репозиторий.
settings.event_repository=Репозиторий
settings.event_repository_desc=Репозиторий создан или удален.
settings.active=Активен
settings.active_helper=Также будет отправлена информация о произошедшем событии.
settings.add_hook_success=Webhook был добавлен.
settings.update_webhook=Обновление Webhook
settings.update_hook_success=Webhook был обновлен.
settings.delete_webhook=Удалить Webhook
settings.recent_deliveries=Недавние рассылки
settings.hook_type=Тип перехватчика
settings.add_slack_hook_desc=Добавить интеграцию с <a href="%s">Slack</a> в ваш репозиторий.
settings.slack_token=Slack токен
settings.slack_domain=Домен
settings.slack_channel=Канал
settings.add_discord_hook_desc=Добавить уведомления о событиях через <a href="%s">Discord</a>.
settings.add_dingtalk_hook_desc=Добавить интеграцию с <a href="%s">Dingtalk</a> в ваш репозиторий.
settings.deploy_keys=Ключи развертывания
settings.add_deploy_key=Добавить ключ развертывания
settings.deploy_key_desc=Ключи развёртывания доступны только для чтения. Это не то же самое что и SSH-ключи аккаунта.
settings.is_writable=Разрешить запись
settings.is_writable_info=Может ли этот ключ быть использован для выполнения <strong>push</strong> в репозиторий? Ключи развёртывания всегда имеют доступ на pull.
settings.no_deploy_keys=Вы не добавляли ключи развертывания.
settings.title=Заголовок
settings.deploy_key_content=Содержимое
settings.key_been_used=Содержимое ключа развертывания уже используется.
settings.key_name_used=Ключ развертывания с таким заголовком уже существует.
settings.add_key_success=Новый ключ развертывания '%s' успешно добавлен.
settings.deploy_key_deletion=Удалить ключ развертывания
settings.deploy_key_deletion_desc=Удаление ключа развёртки сделает невозможным доступ к репозиторию с его помощью. Вы уверены?
settings.deploy_key_deletion_success=Ключ развёртки был успешно удалён.
settings.branches=Ветки
settings.protected_branch=Защита веток
settings.protected_branch_can_push=Разрешить push?
settings.protected_branch_can_push_yes=Вы можете выполнять push
settings.protected_branch_can_push_no=Вы не можете выполнять push
settings.branch_protection=Защита ветки <b>%s</b>
settings.protect_this_branch=Защитить эту ветку
settings.protect_this_branch_desc=Выключить принудительный push и защитить от удаления.
settings.protect_whitelist_committers=Белый список тех, кто может делать push в эту ветку
settings.protect_whitelist_committers_desc=Добавить пользователей или команды в белый список ветки. На них не будут распространяться обычные ограничения на push.
settings.protect_whitelist_users=Пользователи, которые могут делать push в эту ветку:
settings.protect_whitelist_search_users=Поиск пользователей…
settings.protect_whitelist_teams=Команды, члены которых могут делать push в эту ветку:
settings.protect_whitelist_search_teams=Поиск команд…
settings.protect_merge_whitelist_committers=Ограничить право на принятие Pull Request'ов в эту ветку списком
settings.protect_merge_whitelist_committers_desc=Вы можете добавлять пользователей или целые команды в "белый" список этой ветки. Только присутствующие в списке смогут принимать Pull Request'ы. В противном случае любой с правами на запись в репозиторий будет обладать такой возможностью.
settings.protect_merge_whitelist_users=Пользователи с правом на принятие Pull Request'ов в эту ветку:
settings.protect_merge_whitelist_teams=Команды, члены которых обладают правом на принятие Pull Request'ов в эту ветку:
settings.add_protected_branch=Включить защиту
settings.delete_protected_branch=Отключить защиту
settings.update_protect_branch_success=Настройки защиты ветки '%s' были успешно изменены.
settings.remove_protected_branch_success=Защита ветки '%s' была успешно отключена.
settings.protected_branch_deletion=Отключение защиты ветки
settings.protected_branch_deletion_desc=Любой пользователь с разрешениями на запись сможет выполнять push в эту ветку. Вы уверены?
settings.default_branch_desc=Главная ветка является "базовой" для вашего репозитория, на которую по умолчанию направлены все Pull Request'ы и которая является лицом вашего репозитория. Первое, что увидит посетитель — это содержимое главной ветки. Выберите её из уже существующих:
settings.choose_branch=Выберите ветку…
settings.no_protected_branch=Нет защищённых веток.
diff.browse_source=Просмотр исходного кода
diff.parent=Родитель
@ -840,6 +1086,7 @@ diff.view_file=Просмотреть файл
diff.file_suppressed=Разница между файлами не показана из-за своего большого размера
diff.too_many_files=Некоторые файлы не были показаны из-за большого количества измененных файлов
releases.desc=Релизы позволяют организовать хранение готовых сборок проекта в строгом хронологически верном порядке.
release.releases=Релизы
release.new_release=Новый релиз
release.draft=Черновик
@ -848,17 +1095,27 @@ release.stable=Стабильный
release.edit=Редактировать
release.ahead=<strong>%d</strong> коммитов %s начиная с этого релиза
release.source_code=Исходный код
release.new_subheader=Публикация релизов поможет хранить чёткую историю развития вашего проекта.
release.edit_subheader=Подробный журнал изменений может помочь пользователям понять, что было изменено в очередной версии.
release.tag_name=Имя тега
release.target=Цель
release.tag_helper=Выберите существующий тег, или создайте новый.
release.title=Заголовок
release.content=Содержимое
release.write=Редактирование
release.preview=Предварительный просмотр
release.loading=Загрузка…
release.prerelease_desc=Это предварительный релиз
release.prerelease_helper=Отдельно отметим, что этот релиз не готов к использованию в продакшене.
release.cancel=Отменить
release.publish=Опубликовать релиз
release.save_draft=Сохранить черновик
release.edit_release=Редактировать релиз
release.delete_release=Удалить этот релиз
release.deletion=Удаление релиза
release.deletion_success=Релиз был удалён.
release.tag_name_already_exist=Релиз с этим именем метки уже существует.
release.tag_name_invalid=Имя тега является не допустимым.
release.downloads=Загрузки
branch.name=Имя ветки
@ -867,10 +1124,19 @@ branch.already_exists=Ветка с именем '%s' уже существуе
branch.delete_head=Удалить
branch.delete=Удалить ветку '%s'
branch.delete_html=Удалить ветку
branch.delete_desc=Удаление ветки <strong>НЕОБРАТИМО</strong>. Действие никак нельзя отменить.
branch.deletion_success=Ветка %s удалена.
branch.deletion_failed=Не удалось удалить ветку %s.
branch.delete_branch_has_new_commits=%s нельзя удалить, поскольку после слияния были добавлены новые коммиты.
branch.create_branch=Создать ветку <strong>%s</strong>
branch.create_from=из '%s'
branch.create_success=Ветка '%s' создана.
branch.branch_already_exists=Ветка '%s' уже существует в репозитории.
branch.branch_name_conflict=Имя ветки '%s' конфликтует с уже существующей веткой '%s'.
branch.tag_collision=Ветка '%s' не может быть создана, так как уже существует тэг с таким именем.
branch.deleted_by=Удалён %s
branch.restore_success=Ветка '%s' восстановлена.
branch.restore_failed=Не удалось восстановить ветку '%s'.
topic.manage_topics=Редактировать тематические метки
topic.done=Сохранить
@ -878,6 +1144,7 @@ topic.done=Сохранить
[org]
org_name_holder=Название организации
org_full_name_holder=Полное название организации
org_name_helper=Лучшие названия организаций коротки и запоминаемы.
create_org=Создать организацию
repo_updated=Обновлено
people=Люди
@ -889,9 +1156,13 @@ create_team=Создать команду
org_desc=Описание
team_name=Название команды
team_desc=Описание
team_desc_helper=Что это за команда?
team_permission_desc=Разрешение
team_unit_desc=Разрешить доступ к разделам репозитория
form.name_reserved=Наименование организации '%s' зарезервированно.
form.name_pattern_not_allowed=Шаблон организации '%s' не допускается.
form.create_org_not_allowed=Этому пользователю не разрешено создавать организацию.
settings=Настройки
settings.options=Организация
@ -900,8 +1171,11 @@ settings.website=Сайт
settings.location=Местоположение
settings.update_settings=Обновить настройки
settings.update_setting_success=Настройки организации обновлены.
settings.change_orgname_prompt=Это изменение изменит ссылки на организацию.
settings.update_avatar_success=Аватар организации обновлен.
settings.delete=Удалить организацию
settings.delete_account=Удалить эту организацию
settings.delete_prompt=Это действие <strong>БЕЗВОЗВРАТНО</strong> удалит эту организацию навсегда.
settings.confirm_delete_account=Подтвердить удаление
settings.delete_org_title=Удалить организацию
settings.delete_org_desc=Эта организация будет безвозвратно удалена. Продолжить?
@ -930,12 +1204,16 @@ teams.admin_access=Доступ администратора
teams.admin_access_helper=Участники могут выполнять pull, push в командные репозитории и добавлять соавторов в команду.
teams.no_desc=Эта группа не имеет описания
teams.settings=Настройки
teams.owners_permission_desc=Владельцы имеют полный доступ ко <strong>всем репозиториям</strong> и имеют <strong>права администратора</strong> организации.
teams.members=Члены группы разработки
teams.update_settings=Обновить настройки
teams.delete_team=Удалить команду
teams.add_team_member=Добавление члена группы разработки
teams.delete_team_title=Удалить команду
teams.delete_team_success=Команда удалена.
teams.read_permission_desc=Эта команда предоставляет доступ на <strong>Чтение</strong>: члены могут просматривать и клонировать репозитории команды.
teams.write_permission_desc=Эта команда предоставляет доступ на <strong>Запись</strong>: члены могут получать и выполнять push команды в репозитории.
teams.admin_permission_desc=Эта команда дает <strong>административный</strong> доступ: участники могут читать, пушить и добавлять соавторов к ее репозиториям.
teams.repositories=Репозитории группы разработки
teams.search_repo_placeholder=Поиск репозитория…
teams.add_team_repository=Добавить репозиторий группы разработки
@ -944,8 +1222,10 @@ teams.add_nonexistent_repo=Вы добавляете в отсутствующи
[admin]
dashboard=Панель
users=Пользователи
organizations=Организации
repositories=Репозитории
authentication=Авторизация
config=Конфигурация
notices=Системные уведомления
monitor=Мониторинг
@ -953,6 +1233,10 @@ first_page=Первая
last_page=Последняя
total=Всего: %d
dashboard.statistic=Статистика
dashboard.operations=Операции
dashboard.system_status=Статус системного монитора
dashboard.statistic_info=В базе данных Gitea записано <b>%d</b> пользователей, <b>%d</b> организаций, <b>%d</b> публичных ключей, <b>%d</b> репозиториев, <b>%d</b> подписок на репозитории, <b>%d</b> добавлений в избранное, <b>%d</b> действий, <b>%d</b> доступов, <b>%d</b> задач, <b>%d</b> комментариев, <b>%d</b> социальных учетных записей, <b>%d</b> подписок на пользователей, <b>%d</b> зеркал, <b>%d</b> релизов, <b>%d</b> источников входа, <b>%d</b> веб-хуков, <b>%d</b> этапов, <b>%d</b> меток, <b>%d</b> задач хуков, <b>%d</b> команд, <b>%d</b> задач по обновлению, <b>%d</b> присоединенных файлов.
dashboard.operation_name=Имя операции
dashboard.operation_switch=Переключить
dashboard.operation_run=Запуск
@ -960,16 +1244,29 @@ dashboard.clean_unbind_oauth=Очистить список незавершён
dashboard.clean_unbind_oauth_success=Все незавершённые связи OAuth были удалены.
dashboard.delete_inactivate_accounts=Удалить все неактивированные учетные записи
dashboard.delete_inactivate_accounts_success=Все неактивные учётные записи удалены.
dashboard.delete_repo_archives=Удаление всех архивов репозиториев
dashboard.delete_repo_archives_success=Все архивы репозиториев удалены.
dashboard.delete_missing_repos=Удалить все записи о репозиториях с отсутствующими файлами Git
dashboard.delete_missing_repos_success=Все записи о репозиториях с отсутствующими файлами Git удалены.
dashboard.git_gc_repos=Выполнить сборку мусора для всех репозиториев
dashboard.git_gc_repos_success=Сборка мусора выполнена для всех репозиториев.
dashboard.resync_all_sshkeys=Перезаписать файл '.ssh/authorized_keys' для SSH ключей Gitea. Не требуется для встроенного SSH сервера.
dashboard.resync_all_sshkeys_success=Все открытые ключи были перезаписаны.
dashboard.resync_all_hooks=Повторная синхронизация хуков pre-receive, update и post-receive во всех репозиториях.
dashboard.reinit_missing_repos=Переинициализировать все отсутствующие Git репозитории, для которых существуют записи
dashboard.reinit_missing_repos_success=Все отсутствующие репозитории Git, для которых существуют записи были повторно инициализированы.
dashboard.sync_external_users=Синхронизировать данные внешних пользователей
dashboard.sync_external_users_started=Запущена синхронизация внешних пользователей.
dashboard.git_fsck=Запустить проверку данных всех репозиториев (git fsck)
dashboard.git_fsck_started=Проверка данных репозиториев запущена.
dashboard.server_uptime=Время непрерывной работы сервера
dashboard.current_goroutine=Текущее количество Goroutines
dashboard.current_memory_usage=Текущее использование памяти
dashboard.total_memory_allocated=Всего памяти выделено
dashboard.memory_obtained=Памяти использовано
dashboard.pointer_lookup_times=Запросов указателя
dashboard.memory_allocate_times=Выделений памяти
dashboard.memory_free_times=Освобождений памяти
dashboard.current_heap_usage=Текущее использование кучи
dashboard.heap_memory_obtained=Получено динамической памяти
dashboard.heap_memory_idle=Не используется динамической памяти
@ -992,14 +1289,37 @@ dashboard.total_gc_pause=Итоговая задержка GC
dashboard.last_gc_pause=Последняя пауза сборщика мусора
dashboard.gc_times=Количество сборок мусора
users.user_manage_panel=Панель управления пользователями
users.new_account=Создать новый аккаунт
users.name=Имя пользователя
users.activated=Активирован
users.admin=Администратор
users.repos=Репозитории
users.created=Создано
users.last_login=Последний вход
users.never_login=Никогда не входил
users.send_register_notify=Отправить пользователю уведомление о регистрации
users.new_success=Учетная запись '%s' создана.
users.edit=Редактировать
users.auth_source=Источник аутентификации
users.local=Локальный
users.auth_login_name=Логин для авторизации
users.password_helper=Оставьте пустым, чтобы оставить без изменений.
users.update_profile_success=Профиль учетной записи обновлен успешно.
users.edit_account=Изменение учетной записи
users.max_repo_creation=Ограничение максимального количества создаваемых репозиториев
users.max_repo_creation_desc=(Установите -1 для использования стандартного глобального значения предела)
users.is_activated=Эта учетная запись активирована
users.prohibit_login=Этой учетной записи запрещен вход в систему
users.is_admin=У этой учетной записи есть права администратора
users.allow_git_hook=Эта учетная запись имеет разрешение на создание Git-хуков
users.allow_import_local=Пользователь имеет право импортировать локальные репозитории
users.allow_create_organization=Эта учетная запись имеет разрешения на создание организаций
users.update_profile=Обновить профиль учетной записи
users.delete_account=Удалить эту учетную запись
users.still_own_repo=На вашем аккаунте все еще остается один или более репозиториев, сначала вам нужно удалить или передать их.
users.still_has_org=Эта учетная запись все еще является членом одной или более организаций. Для продолжения, покиньте или удалите организации.
users.deletion_success=Учетная запись успешно удалена.
orgs.org_manage_panel=Управление организациями
orgs.name=Название
@ -1013,12 +1333,16 @@ repos.name=Название
repos.private=Личный
repos.watches=Следят
repos.stars=Звезды
repos.forks=Форки
repos.issues=Задачи
repos.size=Размер
auths.auth_manage_panel=Управление аутентификацией
auths.new=Добавить новый источник
auths.name=Имя
auths.type=Тип
auths.enabled=Включено
auths.syncenabled=Включить синхронизацию пользователей
auths.updated=Обновлено
auths.auth_type=Тип аутентификации
auths.auth_name=Имя аутентификации
@ -1030,6 +1354,7 @@ auths.bind_dn=Bind DN
auths.bind_password=Привязать пароль
auths.user_base=База для поиска пользователя
auths.user_dn=DN пользователя
auths.attribute_username_placeholder=Оставьте пустым, чтобы использовать имя пользователя для регистрации.
auths.use_paged_search=Использовать постраничный поиск
auths.search_page_size=Размер страницы
auths.filter=Фильтр пользователя
@ -1060,27 +1385,39 @@ auths.tip.facebook=Создайте новое приложение на https:/
auths.tip.github=Добавьте OAuth приложение на https://github.com/settings/applications/new
auths.tip.gitlab=Добавьте новое приложение на https://gitlab.com/profile/applications
auths.tip.openid_connect=Используйте OpenID Connect Discovery URL (<server>/.well-known/openid-configuration) для автоматической настройки входа OAuth
auths.edit=Обновить параметры аутентификации
auths.activated=Эта аутентификация активирована
auths.new_success=Метод аутентификации '%s' был добавлен.
auths.update_success=Параметры аутентификации обновлены.
auths.delete=Удалить этот источник аутентификации
auths.delete_auth_title=Удалить источник аутентификации
auths.delete_auth_desc=Этот источник аутентификации будет удален, вы уверены, что вы хотите продолжить?
auths.still_in_used=Эта проверка подлинности до сих пор используется некоторыми пользователями, удалите или преобразуйте этих пользователей в другой тип входа в систему.
auths.deletion_success=Канал аутентификации успешно удален!
auths.login_source_exist=Источник входа '%s' уже существует.
config.server_config=Конфигурация сервера
config.app_name=Название сайта
config.app_ver=Версия Gitea
config.app_url=Базовый URL-адрес Gitea
config.custom_conf=Путь к файлу конфигурации
config.domain=Домен SSH сервера
config.offline_mode=Локальный режим
config.disable_router_log=Отключение журнала маршрутизатора
config.run_user=Запуск от имени пользователя
config.run_mode=Режим выполнения
config.git_version=Версия Git
config.repo_root_path=Путь до папки репозиториев
config.lfs_root_path=Корневой путь LFS
config.static_file_root_path=Путь до папки со статичными файлами
config.log_file_root_path=Путь к журналу
config.script_type=Тип скрипта
config.reverse_auth_user=Имя пользователя для авторизации на reverse proxy
config.ssh_config=Конфигурация SSH
config.ssh_enabled=SSH включён
config.ssh_start_builtin_server=Использовать встроенный сервер
config.ssh_domain=Домен
config.ssh_port=Порт
config.ssh_listen_port=Прослушиваемый порт
config.ssh_root_path=Корневой путь
@ -1093,27 +1430,38 @@ config.db_config=Конфигурация базы данных
config.db_type=Тип
config.db_host=Сервер
config.db_name=Имя
config.db_user=Пользователь
config.db_ssl_mode=SSL
config.db_ssl_mode_helper=(только для "postgres")
config.db_path=Путь
config.db_path_helper=(для "sqlite3" и "tidb")
config.service_config=Сервисная конфигурация
config.register_email_confirm=Требуется подтверждение по электронной почте
config.disable_register=Отключить самостоятельную регистрацию
config.allow_only_external_registration=Включить регистрацию только через сторонние сервисы
config.enable_openid_signup=Включить cамостоятельную регистрацию OpenID
config.enable_openid_signin=Включение входа через OpenID
config.show_registration_button=Показать кнопку регистрации
config.require_sign_in_view=Для просмотра необходима авторизация
config.mail_notify=Почтовые уведомления
config.disable_key_size_check=Отключить проверку на минимальный размер ключа
config.enable_captcha=Включить CAPTCHA
config.active_code_lives=Время жизни кода для активации
config.reset_password_code_lives=Время жизни кода на сброс пароля
config.default_keep_email_private=Скрывать адреса электронной почты по умолчанию
config.default_allow_create_organization=Разрешить создание организаций по умолчанию
config.enable_timetracking=Включить отслеживание времени
config.default_enable_timetracking=Включить отслеживание времени по умолчанию
config.default_allow_only_contributors_to_track_time=Учитывать только участников разработки в подсчёте времени
config.no_reply_address=No-reply адрес
config.webhook_config=Конфигурация Webhooks
config.queue_length=Длина очереди
config.deliver_timeout=Задержка доставки
config.skip_tls_verify=Пропустить проверку TLS
config.mailer_config=Настройки почты
config.mailer_enabled=Почта включена
config.mailer_disable_helo=Отключить HELO
config.mailer_name=Имя
@ -1121,6 +1469,10 @@ config.mailer_host=Сервер
config.mailer_user=Пользователь
config.mailer_use_sendmail=Использовать Sendmail
config.mailer_sendmail_path=Путь к Sendmail
config.mailer_sendmail_args=Дополнительные аргументы для Sendmail
config.send_test_mail=Отправить тестовое письмо
config.test_mail_failed=Не удалось отправить тестовое письмо на «%s»: %v
config.test_mail_sent=Тестовое письмо было отправлено «%s».
config.oauth_config=Конфигурация OAuth
config.oauth_enabled=OAuth включен
@ -1140,6 +1492,7 @@ config.session_life_time=Время жизни сессии
config.https_only=Только HTTPS
config.cookie_life_time=Время жизни файла cookie
config.picture_config=Настройка изображения
config.picture_service=Сервис изображений
config.disable_gravatar=Отключить Gravatar
config.enable_federated_avatar=Включить внешние аватары
@ -1164,6 +1517,7 @@ monitor.name=Название
monitor.schedule=Расписание
monitor.next=Следующий раз
monitor.previous=Предыдущий раз
monitor.execute_times=Количество выполнений
monitor.process=Запущенные процессы
monitor.desc=Описание
monitor.start=Время начала
@ -1233,6 +1587,8 @@ remove_file=Удалить файл
notifications=Уведомления
unread=Непрочитанные
read=Прочитанные
no_unread=У вас нет непрочитанных уведомлений.
no_read=У вас нет прочитанных уведомлений.
pin=Прикрепить уведомление
mark_as_read=Отметить как прочитанное
mark_as_unread=Пометить как непрочитанное
@ -1241,8 +1597,10 @@ mark_all_as_read=Пометить все как прочитанные
[gpg]
error.extract_sign=Не удалось извлечь подпись
error.generate_hash=Не удается создать хэш коммита
error.no_committer_account=Аккаунт пользователя с таким Email не найден
error.no_gpg_keys_found=Не найден GPG ключ соответствующий данной подписи
error.not_signed_commit=Неподписанный коммит
error.failed_retrieval_gpg_keys=Не удалось получить соответствующий GPG ключ пользователя
[units]
error.unit_not_allowed=У вас нет доступа к этому разделу репозитория.

View File

@ -31,6 +31,7 @@ twofa=Двофакторна авторизація
twofa_scratch=Двофакторний одноразовий пароль
passcode=Код доступу
u2f_insert_key=Вставте ключ безпеки
u2f_reload=Оновити
repository=Репозиторій
@ -292,6 +293,7 @@ twofa=Двофакторна авторизація
account_link=Прив'язані облікові записи
organization=Організації
uid=Ідентифікатор Uid
u2f=Ключі безпеки
public_profile=Загальнодоступний профіль
profile_desc=Ваша адреса електронної пошти використовуватиметься для сповіщення та інших операцій.
@ -463,7 +465,7 @@ pulls=Запити на злиття
labels=Мітки
milestones=Етап
commits=Коміти
commit=Змина
commit=Коміт
releases=Релізи
file_raw=Неформатований
file_history=Історія
@ -560,6 +562,7 @@ issues.filter_sort.recentupdate=Нещодавно оновлено
issues.filter_sort.leastupdate=Найдавніше оновлені
issues.filter_sort.mostcomment=Найбільш коментовані
issues.filter_sort.leastcomment=Найменш коментовані
issues.filter_sort.mostforks=Найбільше форків
issues.action_open=Відкрити
issues.action_close=Закрити
issues.action_label=Мітка
@ -756,6 +759,7 @@ settings.use_internal_wiki=Використовувати вбудовані В
settings.use_external_wiki=Використовувати зовнішні Вікі
settings.external_wiki_url=URL зовнішньої вікі
settings.issues_desc=Увімкнути відстеження проблем в репозиторію
settings.use_internal_issue_tracker=Використовувати вбудовану систему відстеження проблем
settings.external_tracker_url=URL зовнішньої системи відстеження проблем
settings.tracker_url_format=Формат URL зовнішнього трекера задач
settings.tracker_issue_style.numeric=Цифровий
@ -986,12 +990,14 @@ last_page=Остання
total=Разом: %d
dashboard.statistic=Підсумок
dashboard.operations=Технічне обслуговування
dashboard.system_status=Статус системи
dashboard.operation_name=Назва операції
dashboard.operation_switch=Перемкнути
dashboard.operation_run=Запустити
dashboard.delete_inactivate_accounts=Видалити всі неактивні облікові записи
dashboard.delete_inactivate_accounts_success=Усі неактивні облікові записи успішно видалено.
dashboard.delete_repo_archives=Видалити всі архіви репозиторіїв
dashboard.git_gc_repos_success=Всі репозиторії завершили збирання сміття.
dashboard.server_uptime=Uptime серверу
dashboard.current_memory_usage=Поточне використання пам'яті

View File

@ -1028,7 +1028,9 @@
}
],
"responses": {
"200": {}
"200": {
"description": "success"
}
}
}
},
@ -1338,7 +1340,9 @@
}
],
"responses": {
"200": {}
"200": {
"description": "success"
}
}
}
},
@ -3261,7 +3265,9 @@
}
],
"responses": {
"200": {}
"200": {
"description": "success"
}
}
}
},
@ -4999,7 +5005,8 @@
"type": "string",
"description": "username of user",
"name": "username",
"in": "path"
"in": "path",
"required": true
}
],
"responses": {
@ -5273,7 +5280,8 @@
"type": "string",
"description": "username of the user",
"name": "username",
"in": "path"
"in": "path",
"required": true
}
],
"responses": {
@ -7376,11 +7384,13 @@
"description": "AccessTokenList represents a list of API access token."
},
"Attachment": {
"description": "Attachment",
"schema": {
"$ref": "#/definitions/Attachment"
}
},
"AttachmentList": {
"description": "AttachmentList",
"schema": {
"type": "array",
"items": {
@ -7389,11 +7399,13 @@
}
},
"Branch": {
"description": "Branch",
"schema": {
"$ref": "#/definitions/Branch"
}
},
"BranchList": {
"description": "BranchList",
"schema": {
"type": "array",
"items": {
@ -7402,11 +7414,13 @@
}
},
"Comment": {
"description": "Comment",
"schema": {
"$ref": "#/definitions/Comment"
}
},
"CommentList": {
"description": "CommentList",
"schema": {
"type": "array",
"items": {
@ -7415,11 +7429,13 @@
}
},
"DeployKey": {
"description": "DeployKey",
"schema": {
"$ref": "#/definitions/DeployKey"
}
},
"DeployKeyList": {
"description": "DeployKeyList",
"schema": {
"type": "array",
"items": {
@ -7428,6 +7444,7 @@
}
},
"EmailList": {
"description": "EmailList",
"schema": {
"type": "array",
"items": {
@ -7436,11 +7453,13 @@
}
},
"GPGKey": {
"description": "GPGKey",
"schema": {
"$ref": "#/definitions/GPGKey"
}
},
"GPGKeyList": {
"description": "GPGKeyList",
"schema": {
"type": "array",
"items": {
@ -7449,6 +7468,7 @@
}
},
"Hook": {
"description": "Hook",
"schema": {
"type": "array",
"items": {
@ -7457,6 +7477,7 @@
}
},
"HookList": {
"description": "HookList",
"schema": {
"type": "array",
"items": {
@ -7465,11 +7486,13 @@
}
},
"Issue": {
"description": "Issue",
"schema": {
"$ref": "#/definitions/Issue"
}
},
"IssueList": {
"description": "IssueList",
"schema": {
"type": "array",
"items": {
@ -7478,11 +7501,13 @@
}
},
"Label": {
"description": "Label",
"schema": {
"$ref": "#/definitions/Label"
}
},
"LabelList": {
"description": "LabelList",
"schema": {
"type": "array",
"items": {
@ -7494,11 +7519,13 @@
"description": "MarkdownRender is a rendered markdown document"
},
"Milestone": {
"description": "Milestone",
"schema": {
"$ref": "#/definitions/Milestone"
}
},
"MilestoneList": {
"description": "MilestoneList",
"schema": {
"type": "array",
"items": {
@ -7507,11 +7534,13 @@
}
},
"Organization": {
"description": "Organization",
"schema": {
"$ref": "#/definitions/Organization"
}
},
"OrganizationList": {
"description": "OrganizationList",
"schema": {
"type": "array",
"items": {
@ -7520,11 +7549,13 @@
}
},
"PublicKey": {
"description": "PublicKey",
"schema": {
"$ref": "#/definitions/PublicKey"
}
},
"PublicKeyList": {
"description": "PublicKeyList",
"schema": {
"type": "array",
"items": {
@ -7533,11 +7564,13 @@
}
},
"PullRequest": {
"description": "PullRequest",
"schema": {
"$ref": "#/definitions/PullRequest"
}
},
"PullRequestList": {
"description": "PullRequestList",
"schema": {
"type": "array",
"items": {
@ -7546,11 +7579,13 @@
}
},
"Release": {
"description": "Release",
"schema": {
"$ref": "#/definitions/Release"
}
},
"ReleaseList": {
"description": "ReleaseList",
"schema": {
"type": "array",
"items": {
@ -7559,11 +7594,13 @@
}
},
"Repository": {
"description": "Repository",
"schema": {
"$ref": "#/definitions/Repository"
}
},
"RepositoryList": {
"description": "RepositoryList",
"schema": {
"type": "array",
"items": {
@ -7572,6 +7609,7 @@
}
},
"SearchResults": {
"description": "SearchResults",
"schema": {
"$ref": "#/definitions/SearchResults"
},
@ -7580,16 +7618,19 @@
}
},
"ServerVersion": {
"description": "ServerVersion",
"schema": {
"$ref": "#/definitions/ServerVersion"
}
},
"Status": {
"description": "Status",
"schema": {
"$ref": "#/definitions/Status"
}
},
"StatusList": {
"description": "StatusList",
"schema": {
"type": "array",
"items": {
@ -7598,11 +7639,13 @@
}
},
"Team": {
"description": "Team",
"schema": {
"$ref": "#/definitions/Team"
}
},
"TeamList": {
"description": "TeamList",
"schema": {
"type": "array",
"items": {
@ -7611,11 +7654,13 @@
}
},
"TrackedTime": {
"description": "TrackedTime",
"schema": {
"$ref": "#/definitions/TrackedTime"
}
},
"TrackedTimeList": {
"description": "TrackedTimeList",
"schema": {
"type": "array",
"items": {
@ -7624,11 +7669,13 @@
}
},
"User": {
"description": "User",
"schema": {
"$ref": "#/definitions/User"
}
},
"UserList": {
"description": "UserList",
"schema": {
"type": "array",
"items": {
@ -7637,6 +7684,7 @@
}
},
"WatchInfo": {
"description": "WatchInfo",
"schema": {
"$ref": "#/definitions/WatchInfo"
}
@ -7670,6 +7718,7 @@
"description": "APINotFound is a not found empty response"
},
"parameterBodies": {
"description": "parameterBodies",
"schema": {
"$ref": "#/definitions/EditAttachmentOptions"
},

View File

@ -15,10 +15,7 @@ File(s): /vendor/plugins/clipboard/clipboard.min.js
Version: 1.5.9
File(s): /vendor/plugins/gitgraph/gitgraph.js
Version: 9b492e8bf1ddf7908a4997b8f83fa38a809a9da3
File(s): /vendor/plugins/autolink/autolink.js
Version: 741f66f
Version: 745f604212e2abfe2f0a59169ea530857b46625c
File(s): /vendor/plugins/vue/vue.min.js
Version: 2.1.10
@ -50,6 +47,9 @@ Version: 1.10.1
File(s): /vendor/plugins/pdfjs/
Version: 1.4.20
File(s): /vendor/plugins/u2f/
Version: 1.0.8
File(s): /vendor/assets/font-awesome/fonts/
Version: 4.6.0

View File

@ -45,11 +45,6 @@
<td><a href="https://github.com/bluef/gitgraph.js/blob/master/LICENSE">BSD 3-Clause</a></td>
<td><a href="https://github.com/bluef/gitgraph.js">gitgraph.js-latest</a></td>
</tr>
<tr>
<td><a href="/vendor/plugins/autolink/autolink.js">autolink.min.js</a></td>
<td><a href="https://github.com/egoist/autolink.js/blob/master/LICENSE">Expat</a></td>
<td><a href="https://github.com/egoist/autolink.js">autolink.js-latest</a></td>
</tr>
<tr>
<td><a href="/vendor/plugins/vue/vue.min.js">vue.min.js</a></td>
<td><a href="https://github.com/vuejs/vue/blob/dev/LICENSE">Expat</a></td>

View File

@ -126,7 +126,20 @@ var gitGraph = function (canvas, rawGraphList, config) {
!(row[i - 2] && row[i] === "_" && row[i - 2] === "|")) {}
return i;
}
};
var findLineBreak = function (row) {
if (!row) {
return -1
}
var i = row.length;
while (i-- &&
!(row[i - 1] && row[i - 2] && row[i] === " " && row[i - 1] === "|" && row[i - 2] === "_")) {}
return i;
};
var genNewFlow = function () {
var newId;
@ -138,21 +151,21 @@ var gitGraph = function (canvas, rawGraphList, config) {
return {id:newId, color:"#" + newId};
};
//draw method
var drawLineRight = function (x, y, color) {
//Draw methods
var drawLine = function (moveX, moveY, lineX, lineY, color) {
ctx.strokeStyle = color;
ctx.beginPath();
ctx.moveTo(x, y + config.unitSize / 2);
ctx.lineTo(x + config.unitSize, y + config.unitSize / 2);
ctx.moveTo(moveX, moveY);
ctx.lineTo(lineX, lineY);
ctx.stroke();
};
var drawLineRight = function (x, y, color) {
drawLine(x, y + config.unitSize / 2, x + config.unitSize, y + config.unitSize / 2, color);
};
var drawLineUp = function (x, y, color) {
ctx.strokeStyle = color;
ctx.beginPath();
ctx.moveTo(x, y + config.unitSize / 2);
ctx.lineTo(x, y - config.unitSize / 2);
ctx.stroke();
drawLine(x, y + config.unitSize / 2, x, y - config.unitSize / 2, color);
};
var drawNode = function (x, y, color) {
@ -166,37 +179,28 @@ var gitGraph = function (canvas, rawGraphList, config) {
};
var drawLineIn = function (x, y, color) {
ctx.strokeStyle = color;
ctx.beginPath();
ctx.moveTo(x + config.unitSize, y + config.unitSize / 2);
ctx.lineTo(x, y - config.unitSize / 2);
ctx.stroke();
drawLine(x + config.unitSize, y + config.unitSize / 2, x, y - config.unitSize / 2, color);
};
var drawLineOut = function (x, y, color) {
ctx.strokeStyle = color;
ctx.beginPath();
ctx.moveTo(x, y + config.unitSize / 2);
ctx.lineTo(x + config.unitSize, y - config.unitSize / 2);
ctx.stroke();
drawLine(x, y + config.unitSize / 2, x + config.unitSize, y - config.unitSize / 2, color);
};
var draw = function (graphList) {
var colomn, colomnIndex, prevColomn, condenseIndex;
var colomn, colomnIndex, prevColomn, condenseIndex, breakIndex = -1;
var x, y;
var color;
var nodePos, outPos;
var nodePos;
var tempFlow;
var prevRowLength = 0;
var flowSwapPos = -1;
var lastLinePos;
var i, k, l;
var i, l;
var condenseCurrentLength, condensePrevLength = 0, condenseNextLength = 0;
var inlineIntersect = false;
//initiate for first row
//initiate color array for first row
for (i = 0, l = graphList[0].length; i < l; i++) {
if (graphList[0][i] !== "_" && graphList[0][i] !== " ") {
flows.push(genNewFlow());
@ -275,6 +279,7 @@ var gitGraph = function (canvas, rawGraphList, config) {
colomnIndex = 0; //reset index
condenseIndex = 0;
condensePrevLength = 0;
breakIndex = -1; //reset break index
while (colomnIndex < currentRow.length) {
colomn = currentRow[colomnIndex];
@ -282,6 +287,18 @@ var gitGraph = function (canvas, rawGraphList, config) {
++condensePrevLength;
}
//check and fix line break in next row
if (colomn === "/" && currentRow[colomnIndex - 1] && currentRow[colomnIndex - 1] === "|") {
if ((breakIndex = findLineBreak(nextRow)) !== -1) {
nextRow.splice(breakIndex, 1);
}
}
//if line break found replace all '/' with '|' after breakIndex in previous row
if (breakIndex !== - 1 && colomn === "/" && colomnIndex > breakIndex) {
currentRow[colomnIndex] = "|";
colomn = "|";
}
if (colomn === " " &&
currentRow[colomnIndex + 1] &&
currentRow[colomnIndex + 1] === "_" &&
@ -294,7 +311,7 @@ var gitGraph = function (canvas, rawGraphList, config) {
colomn = "/";
}
//create new flow only when no intersetc happened
//create new flow only when no intersect happened
if (flowSwapPos === -1 &&
colomn === "/" &&
currentRow[colomnIndex - 1] &&
@ -415,4 +432,4 @@ var gitGraph = function (canvas, rawGraphList, config) {
init();
draw(graphList);
};
// @end-license
// @end-license

View File

@ -51,6 +51,7 @@ func ListUserOrgs(ctx *context.APIContext) {
// in: path
// description: username of user
// type: string
// required: true
// responses:
// "200":
// "$ref": "#/responses/OrganizationList"

View File

@ -36,7 +36,8 @@ func GetRawFile(ctx *context.APIContext) {
// type: string
// required: true
// responses:
// 200:
// 200:
// description: success
if !ctx.Repo.HasAccess() {
ctx.Status(404)
return
@ -85,7 +86,8 @@ func GetArchive(ctx *context.APIContext) {
// type: string
// required: true
// responses:
// 200:
// 200:
// description: success
repoPath := models.RepoPath(ctx.Params(":username"), ctx.Params(":reponame"))
gitRepo, err := git.OpenRepository(repoPath)
if err != nil {
@ -121,7 +123,8 @@ func GetEditorconfig(ctx *context.APIContext) {
// type: string
// required: true
// responses:
// 200:
// 200:
// description: success
ec, err := ctx.Repo.GetEditorconfig()
if err != nil {
if git.IsErrNotExist(err) {

View File

@ -8,60 +8,70 @@ import (
api "code.gitea.io/sdk/gitea"
)
// Issue
// swagger:response Issue
type swaggerResponseIssue struct {
// in:body
Body api.Issue `json:"body"`
}
// IssueList
// swagger:response IssueList
type swaggerResponseIssueList struct {
// in:body
Body []api.Issue `json:"body"`
}
// Comment
// swagger:response Comment
type swaggerResponseComment struct {
// in:body
Body api.Comment `json:"body"`
}
// CommentList
// swagger:response CommentList
type swaggerResponseCommentList struct {
// in:body
Body []api.Comment `json:"body"`
}
// Label
// swagger:response Label
type swaggerResponseLabel struct {
// in:body
Body api.Label `json:"body"`
}
// LabelList
// swagger:response LabelList
type swaggerResponseLabelList struct {
// in:body
Body []api.Label `json:"body"`
}
// Milestone
// swagger:response Milestone
type swaggerResponseMilestone struct {
// in:body
Body api.Milestone `json:"body"`
}
// MilestoneList
// swagger:response MilestoneList
type swaggerResponseMilestoneList struct {
// in:body
Body []api.Milestone `json:"body"`
}
// TrackedTime
// swagger:response TrackedTime
type swaggerResponseTrackedTime struct {
// in:body
Body api.TrackedTime `json:"body"`
}
// TrackedTimeList
// swagger:response TrackedTimeList
type swaggerResponseTrackedTimeList struct {
// in:body

View File

@ -8,36 +8,42 @@ import (
api "code.gitea.io/sdk/gitea"
)
// PublicKey
// swagger:response PublicKey
type swaggerResponsePublicKey struct {
// in:body
Body api.PublicKey `json:"body"`
}
// PublicKeyList
// swagger:response PublicKeyList
type swaggerResponsePublicKeyList struct {
// in:body
Body []api.PublicKey `json:"body"`
}
// GPGKey
// swagger:response GPGKey
type swaggerResponseGPGKey struct {
// in:body
Body api.GPGKey `json:"body"`
}
// GPGKeyList
// swagger:response GPGKeyList
type swaggerResponseGPGKeyList struct {
// in:body
Body []api.GPGKey `json:"body"`
}
// DeployKey
// swagger:response DeployKey
type swaggerResponseDeployKey struct {
// in:body
Body api.DeployKey `json:"body"`
}
// DeployKeyList
// swagger:response DeployKeyList
type swaggerResponseDeployKeyList struct {
// in:body

View File

@ -8,6 +8,7 @@ import (
api "code.gitea.io/sdk/gitea"
)
// ServerVersion
// swagger:response ServerVersion
type swaggerResponseServerVersion struct {
// in:body

View File

@ -12,6 +12,7 @@ import (
// not actually a response, just a hack to get go-swagger to include definitions
// of the various XYZOption structs
// parameterBodies
// swagger:response parameterBodies
type swaggerParameterBodies struct {
AddCollaboratorOption api.AddCollaboratorOption

View File

@ -8,24 +8,28 @@ import (
api "code.gitea.io/sdk/gitea"
)
// Organization
// swagger:response Organization
type swaggerResponseOrganization struct {
// in:body
Body api.Organization `json:"body"`
}
// OrganizationList
// swagger:response OrganizationList
type swaggerResponseOrganizationList struct {
// in:body
Body []api.Organization `json:"body"`
}
// Team
// swagger:response Team
type swaggerResponseTeam struct {
// in:body
Body api.Team `json:"body"`
}
// TeamList
// swagger:response TeamList
type swaggerResponseTeamList struct {
// in:body

View File

@ -8,95 +8,111 @@ import (
api "code.gitea.io/sdk/gitea"
)
// Repository
// swagger:response Repository
type swaggerResponseRepository struct {
// in:body
Body api.Repository `json:"body"`
}
// RepositoryList
// swagger:response RepositoryList
type swaggerResponseRepositoryList struct {
// in:body
Body []api.Repository `json:"body"`
}
// Branch
// swagger:response Branch
type swaggerResponseBranch struct {
// in:body
Body api.Branch `json:"body"`
}
// BranchList
// swagger:response BranchList
type swaggerResponseBranchList struct {
// in:body
Body []api.Branch `json:"body"`
}
// Hook
// swagger:response Hook
type swaggerResponseHook struct {
// in:body
Body []api.Branch `json:"body"`
}
// HookList
// swagger:response HookList
type swaggerResponseHookList struct {
// in:body
Body []api.Branch `json:"body"`
}
// Release
// swagger:response Release
type swaggerResponseRelease struct {
// in:body
Body api.Release `json:"body"`
}
// ReleaseList
// swagger:response ReleaseList
type swaggerResponseReleaseList struct {
// in:body
Body []api.Release `json:"body"`
}
// PullRequest
// swagger:response PullRequest
type swaggerResponsePullRequest struct {
// in:body
Body api.PullRequest `json:"body"`
}
// PullRequestList
// swagger:response PullRequestList
type swaggerResponsePullRequestList struct {
// in:body
Body []api.PullRequest `json:"body"`
}
// Status
// swagger:response Status
type swaggerResponseStatus struct {
// in:body
Body api.Status `json:"body"`
}
// StatusList
// swagger:response StatusList
type swaggerResponseStatusList struct {
// in:body
Body []api.Status `json:"body"`
}
// WatchInfo
// swagger:response WatchInfo
type swaggerResponseWatchInfo struct {
// in:body
Body api.WatchInfo `json:"body"`
}
// SearchResults
// swagger:response SearchResults
type swaggerResponseSearchResults struct {
Body api.SearchResults `json:"body"`
}
// AttachmentList
// swagger:response AttachmentList
type swaggerResponseAttachmentList struct {
//in: body
Body []api.Attachment `json:"body"`
}
// Attachment
// swagger:response Attachment
type swaggerResponseAttachment struct {
//in: body

View File

@ -8,18 +8,21 @@ import (
api "code.gitea.io/sdk/gitea"
)
// User
// swagger:response User
type swaggerResponseUser struct {
// in:body
Body api.User `json:"body"`
}
// UserList
// swagger:response UserList
type swaggerResponseUserList struct {
// in:body
Body []api.User `json:"body"`
}
// EmailList
// swagger:response EmailList
type swaggerResponseEmailList struct {
// in:body

View File

@ -43,6 +43,7 @@ func GetWatchedRepos(ctx *context.APIContext) {
// type: string
// in: path
// description: username of the user
// required: true
// responses:
// "200":
// "$ref": "#/responses/RepositoryList"

View File

@ -223,6 +223,10 @@ func renderFile(ctx *context.Context, entry *git.TreeEntry, treeLink, rawLink st
var output bytes.Buffer
lines := strings.Split(fileContent, "\n")
//Remove blank line at the end of file
if len(lines) > 0 && lines[len(lines)-1] == "" {
lines = lines[:len(lines)-1]
}
for index, line := range lines {
line = gotemplate.HTMLEscapeString(line)
if index != len(lines)-1 {

View File

@ -141,7 +141,7 @@
<div class="ui top secondary stackable main menu following bar light">
<div class="ui container" id="navbar">
<div class="item brand" style="justify-content: space-between;">
<a href="{{AppSubUrl}}/" href="{{AppSubUrl}}/">
<a href="{{AppSubUrl}}/">
<img class="ui mini image" src="{{AppSubUrl}}/img/gitea-sm.png">
</a>
<div class="ui basic icon button mobile-only" id="navbar-expand-toggle">