forgejo/docs/content/doc/features/comparison.zh-tw.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

132 lines
19 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: "2018-05-07T13:00:00+02:00"
title: "ๆฏ”่ผƒ Gitea ๅ’Œๅ…ถๅฎƒ่‡ช่จ—็ฎก Git ๆœๅ‹™"
slug: "comparison"
weight: 5
toc: false
draft: false
menu:
sidebar:
parent: "features"
name: "ๆฏ”่ผƒ"
weight: 5
identifier: "comparison"
---
# ๆฏ”่ผƒ Gitea ๅ’Œๅ…ถๅฎƒ่‡ช่จ—็ฎก Git ๆœๅ‹™
**็›ฎ้Œ„**
{{< toc >}}
็‚บไบ†ๅนซๅŠฉๆ‚จๅˆคๆ–ท Gitea ๆ˜ฏๅฆ้ฉๅˆๆ‚จ็š„้œ€ๆฑ‚๏ผŒ้€™่ฃกๅˆ—ๅ‡บไบ†ๅฎƒๅ’Œๅ…ถๅฎƒ่‡ช่จ—็ฎก Git ๆœๅ‹™็š„ๆฏ”่ผƒใ€‚
่ซ‹ๆณจๆ„ๆˆ‘ๅ€‘ไธๆœƒ็ถ“ๅธธๆชขๆŸฅๅ…ถๅฎƒ็”ขๅ“็š„ๅŠŸ่ƒฝ็•ฐๅ‹•๏ผŒๆ‰€ไปฅ้€™ไปฝๆธ…ๅ–ฎๅฏ่ƒฝ้ŽๆœŸ๏ผŒๅฆ‚ๆžœๆ‚จๅœจไธ‹ๆ–น่กจๆ ผไธญๆ‰พๅˆฐ้œ€่ฆๆ›ดๆ–ฐ็š„่ณ‡ๆ–™๏ผŒ่ซ‹ๅœจ [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 ้ฉ…ๅ‹•็š„้œๆ…‹้ ้ข | [โœ˜](https://github.com/go-gitea/gitea/issues/302) | โœ˜ | โœ“ | โœ“ | โœ“ | โœ˜ | โœ˜ |
| Git ้ฉ…ๅ‹•็š„ๆ•ดๅˆ wiki | โœ“ | โœ“ | โœ“ | โœ“ | โœ“ | โœ“ | โœ˜ |
| ้ƒจ็ฝฒ Token | โœ“ | โœ“ | โœ“ | โœ“ | โœ“ | โœ“ | โœ“ |
| ๆœ‰ๅฏซๅ…ฅๆฌŠ้™็š„ๅ„ฒๅญ˜ๅบซ Token | โœ“ | โœ˜ | โœ“ | โœ“ | โœ“ | โœ˜ | โœ“ |
| ๅ…งๅปบ Container Registry | [โœ˜](https://github.com/go-gitea/gitea/issues/2316) | โœ˜ | โœ˜ | โœ“ | โœ“ | โœ˜ | โœ˜ |
| ๅฐๅค–้ƒจ Git ้กๅƒ | โœ“ | โœ“ | โœ˜ | โœ˜ | โœ“ | โœ“ | โœ“ |
| FIDO (2FA) | โœ“ | โœ˜ | โœ“ | โœ“ | โœ“ | โœ“ | โœ˜ |
| ๅ…งๅปบ CI/CD | โœ˜ | โœ˜ | โœ“ | โœ“ | โœ“ | โœ˜ | โœ˜ |
| ๅญ็พค็ต„: ็พค็ต„ไธญ็š„็พค็ต„ | โœ˜ | โœ˜ | โœ˜ | โœ“ | โœ“ | โœ˜ | โœ“ |
## ็จ‹ๅผ็ขผ็ฎก็†
| ๅŠŸ่ƒฝ | Gitea | Gogs | GitHub EE | GitLab CE | GitLab EE | BitBucket | RhodeCode CE |
| ----------------------------------------- | ------------------------------------------------ | ---- | --------- | --------- | --------- | --------- | ------------ |
| ๅ„ฒๅญ˜ๅบซไธป้กŒๆ่ฟฐ | โœ“ | โœ˜ | โœ“ | โœ“ | โœ“ | โœ˜ | โœ˜ |
| ๅ„ฒๅญ˜ๅบซ็จ‹ๅผ็ขผๆœๅฐ‹ | โœ“ | โœ˜ | โœ“ | โœ“ | โœ“ | โœ“ | โœ“ |
| ๅ…จๅŸŸ็จ‹ๅผ็ขผๆœๅฐ‹ | โœ“ | โœ˜ | โœ“ | โœ˜ | โœ“ | โœ“ | โœ“ |
| Git LFS 2.0 | โœ“ | โœ˜ | โœ“ | โœ“ | โœ“ | โ„ | โœ“ |
| ็พค็ต„้‡Œ็จ‹็ข‘ | โœ˜ | โœ˜ | โœ˜ | โœ“ | โœ“ | โœ˜ | โœ˜ |
| ็ฒพ็ดฐ็š„ไฝฟ็”จ่€…ๆฌŠ้™๏ผˆ็จ‹ๅผ็ขผ, ๅ•้กŒ, Wiki ็ญ‰๏ผ‰ | โœ“ | โœ˜ | โœ˜ | โœ“ | โœ“ | โœ˜ | โœ˜ |
| ้ฉ—่ญ‰ๆไบค่€… | โ„ | โœ˜ | ? | โœ“ | โœ“ | โœ“ | โœ˜ |
| GPG ็ฐฝ็ฝฒๆไบค | โœ“ | โœ˜ | โœ“ | โœ“ | โœ“ | โœ“ | โœ“ |
| ๆ‹’็ต•ๆœช็ถ“็ฐฝ็ฝฒ็š„ๆไบค | [โœ“](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 |
| -------------------- | -------------------------------------------------- | --------------------------------------------- | --------- | ----------------------------------------------------------------------- | --------- | --------- | ------------ |
| ๅ•้กŒ่ฟฝ่นคๅ™จ | โœ“ | โœ“ | โœ“ | โœ“ | โœ“ | โœ“ | โœ˜ |
| ๅ•้กŒ็ฏ„ๆœฌ | โœ“ | โœ“ | โœ“ | โœ“ | โœ“ | โœ˜ | โœ˜ |
| ๆจ™็ฑค | โœ“ | โœ“ | โœ“ | โœ“ | โœ“ | โœ˜ | โœ˜ |
| ๆ™‚้–“่ฟฝ่นค | โœ“ | โœ˜ | โœ“ | โœ“ | โœ“ | โœ˜ | โœ˜ |
| ๆŒ‡ๆดพๅ•้กŒ็ตฆๅคšๅ€‹ๆˆๅ“ก | โœ“ | โœ˜ | โœ“ | โœ˜ | โœ“ | โœ˜ | โœ˜ |
| ็›ธ้—œๅ•้กŒ | โœ˜ | โœ˜ | โ„ | [โœ“](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) | โœ˜ | โœ“ | โœ“ | โœ“ | โœ“ | โœ˜ |
| ๅ•้กŒ็›ธไพ | โœ“ | โœ˜ | โœ˜ | โœ˜ | โœ˜ | โœ˜ | โœ˜ |
| ๅพž้›ปๅญ้ƒตไปถๅปบ็ซ‹ๅ•้กŒ | [โœ˜](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) | โœ“ | โœ˜ | โœ˜ |
## ๆ‹‰ๅ–/ๅˆไฝต่ซ‹ๆฑ‚
| ๅŠŸ่ƒฝ | Gitea | Gogs | GitHub EE | GitLab CE | GitLab EE | BitBucket | RhodeCode CE |
| -------------------------- | -------------------------------------------------- | ---- | --------- | --------------------------------------------------------------------------------- | --------- | ------------------------------------------------------------------------ | ------------ |
| ๆ‹‰ๅ–/ๅˆไฝต่ซ‹ๆฑ‚ | โœ“ | โœ“ | โœ“ | โœ“ | โœ“ | โœ“ | โœ“ |
| Squash ๅˆไฝต | โœ“ | โœ˜ | โœ“ | [โœ“](https://docs.gitlab.com/ce/user/project/merge_requests/squash_and_merge.html) | โœ“ | โœ“ | โœ“ |
| Rebase ๅˆไฝต | โœ“ | โœ“ | โœ“ | โœ˜ | โ„ | โœ˜ | โœ“ |
| ๆ‹‰ๅ–/ๅˆไฝต่ซ‹ๆฑ‚็š„่กŒๅ…ง็•™่จ€ | โœ“ | โœ˜ | โœ“ | โœ“ | โœ“ | โœ“ | โœ“ |
| ๆ‹‰ๅ–/ๅˆไฝต่ซ‹ๆฑ‚็š„ๆ ธๅฏ | โœ“ | โœ˜ | โ„ | โœ“ | โœ“ | โœ“ | โœ“ |
| ่งฃๆฑบๅˆไฝต่ก็ช | [โœ˜](https://github.com/go-gitea/gitea/issues/5158) | โœ˜ | โœ“ | โœ“ | โœ“ | โœ“ | โœ˜ |
| ้™ๅˆถๆŸไบ›ไฝฟ็”จ่€…็š„ๆŽจ้€ๅŠๅˆไฝต | โœ“ | โœ˜ | โœ“ | โ„ | โœ“ | โœ“ | โœ“ |
| ้‚„ๅŽŸๆŒ‡ๅฎš็š„ๆไบคๆˆ–ๅˆไฝต่ซ‹ๆฑ‚ | [โœ˜](https://github.com/go-gitea/gitea/issues/5158) | โœ˜ | โœ“ | โœ“ | โœ“ | โœ“ | โœ˜ |
| ๆ‹‰ๅ–/ๅˆไฝต่ซ‹ๆฑ‚็ฏ„ๆœฌ | โœ“ | โœ“ | โœ“ | โœ“ | โœ“ | โœ˜ | โœ˜ |
| 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 Hook | โœ“ | โœ“ | โœ“ | โœ“ | โœ“ | โœ“ | โœ“ |
| ๆ•ดๅˆ 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 Connect | โœ“ | โœ˜ | โœ“ | โœ“ | โœ“ | ? | โœ˜ |
| ๆ•ดๅˆ OAuth 2.0 (ๅค–้ƒจ้ฉ—่ญ‰) | โœ“ | โœ˜ | โ„ | โœ“ | โœ“ | ? | โœ“ |
| ๆˆ็‚บ OAuth 2.0 ๆไพ›่€… | [โœ“](https://github.com/go-gitea/gitea/pull/5378) | โœ˜ | โœ“ | โœ“ | โœ“ | โœ“ | โœ˜ |
| ๅ…ฉๆญฅ้ฉŸ้ฉ—่ญ‰ (2FA) | โœ“ | โœ“ | โœ“ | โœ“ | โœ“ | โœ“ | โœ˜ |
| ๆ•ดๅˆ Mattermost/Slack | โœ“ | โœ“ | โ„ | โœ“ | โœ“ | โ„ | โœ“ |
| ๆ•ดๅˆ Discord | โœ“ | โœ“ | โœ“ | โœ“ | โœ“ | โœ˜ | โœ˜ |
| ๆ•ดๅˆ Microsoft Teams | โœ“ | โœ˜ | โœ“ | โœ“ | โœ“ | โœ“ | โœ˜ |
| ้กฏ็คบๅค–้ƒจ CI/CD ็‹€ๆ…‹ | โœ“ | โœ˜ | โœ“ | โœ“ | โœ“ | โœ“ | โœ“ |