Merge branch 'master' into master

This commit is contained in:
kolaente 2018-06-11 10:55:44 +02:00 committed by GitHub
commit 6514da40b4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
13 changed files with 172 additions and 17 deletions

View File

@ -201,6 +201,10 @@ an advisor has time to code review, we will gladly welcome them back
to the maintainers team. If a maintainer is inactive for more than 3 to the maintainers team. If a maintainer is inactive for more than 3
months and forgets to leave the maintainers team, the owners may move months and forgets to leave the maintainers team, the owners may move
him or her from the maintainers team to the advisors team. him or her from the maintainers team to the advisors team.
For security reasons, Maintainers should use 2FA for their accounts and
if possible provide gpg signed commits.
https://help.github.com/articles/securing-your-account-with-two-factor-authentication-2fa/
https://help.github.com/articles/signing-commits-with-gpg/
## Owners ## Owners
@ -211,6 +215,9 @@ be the main owner, and the other two the assistant owners. When the new
owners have been elected, the old owners will give up ownership to the owners have been elected, the old owners will give up ownership to the
newly elected owners. If an owner is unable to do so, the other owners newly elected owners. If an owner is unable to do so, the other owners
will assist in ceding ownership to the newly elected owners. will assist in ceding ownership to the newly elected owners.
For security reasons, Owners or any account with write access (like a bot)
must use 2FA.
https://help.github.com/articles/securing-your-account-with-two-factor-authentication-2fa/
After the election, the new owners should proactively agree After the election, the new owners should proactively agree
with our [CONTRIBUTING](CONTRIBUTING.md) requirements in the with our [CONTRIBUTING](CONTRIBUTING.md) requirements in the

View File

