diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index e02110b57..13f1ce41c 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -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 months and forgets to leave the maintainers team, the owners may move 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 @@ -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 newly elected owners. If an owner is unable to do so, the other 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 with our [CONTRIBUTING](CONTRIBUTING.md) requirements in the diff --git a/README.md b/README.md index 083c7c2d3..cf5c1df9b 100644 --- a/README.md +++ b/README.md @@ -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) [![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 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. See the [LICENSE](https://github.com/go-gitea/gitea/blob/master/LICENSE) file 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)| diff --git a/cmd/admin.go b/cmd/admin.go index 6c79141ea..4fb0810c6 100644 --- a/cmd/admin.go +++ b/cmd/admin.go @@ -73,6 +73,11 @@ var ( Value: "", 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 } + if c.IsSet("config") { + setting.CustomConf = c.String("config") + } + if err := initDB(); err != nil { return err } diff --git a/docs/content/doc/usage/backup-and-restore.en-us.md b/docs/content/doc/usage/backup-and-restore.en-us.md index aa1e4805d..a0816ebe4 100644 --- a/docs/content/doc/usage/backup-and-restore.en-us.md +++ b/docs/content/doc/usage/backup-and-restore.en-us.md @@ -20,7 +20,7 @@ file can be unpacked and used to restore an instance. ## 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: ``` @@ -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: -* `custom/conf/app.ini` - Server config. +* `custom` - All config or customerize files in `custom/`. +* `data` - Data directory in , 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-repo.zip` - Complete copy of the repository directory. * `log/` - Various logs. They are not needed for a recovery or migration. diff --git a/docs/content/doc/usage/backup-and-restore.zh-cn.md b/docs/content/doc/usage/backup-and-restore.zh-cn.md new file mode 100644 index 000000000..8797d5772 --- /dev/null +++ b/docs/content/doc/usage/backup-and-restore.zh-cn.md @@ -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 %s%s resend_mail=Klikkaa tästä uudelleenlähettääksesi aktivointi sähköpostisi reset_password=Nollaa salasanasi reset_password_helper=Klikkaa tästä nollataksesi salasanasi -password_too_short=Salasanan pituus ei voi olla vähemmän kuin %d merkkiä. verify=Vahvista [mail] diff --git a/options/locale/locale_fr-FR.ini b/options/locale/locale_fr-FR.ini index 91961719e..50e90b96f 100644 --- a/options/locale/locale_fr-FR.ini +++ b/options/locale/locale_fr-FR.ini @@ -97,7 +97,6 @@ email_not_associate=L'adresse e-mail n'est associée à aucun compte. send_reset_mail=Cliquez ici pour renvoyer le mail de réinitialisation de votre mot de passe reset_password=Réinitialiser le mot de passe reset_password_helper=Cliquez ici pour réinitialiser votre mot de passe -password_too_short=Le mot de passe doit contenir %d caractères minimum. verify=Vérifier scratch_code=Code de secours use_scratch_code=Utiliser un code de secours diff --git a/options/locale/locale_hu-HU.ini b/options/locale/locale_hu-HU.ini index b52f8f840..7693a4312 100644 --- a/options/locale/locale_hu-HU.ini +++ b/options/locale/locale_hu-HU.ini @@ -101,7 +101,6 @@ email_not_associate=Az email cím nincsen hozzárendelve egyetlen fiókhoz sem. send_reset_mail=Kattints ide hogy újraküldd a jelszó visszaállító emailt reset_password=Jelszó visszaállítása reset_password_helper=Kattintson ide, hogy visszaállítsa a jelszavát -password_too_short=A jelszó nem lehet rövidebb, mint %d karakter. verify=Ellenőrzés scratch_code=Kaparós kód use_scratch_code=Kaparós kód használata diff --git a/options/locale/locale_id-ID.ini b/options/locale/locale_id-ID.ini index b6999654f..56f14d771 100644 --- a/options/locale/locale_id-ID.ini +++ b/options/locale/locale_id-ID.ini @@ -97,7 +97,6 @@ email_not_associate=Alamat surel tidak terhubung dengan akun apapun. send_reset_mail=Klik di sini untuk mengirim ulang surel pengaturan ulang kata sandi reset_password=Atur Ulang Kata Sandi Anda reset_password_helper=Klik di sini untuk mengatur ulang kata sandi anda -password_too_short=Panjang kata sandi tidak boleh kurang dari %d. verify=Verifikasi scratch_code=Kode coretan use_scratch_code=Gunakan kode coretan diff --git a/options/locale/locale_it-IT.ini b/options/locale/locale_it-IT.ini index 9ea365639..e3b752851 100644 --- a/options/locale/locale_it-IT.ini +++ b/options/locale/locale_it-IT.ini @@ -97,7 +97,6 @@ email_not_associate=L'indirizzo email non è associato ad alcuna conta. send_reset_mail=Clicca qui per inviare nuovamente la tua email di reimpostazione della password reset_password=Reimposta la tua Password reset_password_helper=Clicca qui per reimpostare la password -password_too_short=La lunghezza della password non può essere meno %d caratteri. verify=Verifica scratch_code=Codice Gratta e Vinci use_scratch_code=Utilizza un codice di zero diff --git a/options/locale/locale_ja-JP.ini b/options/locale/locale_ja-JP.ini index 3c422034e..ea32ad3c3 100644 --- a/options/locale/locale_ja-JP.ini +++ b/options/locale/locale_ja-JP.ini @@ -101,7 +101,6 @@ email_not_associate=このEメールアドレスは、どのアカウントに send_reset_mail=パスワードリセットメールを再送するにはここをクリックしてください reset_password=パスワードリセット reset_password_helper=パスワードをリセットするにはここをクリック -password_too_short=%d文字未満のパスワードは設定できません。 verify=確認 scratch_code=スクラッチコード use_scratch_code=スクラッチコードを使う diff --git a/options/locale/locale_ko-KR.ini b/options/locale/locale_ko-KR.ini index cd4528ffb..6497467f4 100644 --- a/options/locale/locale_ko-KR.ini +++ b/options/locale/locale_ko-KR.ini @@ -97,7 +97,6 @@ email_not_associate=이 이메일 주소로 등록된 계정이 없습니다. send_reset_mail=여기를 눌러 비밀번호 초기화 메일을 재전송 reset_password=비밀번호 초기화 reset_password_helper=이곳을 눌러 비밀번호를 재설정 -password_too_short=비밀번호의 길이는 %d글자 미만일 수 없습니다. verify=확인 scratch_code=스크래치 코드 use_scratch_code=스크래치 코드 사용 diff --git a/options/locale/locale_lt-LT.ini b/options/locale/locale_lt-LT.ini index 8a9f067ab..e12afe377 100644 --- a/options/locale/locale_lt-LT.ini +++ b/options/locale/locale_lt-LT.ini @@ -75,7 +75,6 @@ active_your_account=Aktyvinkite savo paskyrą resend_mail=Spauskite čia norėdami persiųsti aktyvacijos laišką reset_password=Atstatyti slaptažodį reset_password_helper=Paspauskite čia norėdami pakeisti savo slaptažodį -password_too_short=Slaptažodis negali būti trumpesnis nei %d simbolių. verify=Patikrinti [mail] diff --git a/options/locale/locale_lv-LV.ini b/options/locale/locale_lv-LV.ini index 656910dc8..c2274b99a 100644 --- a/options/locale/locale_lv-LV.ini +++ b/options/locale/locale_lv-LV.ini @@ -101,7 +101,6 @@ email_not_associate=Šī e-pasta adrese nav saistīta ar nevienu kontu. send_reset_mail=Spiediet šeit, lai nosūtītu paroles maiņas vēstuli uz Jūsu e-pastu reset_password=Atjaunot savu paroli reset_password_helper=Nospiediet šeit, lai atjaunotu paroli -password_too_short=Paroles garums nedrīkst būt mazāks par %d. verify=Pārbaudīt scratch_code=Vienreizējais kods use_scratch_code=Izmantot vienreizējo kodu diff --git a/options/locale/locale_nl-NL.ini b/options/locale/locale_nl-NL.ini index 6b96b91de..64db50357 100644 --- a/options/locale/locale_nl-NL.ini +++ b/options/locale/locale_nl-NL.ini @@ -101,7 +101,6 @@ email_not_associate=Dit emailadres is niet gekoppeld aan een account. send_reset_mail=Klik hier om de wachtwoord reset mail (nogmaals) te versturen reset_password=Reset uw wachtwoord reset_password_helper=Klik hier om uw wachtwoord opnieuw in te stellen. -password_too_short=De lengte van uw wachtwoord moet minimaal %d karakters zijn. verify=Verifiëren scratch_code=Eenmalige code use_scratch_code=Gebruik een eenmalige code diff --git a/options/locale/locale_pl-PL.ini b/options/locale/locale_pl-PL.ini index 954a37f5f..3dcb05082 100644 --- a/options/locale/locale_pl-PL.ini +++ b/options/locale/locale_pl-PL.ini @@ -97,7 +97,6 @@ email_not_associate=Adres e-mail nie jest powiązany z żadnym kontem. send_reset_mail=Kliknij tutaj, aby ponownie wysłać e-mail resetowania hasła reset_password=Resetowanie hasła reset_password_helper=Kliknij tutaj, aby zresetować hasło -password_too_short=Długość hasła nie może być mniejsza niż %d znaków. verify=Potwierdź scratch_code=Kod jednorazowy use_scratch_code=Użyj kodu jednorazowego diff --git a/options/locale/locale_pt-BR.ini b/options/locale/locale_pt-BR.ini index 17b59f7b1..0df553778 100644 --- a/options/locale/locale_pt-BR.ini +++ b/options/locale/locale_pt-BR.ini @@ -213,7 +213,7 @@ send_reset_mail=Clique aqui para re-enviar seu e-mail de redefinição de senha reset_password=Redefinir sua senha invalid_code=Seu código de confirmação é inválido ou expirou. reset_password_helper=Clique aqui para redefinir sua senha -password_too_short=O comprimento da senha não pode ser menor que %d. +password_too_short=A senha deve ter %d ou mais caracteres. non_local_account=Usuários não-locais não podem atualizar sua senha através da interface web do Gitea. verify=Verificar scratch_code=Código de backup diff --git a/options/locale/locale_ru-RU.ini b/options/locale/locale_ru-RU.ini index a8cf3098b..dfe8e9fa2 100644 --- a/options/locale/locale_ru-RU.ini +++ b/options/locale/locale_ru-RU.ini @@ -213,7 +213,6 @@ send_reset_mail=Нажмите сюда, чтобы отправить пись reset_password=Сброс пароля invalid_code=Этот код подтверждения недействителен или истек. reset_password_helper=Нажмите здесь, чтобы сбросить свой пароль -password_too_short=Длина пароля не менее %d символов. non_local_account=Нелокальные аккаунты не могут изменить пароль через Gitea. verify=Проверить scratch_code=Одноразовый пароль diff --git a/options/locale/locale_sr-SP.ini b/options/locale/locale_sr-SP.ini index 3acc22c3a..e20c9ba91 100644 --- a/options/locale/locale_sr-SP.ini +++ b/options/locale/locale_sr-SP.ini @@ -79,7 +79,6 @@ has_unconfirmed_mail=Здраво, %s! Имате непотврђену адр resend_mail=Кликните овде да поново пошаљете писмо reset_password=Ресет лозинке reset_password_helper=Кликните овде да ресетујете вашу лозинку -password_too_short=Лозинка неможе бити краћа од %d карактера. [mail] activate_account=Молимо вас активирајте ваш налог diff --git a/options/locale/locale_sv-SE.ini b/options/locale/locale_sv-SE.ini index e6bb938a5..ca3d703f1 100644 --- a/options/locale/locale_sv-SE.ini +++ b/options/locale/locale_sv-SE.ini @@ -97,7 +97,6 @@ email_not_associate=Denna e-postadress är inte knutet till något konto. send_reset_mail=Klicka här för att skicka e-post med lösenordsåterställning igen reset_password=Återställ ditt lösenord reset_password_helper=Klicka här för att återställa ditt lösenord -password_too_short=Lösenordet får ej vara kortare än %d tecken. verify=Verifiera scratch_code=Skrapkod use_scratch_code=Använd en skrapkod diff --git a/options/locale/locale_tr-TR.ini b/options/locale/locale_tr-TR.ini index f3ed0f727..17f4fe02b 100644 --- a/options/locale/locale_tr-TR.ini +++ b/options/locale/locale_tr-TR.ini @@ -97,7 +97,6 @@ email_not_associate=Bu e-posta adresi hiçbir hesap ile ilişkilendirilmemiştir send_reset_mail=Parola sıfırlama e-postasını (yeniden) göndermek için buraya tıklayın reset_password=Parolanızı Sıfırlayın reset_password_helper=Parolanızı sıfırlamak için buraya tıklayın -password_too_short=Parola uzunluğu %d karakterden az olamaz. verify=Doğrula scratch_code=Çizgi kodu use_scratch_code=Bir çizgi kodu kullanınız diff --git a/options/locale/locale_uk-UA.ini b/options/locale/locale_uk-UA.ini index 4d431d711..3bc79cdd5 100644 --- a/options/locale/locale_uk-UA.ini +++ b/options/locale/locale_uk-UA.ini @@ -32,6 +32,13 @@ twofa_scratch=Двофакторний одноразовий пароль passcode=Код доступу 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=Оновити repository=Репозиторій @@ -132,6 +139,7 @@ confirm_password=Підтвердження пароля admin_email=Адреса електронної пошти install_btn_confirm=Встановлення Gitea test_git_failed=Не в змозі перевірити 'git' команду: %v +invalid_db_setting=Налаштування бази даних є некоректними: %v save_config_failed=Не в змозі зберегти конфігурацію: %v invalid_admin_setting=Неприпустимі налаштування облікового запису адміністратора: %v install_success=Ласкаво просимо! Дякуємо вам за вибір Gitea. Розважайтеся, і будьте обережні! @@ -191,7 +199,6 @@ send_reset_mail=Натисніть сюди, щоб відправити лис reset_password=Скинути пароль invalid_code=Цей код підтвердження недійсний або закінчився. reset_password_helper=Натисніть тут для скидання пароля -password_too_short=Довжина пароля не може бути меншою за %d. non_local_account=Нелокальні акаунти не можуть змінити пароль через Gitea. verify=Підтвердити scratch_code=Одноразовий пароль @@ -257,8 +264,14 @@ team_name_been_taken=Назва команди вже зайнято. email_been_used=Ця електронна адреса вже використовується. openid_been_used=OpenID адреса '%s' вже використовується. username_password_incorrect=Неправильне ім'я користувача або пароль. +enterred_invalid_repo_name=Невірно введено ім'я репозиторію. +enterred_invalid_owner_name=Ім'я нового власника не є дійсним. +enterred_invalid_password=Введений вами пароль некоректний. user_not_exist=Даний користувач не існує. +cannot_add_org_to_team=Організацію неможливо додати як учасника команди. +invalid_ssh_key=Неможливо перевірити ваш SSH ключ: %s +invalid_gpg_key=Неможливо перевірити ваш GPG ключ: %s auth_failed=Помилка автентифікації: %v @@ -331,9 +344,13 @@ primary=Основний primary_email=Зробити основним delete_email=Видалити email_deletion=Видалити адресу електронної пошти +openid_deletion=Видалити адресу OpenID add_new_email=Додати нову адресу електронної пошти +add_new_openid=Додати новий OpenID URI add_email=Додати адресу електронної пошти +add_openid=Додати OpenID URI add_email_confirmation_sent=Електронний лист із підтвердженням було відправлено на '%s', будь ласка, перевірте вашу поштову скриньку протягом наступних %s, щоб підтвердити адресу. +add_email_success=Додано нову адресу електронної пошти. keep_email_private=Приховати адресу електронної пошти keep_email_private_popup=Вашу адресу електронної пошти буде приховано від інших користувачів. @@ -349,6 +366,7 @@ key_id=ID ключа key_name=Ім'я ключа key_content=Зміст add_key_success=SSH ключ '%s' додано. +add_gpg_key_success=GPG ключ '%s' додано. delete_key=Видалити ssh_key_deletion=Видалити SSH ключ gpg_key_deletion=Видалити GPG ключ @@ -382,15 +400,20 @@ access_token_deletion=Видалити токен доступу twofa_disable=Вимкнути двофакторну автентифікацію or_enter_secret=Або введіть секрет: %s +passcode_invalid=Некоректний пароль. Спробуй ще раз. +u2f_register_key=Додати ключ безпеки u2f_nickname=Псевдонім +u2f_delete_key=Видалити ключ безпеки manage_account_links=Керування обліковими записами remove_account_link=Видалити облікові записи orgs_none=Ви не є учасником будь-якої організації. +repos_none=У вас немає власних репозиторіїв delete_account=Видалити ваш обліковий запис +delete_prompt=Ця операція остаточно видалить обліковий запис користувача. Це НЕ МОЖЛИВО відмінити. confirm_delete_account=Підтвердження видалення delete_account_title=Видалити цей обліковий запис @@ -414,6 +437,7 @@ create_repo=Створити репозиторій default_branch=Головна гілка mirror_prune=Очистити mirror_interval=Інтервал дзеркалювання (доступні значення 'h', 'm', 's') +mirror_interval_invalid=Інтервал дзеркалювання є неприпустимим. mirror_address=Клонування з URL-адреси mirror_last_synced=Остання синхронізація watchers=Спостерігачі @@ -423,6 +447,7 @@ pick_reaction=Залиште свою оцінку reactions_more=додати %d більше form.reach_limit_of_creation=Ви досягли максимальної кількості %d створених репозиторіїв. +form.name_reserved=Назву репозиторію '%s' зарезервовано. need_auth=Клонувати з авторизацією migrate_type=Тип міграції @@ -439,6 +464,7 @@ mirror_from=дзеркало forked_from=форк від fork_from_self=Ви не можете форкнути репозиторій, так як ви його власник. copy_link=Копіювати +copy_link_success=Посилання було скопійоване copy_link_error=Натисніть ⌘-C або Ctrl-C, щоб скопіювати copied=Скопійовано unwatch=Не стежити @@ -472,6 +498,8 @@ file_raw=Неформатований file_history=Історія file_view_raw=Перегляд Raw file_permalink=Постійне посилання +file_too_large=Цей файл завеликий щоб бути показаним. +video_not_supported_in_browser=Ваш браузер не підтримує тег 'video' HTML5. stored_lfs=Збережено з Git LFS commit_graph=Графік комітів @@ -479,6 +507,7 @@ editor.new_file=Новий файл editor.upload_file=Завантажити файл editor.edit_file=Редагування файлу editor.preview_changes=Попередній перегляд змін +editor.cannot_edit_non_text_files=Бінарні файли не можливо редагувати у веб-інтерфейсі. editor.edit_this_file=Редагувати файл editor.must_be_on_a_branch=Ви повинні бути у гілці щоб зробити, або запропонувати зміни до цього файлу. editor.fork_before_edit=Необхідно зробити форк цього репозиторій, щоб внести або запропонувати зміни в цей файл. @@ -498,7 +527,10 @@ editor.commit_directly_to_this_branch=Зробіть коміт прямо в г editor.create_new_branch=Створити нову гілку для цього коміту та відкрити запит на злиття. 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_already_exists=Файл з назвою "%s" уже існує у цьому репозиторію. editor.no_changes_to_show=Нема змін для показу. editor.fail_to_update_file=Не вдалося оновити/створити файл '%s' через помилку: %v editor.add_subdir=Додати каталог… @@ -514,6 +546,7 @@ commits.message=Повідомлення commits.date=Дата commits.older=Давніше commits.newer=Новіше +commits.signed_by=Підписано ext_issues=Зов. Проблеми @@ -606,6 +639,7 @@ issues.label_edit=Редагувати issues.label_delete=Видалити issues.label_modify=Редагувати мітку issues.label_deletion=Видалити мітку +issues.label_deletion_success=Мітку було видалено. issues.label.filter_sort.alphabetically=За алфавітом issues.label.filter_sort.reverse_alphabetically=З кінця алфавіту issues.label.filter_sort.by_size=Розмір @@ -854,6 +888,8 @@ settings.add_deploy_key=Додати ключ для розгортування settings.is_writable=Увімкнути доступ для запису settings.title=Заголовок settings.deploy_key_content=Зміст +settings.deploy_key_deletion=Видалити ключ для розгортування +settings.deploy_key_deletion_success=Ключі розгортання було видалено. settings.branches=Гілки settings.protected_branch=Захист гілки settings.protected_branch_can_push=Дозволити push? @@ -863,6 +899,7 @@ settings.protect_whitelist_search_users=Пошук користувачів… settings.protect_whitelist_search_teams=Пошук команд… settings.add_protected_branch=Увімкнути захист settings.delete_protected_branch=Вимкнути захист +settings.protected_branch_deletion=Відключити захист гілки settings.choose_branch=Оберіть гілку… settings.no_protected_branch=Немає захищених гілок. @@ -902,6 +939,8 @@ release.save_draft=Зберегти чернетку release.edit_release=Оновити реліз release.delete_release=Видалити реліз release.deletion=Видалити реліз +release.deletion_success=Реліз, було видалено. +release.tag_name_invalid=Неприпустиме ім'я тега. release.downloads=Завантажити branch.name=Ім'я гілки @@ -909,9 +948,13 @@ branch.search=Пошук гілок branch.delete_head=Видалити branch.delete=Видалити гілку '%s' branch.delete_html=Видалити гілку +branch.deletion_success=Гілка '%s' видалена. +branch.deletion_failed=Не вдалося видалити гілку "%s". branch.create_from=з '%s' +branch.create_success=Створено гілку "%s". branch.branch_already_exists=Гілка '%s' вже присутня в репозиторії. branch.deleted_by=Видалено %s +branch.restore_success=Гілку "%s" відновлено. topic.manage_topics=Керувати тематичними мітками topic.done=Готово @@ -931,9 +974,11 @@ org_desc=Опис team_name=Назва команди team_desc=Опис team_name_helper=Назва команди має бути простою та зрозумілою. +team_desc_helper=Опишіть мету або роль команди. team_permission_desc=Права доступу team_unit_desc=Дозволити доступ до розділів репозиторію +form.name_reserved=Назву організації '%s' зарезервовано. settings=Налаштування settings.options=Організація @@ -941,6 +986,9 @@ settings.full_name=Повне ім'я 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.confirm_delete_account=Підтвердіть видалення @@ -972,6 +1020,7 @@ teams.update_settings=Оновити налаштування teams.delete_team=Видалити команду teams.add_team_member=Додати учасника команди teams.delete_team_title=Видалити команду +teams.delete_team_success=Команду було видалено. teams.read_permission_desc=Ця команда має доступ для читання: учасники можуть переглядати та клонувати репозиторії. teams.write_permission_desc=Ця команда надає доступ на запис: учасники можуть отримувати й виконувати push команди до репозитрію. teams.admin_permission_desc=Ця команда надає адміністраторський доступ: учасники можуть читати, виконувати push команди та додавати співробітників до репозиторію. @@ -1005,15 +1054,19 @@ dashboard.delete_inactivate_accounts_success=Усі неактивні облі dashboard.delete_repo_archives=Видалити всі архіви репозиторіїв dashboard.git_gc_repos_success=Всі репозиторії завершили збирання сміття. dashboard.server_uptime=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.current_heap_usage=Поточне використання динамічної пам'яті dashboard.heap_memory_obtained=Отримано динамічної пам'яті dashboard.heap_memory_idle=Не використовується динамічною пам'яттю dashboard.heap_memory_in_use=Використовується динамічною пам'яттю dashboard.heap_memory_released=Звільнено динамічної пам'яті dashboard.heap_objects=Об'єктів динамічної пам'яті +dashboard.bootstrap_stack_usage=Використання стеку Bootstrap dashboard.stack_memory_obtained=Зайнято пам'яті стеком dashboard.mspan_structures_usage=Використання структур MSpan dashboard.mspan_structures_obtained=Отримано структур MSpan @@ -1041,6 +1094,7 @@ users.send_register_notify=Надіслати повідомлення про р users.edit=Редагувати users.auth_source=Джерело автентифікації users.local=Локальні +users.update_profile_success=Обліковий запис користувача було оновлено. users.edit_account=Редагувати обліковий запис users.max_repo_creation=Максимальна кількість репозиторіїв users.max_repo_creation_desc=(Введіть -1, щоб використовувати глобальний ліміт за замовчуванням.) @@ -1052,6 +1106,7 @@ users.allow_import_local=Може імпортувати локальні реп users.allow_create_organization=Може створювати організацій users.update_profile=Оновити обліковий запис users.delete_account=Видалити цей обліковий запис +users.deletion_success=Обліковий запис користувача було видалено. orgs.org_manage_panel=Керування організаціями orgs.name=Назва @@ -1074,6 +1129,7 @@ auths.new=Додати джерело автентифікації auths.name=Ім'я auths.type=Тип auths.enabled=Увімкнено +auths.syncenabled=Увімкнути синхронізацію користувача auths.updated=Оновлено auths.auth_type=Тип автентифікації auths.auth_name=Назва автентифікації @@ -1081,8 +1137,11 @@ auths.security_protocol=Протокол безпеки auths.domain=Домен auths.host=Хост auths.port=Порт +auths.bind_dn=Прив'язати DN +auths.bind_password=Прив'язати пароль auths.user_base=База пошуку користувачів auths.user_dn=DN користувача +auths.attribute_username=Атрибут імені користувача auths.search_page_size=Розмір сторінки auths.filter=Користувацький фільтр auths.admin_filter=Фільтр адміністратора @@ -1094,6 +1153,7 @@ auths.enable_tls=Увімкнути TLS-шифрування auths.skip_tls_verify=Пропустити перевірку TLS auths.pam_service_name=Ім'я служби PAM auths.oauth2_provider=Постачальник OAuth2 +auths.oauth2_clientID=ID клієнта (ключ) auths.oauth2_clientSecret=Ключ клієнта auths.oauth2_tokenURL=URL токену auths.oauth2_authURL=URL авторизації @@ -1133,6 +1193,7 @@ config.script_type=Тип скрипта config.ssh_config=Конфігурація SSH config.ssh_enabled=Увімкнено +config.ssh_start_builtin_server=Використовувати вбудований сервер config.ssh_domain=Домен сервера config.ssh_port=Порт config.ssh_listen_port=Порт що прослуховується @@ -1199,6 +1260,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=Увімкнути зовнішні аватари @@ -1223,12 +1285,14 @@ monitor.name=Ім'я monitor.schedule=Розклад monitor.next=Наступного разу monitor.previous=Попереднього разу +monitor.execute_times=Кількість виконань monitor.process=Запущені процеси monitor.desc=Опис monitor.start=Час початку monitor.execute_time=Час виконання notices.system_notice_list=Сповіщення системи +notices.view_detail_header=Переглянути деталі повідомлення notices.actions=Дії notices.select_all=Вибрати все notices.deselect_all=Скасувати виділення @@ -1283,6 +1347,7 @@ raw_minutes=хвилини [dropzone] default_message=Перетягніть файли або натисніть тут, щоб завантажити. +invalid_input_type=Ви не можете завантажувати файли цього типу. file_too_big=Розмір файлу ({{filesize}} MB), що більше ніж максимальний розмір: ({{maxFilesize}} MB). remove_file=Видалити файл @@ -1298,6 +1363,7 @@ mark_as_unread=Позначити як непрочитане mark_all_as_read=Позначити всі як прочитані [gpg] +error.generate_hash=Не вдалося згенерувати хеш коміту error.not_signed_commit=Непідписаний коміт [units] diff --git a/options/locale/locale_zh-CN.ini b/options/locale/locale_zh-CN.ini index 8b23e404c..658f133a2 100644 --- a/options/locale/locale_zh-CN.ini +++ b/options/locale/locale_zh-CN.ini @@ -213,7 +213,6 @@ send_reset_mail=单击此处(重新)发送您的密码重置邮件 reset_password=重置密码 invalid_code=此确认密钥无效或已过期。 reset_password_helper=单击此处重置密码 -password_too_short=密码长度不能少于 %d 位! non_local_account=非本地帐户不能通过 Gitea 的 web 界面更改密码。 verify=验证 scratch_code=验证口令 diff --git a/options/locale/locale_zh-HK.ini b/options/locale/locale_zh-HK.ini index a64367d39..d8b8e210c 100644 --- a/options/locale/locale_zh-HK.ini +++ b/options/locale/locale_zh-HK.ini @@ -94,7 +94,6 @@ email_not_associate=此電子郵件地址未與任何帳戶連結 send_reset_mail=點選此處重發您的密碼重製郵件 reset_password=重置密碼 reset_password_helper=單擊此處重置密碼 -password_too_short=密碼長度不能少於 %d 位! verify=驗證 scratch_code=備用碼 use_scratch_code=使用備用碼 diff --git a/options/locale/locale_zh-TW.ini b/options/locale/locale_zh-TW.ini index fa716b27d..8a6914af2 100644 --- a/options/locale/locale_zh-TW.ini +++ b/options/locale/locale_zh-TW.ini @@ -97,7 +97,6 @@ email_not_associate=此電子郵件地址未與任何帳戶連結 send_reset_mail=點選此處重發您的密碼重製郵件 reset_password=重置密碼 reset_password_helper=單擊此處重置密碼 -password_too_short=密碼長度不能少於 %d 位! verify=驗證 scratch_code=備用碼 use_scratch_code=使用備用碼 diff --git a/routers/repo/view.go b/routers/repo/view.go index d2efe3009..4f1deeae4 100644 --- a/routers/repo/view.go +++ b/routers/repo/view.go @@ -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())) } else { ctx.Data["IsRenderedHTML"] = true - ctx.Data["FileContent"] = string(bytes.Replace(buf, []byte("\n"), []byte(`
`), -1)) + ctx.Data["FileContent"] = strings.Replace( + gotemplate.HTMLEscapeString(string(buf)), "\n", `
`, -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())) } else if readmeExist { ctx.Data["IsRenderedHTML"] = true - ctx.Data["FileContent"] = string(bytes.Replace(buf, []byte("\n"), []byte(`
`), -1)) + ctx.Data["FileContent"] = strings.Replace( + gotemplate.HTMLEscapeString(string(buf)), "\n", `
`, -1, + ) } else { // Building code view blocks with line number on server side. var fileContent string diff --git a/templates/admin/monitor.tmpl b/templates/admin/monitor.tmpl index ceca29146..6cc927d68 100644 --- a/templates/admin/monitor.tmpl +++ b/templates/admin/monitor.tmpl @@ -49,8 +49,8 @@ {{.PID}} {{.Description}} - {{.Start.FormatLong}} - {{TimeSinceUnix .Start $.Lang}} + {{DateFmtLong .Start}} + {{TimeSince .Start $.Lang}} {{end}} diff --git a/templates/repo/header.tmpl b/templates/repo/header.tmpl index 6d1d9edf8..6f54cb9f6 100644 --- a/templates/repo/header.tmpl +++ b/templates/repo/header.tmpl @@ -32,7 +32,7 @@ {{if .CanBeForked}}