我们自豪地宣布 Gitea v1.17.0 发布了。本次发布带来了诸多新特性和累积的更新,我们强烈建议用户在更新到最新版本之前仔细阅读发行注记。
在 1.17.0 版本的开发中我们一共合并了 645 个请求。
您可以从下载页面下载预编译的二进制文件,请注意选择正确的操作系统。关于如何安装,请参考安装手册。
在此,我们感谢所有在 Open Collective 给予我们资金支持的贡献者。
以下为本次发布的更新内容!
Package Registry (#16510)
感谢 @KN4CK3R,Gitea 现在包含一个通用的软件包管理器,支持 Composer、Conan、Generic、Helm、Maven、npm、NuGet、OCI Containers (Docker)、PyPI 和 RubyGems。
新增基于 Web UI 的 Git 功能 (#17902)
感谢 @zeripath,现已支持基于 Web UI 的常规 Git 功能,如 cherry-pick
, revert
, apply-patch
。
更好的移动端体验 (#19546)
感谢 @Gusted 致力于改善 Gitea 的移动体验:前端经过重构变得更灵敏,操作习惯保持不变。现有的移动端体验将更加流畅!
改进的文件导航 (#19007 & #15028)
改进了用户浏览大量文件时的体验:
感谢 @6543,Gitea 现已支持输出组织和仓库的 RSS feeds。
自动合并请求 (#19648 & #9307)
感谢 @6543 和 @kolaente,Gitea 现在允许 PR 在通过所有代码检查后自动合并,这项功能同时支持 Web UI 和 API 操作。但请注意,此功能仅在当前分支启用“分支保护”时才会生效。
允许仓库维护者编辑PR (#18002)
感谢 @qwerty287,Gitea 现已允许上游仓库维护者直接编辑合并请求。这项功能简化开源开发的 PR 工作流程。
支持了工单删除和合并请求 (#19032)
感谢 @fnetX,为了打击垃圾邮件和机密信息泄露,现在可以永久删除 工单(以及附加的 PR)。仓库管理员或实例管理员可以在 工单 或 合并请求 页面底部找到删除按钮。
在“百科”页面中自动生成目录 (#19873)
感谢@zeripath,百科页面现已支持在侧边栏中自动生成目录。避免了手动维护目录结构。
自定义默认的合并消息 (#18177)
感谢@lunny,您现在可以设置用于合并请求的默认消息。自定义消息模板应放置于 .gitea/default_merge_message/<uppercase_merge_style>_TEMPLATE.md
。
更多信息,请参见文档。
支持导入仓库时保留工单的原始ID (#18446)
当您迁移包含工单的仓库时,它们的原始 ID 将被保留。现已支持从 Gitea、GitHub、GitLab 等实例迁移仓库、工单、PR,后续版本还会支持更多方案。
Federation 开发进度 (#19561 & #19462)
Gitea 1.17 为将来允许各 Gitea 实例相互通信奠定了基础:
- 新增一个 API 路径,允许实例之间进行基本的通信 。(#19561)
- 传递用户的基本信息,例如头像。 (#19462)
更多 Federation 功能正在开发中,敬请期待!
内部 Gitconfig (#19732)
旧版 gitconfig 引用系统级 /etc/gitconfig
和用户级 $HOME/.gitconfig
。
新版 gitconfig 引用系统级 /etc/gitconfig
和内部 {[git].HOME_PATH}/.gitconfig
。
如果您为 Gitea 自定义了 gitconfig,则应将这些自定义配置文件添加到 {[git].HOME_PATH}/.gitconfig
。
位于用户主目录中的其他相关配置文件,例如$HOME/.gnupg,也应该移动到 {[git].HOME_PATH}/
。
合法的 Email 地址格式 (#17688)
在此版本中,Gitea 限制了用于 Email 的地址格式:Email 地址支持的字符包括:
a-zA-Z0-9.!#$%&'*+-/=?^_`~
当然,Email 用户名的第一个字母和@前一个字母必须是 a-zA-Z0-9
用于证书签发的配置项 LETSENCRYPT 重命名为 ACME (#18340)
用于证书签发的设置中已将 LETSENCRYPT
重命名为 ACME
。注意!旧设置已弃用,将在 1.18 中删除,您应该立即迁移。
ENABLE_LETSENCRYPT → ENABLE_ACME
LETSENCRYPT_URL → ACME_URL
LETSENCRYPT_ACCEPTTOS → ACME_ACCEPTTOS
LETSENCRYPT_DIRECTORY → ACME_DIRECTORY
LETSENCRYPT_EMAIL → ACME_EMAIL
新的 logger 日志格式和配置 (#17308)
当前版本改变了 router logger 的日志格式。如果您正在监控此日志记录(例如,fail2ban),您将需要更新此日志设置以匹配新格式。有关新的配置选项,请参阅文档上的 router logger。
使用 main 作为默认分支 (#19354)
默分支已从 master 切换到 main。如果要继续用 master 作默认分支名称,请手动设置 repository.DEFAULT_BRANCH = main
。
将仓库的初始信任模型更改为 committer (#18335)
collaborator 信任模型:只有经过验证的协作者提交才能被信任,同时这是一个相当激进的信任模型。
committer 信任模型:兼容 GitHub,这意味着来自非合作者的仓库中经过验证的提交不会被标记为未验证。
如果您要使用旧的信任模型,则必须设置 DEFAULT_TRUST_MODEL = collaborator
要求 Git 版本 >= 2.0 (#19577)
Gitea 要求 Git 版本 >= 2.0。低于此版本的 Git 不受支持,并且会阻碍应用程序启动。一般而言,建议您的 Gitea 与 Git 程序版本保持同步升级,因为某些 Gitea 功能或优化只有在当前 Git 版本中可用时才能使用。
要求 docker 版本 >= 20.10.6 (#18050)
这是由于新的 base 映像 alpine 3.15 的 libc 存在问题。
要求 Go >= 1.18 才能编译 (#19918,#19099)
编译 Gitea 所需的最低 Go 版本已升级到 1.18。
更改了自定义 logo 的处理方式 (#18542)
现在用户不仅可以自定义 logo,还可以设置自定义 favicon。如果您当前正在使用自定义 logo,则需要重新参考文档进行配置。
RequireHighlightJS 从模板中删除 (#19615)
当前版本已经弃用RequireHighlightJS,请检查您使用的自定义模板是否引用了它们。
保留的用户名 (#18438)
现在新增保留用户名:avatar、ssh_info 和 swagger_v1.json。
以下用户名不再保留:help、install、less、plugins、stars 和 template。
如果您想检查 Gitea 实例是否受此问题影响,请运行以下 Gitea doctor 命令:
gitea doctor --run check-user-name
请注意,此命令仅在升级到 1.17.0 后可用。
新版本默认弃用不安全的 SSH ciphers (#18697)
这项更新仅对使用内部 SSH 服务器的 Gitea 实例造成影响。旧版 Gitea 允许在 SSH 连接中使用不安全的算法,新版已弃用,因此老旧的 OpenSSH 客户端将无法连接到 Gitea。
如果 ROOT_URL 设置错误,将向用户显示 JavaScript 错误消息 (#18971)
当用户访问地址与 ROOT_URL 配置不相符时,可能会出现意外问题。因此,Gitea 前端会在这种情况下显示错误消息提醒管理员修正错误。请检查您的 ROOT_URL 设置是否正确,继续使用未配置的 URL 访问实例会出现错误消息。
/api/v1/notifications 不再返回仓库权限信息 (#19761)
旧版 API /api/v1/notifications
会返回不正确的 repository.permissions
。
鉴于该 API 未能返回正确的权限信息,以及存在获取仓库权限的正式方法,现将该值弃用,并始终返回 null。
HTTP 状态码更新:302 → 307 和 301 → 308 (#18063)
旧版重定向状态码 Found(302) 和 Moved Permanently(301)。
新版重定向状态码更改为 Temporary Redirect(307) 和 Permanent Redirect(308)。
默认不再向管理员发送成功执行 cron 任务的通知 (#19221)
默认情况下,成功执行的 cron 任务不再发出通知。如果您想在成功执行cron后获得通知,则必须设置 NOTICE_ON_SUCCESS = true
。
1.17.0 - 2022-07-30
BREAKING
- Require go1.18 for Gitea 1.17 (#19918)
- Make AppDataPath absolute against the AppWorkPath if it is not (#19815)
- Nuke the incorrect permission report on /api/v1/notifications (#19761)
- Refactor git module, make Gitea use internal git config (#19732)
- Remove
RequireHighlightJS
field, update plantuml example. (#19615)
- Increase minimal required git version to 2.0 (#19577)
- Add a directory prefix
gitea-src-VERSION
to release-tar-file (#19396)
- Use “main” as default branch name (#19354)
- Make cron task no notice on success (#19221)
- Add pam account authorization check (#19040)
- Show messages for users if the ROOT_URL is wrong, show JavaScript errors (#18971)
- Refactor mirror code & fix StartToMirror (#18904)
- Remove deprecated SSH ciphers from default (#18697)
- Add the possibility to allow the user to have a favicon which differs from the main logo (#18542)
- Update reserved usernames list (#18438)
- Support custom ACME provider (#18340)
- Change initial TrustModel to committer (#18335)
- Update HTTP status codes (#18063)
- Upgrade Alpine from 3.13 to 3.15 (#18050)
- Restrict email address validation (#17688)
- Refactor Router Logger (#17308)
SECURITY
- Use git.HOME_PATH for Git HOME directory (#20114) (#20293)
- Add write check for creating Commit Statuses (#20332) (#20333)
- Remove deprecated SSH ciphers from default (#18697)
FEDERATION
- Return statistic information for nodeinfo (#19561)
- Add Webfinger endpoint (#19462)
- Store the foreign ID of issues during migration (#18446)
FEATURES
- Automatically render wiki TOC (#19873)
- Adding button to link accounts from user settings (#19792)
- Allow set default merge style while creating repo (#19751)
- Auto merge pull requests when all checks succeeded (#9307 & #19648)
- Improve reviewing PR UX (#19612)
- Add support for rendering console output with colors (#19497)
- Add Helm Chart registry (#19406)
- Add Goroutine stack inspector to admin/monitor (#19207)
- RSS/Atom support for Orgs & Repos (#17714 & #19055)
- Add button for issue deletion (#19032)
- Allow to mark files in a PR as viewed (#19007)
- Add Index to comment for migrations and mirroring (#18806)
- Add health check endpoint (#18465)
- Add packagist webhook (#18224)
- Add “Allow edits from maintainer” feature (#18002)
- Add apply-patch, basic revert and cherry-pick functionality (#17902)
- Add Package Registry (#16510)
- Add LDAP group sync to Teams (#16299)
- Pause queues (#15928)
- Added auto-save whitespace behavior if it changed manually (#15566)
- Find files in repo (#15028)
- Provide configuration to allow camo-media proxying (#12802)
- Allow custom default merge message with
.gitea/default_merge_message/<merge_style>_TEMPLATE.md
(#18177)
API
- Add endpoint to serve blob or LFS file content (#19689)
- Add endpoint to check if team has repo access (#19540)
- More commit info (#19252)
- Allow to create file on empty repo (#19224)
- Allow removing issues (#18879)
- Add endpoint to query collaborators permission for a repository (#18761)
- Return primary language and repository language stats API URL (#18396)
- Implement http signatures support for the API (#17565)
ENHANCEMENTS
- Make notification bell more prominent on mobile (#20108, #20236, #20251) (#20269)
- Adjust max-widths for the repository file table (#20243) (#20247)
- Display full name (#20171) (#20246)
- Add dbconsistency checks for Stopwatches (#20010)
- Add fetch.writeCommitGraph to gitconfig (#20006)
- Add fgprof pprof profiler (#20005)
- Move agit dependency (#19998)
- Empty log queue on flush and close (#19994)
- Remove tab/TabName usage where it’s not needed (#19973)
- Improve file header on mobile (#19945)
- Move issues related files into models/issues (#19931)
- Add breaking email restrictions checker in doctor (#19903)
- Improve UX on modal for deleting an access token (#19894)
- Add alt text to logo (#19892)
- Move some code into models/git (#19879)
- Remove customized (unmaintained) dropdown, improve aria a11y for dropdown (#19861)
- Make user profile image show full image on mobile (#19840)
- Replace blue button and label classes with primary (#19763)
- Remove fomantic progress module (#19760)
- Allows repo search to match against “owner/repo” pattern strings (#19754)
- Move org functions (#19753)
- Move almost all functions’ parameter db.Engine to context.Context (#19748)
- Show source/target branches on PR’s list (#19747)
- Use http.StatusTemporaryRedirect(307) when serve avatar directly (#19739)
- Add doctor orphan check for orphaned pull requests without an existing base repo (#19731)
- Make Ctrl+Enter (quick submit) work for issue comment and wiki editor (#19729)
- Update go-chi/cache to utilize Ping() (#19719)
- Improve commit list/view on mobile (#19712)
- Move some repository related code into sub package (#19711)
- Use a better OlderThan for DeleteInactiveUsers (#19693)
- Introduce eslint-plugin-jquery (#19690)
- Tidy up
<head>
template (#19678)
- Calculate filename hash only once (#19654)
- Simplify
IsVendor
(#19626)
- Add “Reference” section to Issue view sidebar (#19609)
- Only set CanColorStdout / CanColorStderr to true if the stdout/stderr is a terminal (#19581)
- Use for a repo action one database transaction (#19576)
- Simplify loops to copy (#19569)
- Added X-Mailer header to outgoing emails (#19562)
- use middleware to open gitRepo (#19559)
- Mute link in diff header (#19556)
- Improve UI on mobile (#19546)
- Fix Pull Request comment filename word breaks (#19535)
- Permalink files In PR diff (#19534)
- PullService lock via pullID (#19520)
- Make repository file list useable on mobile (#19515)
- more context for models (#19511)
- Refactor readme file renderer (#19502)
- By default force vertical tabs on mobile (#19486)
- Github style following followers (#19482)
- Improve action table indices (#19472)
- Use horizontal tabs for repo header on mobile (#19468)
- pass gitRepo down since its used for main repo and wiki (#19461)
- Admin should not delete himself (#19423)
- Use queue instead of memory queue in webhook send service (#19390)
- Simplify the code to get issue count (#19380)
- Add commit status popup to issuelist (#19375)
- Add RSS Feed buttons to Repo, User and Org pages (#19370)
- Add logic to switch between source/rendered on Markdown (#19356)
- Move some helper files out of models (#19355)
- Move access and repo permission to models/perm/access (#19350)
- Disallow selecting the text of buttons (#19330)
- Allow custom redirect for landing page (#19324)
- Remove dependent on session auth for api/v1 routers (#19321)
- Never use /api/v1 from Gitea UI Pages (#19318)
- Remove legacy unmaintained packages, refactor to support change default locale (#19308)
- Move milestone to models/issues/ (#19278)
- Configure OpenSSH log level via Environment in Docker (#19274)
- Move reaction to models/issues/ (#19264)
- Make git.OpenRepository accept Context (#19260)
- Move some issue methods as functions (#19255)
- Show last cron messages on monitor page (#19223)
- New cron task: delete old system notices (#19219)
- Add Redis Sentinel Authentication Support (#19213)
- Add auto logging of goroutine pid label (#19212)
- Set OpenGraph title to DisplayName in profile pages (#19206)
- Add pprof labels in processes and for lifecycles (#19202)
- Let web and API routes have different auth methods group (#19168)
- Move init repository related functions to modules (#19159)
- Feeds: render markdown to html (#19058)
- Allow users to self-request a PR review (#19030)
- Allow render HTML with css/js external links (#19017)
- Fix script compatiable with OpenWrt (#19000)
- Support ignore all santize for external renderer (#18984)
- Add note to GPG key response if user has no keys (#18961)
- Improve Stopwatch behavior (#18930)
- Improve mirror iterator (#18928)
- Uncapitalize errors (#18915)
- Prevent Stats Indexer reporting error if repo dir missing (#18870)
- Refactor SecToTime() function (#18863)
- Replace deprecated String.prototype.substr() with String.prototype.slice() (#18796)
- Move deletebeans into models/db (#18781)
- Fix display time of milestones (#18753)
- Add config option to disable “Update branch by rebase” (#18745)
- Display template path of current page in dev mode (#18717)
- Add number in queue status to monitor page (#18712)
- Change git.cmd to RunWithContext (#18693)
- Refactor i18n, use Locale to provide i18n/translation related functions (#18648)
- Delete old git.NewCommand() and use it as git.NewCommandContext() (#18552)
- Move organization related structs into sub package (#18518)
- Warn at startup if the provided
SCRIPT_TYPE
is not on the PATH (#18467)
- Use
CryptoRandomBytes
instead of CryptoRandomString
(#18439)
- Use explicit jQuery import, remove unused eslint globals (#18435)
- Allow to filter repositories by language in explore, user and organization repositories lists (#18430)
- Use base32 for 2FA scratch token (#18384)
- Unexport var git.GlobalCommandArgs (#18376)
- Don’t underline commit status icon on hover (#18372)
- Always use git command but not os.Command (#18363)
- Switch to non-deprecation setting (#18358)
- Set the LastModified header for raw files (#18356)
- Refactor jwt.StandardClaims to RegisteredClaims (#18344)
- Enable deprecation error for v1.17.0 (#18341)
- Refactor httplib (#18338)
- Limit max-height of CodeMirror editors for issue comment and wiki (#18271)
- Validate migration files (#18203)
- Format with gofumpt (#18184)
- Prettify number of issues (#17760)
- Add a “admin user generate-access-token” subcommand (#17722)
- Custom regexp external issues (#17624)
- Add smtp password to install page (#17564)
- Add config options to hide issue events (#17414)
- Prevent double click new issue/pull/comment button (#16157)
- Show issue assignee on project board (#15232)
BUGFIXES
- WebAuthn CredentialID field needs to be increased in size (#20530) (#20555)
- Ensure that all unmerged files are merged when conflict checking (#20528) (#20536)
- Stop logging EOFs and exit(1)s in ssh handler (#20476) (#20529)
- Add labels to two buttons that were missing them (#20419) (#20524)
- Fix ROOT_URL detection for URLs without trailing slash (#20502) (#20503)
- Dismiss prior pull reviews if done via web in review dismiss (#20197) (#20407)
- Allow RSA 2047 bit keys (#20272) (#20396)
- Add missing return for when topic isn’t found (#20351) (#20395)
- Fix commit status icon when in subdirectory (#20285) (#20385)
- Initialize cron last (#20373) (#20384)
- Set target on create release with existing tag (#20381) (#20382)
- Update xorm.io/xorm to fix a interpreting db column sizes issue on 32bit systems (#20371) (#20372)
- Make sure
repo_dir
is an empty directory or doesn’t exist before ‘dump-repo’ (#20205) (#20370)
- Prevent context deadline error propagation in GetCommitsInfo (#20346) (#20361)
- Correctly handle draft releases without a tag (#20314) (#20335)
- Prevent “empty” scrollbars on Firefox (#20294) (#20308)
- Refactor SSH init code, fix directory creation for TrustedUserCAKeys file (#20299) (#20306)
- Bump goldmark to v1.4.13 (#20300) (#20301)
- Do not create empty “.ssh” directory when loading config (#20289) (#20298)
- Fix NPE when using non-numeric (#20277) (#20278)
- Store read access in access for team repositories (#20275) (#20276)
- EscapeFilter the group dn membership (#20200) (#20254)
- Only show Followers that current user can access (#20220) (#20252)
- Update Bluemonday to v1.0.19 (#20199) (#20209)
- Refix indices on actions table (#20158) (#20198)
- Check if project has the same repository id with issue when assign project to issue (#20133) (#20188)
- Fix remove file on initial comment (#20127) (#20128)
- Catch the error before the response is processed by goth (#20000) (#20102)
- Dashboard feed respect setting.UI.FeedPagingNum again (#20094) (#20099)
- Alter hook_task TEXT fields to LONGTEXT (#20038) (#20041)
- Respond with a 401 on git push when password isn’t changed yet (#20026) (#20027)
- Return 404 when tag is broken (#20017) (#20024)
- Alter hook_task TEXT fields to LONGTEXT (#20038) (#20041)
- Respond with a 401 on git push when password isn’t changed yet (#20026) (#20027)
- Return 404 when tag is broken (#20017) (#20024)
- Write Commit-Graphs in RepositoryDumper (#20004)
- Use DisplayName() instead of FullName in Oauth Provider (#19991)
- Don’t buffer doctor logger (#19982)
- Always try to fetch repo for mirrors (#19975)
- Uppercase first languages letters (#19965)
- Fix cli command restore-repo: “units” should be parsed as StringSlice (#19953)
- Ensure minimum mirror interval is reported on settings page (#19895)
- Exclude Archived repos from Dashboard Milestones (#19882)
- gitconfig: set safe.directory = * (#19870)
- Prevent NPE on update mirror settings (#19864)
- Only return valid stopwatches to the EventSource (#19863)
- Prevent NPE whilst migrating if there is a team request review (#19855)
- Fix inconsistency in doctor output (#19836)
- Fix release tag for webhook (#19830)
- Add title attribute to dependencies in sidebar (#19807)
- Estimate Action Count in Statistics (#19775)
- Do not update user stars numbers unless fix is specified (#19750)
- Improved ref comment link when origin is body/title (#19741)
- Fix nodeinfo caching and prevent NPE if cache non-existent (#19721)
- Fix duplicate entry error when add team member (#19702)
- Fix sending empty notifications (#19589)
- Update image URL for Discord webhook (#19536)
- Don’t let repo clone URL overflow (#19517)
- Allow commit status popup on /pulls page (#19507)
- Fix two UI bugs: JS error in imagediff.js, 500 error in diff/compare.tmpl (#19494)
- Fix logging of Transfer API (#19456)
- Fix panic in teams API when requesting members (#19360)
- Refactor CSRF protection modules, make sure CSRF tokens can be up-to-date. (#19337)
- An attempt to sync a non-mirror repo must give 400 (Bad Request) (#19300)
- Move checks for pulls before merge into own function (#19271)
- Fix
contrib/upgrade.sh
(#19222)
- Set the default branch for repositories generated from templates (#19136)
- Fix EasyMDE error when input Enter (#19004)
- Don’t clean up hardcoded
tmp
(#18983)
- Delete related notifications on issue deletion too (#18953)
- Fix trace log to show value instead of pointers (#18926)
- Fix behavior or checkbox submission. (#18851)
- Add
ContextUser
(#18798)
- Fix some mirror bugs (#18649)
- Quote MAKE to prevent path expansion with space error (#18622)
- Preserve users if restoring a repository on the same Gitea instance (#18604)
- Fix non-ASCII search on database (#18437)
- Automatically pause queue if index service is unavailable (#15066)
TESTING
- Allow postgres integration tests to run over unix pipe (#19875)
- Prevent intermittent NPE in queue tests (#19301)
- Add test for importing pull requests in gitea uploader for migrations (#18752)
- Remove redundant comparison in repo dump/restore (#18660)
- More repo dump/restore tests, including pull requests (#18621)
- Add test coverage for original author conversion during migrations (#18506)
TRANSLATION
- Update issue_no_dependencies description (#19112)
- Refactor webhooks i18n (#18380)
BUILD
DOCS
- Update documents (git/fomantic/db, etc) (#19868)
- Update the ROOT documentation and error messages (#19832)
- Update document to use FHS
/usr/local/bin/gitea
instead of /app/...
for Docker (#19794)
- Update documentation to disable duration settings with -1 instead of 0 (#19647)
- Add warning to set SENDMAIL_ARGS to – (#19102)
- Update nginx reverse proxy docs (#18922)
- Add example to render html files (#18736)
- Make SSH passtrough documentation better (#18687)
- Changelog 1.16.0 & 1.15.11 (#18468 & #18455) (#18470)
- Update the SSH passthrough documentation (#18366)
- Add
contrib/upgrade.sh
(#18286)
MISC
- Fix aria for logo (#19955)
- In code search, get code unit accessible repos in one (main) query (#19764)
- Add tooltip to pending PR comments (#19662)
- Improve sync performance for pull-mirrors (#19125)
- Improve dashboard’s repo list performance (#18963)
- Avoid database lookups for
DescriptionHTML
(#18924)
- Remove CodeMirror dependencies (#18911)
- Disable unnecessary mirroring elements (#18527)
- Disable unnecessary OpenID/OAuth2 elements (#18491)
- Disable unnecessary GitHooks elements (#18485)
- Change some logging levels (#18421)
- Prevent showing webauthn error for every time visiting
/user/settings/security
(#18385)
- Use correct translation key for errors (#18342)