forgejo/docs/content/doc/features/comparison.zh-cn.md
KN4CK3R fc037b4b82
Add support for incoming emails (#22056)
closes #13585
fixes #9067
fixes #2386
ref #6226
ref #6219
fixes #745

This PR adds support to process incoming emails to perform actions.
Currently I added handling of replies and unsubscribing from
issues/pulls. In contrast to #13585 the IMAP IDLE command is used
instead of polling which results (in my opinion ๐Ÿ˜‰) in cleaner code.

Procedure:
- When sending an issue/pull reply email, a token is generated which is
present in the Reply-To and References header.
- IMAP IDLE waits until a new email arrives
- The token tells which action should be performed

A possible signature and/or reply gets stripped from the content.

I added a new service to the drone pipeline to test the receiving of
incoming mails. If we keep this in, we may test our outgoing emails too
in future.

Co-authored-by: silverwind <me@silverwind.io>
Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com>
2023-01-14 23:57:10 +08:00

131 lines
20 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
date: "2019-02-14T11:51:04+08:00"
title: "ๆจชๅ‘ๅฏนๆฏ” Gitea ไธŽๅ…ถๅฎƒ Git ๆ‰˜็ฎกๅทฅๅ…ท"
slug: "comparison"
weight: 5
toc: false
draft: false
menu:
sidebar:
parent: "features"
name: "ๆจชๅ‘ๅฏนๆฏ”"
weight: 5
identifier: "comparison"
---
# ๆจชๅ‘ๅฏนๆฏ” Gitea ไธŽๅ…ถๅฎƒ Git ๆ‰˜็ฎกๅทฅๅ…ท
่ฟ™้‡Œๅˆ—ๅ‡บไบ† Gitea ไธŽๅ…ถๅฎƒไธ€ไบ› Git ๆ‰˜็ฎกๅทฅๅ…ทไน‹้—ด็š„ๅผ‚ๅŒ๏ผŒไปฅไพฟ็กฎ่ฎค Gitea ๆ˜ฏๅฆ่ƒฝๅคŸๆปก่ถณๆ‚จ็š„้œ€ๆฑ‚ใ€‚
่ฏทๆณจๆ„๏ผŒๆญคๅˆ—่กจไธญ็š„ๆŸไบ›่กจ้กนๅฏ่ƒฝๅทฒ็ป่ฟ‡ๆ—ถ๏ผŒๅ› ไธบๆˆ‘ไปฌๅนถๆฒกๆœ‰ๅฎšๆœŸๆฃ€ๆŸฅๅ…ถๅฎƒไบงๅ“็š„ๅŠŸ่ƒฝๆ˜ฏๅฆๆœ‰ๆ‰€ๆ›ดๆ”นใ€‚ไฝ ๅฏไปฅๅ‰ๅพ€ [Github issue](https://github.com/go-gitea/gitea/issues) ๆฅๅธฎๅŠฉๆˆ‘ไปฌๆ›ดๆ–ฐ่ฟ‡ๆ—ถ็š„ๅ†…ๅฎน๏ผŒๆ„Ÿ่ฐข๏ผ
_่กจๆ ผไธญ็š„็ฌฆๅทๅซไน‰:_
* _โœ“ - ๆ”ฏๆŒ_
* _โ„ - ้ƒจๅˆ†ๆ”ฏๆŒ_
* _โœ˜ - ไธๆ”ฏๆŒ_
* _? - ไธ็กฎๅฎš_
#### ไธป่ฆ็‰นๆ€ง
| ็‰นๆ€ง | Gitea | Gogs | GitHub EE | GitLab CE | GitLab EE | BitBucket | RhodeCode CE |
| --------------------- | -------------------------------------------------- | ---- | --------- | --------- | --------- | -------------- | ------------ |
| ๅผ€ๆบๅ…่ดน | โœ“ | โœ“ | โœ˜ | โœ“ | โœ˜ | โœ˜ | โœ“ |
| ไฝŽ่ต„ๆบๅผ€้”€ (RAM/CPU) | โœ“ | โœ“ | โœ˜ | โœ˜ | โœ˜ | โœ˜ | โœ˜ |
| ๆ”ฏๆŒๅคš็งๆ•ฐๆฎๅบ“ | โœ“ | โœ“ | โœ˜ | โ„ | โ„ | โœ“ | โœ“ |
| ๆ”ฏๆŒๅคš็งๆ“ไฝœ็ณป็ปŸ | โœ“ | โœ“ | โœ˜ | โœ˜ | โœ˜ | โœ˜ | โœ“ |
| ๅ‡็บง็ฎ€ไพฟ | โœ“ | โœ“ | โœ˜ | โœ“ | โœ“ | โœ˜ | โœ“ |
| ๆ”ฏๆŒ Markdown | โœ“ | โœ“ | โœ“ | โœ“ | โœ“ | โœ“ | โœ“ |
| ๆ”ฏๆŒ Orgmode | โœ“ | โœ˜ | โœ“ | โœ˜ | โœ˜ | โœ˜ | ? |
| ๆ”ฏๆŒ CSV | โœ“ | โœ˜ | โœ“ | โœ˜ | โœ˜ | โœ“ | ? |
| ๆ”ฏๆŒ็ฌฌไธ‰ๆ–นๆธฒๆŸ“ๅทฅๅ…ท | โœ“ | โœ˜ | โœ˜ | โœ˜ | โœ˜ | โœ“ | ? |
| Git ้ฉฑๅŠจ็š„้™ๆ€ pages | [โœ˜](https://github.com/go-gitea/gitea/issues/302) | โœ˜ | โœ“ | โœ“ | โœ“ | โœ˜ | โœ˜ |
| Git ้ฉฑๅŠจ็š„้›†ๆˆๅŒ– wiki | โœ“ | โœ“ | โœ“ | โœ“ | โœ“ | โœ“ (cloud only) | โœ˜ |
| ้ƒจ็ฝฒไปค็‰Œ | โœ“ | โœ“ | โœ“ | โœ“ | โœ“ | โœ“ | โœ“ |
| ไป“ๅบ“ๅ†™ๆƒ้™ไปค็‰Œ | โœ“ | โœ˜ | โœ“ | โœ“ | โœ“ | โœ“ | โœ“ |
| ๅ†…็ฝฎๅฎนๅ™จ Registry | โœ“ | โœ˜ | โœ“ | โœ“ | โœ“ | โœ˜ | โœ˜ |
| ๅค–้ƒจ Git ้•œๅƒ | โœ“ | โœ“ | โœ˜ | โœ˜ | โœ“ | โœ“ | โœ“ |
| WebAuthn (2FA) | โœ“ | โœ˜ | โœ“ | โœ“ | โœ“ | โœ“ | ? |
| ๅ†…็ฝฎ CI/CD | โœ˜ | โœ˜ | โœ“ | โœ“ | โœ“ | โœ˜ | โœ˜ |
| ๅญ็ป„็ป‡๏ผš็ป„็ป‡ๅ†…็š„็ป„็ป‡ | [โœ˜](https://github.com/go-gitea/gitea/issues/1872) | โœ˜ | โœ˜ | โœ“ | โœ“ | โœ˜ | โœ“ |
#### ไปฃ็ ็ฎก็†
| ็‰นๆ€ง | Gitea | Gogs | GitHub EE | GitLab CE | GitLab EE | BitBucket | RhodeCode CE |
| ---------------------------------------- | ------------------------------------------------ | ---- | --------- | --------- | --------- | --------- | ------------ |
| ไป“ๅบ“ไธป้ข˜ๆ่ฟฐ | โœ“ | โœ˜ | โœ“ | โœ“ | โœ“ | โœ˜ | โœ˜ |
| ไป“ๅบ“ๅ†…ไปฃ็ ๆœ็ดข | โœ“ | โœ˜ | โœ“ | โœ“ | โœ“ | โœ“ | โœ“ |
| ๅ…จๅฑ€ไปฃ็ ๆœ็ดข | โœ“ | โœ˜ | โœ“ | โœ˜ | โœ“ | โœ“ | โœ“ |
| Git LFS 2.0 | โœ“ | โœ˜ | โœ“ | โœ“ | โœ“ | โœ“ | โœ“ |
| ็ป„็ป‡้‡Œ็จ‹็ข‘ | โœ˜ | โœ˜ | โœ˜ | โœ“ | โœ“ | โœ˜ | โœ˜ |
| ็ป†็ฒ’ๅบฆ็”จๆˆท่ง’่‰ฒ (ไพ‹ๅฆ‚ Code, Issues, Wiki) | โœ“ | โœ˜ | โœ˜ | โœ“ | โœ“ | โœ˜ | โœ˜ |
| ๆไบคไบบ็š„่บซไปฝ้ชŒ่ฏ | โ„ | โœ˜ | ? | โœ“ | โœ“ | โœ“ | โœ˜ |
| GPG ็ญพๅ็š„ๆไบค | โœ“ | โœ˜ | โœ“ | โœ“ | โœ“ | โœ“ | โœ“ |
| SSH ็ญพๅ็š„ๆไบค | โœ“ | โœ˜ | โœ˜ | โœ˜ | โœ˜ | ? | ? |
| ๆ‹’็ปๆœช็”จ้€š่ฟ‡้ชŒ่ฏ็š„ๆไบค | [โœ“](https://github.com/go-gitea/gitea/pull/9708) | โœ˜ | โœ“ | โœ“ | โœ“ | โœ“ | โœ“ |
| ไป“ๅบ“ๆดป่ทƒๅบฆ้กต้ข | โœ“ | โœ˜ | โœ“ | โœ“ | โœ“ | โœ“ | โœ“ |
| ๅˆ†ๆ”ฏ็ฎก็† | โœ“ | โœ˜ | โœ“ | โœ“ | โœ“ | โœ“ | โœ“ |
| ๅปบ็ซ‹ๆ–ฐๅˆ†ๆ”ฏ | โœ“ | โœ˜ | โœ“ | โœ“ | โœ“ | โœ˜ | โœ˜ |
| ๅœจ็บฟไปฃ็ ็ผ–่พ‘ | โœ“ | โœ“ | โœ“ | โœ“ | โœ“ | โœ“ | โœ“ |
| ๆไบค็š„็ปŸ่ฎกๅ›พ่กจ | โœ“ | โœ˜ | โœ“ | โœ“ | โœ“ | โœ“ | โœ“ |
| ๆจกๆฟไป“ๅบ“ | [โœ“](https://github.com/go-gitea/gitea/pull/8768) | โœ˜ | โœ“ | โœ˜ | โœ“ | โœ“ | โœ˜ |
#### ๅทฅๅ•็ฎก็†
| ็‰นๆ€ง | Gitea | Gogs | GitHub EE | GitLab CE | GitLab EE | BitBucket | RhodeCode CE |
| ------------------- | -------------------------------------------------- | --------------------------------------------- | --------- | ----------------------------------------------------------------------- | --------- | -------------- | ------------ |
| ๅทฅๅ•่ทŸ่ธช | โœ“ | โœ“ | โœ“ | โœ“ | โœ“ | โœ“ (cloud only) | โœ˜ |
| ๅทฅๅ•ๆจกๆฟ | โœ“ | โœ“ | โœ“ | โœ“ | โœ“ | โœ˜ | โœ˜ |
| ๆ ‡็ญพ | โœ“ | โœ“ | โœ“ | โœ“ | โœ“ | โœ˜ | โœ˜ |
| ๆ—ถ้—ด่ทŸ่ธช | โœ“ | โœ˜ | โœ“ | โœ“ | โœ“ | โœ˜ | โœ˜ |
| ๆ”ฏๆŒๅคšไธช่ดŸ่ดฃไบบ | โœ“ | โœ˜ | โœ“ | โœ˜ | โœ“ | โœ˜ | โœ˜ |
| ๅ…ณ่”็š„ๅทฅๅ• | โœ˜ | โœ˜ | โ„ | [โœ“](https://docs.gitlab.com/ce/user/project/issues/related_issues.html) | โœ“ | โœ˜ | โœ˜ |
| ็งๅฏ†ๅทฅๅ• | [โœ˜](https://github.com/go-gitea/gitea/issues/3217) | โœ˜ | โœ˜ | โœ“ | โœ“ | โœ˜ | โœ˜ |
| ่ฏ„่ฎบๅ้ฆˆ | โœ“ | โœ˜ | โœ“ | โœ“ | โœ“ | โœ˜ | โœ˜ |
| ้”ๅฎš่ฎจ่ฎบ | โœ“ | โœ˜ | โœ“ | โœ“ | โœ“ | โœ˜ | โœ˜ |
| ๅทฅๅ•ๆ‰นๅค„็† | โœ“ | โœ˜ | โœ“ | โœ“ | โœ“ | โœ˜ | โœ˜ |
| ๅทฅๅ•็œ‹ๆฟ | [โœ“](https://github.com/go-gitea/gitea/pull/8346) | โœ˜ | โœ˜ | โœ“ | โœ“ | โœ˜ | โœ˜ |
| ไปŽๅทฅๅ•ๅˆ›ๅปบๅˆ†ๆ”ฏ | โœ˜ | โœ˜ | โœ˜ | โœ“ | โœ“ | โœ˜ | โœ˜ |
| ๅทฅๅ•ๆœ็ดข | โœ“ | โœ˜ | โœ“ | โœ“ | โœ“ | โœ“ | โœ˜ |
| ๅทฅๅ•ๅ…จๅฑ€ๆœ็ดข | [โœ˜](https://github.com/go-gitea/gitea/issues/2434) | โœ˜ | โœ“ | โœ“ | โœ“ | โœ“ | โœ˜ |
| ๅทฅๅ•ไพ่ต–ๅ…ณ็ณป | โœ“ | โœ˜ | โœ˜ | โœ˜ | โœ˜ | โœ˜ | โœ˜ |
| ้€š่ฟ‡ Email ๅˆ›ๅปบๅทฅๅ• | [โœ˜](https://github.com/go-gitea/gitea/issues/6226) | [โœ˜](https://github.com/gogs/gogs/issues/2602) | โœ˜ | โœ“ | โœ“ | โœ“ | โœ˜ |
| ๆœๅŠกๅฐ | [โœ˜](https://github.com/go-gitea/gitea/issues/6219) | โœ˜ | โœ˜ | [โœ“](https://gitlab.com/groups/gitlab-org/-/epics/3103) | โœ“ | โœ˜ | โœ˜ |
#### Pull/Merge requests
| ็‰นๆ€ง | Gitea | Gogs | GitHub EE | GitLab CE | GitLab EE | BitBucket | RhodeCode CE |
| ------------------------------------ | -------------------------------------------------- | ---- | --------- | --------------------------------------------------------------------------------- | --------- | ------------------------------------------------------------------------ | ------------ |
| Pull/Merge requests | โœ“ | โœ“ | โœ“ | โœ“ | โœ“ | โœ“ | โœ“ |
| Squash merging | โœ“ | โœ˜ | โœ“ | [โœ“](https://docs.gitlab.com/ce/user/project/merge_requests/squash_and_merge.html) | โœ“ | โœ“ | โœ“ |
| Rebase merging | โœ“ | โœ“ | โœ“ | โœ˜ | โ„ | โœ˜ | โœ“ |
| ่ฏ„่ฎบ Pull/Merge request ไธญ็š„ๆŸ่กŒไปฃ็  | โœ“ | โœ˜ | โœ“ | โœ“ | โœ“ | โœ“ | โœ“ |
| ๆŒ‡ๅฎš Pull/Merge request ็š„ๅฎกๆ ธไบบ | โœ“ | โœ˜ | โ„ | โœ“ | โœ“ | โœ“ | โœ“ |
| ่งฃๅ†ณ Merge ๅ†ฒ็ช | [โœ˜](https://github.com/go-gitea/gitea/issues/5158) | โœ˜ | โœ“ | โœ“ | โœ“ | โœ“ | โœ˜ |
| ้™ๅˆถๆŸไบ›็”จๆˆท็š„ push ๅ’Œ merge ๆƒ้™ | โœ“ | โœ˜ | โœ“ | โ„ | โœ“ | โœ“ | โœ“ |
| ๅ›ž้€€ๆŸไบ› commits ๆˆ– merge request | [โœ“](https://github.com/go-gitea/gitea/issues/5158) | โœ˜ | โœ“ | โœ“ | โœ“ | โœ“ | โœ˜ |
| Pull/Merge requests ๆจกๆฟ | โœ“ | โœ“ | โœ“ | โœ“ | โœ“ | โœ˜ | โœ˜ |
| ๆŸฅ็œ‹ Cherry-picking ็š„ๆ›ดๆ”น | [โœ“](https://github.com/go-gitea/gitea/issues/5158) | โœ˜ | โœ˜ | โœ“ | โœ“ | โœ˜ | โœ˜ |
| ไธ‹่ฝฝ Patch | โœ“ | โœ˜ | โœ“ | โœ“ | โœ“ | [/](https://jira.atlassian.com/plugins/servlet/mobile#issue/BCLOUD-8323) | โœ˜ |
#### ็ฌฌไธ‰ๆ–น้›†ๆˆ
| ็‰นๆ€ง | Gitea | Gogs | GitHub EE | GitLab CE | GitLab EE | BitBucket | RhodeCode CE |
| -------------------------- | -------------------------------------------------- | --------------------------------------------- | --------- | --------- | --------- | --------- | ------------ |
| ๆ”ฏๆŒ Webhook | โœ“ | โœ“ | โœ“ | โœ“ | โœ“ | โœ“ | โœ“ |
| ่‡ชๅฎšไน‰ Git ้’ฉๅญ | โœ“ | โœ“ | โœ“ | โœ“ | โœ“ | โœ“ | โœ“ |
| ้›†ๆˆ AD / LDAP | โœ“ | โœ“ | โœ“ | โœ“ | โœ“ | โœ“ | โœ“ |
| ๆ”ฏๆŒๅคšไธช LDAP / AD ๆœๅŠก | โœ“ | โœ“ | โœ˜ | โœ˜ | โœ“ | โœ“ | โœ“ |
| LDAP ็”จๆˆทๅŒๆญฅ | โœ“ | โœ˜ | โœ“ | โœ“ | โœ“ | โœ“ | โœ“ |
| SAML 2.0 service provider | [โœ˜](https://github.com/go-gitea/gitea/issues/5512) | [โœ˜](https://github.com/gogs/gogs/issues/1221) | โœ“ | โœ“ | โœ“ | โœ“ | โœ˜ |
| ๆ”ฏๆŒ OpenId ่ฟžๆŽฅ | โœ“ | โœ˜ | โœ“ | โœ“ | โœ“ | ? | โœ˜ |
| ้›†ๆˆ OAuth 2.0๏ผˆๅค–้ƒจๆŽˆๆƒ๏ผ‰ | โœ“ | โœ˜ | โ„ | โœ“ | โœ“ | ? | โœ“ |
| ไฝœไธบ OAuth 2.0 provider | [โœ“](https://github.com/go-gitea/gitea/pull/5378) | โœ˜ | โœ“ | โœ“ | โœ“ | โœ“ | โœ˜ |
| ไบŒๆฌก้ชŒ่ฏ (2FA) | โœ“ | โœ“ | โœ“ | โœ“ | โœ“ | โœ“ | โœ˜ |
| ้›†ๆˆ Mattermost/Slack | โœ“ | โœ“ | โ„ | โœ“ | โœ“ | โ„ | โœ“ |
| ้›†ๆˆ Discord | โœ“ | โœ“ | โœ“ | โœ“ | โœ“ | โœ˜ | โœ˜ |
| ้›†ๆˆ Microsoft Teams | โœ“ | โœ˜ | โœ“ | โœ“ | โœ“ | โœ“ | โœ˜ |
| ๆ˜พ็คบๅค–้ƒจ CI/CD ็š„็Šถๆ€ | โœ“ | โœ˜ | โœ“ | โœ“ | โœ“ | โœ“ | โœ“ |