|
|
|
@ -27,659 +27,93 @@ _Symbols used in table:_ |
|
|
|
|
|
|
|
|
|
* _✘ - unsupported_ |
|
|
|
|
|
|
|
|
|
<table border="1" cellpadding="4"> |
|
|
|
|
<thead> |
|
|
|
|
<tr> |
|
|
|
|
<td>Feature</td> |
|
|
|
|
<td>Gitea</td> |
|
|
|
|
<td>Gogs</td> |
|
|
|
|
<td>GitHub EE</td> |
|
|
|
|
<td>GitLab CE</td> |
|
|
|
|
<td>GitLab EE</td> |
|
|
|
|
<td>BitBucket</td> |
|
|
|
|
<td>RhodeCode CE</td> |
|
|
|
|
</tr> |
|
|
|
|
</thead> |
|
|
|
|
<tbody> |
|
|
|
|
<tr> |
|
|
|
|
<td>Open source and free</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
</tr> |
|
|
|
|
<tr> |
|
|
|
|
<td>Issue tracker</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
</tr> |
|
|
|
|
<tr> |
|
|
|
|
<td>Pull/Merge requests</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
</tr> |
|
|
|
|
<tr> |
|
|
|
|
<td>Squash merging</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
</tr> |
|
|
|
|
<tr> |
|
|
|
|
<td>Rebase merging</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
<td>⁄</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
</tr> |
|
|
|
|
<tr> |
|
|
|
|
<td>Pull/Merge request inline comments</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
</tr> |
|
|
|
|
<tr> |
|
|
|
|
<td>Pull/Merge request approval</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
<td>⁄</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
</tr> |
|
|
|
|
<tr> |
|
|
|
|
<td>Merge conflict resolution</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
</tr> |
|
|
|
|
<tr> |
|
|
|
|
<td>Restrict push and merge access to certain users</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>⁄</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
</tr> |
|
|
|
|
<tr> |
|
|
|
|
<td>Markdown support</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
</tr> |
|
|
|
|
<tr> |
|
|
|
|
<td>Issues and pull/merge requests templates</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
</tr> |
|
|
|
|
<tr> |
|
|
|
|
<td>Revert specific commits or a merge request</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
</tr> |
|
|
|
|
<tr> |
|
|
|
|
<td>Labels</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
</tr> |
|
|
|
|
<tr> |
|
|
|
|
<td>Time tracking</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
</tr> |
|
|
|
|
<tr> |
|
|
|
|
<td>Multiple assignees for issues</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
</tr> |
|
|
|
|
<tr> |
|
|
|
|
<td>Related issues</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
<td>⁄</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
</tr> |
|
|
|
|
<tr> |
|
|
|
|
<td>Confidential issues</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
</tr> |
|
|
|
|
<tr> |
|
|
|
|
<td>Comment reactions</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
</tr> |
|
|
|
|
<tr> |
|
|
|
|
<td>Lock Discussion</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
</tr> |
|
|
|
|
<tr> |
|
|
|
|
<td>Batch issue handling</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
</tr> |
|
|
|
|
<tr> |
|
|
|
|
<td>Issue Boards</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
</tr> |
|
|
|
|
<tr> |
|
|
|
|
<td>Create new branches from issues</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
</tr> |
|
|
|
|
<tr> |
|
|
|
|
<td>Commit graph</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
</tr> |
|
|
|
|
<tr> |
|
|
|
|
<td>Web code editor</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
</tr> |
|
|
|
|
<tr> |
|
|
|
|
<td>Branch manager</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
</tr> |
|
|
|
|
<tr> |
|
|
|
|
<td>Create new branches</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
</tr> |
|
|
|
|
<tr> |
|
|
|
|
<td>Repository topics</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
</tr> |
|
|
|
|
<tr> |
|
|
|
|
<td>Repository code search</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
</tr> |
|
|
|
|
<tr> |
|
|
|
|
<td>Global code search</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
</tr> |
|
|
|
|
<tr> |
|
|
|
|
<td>Issue search</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
</tr> |
|
|
|
|
<tr> |
|
|
|
|
<td>Global issue search</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
</tr> |
|
|
|
|
<tr> |
|
|
|
|
<td>Git LFS 2.0</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>⁄</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
</tr> |
|
|
|
|
<tr> |
|
|
|
|
<td>Integrated Git-powered wiki</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
</tr> |
|
|
|
|
<tr> |
|
|
|
|
<td>Static Git-powered pages</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
</tr> |
|
|
|
|
<tr> |
|
|
|
|
<td>Group Milestones</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
</tr> |
|
|
|
|
<tr> |
|
|
|
|
<td>Granular user roles (Code, Issues, Wiki etc)</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
</tr> |
|
|
|
|
<tr> |
|
|
|
|
<td>Cherry-picking changes</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
</tr> |
|
|
|
|
<tr> |
|
|
|
|
<td>GPG Signed Commits</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
</tr> |
|
|
|
|
<tr> |
|
|
|
|
<td>Reject unsigned commits</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
</tr> |
|
|
|
|
<tr> |
|
|
|
|
<td>Verified Committer</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
<td>?</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
</tr> |
|
|
|
|
<tr> |
|
|
|
|
<td>Subgroups: groups within groups</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
</tr> |
|
|
|
|
<tr> |
|
|
|
|
<td>Custom Git Hooks</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
</tr> |
|
|
|
|
<tr> |
|
|
|
|
<td>Repository Activity page</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
</tr> |
|
|
|
|
<tr> |
|
|
|
|
<td>Deploy Tokens</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
</tr> |
|
|
|
|
<tr> |
|
|
|
|
<td>Repository Tokens with write rights</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
</tr> |
|
|
|
|
<tr> |
|
|
|
|
<td>Easy upgrade process</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
</tr> |
|
|
|
|
<tr> |
|
|
|
|
<td>Built-in Container Registry</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
</tr> |
|
|
|
|
<tr> |
|
|
|
|
<td>External git mirroring</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
</tr> |
|
|
|
|
<tr> |
|
|
|
|
<td>AD / LDAP integration</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
</tr> |
|
|
|
|
<tr> |
|
|
|
|
<td>Multiple LDAP / AD server support</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
</tr> |
|
|
|
|
<tr> |
|
|
|
|
<td>LDAP user synchronization</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
</tr> |
|
|
|
|
<tr> |
|
|
|
|
<td>OpenId Connect support</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>?</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
</tr> |
|
|
|
|
<tr> |
|
|
|
|
<td>OAuth 2.0 integration (external authorization)</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
<td>⁄</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>?</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
</tr> |
|
|
|
|
<tr> |
|
|
|
|
<td>Act as OAuth 2.0 provider</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
</tr> |
|
|
|
|
<tr> |
|
|
|
|
<td>Two factor authentication (2FA)</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
</tr> |
|
|
|
|
<tr> |
|
|
|
|
<td>FIDO U2F (2FA)</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
</tr> |
|
|
|
|
<tr> |
|
|
|
|
<td>Webhook support</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
</tr> |
|
|
|
|
<tr> |
|
|
|
|
<td>Mattermost/Slack integration</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>⁄</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>⁄</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
</tr> |
|
|
|
|
<tr> |
|
|
|
|
<td>Discord integration</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
</tr> |
|
|
|
|
<tr> |
|
|
|
|
<td>Built-in CI/CD</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
</tr> |
|
|
|
|
<tr> |
|
|
|
|
<td>External CI/CD status display</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
</tr> |
|
|
|
|
<tr> |
|
|
|
|
<td>Multiple database support</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
<td>⁄</td> |
|
|
|
|
<td>⁄</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
</tr> |
|
|
|
|
<tr> |
|
|
|
|
<td>Multiple OS support</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
</tr> |
|
|
|
|
<tr> |
|
|
|
|
<td>Low resource usage (RAM/CPU)</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✓</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
<td>✘</td> |
|
|
|
|
</tr> |
|
|
|
|
</tbody> |
|
|
|
|
</table> |
|
|
|
|
#### General Features |
|
|
|
|
|
|
|
|
|
| Feature | Gitea | Gogs | GitHub EE | GitLab CE | GitLab EE | BitBucket | RhodeCode CE | |
|
|
|
|
|---------|-------|------|-----------|-----------|-----------|-----------|--------------| |
|
|
|
|
| Open source and free | ✓ | ✓ | ✘| ✓ | ✘ | ✘ | ✓ | |
|
|
|
|
| Low resource usage (RAM/CPU) | ✓ | ✓ | ✘ | ✘ | ✘ | ✘ | ✘ | |
|
|
|
|
| Multiple database support | ✓ | ✓ | ✘ | ⁄ | ⁄ | ✓ | ✓ | |
|
|
|
|
| Multiple OS support | ✓ | ✓ | ✘ | ✘ | ✘ | ✘ | ✓ | |
|
|
|
|
| Easy upgrade process | ✓ | ✓ | ✘ | ✓ | ✓ | ✘ | ✓ | |
|
|
|
|
| Markdown support | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |
|
|
|
|
| Static Git-powered pages | ✘ | ✘ | ✓ | ✓ | ✓ | ✘ | ✘ | |
|
|
|
|
| Integrated Git-powered wiki | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✘ | |
|
|
|
|
| Deploy Tokens | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |
|
|
|
|
| Repository Tokens with write rights | ✓ | ✘ | ✓ | ✓ | ✓ | ✘ | ✓ | |
|
|
|
|
| Built-in Container Registry | ✘ | ✘ | ✘ | ✓ | ✓ | ✘ | ✘ | |
|
|
|
|
| External git mirroring | ✓ | ✓ | ✘ | ✘ | ✓ | ✓ | ✓ | |
|
|
|
|
| FIDO U2F (2FA) | ✓ | ✘ | ✓ | ✓ | ✓ | ✓ | ✘ | |
|
|
|
|
| Built-in CI/CD | ✘ | ✘ | ✘ | ✓ | ✓ | ✘ | ✘ | |
|
|
|
|
| Subgroups: groups within groups | ✘ | ✘ | ✘ | ✓ | ✓ | ✘ | ✓ | |
|
|
|
|
|
|
|
|
|
#### Code management |
|
|
|
|
|
|
|
|
|
| Feature | Gitea | Gogs | GitHub EE | GitLab CE | GitLab EE | BitBucket | RhodeCode CE | |
|
|
|
|
|---------|-------|------|-----------|-----------|-----------|-----------|--------------| |
|
|
|
|
| Repository topics | ✓ | ✘ | ✓ | ✓ | ✓ | ✘ | ✘ | |
|
|
|
|
| Repository code search | ✓ | ✘ | ✓ | ✓ | ✓ | ✓ | ✓ | |
|
|
|
|
| Global code search | ✓ | ✘ | ✓ | ✓ | ✓ | ✓ | ✓ | |
|
|
|
|
| Git LFS 2.0 | ✓ | ✘ | ✓ | ✓ | ✓ | ⁄ | ✓ | |
|
|
|
|
| Group Milestones | ✘ | ✘ | ✘ | ✓ | ✓ | ✘ | ✘ | |
|
|
|
|
| Granular user roles (Code, Issues, Wiki etc) | ✓ | ✘ | ✘ | ✓ | ✓ | ✘ | ✘ | |
|
|
|
|
| Verified Committer | ✘ | ✘ | ? | ✓ | ✓ | ✓ | ✘ | |
|
|
|
|
| GPG Signed Commits | ✓ | ✘ | ✓ | ✓ | ✓ | ✓ | ✓ | |
|
|
|
|
| Reject unsigned commits | ✘ | ✘ | ✓ | ✓ | ✓ | ✘ | ✓ | |
|
|
|
|
| Repository Activity page | ✓ | ✘ | ✓ | ✓ | ✓ | ✓ | ✓ | |
|
|
|
|
| Branch manager | ✓ | ✘ | ✓ | ✓ | ✓ | ✓ | ✓ | |
|
|
|
|
| Create new branches | ✓ | ✘ | ✓ | ✓ | ✓ | ✘ | ✘ | |
|
|
|
|
| Web code editor | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |
|
|
|
|
| Commit graph | ✓ | ✘ | ✓ | ✓ | ✓ | ✓ | ✓ | |
|
|
|
|
|
|
|
|
|
#### Issue Tracker |
|
|
|
|
|
|
|
|
|
| Feature | Gitea | Gogs | GitHub EE | GitLab CE | GitLab EE | BitBucket | RhodeCode CE | |
|
|
|
|
|---------|-------|------|-----------|-----------|-----------|-----------|--------------| |
|
|
|
|
| Issue tracker | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✘ | |
|
|
|
|
| Issue templates | ✓ | ✓ | ✓ | ✓ | ✓ | ✘ | ✘ | |
|
|
|
|
| Labels | ✓ | ✓ | ✓ | ✓ | ✓ | ✘ | ✘ | |
|
|
|
|
| Time tracking | ✓ | ✘ | ✓ | ✓ | ✓ | ✘ | ✘ | |
|
|
|
|
| Multiple assignees for issues | ✓ | ✘ | ✓ | ✓ | ✓ | ✘ | ✘ | |
|
|
|
|
| Related issues | ✘ | ✘ | ⁄ | ✘ | ✓ | ✘ | ✘ | |
|
|
|
|
| Confidential issues | ✘ | ✘ | ✘ | ✓ | ✓ | ✘ | ✘ | |
|
|
|
|
| Comment reactions | ✓ | ✘ | ✓ | ✓ | ✓ | ✘ | ✘ | |
|
|
|
|
| Lock Discussion | ✘ | ✘ | ✓ | ✓ | ✓ | ✘ | ✘ | |
|
|
|
|
| Batch issue handling | ✓ | ✘ | ✓ | ✓ | ✓ | ✘ | ✘ | |
|
|
|
|
| Issue Boards | ✘ | ✘ | ✘ | ✓ | ✓ | ✘ | ✘ | |
|
|
|
|
| Create new branches from issues | ✘ | ✘ | ✘ | ✓ | ✓ | ✘ | ✘ | |
|
|
|
|
| Issue search | ✓ | ✘ | ✓ | ✓ | ✓ | ✓ | ✘ | |
|
|
|
|
| Global issue search | ✘ | ✘ | ✓ | ✓ | ✓ | ✓ | ✘ | |
|
|
|
|
|
|
|
|
|
#### Pull/Merge requests |
|
|
|
|
|
|
|
|
|
| Feature | Gitea | Gogs | GitHub EE | GitLab CE | GitLab EE | BitBucket | RhodeCode CE | |
|
|
|
|
|---------|-------|------|-----------|-----------|-----------|-----------|--------------| |
|
|
|
|
| Pull/Merge requests | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |
|
|
|
|
| Squash merging | ✓ | ✘ | ✓ | ✘ | ✓ | ✓ | ✓ | |
|
|
|
|
| Rebase merging | ✓ | ✓ | ✓ | ✘ | ⁄ | ✘ | ✓ | |
|
|
|
|
| Pull/Merge request inline comments | ✘ | ✘ | ✓ | ✓ | ✓ | ✓ | ✓ | |
|
|
|
|
| Pull/Merge request approval | ✘ | ✘ | ⁄ | ✓ | ✓ | ✓ | ✓ | |
|
|
|
|
| Merge conflict resolution | ✘ | ✘ | ✓ | ✓ | ✓ | ✓ | ✘ | |
|
|
|
|
| Restrict push and merge access to certain users | ✓ | ✘ | ✓ | ⁄ | ✓ | ✓ | ✓ | |
|
|
|
|
| Revert specific commits or a merge request | ✘ | ✘ | ✓ | ✓ | ✓ | ✓ | ✘ | |
|
|
|
|
| Pull/Merge requests templates | ✓ | ✓ | ✓ | ✓ | ✓ | ✘ | ✘ | |
|
|
|
|
| Cherry-picking changes | ✘ | ✘ | ✘ | ✓ | ✓ | ✘ | ✘ | |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#### 3rd-party integrations |
|
|
|
|
|
|
|
|
|
| Feature | Gitea | Gogs | GitHub EE | GitLab CE | GitLab EE | BitBucket | RhodeCode CE | |
|
|
|
|
|---------|-------|------|-----------|-----------|-----------|-----------|--------------| |
|
|
|
|
| Webhook support | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |
|
|
|
|
| Custom Git Hooks | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |
|
|
|
|
| AD / LDAP integration | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | |
|
|
|
|
| Multiple LDAP / AD server support | ✓ | ✓ | ✘ | ✘ | ✓ | ✓ | ✓ | |
|
|
|
|
| LDAP user synchronization | ✓ | ✘ | ✓ | ✓ | ✓ | ✓ | ✓ | |
|
|
|
|
| OpenId Connect support | ✓ | ✘ | ✓ | ✓ | ✓ | ? | ✘ | |
|
|
|
|
| OAuth 2.0 integration (external authorization) | ✓ | ✘ | ⁄ | ✓ | ✓ | ? | ✓ | |
|
|
|
|
| Act as OAuth 2.0 provider | ✘ | ✘ | ✓ | ✓ | ✓ | ✓ | ✘ | |
|
|
|
|
| Two factor authentication (2FA) | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✘ | |
|
|
|
|
| Mattermost/Slack integration | ✓ | ✓ | ⁄ | ✓ | ✓ | ⁄ | ✓ | |
|
|
|
|
| Discord integration | ✓ | ✓ | ✓ | ✘ | ✘ | ✘ | ✘ | |
|
|
|
|
| External CI/CD status display | ✓ | ✘ | ✓ | ✓ | ✓ | ✓ | ✓ | |
|
|
|
|