@ -12,13 +12,6 @@
[![Help Contribute to Open Source](https://www.codetriage.com/go-gitea/gitea/badges/users.svg)](https://www.codetriage.com/go-gitea/gitea) [![Help Contribute to Open Source](https://www.codetriage.com/go-gitea/gitea/badges/users.svg)](https://www.codetriage.com/go-gitea/gitea)
[![Become a backer/sponsor of gitea](https://opencollective.com/gitea/tiers/backer/badge.svg?label=backer&color=brightgreen)](https://opencollective.com/gitea) [![Become a backer/sponsor of gitea](https://opencollective.com/gitea/tiers/backer/badge.svg?label=backer&color=brightgreen)](https://opencollective.com/gitea)
| | | |
|:---:|:---:|:---:|
|![Dashboard](https://image.ibb.co/dms6DG/1.png)|![Repository](https://image.ibb.co/m6MSLw/2.png)|![Commits History](https://image.ibb.co/cjrSLw/3.png)|
|![Branches](https://image.ibb.co/e6vbDG/4.png)|![Issues](https://image.ibb.co/bJTJSb/5.png)|![Pull Request View](https://image.ibb.co/e02dSb/6.png)|
|![Releases](https://image.ibb.co/cUzgfw/7.png)|![Activity](https://image.ibb.co/eZgGDG/8.png)|![Wiki](https://image.ibb.co/dYV9YG/9.png)|
|![Diff](https://image.ibb.co/ewA9YG/10.png)|![Organization](https://image.ibb.co/ceOwDG/11.png)|![Profile](https://image.ibb.co/c44Q7b/12.png)|
## Purpose ## Purpose
The goal of this project is to make the easiest, fastest, and most The goal of this project is to make the easiest, fastest, and most
@ -102,3 +95,13 @@ Gitea is pronounced [/ɡɪti:/](https://youtu.be/EM71-2uDAoY) as in "gi-tea"
This project is licensed under the MIT License. This project is licensed under the MIT License.
See the [LICENSE](https://github.com/go-gitea/gitea/blob/master/LICENSE) file See the [LICENSE](https://github.com/go-gitea/gitea/blob/master/LICENSE) file
for the full license text. for the full license text.
## Screenshots
Looking for an overview of the interface? Check it out!
| | | |
|:---:|:---:|:---:|
|![Dashboard](https://image.ibb.co/dms6DG/1.png)|![Repository](https://image.ibb.co/m6MSLw/2.png)|![Commits History](https://image.ibb.co/cjrSLw/3.png)|
|![Branches](https://image.ibb.co/e6vbDG/4.png)|![Issues](https://image.ibb.co/bJTJSb/5.png)|![Pull Request View](https://image.ibb.co/e02dSb/6.png)|
|![Releases](https://image.ibb.co/cUzgfw/7.png)|![Activity](https://image.ibb.co/eZgGDG/8.png)|![Wiki](https://image.ibb.co/dYV9YG/9.png)|
|![Diff](https://image.ibb.co/ewA9YG/10.png)|![Organization](https://image.ibb.co/ceOwDG/11.png)|![Profile](https://image.ibb.co/c44Q7b/12.png)|

View File

@ -73,6 +73,11 @@ var (
Value: "", Value: "",
Usage: "New password to set for user", Usage: "New password to set for user",
}, },
cli.StringFlag{
Name: "config, c",
Value: "custom/conf/app.ini",
Usage: "Custom configuration file path",
},
}, },
} }
@ -123,6 +128,10 @@ func runChangePassword(c *cli.Context) error {
return err return err
} }
if c.IsSet("config") {
setting.CustomConf = c.String("config")
}
if err := initDB(); err != nil { if err := initDB(); err != nil {
return err return err
} }

View File

@ -20,7 +20,7 @@ file can be unpacked and used to restore an instance.
## Backup Command (`dump`) ## Backup Command (`dump`)
Switch to the user running gitea: `su git`. Run `./gitea dump` in the gitea installation Switch to the user running gitea: `su git`. Run `./gitea dump -c /path/to/app.ini` in the gitea installation
directory. There should be some output similar to the following: directory. There should be some output similar to the following:
``` ```
@ -34,7 +34,8 @@ directory. There should be some output similar to the following:
Inside the `gitea-dump-1482906742.zip` file, will be the following: Inside the `gitea-dump-1482906742.zip` file, will be the following:
* `custom/conf/app.ini` - Server config. * `custom` - All config or customerize files in `custom/`.
* `data` - Data directory in <GITEA_WORK_DIR>, except sessions if you are using file session. This directory includes `attachments`, `avatars`, `lfs`, `indexers`, sqlite file if you are using sqlite.
* `gitea-db.sql` - SQL dump of database * `gitea-db.sql` - SQL dump of database
* `gitea-repo.zip` - Complete copy of the repository directory. * `gitea-repo.zip` - Complete copy of the repository directory.
* `log/` - Various logs. They are not needed for a recovery or migration. * `log/` - Various logs. They are not needed for a recovery or migration.

View File

@ -0,0 +1,60 @@
---
date: "2018-06-06T09:33:00+08:00"
title: "使用: 备份与恢复"
slug: "backup-and-restore"
weight: 11
toc: true
draft: false
menu:
sidebar:
parent: "usage"
name: "备份与恢复"
weight: 11
identifier: "backup-and-restore"
---
# 备份与恢复
Gitea 已经实现了 `dump` 命令可以用来备份所有需要的文件到一个zip压缩文件。该压缩文件可以被用来进行数据恢复。
## 备份命令 (`dump`)
先转到git用户的权限: `su git`. 再Gitea目录运行 `./gitea dump`。一般会显示类似如下的输出:
```
2016/12/27 22:32:09 Creating tmp work dir: /tmp/gitea-dump-417443001
2016/12/27 22:32:09 Dumping local repositories.../home/git/gitea-repositories
2016/12/27 22:32:22 Dumping database...
2016/12/27 22:32:22 Packing dump files...
2016/12/27 22:32:34 Removing tmp work dir: /tmp/gitea-dump-417443001
2016/12/27 22:32:34 Finish dumping in file gitea-dump-1482906742.zip
```
最后生成的 `gitea-dump-1482906742.zip` 文件将会包含如下内容:
* `custom` - 所有保存在 `custom/` 目录下的配置和自定义的文件。
* `data` - 数据目录下的所有内容不包含使用文件session的文件。该目录包含 `attachments`, `avatars`, `lfs`, `indexers`, 如果使用sqlite 还会包含 sqlite 数据库文件。
* `gitea-db.sql` - 数据库dump出来的 SQL。
* `gitea-repo.zip` - Git仓库压缩文件。
* `log/` - Logs文件如果用作迁移不是必须的。
中间备份文件将会在临时目录进行创建,如果您要重新指定临时目录,可以用 `--tempdir` 参数,或者用 `TMPDIR` 环境变量。
## Restore Command (`restore`)
当前还没有恢复命令,恢复需要人工进行。主要是把文件和数据库进行恢复。
例如:
```
apt-get install gitea
unzip gitea-dump-1482906742.zip
cd gitea-dump-1482906742
mv custom/conf/app.ini /etc/gitea/conf/app.ini
unzip gitea-repo.zip
mv gitea-repo/* /var/lib/gitea/repositories/
chown -R gitea:gitea /etc/gitea/conf/app.ini /var/lib/gitea/repositories/
mysql -u$USER -p$PASS $DATABASE <gitea-db.sql
# or sqlite3 $DATABASE_PATH <gitea-db.sql
service gitea restart
```

View File

@ -62,6 +62,7 @@ Admin operations:
- Options: - Options:
- `--username value`, `-u value`: Username. Required. - `--username value`, `-u value`: Username. Required.
- `--password value`, `-p value`: New password. Required. - `--password value`, `-p value`: New password. Required.
- `--config path`: Gitea configuration file path. Optional. (default: custom/conf/app.ini).
- Examples: - Examples:
- `gitea admin change-password --username myname --password asecurepassword` - `gitea admin change-password --username myname --password asecurepassword`
- `regenerate` - `regenerate`

View File

@ -102,7 +102,7 @@ func IsErrEmailAlreadyUsed(err error) bool {
} }
func (err ErrEmailAlreadyUsed) Error() string { func (err ErrEmailAlreadyUsed) Error() string {
return fmt.Sprintf("e-mail has been used [email: %s]", err.Email) return fmt.Sprintf("e-mail already in use [email: %s]", err.Email)
} }
// ErrOpenIDAlreadyUsed represents a "OpenIDAlreadyUsed" kind of error. // ErrOpenIDAlreadyUsed represents a "OpenIDAlreadyUsed" kind of error.
@ -117,7 +117,7 @@ func IsErrOpenIDAlreadyUsed(err error) bool {
} }
func (err ErrOpenIDAlreadyUsed) Error() string { func (err ErrOpenIDAlreadyUsed) Error() string {
return fmt.Sprintf("OpenID has been used [oid: %s]", err.OpenID) return fmt.Sprintf("OpenID already in use [oid: %s]", err.OpenID)
} }
// ErrUserOwnRepos represents a "UserOwnRepos" kind of error. // ErrUserOwnRepos represents a "UserOwnRepos" kind of error.

View File

@ -693,6 +693,8 @@ issues.filter_sort.recentupdate=Kürzlich aktualisiert
issues.filter_sort.leastupdate=Am Längsten nicht aktualisiert issues.filter_sort.leastupdate=Am Längsten nicht aktualisiert
issues.filter_sort.mostcomment=Am meisten kommentiert issues.filter_sort.mostcomment=Am meisten kommentiert
issues.filter_sort.leastcomment=Am wenigsten kommentiert issues.filter_sort.leastcomment=Am wenigsten kommentiert
issues.filter_sort.moststars=Meiste Favoriten
issues.filter_sort.feweststars=Wenigste Favoriten
issues.filter_sort.mostforks=Meiste Forks issues.filter_sort.mostforks=Meiste Forks
issues.filter_sort.fewestforks=Wenigste Forks issues.filter_sort.fewestforks=Wenigste Forks
issues.action_open=Öffnen issues.action_open=Öffnen
@ -1388,6 +1390,7 @@ auths.attribute_username_placeholder=Leerlassen, um den in Gitea eingegebenen Be
auths.attribute_name=Vornamensattribut auths.attribute_name=Vornamensattribut
auths.attribute_surname=Nachnamensattribut auths.attribute_surname=Nachnamensattribut
auths.attribute_mail=E-Mail Attribut auths.attribute_mail=E-Mail Attribut
auths.attribute_ssh_public_key=Öffentliches SSH-Schlüssel Attribut
auths.attributes_in_bind=Hole Attribute im Bind-Kontext auths.attributes_in_bind=Hole Attribute im Bind-Kontext
auths.use_paged_search=Seitensuche verwenden auths.use_paged_search=Seitensuche verwenden
auths.search_page_size=Seitengröße auths.search_page_size=Seitengröße

View File

@ -213,7 +213,7 @@ send_reset_mail = Click here to resend your password reset email
reset_password = Reset Your Password reset_password = Reset Your Password
invalid_code = Your confirmation code is invalid or has expired. invalid_code = Your confirmation code is invalid or has expired.
reset_password_helper = Click here to reset your password reset_password_helper = Click here to reset your password
password_too_short = Password length cannot be less then %d. password_too_short = Password length cannot be less than %d characters.
non_local_account = Non-local users can not update their password through the Gitea web interface. non_local_account = Non-local users can not update their password through the Gitea web interface.
verify = Verify verify = Verify
scratch_code = Scratch code scratch_code = Scratch code

View File

@ -32,6 +32,13 @@ twofa_scratch=Двофакторний одноразовий пароль
passcode=Код доступу passcode=Код доступу
u2f_insert_key=Вставте ключ безпеки u2f_insert_key=Вставте ключ безпеки
u2f_sign_in=Натисніть кнопку на ключі безпеки. Якщо не вдається знайти кнопки, повторно вставте ключ.
u2f_press_button=Будь ласка, натисніть кнопку на ключі захисту...
u2f_use_twofa=Використовуйте дво-факторний код з вашого телефону
u2f_error=Неможливо прочитати ваш ключ безпеки!
u2f_unsupported_browser=Ваш браузер не підтримує U2F ключі. Будь ласка, спробуйте інший браузер.
u2f_error_1=Сталася невідома помилка. Спробуйте ще раз.
u2f_error_3=Сервер не може обробити, ваш запит.
u2f_reload=Оновити u2f_reload=Оновити
repository=Репозиторій repository=Репозиторій
@ -132,6 +139,7 @@ confirm_password=Підтвердження пароля
admin_email=Адреса електронної пошти admin_email=Адреса електронної пошти
install_btn_confirm=Встановлення Gitea install_btn_confirm=Встановлення Gitea
test_git_failed=Не в змозі перевірити 'git' команду: %v test_git_failed=Не в змозі перевірити 'git' команду: %v
invalid_db_setting=Налаштування бази даних є некоректними: %v
save_config_failed=Не в змозі зберегти конфігурацію: %v save_config_failed=Не в змозі зберегти конфігурацію: %v
invalid_admin_setting=Неприпустимі налаштування облікового запису адміністратора: %v invalid_admin_setting=Неприпустимі налаштування облікового запису адміністратора: %v
install_success=Ласкаво просимо! Дякуємо вам за вибір Gitea. Розважайтеся, і будьте обережні! install_success=Ласкаво просимо! Дякуємо вам за вибір Gitea. Розважайтеся, і будьте обережні!
@ -257,8 +265,14 @@ team_name_been_taken=Назва команди вже зайнято.
email_been_used=Ця електронна адреса вже використовується. email_been_used=Ця електронна адреса вже використовується.
openid_been_used=OpenID адреса '%s' вже використовується. openid_been_used=OpenID адреса '%s' вже використовується.
username_password_incorrect=Неправильне ім'я користувача або пароль. username_password_incorrect=Неправильне ім'я користувача або пароль.
enterred_invalid_repo_name=Невірно введено ім'я репозиторію.
enterred_invalid_owner_name=Ім'я нового власника не є дійсним.
enterred_invalid_password=Введений вами пароль некоректний.
user_not_exist=Даний користувач не існує. user_not_exist=Даний користувач не існує.
cannot_add_org_to_team=Організацію неможливо додати як учасника команди.
invalid_ssh_key=Неможливо перевірити ваш SSH ключ: %s
invalid_gpg_key=Неможливо перевірити ваш GPG ключ: %s
auth_failed=Помилка автентифікації: %v auth_failed=Помилка автентифікації: %v
@ -331,9 +345,13 @@ primary=Основний
primary_email=Зробити основним primary_email=Зробити основним
delete_email=Видалити delete_email=Видалити
email_deletion=Видалити адресу електронної пошти email_deletion=Видалити адресу електронної пошти
openid_deletion=Видалити адресу OpenID
add_new_email=Додати нову адресу електронної пошти add_new_email=Додати нову адресу електронної пошти
add_new_openid=Додати новий OpenID URI
add_email=Додати адресу електронної пошти add_email=Додати адресу електронної пошти
add_openid=Додати OpenID URI
add_email_confirmation_sent=Електронний лист із підтвердженням було відправлено на '%s', будь ласка, перевірте вашу поштову скриньку протягом наступних %s, щоб підтвердити адресу. add_email_confirmation_sent=Електронний лист із підтвердженням було відправлено на '%s', будь ласка, перевірте вашу поштову скриньку протягом наступних %s, щоб підтвердити адресу.
add_email_success=Додано нову адресу електронної пошти.
keep_email_private=Приховати адресу електронної пошти keep_email_private=Приховати адресу електронної пошти
keep_email_private_popup=Вашу адресу електронної пошти буде приховано від інших користувачів. keep_email_private_popup=Вашу адресу електронної пошти буде приховано від інших користувачів.
@ -349,6 +367,7 @@ key_id=ID ключа
key_name=Ім'я ключа key_name=Ім'я ключа
key_content=Зміст key_content=Зміст
add_key_success=SSH ключ '%s' додано. add_key_success=SSH ключ '%s' додано.
add_gpg_key_success=GPG ключ '%s' додано.
delete_key=Видалити delete_key=Видалити
ssh_key_deletion=Видалити SSH ключ ssh_key_deletion=Видалити SSH ключ
gpg_key_deletion=Видалити GPG ключ gpg_key_deletion=Видалити GPG ключ
@ -382,15 +401,20 @@ access_token_deletion=Видалити токен доступу
twofa_disable=Вимкнути двофакторну автентифікацію twofa_disable=Вимкнути двофакторну автентифікацію
or_enter_secret=Або введіть секрет: %s or_enter_secret=Або введіть секрет: %s
passcode_invalid=Некоректний пароль. Спробуй ще раз.
u2f_register_key=Додати ключ безпеки
u2f_nickname=Псевдонім u2f_nickname=Псевдонім
u2f_delete_key=Видалити ключ безпеки
manage_account_links=Керування обліковими записами manage_account_links=Керування обліковими записами
remove_account_link=Видалити облікові записи remove_account_link=Видалити облікові записи
orgs_none=Ви не є учасником будь-якої організації. orgs_none=Ви не є учасником будь-якої організації.
repos_none=У вас немає власних репозиторіїв
delete_account=Видалити ваш обліковий запис delete_account=Видалити ваш обліковий запис
delete_prompt=Ця операція остаточно видалить обліковий запис користувача. Це <strong>НЕ МОЖЛИВО</strong> відмінити.
confirm_delete_account=Підтвердження видалення confirm_delete_account=Підтвердження видалення
delete_account_title=Видалити цей обліковий запис delete_account_title=Видалити цей обліковий запис
@ -414,6 +438,7 @@ create_repo=Створити репозиторій
default_branch=Головна гілка default_branch=Головна гілка
mirror_prune=Очистити mirror_prune=Очистити
mirror_interval=Інтервал дзеркалювання (доступні значення 'h', 'm', 's') mirror_interval=Інтервал дзеркалювання (доступні значення 'h', 'm', 's')
mirror_interval_invalid=Інтервал дзеркалювання є неприпустимим.
mirror_address=Клонування з URL-адреси mirror_address=Клонування з URL-адреси
mirror_last_synced=Остання синхронізація mirror_last_synced=Остання синхронізація
watchers=Спостерігачі watchers=Спостерігачі
@ -423,6 +448,7 @@ pick_reaction=Залиште свою оцінку
reactions_more=додати %d більше reactions_more=додати %d більше
form.reach_limit_of_creation=Ви досягли максимальної кількості %d створених репозиторіїв. form.reach_limit_of_creation=Ви досягли максимальної кількості %d створених репозиторіїв.
form.name_reserved=Назву репозиторію '%s' зарезервовано.
need_auth=Клонувати з авторизацією need_auth=Клонувати з авторизацією
migrate_type=Тип міграції migrate_type=Тип міграції
@ -439,6 +465,7 @@ mirror_from=дзеркало
forked_from=форк від forked_from=форк від
fork_from_self=Ви не можете форкнути репозиторій, так як ви його власник. fork_from_self=Ви не можете форкнути репозиторій, так як ви його власник.
copy_link=Копіювати copy_link=Копіювати
copy_link_success=Посилання було скопійоване
copy_link_error=Натисніть ⌘-C або Ctrl-C, щоб скопіювати copy_link_error=Натисніть ⌘-C або Ctrl-C, щоб скопіювати
copied=Скопійовано copied=Скопійовано
unwatch=Не стежити unwatch=Не стежити
@ -472,6 +499,8 @@ file_raw=Неформатований
file_history=Історія file_history=Історія
file_view_raw=Перегляд Raw file_view_raw=Перегляд Raw
file_permalink=Постійне посилання file_permalink=Постійне посилання
file_too_large=Цей файл завеликий щоб бути показаним.
video_not_supported_in_browser=Ваш браузер не підтримує тег 'video' HTML5.
stored_lfs=Збережено з Git LFS stored_lfs=Збережено з Git LFS
commit_graph=Графік комітів commit_graph=Графік комітів
@ -479,6 +508,7 @@ editor.new_file=Новий файл
editor.upload_file=Завантажити файл editor.upload_file=Завантажити файл
editor.edit_file=Редагування файлу editor.edit_file=Редагування файлу
editor.preview_changes=Попередній перегляд змін editor.preview_changes=Попередній перегляд змін
editor.cannot_edit_non_text_files=Бінарні файли не можливо редагувати у веб-інтерфейсі.
editor.edit_this_file=Редагувати файл editor.edit_this_file=Редагувати файл
editor.must_be_on_a_branch=Ви повинні бути у гілці щоб зробити, або запропонувати зміни до цього файлу. editor.must_be_on_a_branch=Ви повинні бути у гілці щоб зробити, або запропонувати зміни до цього файлу.
editor.fork_before_edit=Необхідно зробити форк цього репозиторій, щоб внести або запропонувати зміни в цей файл. editor.fork_before_edit=Необхідно зробити форк цього репозиторій, щоб внести або запропонувати зміни в цей файл.
@ -498,7 +528,10 @@ editor.commit_directly_to_this_branch=Зробіть коміт прямо в г
editor.create_new_branch=Створити <strong>нову гілку</strong> для цього коміту та відкрити запит на злиття. editor.create_new_branch=Створити <strong>нову гілку</strong> для цього коміту та відкрити запит на злиття.
editor.new_branch_name_desc=Ім'я нової гілки… editor.new_branch_name_desc=Ім'я нової гілки…
editor.cancel=Відміна editor.cancel=Відміна
editor.filename_cannot_be_empty=Ім'я файлу не може бути порожнім.
editor.branch_already_exists=Гілка '%s' вже присутня в репозиторії. editor.branch_already_exists=Гілка '%s' вже присутня в репозиторії.
editor.directory_is_a_file=Ім'я каталогу "%s" уже використовується як ім'я файлу в цьому репозиторії.
editor.file_already_exists=Файл з назвою "%s" уже існує у цьому репозиторію.
editor.no_changes_to_show=Нема змін для показу. editor.no_changes_to_show=Нема змін для показу.
editor.fail_to_update_file=Не вдалося оновити/створити файл '%s' через помилку: %v editor.fail_to_update_file=Не вдалося оновити/створити файл '%s' через помилку: %v
editor.add_subdir=Додати каталог… editor.add_subdir=Додати каталог…
@ -514,6 +547,7 @@ commits.message=Повідомлення
commits.date=Дата commits.date=Дата
commits.older=Давніше commits.older=Давніше
commits.newer=Новіше commits.newer=Новіше
commits.signed_by=Підписано
ext_issues=Зов. Проблеми ext_issues=Зов. Проблеми
@ -606,6 +640,7 @@ issues.label_edit=Редагувати
issues.label_delete=Видалити issues.label_delete=Видалити
issues.label_modify=Редагувати мітку issues.label_modify=Редагувати мітку
issues.label_deletion=Видалити мітку issues.label_deletion=Видалити мітку
issues.label_deletion_success=Мітку було видалено.
issues.label.filter_sort.alphabetically=За алфавітом issues.label.filter_sort.alphabetically=За алфавітом
issues.label.filter_sort.reverse_alphabetically=З кінця алфавіту issues.label.filter_sort.reverse_alphabetically=З кінця алфавіту
issues.label.filter_sort.by_size=Розмір issues.label.filter_sort.by_size=Розмір
@ -854,6 +889,8 @@ settings.add_deploy_key=Додати ключ для розгортування
settings.is_writable=Увімкнути доступ для запису settings.is_writable=Увімкнути доступ для запису
settings.title=Заголовок settings.title=Заголовок
settings.deploy_key_content=Зміст settings.deploy_key_content=Зміст
settings.deploy_key_deletion=Видалити ключ для розгортування
settings.deploy_key_deletion_success=Ключі розгортання було видалено.
settings.branches=Гілки settings.branches=Гілки
settings.protected_branch=Захист гілки settings.protected_branch=Захист гілки
settings.protected_branch_can_push=Дозволити push? settings.protected_branch_can_push=Дозволити push?
@ -863,6 +900,7 @@ settings.protect_whitelist_search_users=Пошук користувачів…
settings.protect_whitelist_search_teams=Пошук команд… settings.protect_whitelist_search_teams=Пошук команд…
settings.add_protected_branch=Увімкнути захист settings.add_protected_branch=Увімкнути захист
settings.delete_protected_branch=Вимкнути захист settings.delete_protected_branch=Вимкнути захист
settings.protected_branch_deletion=Відключити захист гілки
settings.choose_branch=Оберіть гілку… settings.choose_branch=Оберіть гілку…
settings.no_protected_branch=Немає захищених гілок. settings.no_protected_branch=Немає захищених гілок.
@ -902,6 +940,8 @@ release.save_draft=Зберегти чернетку
release.edit_release=Оновити реліз release.edit_release=Оновити реліз
release.delete_release=Видалити реліз release.delete_release=Видалити реліз
release.deletion=Видалити реліз release.deletion=Видалити реліз
release.deletion_success=Реліз, було видалено.
release.tag_name_invalid=Неприпустиме ім'я тега.
release.downloads=Завантажити release.downloads=Завантажити
branch.name=Ім'я гілки branch.name=Ім'я гілки
@ -909,9 +949,13 @@ branch.search=Пошук гілок
branch.delete_head=Видалити branch.delete_head=Видалити
branch.delete=Видалити гілку '%s' branch.delete=Видалити гілку '%s'
branch.delete_html=Видалити гілку branch.delete_html=Видалити гілку
branch.deletion_success=Гілка '%s' видалена.
branch.deletion_failed=Не вдалося видалити гілку "%s".
branch.create_from=з '%s' branch.create_from=з '%s'
branch.create_success=Створено гілку "%s".
branch.branch_already_exists=Гілка '%s' вже присутня в репозиторії. branch.branch_already_exists=Гілка '%s' вже присутня в репозиторії.
branch.deleted_by=Видалено %s branch.deleted_by=Видалено %s
branch.restore_success=Гілку "%s" відновлено.
topic.manage_topics=Керувати тематичними мітками topic.manage_topics=Керувати тематичними мітками
topic.done=Готово topic.done=Готово
@ -931,9 +975,11 @@ org_desc=Опис
team_name=Назва команди team_name=Назва команди
team_desc=Опис team_desc=Опис
team_name_helper=Назва команди має бути простою та зрозумілою. team_name_helper=Назва команди має бути простою та зрозумілою.
team_desc_helper=Опишіть мету або роль команди.
team_permission_desc=Права доступу team_permission_desc=Права доступу
team_unit_desc=Дозволити доступ до розділів репозиторію team_unit_desc=Дозволити доступ до розділів репозиторію
form.name_reserved=Назву організації '%s' зарезервовано.
settings=Налаштування settings=Налаштування
settings.options=Організація settings.options=Організація
@ -941,6 +987,9 @@ settings.full_name=Повне ім'я
settings.website=Веб-сайт settings.website=Веб-сайт
settings.location=Розташування settings.location=Розташування
settings.update_settings=Оновити налаштування settings.update_settings=Оновити налаштування
settings.update_setting_success=Налаштування організації оновлені.
settings.change_orgname_prompt=Ця зміна змінить посилання на організацію.
settings.update_avatar_success=Аватар організації оновлений.
settings.delete=Видалити організацію settings.delete=Видалити організацію
settings.delete_account=Видалити цю організацію settings.delete_account=Видалити цю організацію
settings.confirm_delete_account=Підтвердіть видалення settings.confirm_delete_account=Підтвердіть видалення
@ -972,6 +1021,7 @@ teams.update_settings=Оновити налаштування
teams.delete_team=Видалити команду teams.delete_team=Видалити команду
teams.add_team_member=Додати учасника команди teams.add_team_member=Додати учасника команди
teams.delete_team_title=Видалити команду teams.delete_team_title=Видалити команду
teams.delete_team_success=Команду було видалено.
teams.read_permission_desc=Ця команда має доступ для <strong>читання</strong>: учасники можуть переглядати та клонувати репозиторії. teams.read_permission_desc=Ця команда має доступ для <strong>читання</strong>: учасники можуть переглядати та клонувати репозиторії.
teams.write_permission_desc=Ця команда надає доступ на <strong>запис</strong>: учасники можуть отримувати й виконувати push команди до репозитрію. teams.write_permission_desc=Ця команда надає доступ на <strong>запис</strong>: учасники можуть отримувати й виконувати push команди до репозитрію.
teams.admin_permission_desc=Ця команда надає <strong>адміністраторський</strong> доступ: учасники можуть читати, виконувати push команди та додавати співробітників до репозиторію. teams.admin_permission_desc=Ця команда надає <strong>адміністраторський</strong> доступ: учасники можуть читати, виконувати push команди та додавати співробітників до репозиторію.
@ -1005,15 +1055,19 @@ dashboard.delete_inactivate_accounts_success=Усі неактивні облі
dashboard.delete_repo_archives=Видалити всі архіви репозиторіїв dashboard.delete_repo_archives=Видалити всі архіви репозиторіїв
dashboard.git_gc_repos_success=Всі репозиторії завершили збирання сміття. dashboard.git_gc_repos_success=Всі репозиторії завершили збирання сміття.
dashboard.server_uptime=Uptime серверу dashboard.server_uptime=Uptime серверу
dashboard.current_goroutine=Поточна кількість Goroutines
dashboard.current_memory_usage=Поточне використання пам'яті dashboard.current_memory_usage=Поточне використання пам'яті
dashboard.total_memory_allocated=Виділено пам'яті загалом dashboard.total_memory_allocated=Виділено пам'яті загалом
dashboard.memory_obtained=Отримано пам'яті dashboard.memory_obtained=Отримано пам'яті
dashboard.pointer_lookup_times=Пошуків вказівника
dashboard.memory_allocate_times=Виділення пам'яті
dashboard.current_heap_usage=Поточне використання динамічної пам'яті dashboard.current_heap_usage=Поточне використання динамічної пам'яті
dashboard.heap_memory_obtained=Отримано динамічної пам'яті dashboard.heap_memory_obtained=Отримано динамічної пам'яті
dashboard.heap_memory_idle=Не використовується динамічною пам'яттю dashboard.heap_memory_idle=Не використовується динамічною пам'яттю
dashboard.heap_memory_in_use=Використовується динамічною пам'яттю dashboard.heap_memory_in_use=Використовується динамічною пам'яттю
dashboard.heap_memory_released=Звільнено динамічної пам'яті dashboard.heap_memory_released=Звільнено динамічної пам'яті
dashboard.heap_objects=Об'єктів динамічної пам'яті dashboard.heap_objects=Об'єктів динамічної пам'яті
dashboard.bootstrap_stack_usage=Використання стеку Bootstrap
dashboard.stack_memory_obtained=Зайнято пам'яті стеком dashboard.stack_memory_obtained=Зайнято пам'яті стеком
dashboard.mspan_structures_usage=Використання структур MSpan dashboard.mspan_structures_usage=Використання структур MSpan
dashboard.mspan_structures_obtained=Отримано структур MSpan dashboard.mspan_structures_obtained=Отримано структур MSpan
@ -1041,6 +1095,7 @@ users.send_register_notify=Надіслати повідомлення про р
users.edit=Редагувати users.edit=Редагувати
users.auth_source=Джерело автентифікації users.auth_source=Джерело автентифікації
users.local=Локальні users.local=Локальні
users.update_profile_success=Обліковий запис користувача було оновлено.
users.edit_account=Редагувати обліковий запис users.edit_account=Редагувати обліковий запис
users.max_repo_creation=Максимальна кількість репозиторіїв users.max_repo_creation=Максимальна кількість репозиторіїв
users.max_repo_creation_desc=(Введіть -1, щоб використовувати глобальний ліміт за замовчуванням.) users.max_repo_creation_desc=(Введіть -1, щоб використовувати глобальний ліміт за замовчуванням.)
@ -1052,6 +1107,7 @@ users.allow_import_local=Може імпортувати локальні реп
users.allow_create_organization=Може створювати організацій users.allow_create_organization=Може створювати організацій
users.update_profile=Оновити обліковий запис users.update_profile=Оновити обліковий запис
users.delete_account=Видалити цей обліковий запис users.delete_account=Видалити цей обліковий запис
users.deletion_success=Обліковий запис користувача було видалено.
orgs.org_manage_panel=Керування організаціями orgs.org_manage_panel=Керування організаціями
orgs.name=Назва orgs.name=Назва
@ -1074,6 +1130,7 @@ auths.new=Додати джерело автентифікації
auths.name=Ім'я auths.name=Ім'я
auths.type=Тип auths.type=Тип
auths.enabled=Увімкнено auths.enabled=Увімкнено
auths.syncenabled=Увімкнути синхронізацію користувача
auths.updated=Оновлено auths.updated=Оновлено
auths.auth_type=Тип автентифікації auths.auth_type=Тип автентифікації
auths.auth_name=Назва автентифікації auths.auth_name=Назва автентифікації
@ -1081,8 +1138,11 @@ auths.security_protocol=Протокол безпеки
auths.domain=Домен auths.domain=Домен
auths.host=Хост auths.host=Хост
auths.port=Порт auths.port=Порт
auths.bind_dn=Прив'язати DN
auths.bind_password=Прив'язати пароль
auths.user_base=База пошуку користувачів auths.user_base=База пошуку користувачів
auths.user_dn=DN користувача auths.user_dn=DN користувача
auths.attribute_username=Атрибут імені користувача
auths.search_page_size=Розмір сторінки auths.search_page_size=Розмір сторінки
auths.filter=Користувацький фільтр auths.filter=Користувацький фільтр
auths.admin_filter=Фільтр адміністратора auths.admin_filter=Фільтр адміністратора
@ -1094,6 +1154,7 @@ auths.enable_tls=Увімкнути TLS-шифрування
auths.skip_tls_verify=Пропустити перевірку TLS auths.skip_tls_verify=Пропустити перевірку TLS
auths.pam_service_name=Ім'я служби PAM auths.pam_service_name=Ім'я служби PAM
auths.oauth2_provider=Постачальник OAuth2 auths.oauth2_provider=Постачальник OAuth2
auths.oauth2_clientID=ID клієнта (ключ)
auths.oauth2_clientSecret=Ключ клієнта auths.oauth2_clientSecret=Ключ клієнта
auths.oauth2_tokenURL=URL токену auths.oauth2_tokenURL=URL токену
auths.oauth2_authURL=URL авторизації auths.oauth2_authURL=URL авторизації
@ -1133,6 +1194,7 @@ config.script_type=Тип скрипта
config.ssh_config=Конфігурація SSH config.ssh_config=Конфігурація SSH
config.ssh_enabled=Увімкнено config.ssh_enabled=Увімкнено
config.ssh_start_builtin_server=Використовувати вбудований сервер
config.ssh_domain=Домен сервера config.ssh_domain=Домен сервера
config.ssh_port=Порт config.ssh_port=Порт
config.ssh_listen_port=Порт що прослуховується config.ssh_listen_port=Порт що прослуховується
@ -1199,6 +1261,7 @@ config.session_life_time=Час життя сесії
config.https_only=Тільки HTTPS config.https_only=Тільки HTTPS
config.cookie_life_time=Час життя cookie-файлу config.cookie_life_time=Час життя cookie-файлу
config.picture_config=Налаштування фотографії або аватари
config.picture_service=Сервіс зображень config.picture_service=Сервіс зображень
config.disable_gravatar=Вимкнути Gravatar config.disable_gravatar=Вимкнути Gravatar
config.enable_federated_avatar=Увімкнути зовнішні аватари config.enable_federated_avatar=Увімкнути зовнішні аватари
@ -1223,12 +1286,14 @@ monitor.name=Ім'я
monitor.schedule=Розклад monitor.schedule=Розклад
monitor.next=Наступного разу monitor.next=Наступного разу
monitor.previous=Попереднього разу monitor.previous=Попереднього разу
monitor.execute_times=Кількість виконань
monitor.process=Запущені процеси monitor.process=Запущені процеси
monitor.desc=Опис monitor.desc=Опис
monitor.start=Час початку monitor.start=Час початку
monitor.execute_time=Час виконання monitor.execute_time=Час виконання
notices.system_notice_list=Сповіщення системи notices.system_notice_list=Сповіщення системи
notices.view_detail_header=Переглянути деталі повідомлення
notices.actions=Дії notices.actions=Дії
notices.select_all=Вибрати все notices.select_all=Вибрати все
notices.deselect_all=Скасувати виділення notices.deselect_all=Скасувати виділення
@ -1283,6 +1348,7 @@ raw_minutes=хвилини
[dropzone] [dropzone]
default_message=Перетягніть файли або натисніть тут, щоб завантажити. default_message=Перетягніть файли або натисніть тут, щоб завантажити.
invalid_input_type=Ви не можете завантажувати файли цього типу.
file_too_big=Розмір файлу ({{filesize}} MB), що більше ніж максимальний розмір: ({{maxFilesize}} MB). file_too_big=Розмір файлу ({{filesize}} MB), що більше ніж максимальний розмір: ({{maxFilesize}} MB).
remove_file=Видалити файл remove_file=Видалити файл
@ -1298,6 +1364,7 @@ mark_as_unread=Позначити як непрочитане
mark_all_as_read=Позначити всі як прочитані mark_all_as_read=Позначити всі як прочитані
[gpg] [gpg]
error.generate_hash=Не вдалося згенерувати хеш коміту
error.not_signed_commit=Непідписаний коміт error.not_signed_commit=Непідписаний коміт
[units] [units]

View File

@ -105,7 +105,9 @@ func renderDirectory(ctx *context.Context, treeLink string) {
ctx.Data["FileContent"] = string(markup.Render(readmeFile.Name(), buf, treeLink, ctx.Repo.Repository.ComposeMetas())) ctx.Data["FileContent"] = string(markup.Render(readmeFile.Name(), buf, treeLink, ctx.Repo.Repository.ComposeMetas()))
} else { } else {
ctx.Data["IsRenderedHTML"] = true ctx.Data["IsRenderedHTML"] = true
ctx.Data["FileContent"] = string(bytes.Replace(buf, []byte("\n"), []byte(`<br>`), -1)) ctx.Data["FileContent"] = strings.Replace(
gotemplate.HTMLEscapeString(string(buf)), "\n", `<br>`, -1,
)
} }
} }
} }
@ -208,7 +210,9 @@ func renderFile(ctx *context.Context, entry *git.TreeEntry, treeLink, rawLink st
ctx.Data["FileContent"] = string(markup.Render(blob.Name(), buf, path.Dir(treeLink), ctx.Repo.Repository.ComposeMetas())) ctx.Data["FileContent"] = string(markup.Render(blob.Name(), buf, path.Dir(treeLink), ctx.Repo.Repository.ComposeMetas()))
} else if readmeExist { } else if readmeExist {
ctx.Data["IsRenderedHTML"] = true ctx.Data["IsRenderedHTML"] = true
ctx.Data["FileContent"] = string(bytes.Replace(buf, []byte("\n"), []byte(`<br>`), -1)) ctx.Data["FileContent"] = strings.Replace(
gotemplate.HTMLEscapeString(string(buf)), "\n", `<br>`, -1,
)
} else { } else {
// Building code view blocks with line number on server side. // Building code view blocks with line number on server side.
var fileContent string var fileContent string

View File

@ -49,8 +49,8 @@
<tr> <tr>
<td>{{.PID}}</td> <td>{{.PID}}</td>
<td>{{.Description}}</td> <td>{{.Description}}</td>
<td>{{.Start.FormatLong}}</td> <td>{{DateFmtLong .Start}}</td>
<td>{{TimeSinceUnix .Start $.Lang}}</td> <td>{{TimeSince .Start $.Lang}}</td>
</tr> </tr>
{{end}} {{end}}
</tbody> </tbody>

View File

@ -32,7 +32,7 @@
</div> </div>
{{if .CanBeForked}} {{if .CanBeForked}}
<div class="ui compact labeled button" tabindex="0"> <div class="ui compact labeled button" tabindex="0">
<a class="ui compact button {{if not $.CanSignedUserFork}}poping up{{end}}" {{if $.CanSignedUserFork}}href="{{AppSubUrl}}/repo/fork/{{.ID}}"{{else}} data-content="{{$.i18n.Tr "repo.fork_from_self"}}" data-position="top center" data-variation="tiny"{{end}}> <a class="ui compact button {{if not $.CanSignedUserFork}}poping up{{end}}" {{if $.CanSignedUserFork}}href="{{AppSubUrl}}/repo/fork/{{.ID}}"{{else if $.IsSigned}} data-content="{{$.i18n.Tr "repo.fork_from_self"}}" data-position="top center" data-variation="tiny"{{end}}>
<i class="octicon octicon-repo-forked"></i>{{$.i18n.Tr "repo.fork"}} <i class="octicon octicon-repo-forked"></i>{{$.i18n.Tr "repo.fork"}}
</a> </a>
<a class="ui basic label" href="{{.Link}}/forks"> <a class="ui basic label" href="{{.Link}}/forks">