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/MAINTAINERS b/MAINTAINERS index 0150e8370..5deb40961 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -22,3 +22,4 @@ Peter Žeby (@morlinest) Matti Ranta (@techknowlogick) Michael Lustfield (@MTecknology) Jonas Franz (@JonasFranzDEV) +Flynn Lufmons (@flufmonster) 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 НЕ МОЖЛИВО відмінити. confirm_delete_account=Підтвердження видалення delete_account_title=Видалити цей обліковий запис @@ -414,6 +436,7 @@ create_repo=Створити репозиторій default_branch=Головна гілка mirror_prune=Очистити mirror_interval=Інтервал дзеркалювання (доступні значення 'h', 'm', 's') +mirror_interval_invalid=Інтервал дзеркалювання є неприпустимим. mirror_address=Клонування з URL-адреси mirror_last_synced=Остання синхронізація watchers=Спостерігачі @@ -423,6 +446,7 @@ pick_reaction=Залиште свою оцінку reactions_more=додати %d більше form.reach_limit_of_creation=Ви досягли максимальної кількості %d створених репозиторіїв. +form.name_reserved=Назву репозиторію '%s' зарезервовано. need_auth=Клонувати з авторизацією migrate_type=Тип міграції @@ -439,6 +463,7 @@ mirror_from=дзеркало forked_from=форк від fork_from_self=Ви не можете форкнути репозиторій, так як ви його власник. copy_link=Копіювати +copy_link_success=Посилання було скопійоване copy_link_error=Натисніть ⌘-C або Ctrl-C, щоб скопіювати copied=Скопійовано unwatch=Не стежити @@ -472,6 +497,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 +506,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 +526,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 +545,7 @@ commits.message=Повідомлення commits.date=Дата commits.older=Давніше commits.newer=Новіше +commits.signed_by=Підписано ext_issues=Зов. Проблеми @@ -606,6 +638,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 +887,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 +898,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 +938,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 +947,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 +973,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 +985,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 +1019,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 +1053,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 +1093,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 +1105,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 +1128,7 @@ auths.new=Додати джерело автентифікації auths.name=Ім'я auths.type=Тип auths.enabled=Увімкнено +auths.syncenabled=Увімкнути синхронізацію користувача auths.updated=Оновлено auths.auth_type=Тип автентифікації auths.auth_name=Назва автентифікації @@ -1081,8 +1136,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 +1152,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 +1192,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=Порт що прослуховується @@ -1148,9 +1208,7 @@ 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=Потрібно підтвердити електронну пошту для реєстрації @@ -1201,6 +1259,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=Увімкнути зовнішні аватари @@ -1225,12 +1284,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=Скасувати виділення @@ -1285,6 +1346,7 @@ raw_minutes=хвилини [dropzone] default_message=Перетягніть файли або натисніть тут, щоб завантажити. +invalid_input_type=Ви не можете завантажувати файли цього типу. file_too_big=Розмір файлу ({{filesize}} MB), що більше ніж максимальний розмір: ({{maxFilesize}} MB). remove_file=Видалити файл @@ -1300,6 +1362,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 b57eeed1a..8b23e404c 100644 --- a/options/locale/locale_zh-CN.ini +++ b/options/locale/locale_zh-CN.ini @@ -1475,9 +1475,7 @@ 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=需要电子邮件确认注册 diff --git a/options/locale/locale_zh-HK.ini b/options/locale/locale_zh-HK.ini index 75d6a2db5..a64367d39 100644 --- a/options/locale/locale_zh-HK.ini +++ b/options/locale/locale_zh-HK.ini @@ -737,9 +737,7 @@ config.db_config=資料庫設定 config.db_type=資料庫類型 config.db_host=主機地址 config.db_name=資料庫名稱 -config.db_ssl_mode_helper=(僅限 "postgres" 使用) config.db_path=資料庫路徑 -config.db_path_helper=(用於 "sqlite3" 和 "tidb") config.service_config=服務設定 config.show_registration_button=顯示註冊按鈕 diff --git a/options/locale/locale_zh-TW.ini b/options/locale/locale_zh-TW.ini index fbe418a7d..fa716b27d 100644 --- a/options/locale/locale_zh-TW.ini +++ b/options/locale/locale_zh-TW.ini @@ -808,9 +808,7 @@ config.db_config=資料庫設定 config.db_type=資料庫類型 config.db_host=主機地址 config.db_name=資料庫名稱 -config.db_ssl_mode_helper=(僅限 "postgres" 使用) config.db_path=資料庫路徑 -config.db_path_helper=(用於 "sqlite3" 和 "tidb") config.service_config=服務設定 config.show_registration_button=顯示註冊按鈕 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}}