# Contribute to GitLab

> 原文：[https://docs.gitlab.com/ee/development/contributing/](https://docs.gitlab.com/ee/development/contributing/)

*   [Security vulnerability disclosure](#security-vulnerability-disclosure)
*   [Code of conduct](#code-of-conduct)
*   [Closing policy for issues and merge requests](#closing-policy-for-issues-and-merge-requests)
*   [Helping others](#helping-others)
*   [How to contribute](#how-to-contribute)
    *   [GitLab Development Kit](#gitlab-development-kit)
    *   [Contribution flow](#contribution-flow)
        *   [Issues workflow](#issues-workflow)
        *   [Merge requests workflow](#merge-requests-workflow)
*   [Style guides](#style-guides)
*   [Implement design & UI elements](#implement-design--ui-elements)
*   [Contribute documentation](#contribute-documentation)
*   [Getting an Enterprise Edition License](#getting-an-enterprise-edition-license)

# Contribute to GitLab[](#contribute-to-gitlab "Permalink")

感谢您有兴趣为 GitLab 做贡献. 本指南详细介绍了如何以每个人都容易的方式为 GitLab 做出贡献.

For a first-time step-by-step guide to the contribution process, see our [Contributing to GitLab](https://about.gitlab.com/community/contribute/) page.

寻找工作吗？ 有关更多信息，请参见[如何贡献](#how-to-contribute)部分.

GitLab 有两种口味：

*   GitLab 社区版（CE），我们的免费和开源版本.
*   GitLab 企业版（EE），这是我们的商业版.

在本指南中，您将看到对 CE 和 EE 的缩写的引用.

要获得 GitLab 社区成员资格的概述，包括那些会审核或合并您的贡献的成员，请访问[社区角色页面](community_roles.html) .

如果您想知道 GitLab [核心团队的](https://about.gitlab.com/community/core-team/)运作方式，请参阅[GitLab 贡献过程](https://gitlab.com/gitlab-org/gitlab/blob/master/PROCESS.md) .

GitLab Inc 工程师应参考[工程工作流程文档](https://about.gitlab.com/handbook/engineering/workflow/) .

## Security vulnerability disclosure[](#security-vulnerability-disclosure "Permalink")

将可疑的安全漏洞[秘密](https://about.gitlab.com/security/disclosure/)报告给`support@gitlab.com` ，另请参阅[GitLab.com 网站上的](https://about.gitlab.com/security/disclosure/) " [披露"部分](https://about.gitlab.com/security/disclosure/) .

**危险：** **不要**为疑似安全漏洞公开可见的问题.

## Code of conduct[](#code-of-conduct "Permalink")

我们希望为每个有志于贡献的人营造一个温馨的环境. 请访问我们的[《行为准则》页面，](https://about.gitlab.com/community/contribute/code-of-conduct/)以了解有关我们对开放友好环境的承诺的更多信息.

## Closing policy for issues and merge requests[](#closing-policy-for-issues-and-merge-requests "Permalink")

GitLab 是一个受欢迎的开源项目，处理问题和合并请求的能力有限. 出于对我们志愿者的尊重，不符合本文档所列准则的问题和合并请求可能会被关闭，恕不另行通知.

以礼貌和尊重的态度对待我们的志愿者，这将大大有助于您解决问题.

发行和合并请求应使用英语，并包含适合所有年龄段受众的语言.

如果贡献者不再主动处理提交的合并请求，我们可以：

*   决定合并请求将由我们的[合并请求指导者之一完成](https://about.gitlab.com/company/team/) .
*   关闭合并请求.

我们根据更改对我们的产品愿景的重要性来做出此决定. 如果合并请求教练将要完成合并请求，我们指定`~coach will finish`标签.

当团队成员选择社区贡献时，我们会通过添加一个记入作者的更改日志条目来记入原始作者，并有选择地将原始作者包括在 MR 中的至少一项提交中.

## Helping others[](#helping-others "Permalink")

可以的话，请帮助其他 GitLab 用户. 人们用于寻求帮助的方法可以在" [获得帮助"页面](https://about.gitlab.com/get-help/)上找到.

注册邮件列表，在 StackOverflow 上回答 GitLab 问题，或在 IRC 频道中回复.

## How to contribute[](#how-to-contribute "Permalink")

如果您想为 GitLab 做出贡献：

*   [`~Accepting merge requests`标签的问题](issue_workflow.html#label-for-community-contributors)是一个很好的起点.
*   请查阅" [贡献流"](#contribution-flow)部分以了解该过程.

如果您有任何疑问或需要帮助，请访问" [获得帮助"](https://about.gitlab.com/get-help/)以了解如何与 GitLab 进行通信. 我们有一个[供参与者](https://gitter.im/gitlab/contributors)使用的[Gitter 通道](https://gitter.im/gitlab/contributors) ，但是相对于实时通信，我们更喜欢[异步](https://about.gitlab.com/handbook/communication/#internal-communication)通信.

感谢您的贡献！

### GitLab Development Kit[](#gitlab-development-kit "Permalink")

GitLab 开发套件（GDK）可帮助贡献者使用所有必需的依赖项来运行本地 GitLab 实例. 在提出合并请求之前，它可以用于测试对 GitLab 和相关项目的更改.

有关更多信息，请参见[`gitlab-development-kit`](https://gitlab.com/gitlab-org/gitlab-development-kit)项目.

### Contribution flow[](#contribution-flow "Permalink")

对 GitLab 进行贡献的一般流程是：

1.  [创建一个](../../user/project/repository/forking_workflow.html#creating-a-fork) GitLab [的叉子](../../user/project/repository/forking_workflow.html#creating-a-fork) . 在某些情况下，您将需要设置[GitLab 开发套件](https://gitlab.com/gitlab-org/gitlab-development-kit)以[针对 fork](https://gitlab.com/gitlab-org/gitlab-development-kit/-/blob/master/doc/index.md#develop-in-your-own-gitlab-fork)进行[开发](https://gitlab.com/gitlab-org/gitlab-development-kit/-/blob/master/doc/index.md#develop-in-your-own-gitlab-fork) .
2.  在叉子上进行更改.
3.  准备就绪后， [创建一个新的合并请求](../../user/project/merge_requests/creating_merge_requests.html) .
4.  在合并请求的描述中：
    *   确保您提供完整而准确的信息.
    *   查看提供的清单.
5.  将合并请求（如果可能）分配给相关项目的[代码所有者](../../user/project/code_owners.html)之一或`@mention` ，并说明您已准备好进行审查.

当您向 GitLab 提交代码时，我们真的希望它被合并！ 但是，我们始终会仔细审查提交的内容，这需要时间. 合并之前，代码提交通常会由两位[领域专家](../code_review.html#domain-experts)进行审核：

*   A [reviewer](../code_review.html#the-responsibility-of-the-reviewer).
*   A [maintainer](../code_review.html#the-responsibility-of-the-maintainer).

提交合并请求时，请牢记以下几点：

*   当审阅者阅读合并请求时，他们可能会要求其他审阅者提供指导.
*   如果发现代码质量不符合 GitLab 的标准，则合并请求审阅者将提供指导，并将作者推荐给我们：
    *   [文档](../documentation/styleguide.html)样式指南.
    *   代码样式指南.
*   有时会遵循样式指南，但是代码将缺乏结构完整性，或者审阅者会对​​代码的整体质量有所保留. 如有保留，审阅者将通知作者并提供一些指导.
*   尽管 GitLab 通常允许任何人表明对合并请求的[批准](../../user/project/merge_requests/merge_request_approvals.html) ，但是维护者在合并合并请求之前可能需要[获得某些审阅者的批准](../code_review.html#approval-guidelines) .
*   审核后，可能会要求作者更新合并请求. 合并请求更新并重新分配给审阅者后，他们将再次审阅代码. 在合并之前，此过程可以重复任意次数，以帮助做出最佳的贡献.

有时，维护者可能会选择关闭合并请求. 他们将充分披露为什么不合并的原因以及一些指导. 维护人员将公开讨论如何更改代码，以便将来可以批准和合并.

manbetx 客户端打不开将尽其所能尽快审查社区贡献. 专门任命的开发人员每天审查社区贡献. 在[团队页面上](https://about.gitlab.com/company/team/)查看合并请求指导者，他专门研究您编写的代码类型，并在合并请求中提及他们. 例如，如果您编写了一些前端代码，则应`@mention`前端合并请求指导程序. 如果您的代码具有多个学科，则可以`@mention`多个合并请求指导.

GitLab 收到了很多社区的贡献. 如果您的代码在其初次提交后的两个工作日内仍未得到审查，请`@mention`与`@gitlab-org/coaches`合并的所有请求`@gitlab-org/coaches`引起他们的注意.

在向 GitLab 提交代码时，您可能会觉得您的贡献需要外部库的帮助. 如果您的代码包含外部库，请提供该库的链接，以及包含该库的原因.

`@mention`维护者在合并请求中包含：

*   超过 500 种变化.
*   任何重大变化.
*   外部库.

如果您不确定要提及谁，则审阅者将在合并请求过程的早期为您完成此操作.

#### Issues workflow[](#issues-workflow "Permalink")

This [documentation](issue_workflow.html) outlines the current issue workflow:

*   [Issue tracker guidelines](issue_workflow.html#issue-tracker-guidelines)
*   [Issue triaging](issue_workflow.html#issue-triaging)
*   [Labels](issue_workflow.html#labels)
*   [Feature proposals](issue_workflow.html#feature-proposals)
*   [Issue weight](issue_workflow.html#issue-weight)
*   [Regression issues](issue_workflow.html#regression-issues)
*   [Technical and UX debt](issue_workflow.html#technical-and-ux-debt)
*   [Technical debt in follow-up issues](issue_workflow.html#technical-debt-in-follow-up-issues)

#### Merge requests workflow[](#merge-requests-workflow "Permalink")

本[文档](merge_request_workflow.html)概述了当前的合并请求过程.

*   [Merge request guidelines](merge_request_workflow.html#merge-request-guidelines)
*   [Contribution acceptance criteria](merge_request_workflow.html#contribution-acceptance-criteria)
*   [Definition of done](merge_request_workflow.html#definition-of-done)
*   [Dependencies](merge_request_workflow.html#dependencies)

## Style guides[](#style-guides "Permalink")

本[文档](style_guides.html)概述了当前的样式准则.

## Implement design & UI elements[](#implement-design--ui-elements "Permalink")

本[设计文档](design.html)概述了实现设计和 UI 元素的当前过程.

## Contribute documentation[](#contribute-documentation "Permalink")

有关如何编写文档的信息，请参见 GitLab [文档指南](../documentation/index.html) .

## Getting an Enterprise Edition License[](#getting-an-enterprise-edition-license "Permalink")

如果您需要用于贡献 EE 功能的许可证，请参阅[相关信息](https://about.gitlab.com/handbook/marketing/community-relations/code-contributor-program/#for-contributors-to-the-gitlab-enterprise-edition-ee) .