From b2374a3c833f3e619af915e81efd1b960ba915b8 Mon Sep 17 00:00:00 2001 From: liyongle Date: Sat, 8 Feb 2020 13:35:08 +0800 Subject: [PATCH 1/4] Adding English version for community governance docs, and optimize the content. --- README.md | 10 +- en/Gitee-Management/Gitee-management-guide.md | 86 ++++++ en/Gitee-Management/README.md | 27 ++ en/Gitee-Management/Repository.md | 168 +++++++++++ en/Gitee-Management/opening-request.md | 28 ++ en/Gitee-Management/permissions.md | 2 + en/Sigs.md | 24 -- en/communication.md | 17 -- en/{ => communication}/IRCs.md | 0 en/{ => communication}/Mails.md | 36 +-- en/communication/README.md | 12 + en/contributors/Gitee-workflow.md | 191 +++++++++++++ en/contributors/README.md | 218 +++++++++++++++ en/contributors/issue-submit.md | 63 +++++ en/contributors/non-code-contributions.md | 49 ++++ en/contributors/packaging.md | 262 ++++++++++++++++++ en/contributors/pull-requests.md | 71 +++++ en/governance/README.md | 45 +++ en/secretariat/README.md | 28 ++ en/security-committee/README.md | 42 +++ en/sig-infrastructure/README.md | 43 +++ en/{ => sig-infrastructure}/Repository.md | 0 en/{ => sig-infrastructure}/command.md | 0 en/{ => sig-infrastructure}/label.md | 0 en/technical-committee/README.md | 38 +-- .../governance/SIG-governance-requirements.md | 2 + .../governance/SIG-governance.md | 2 + .../governance/template-release.md | 2 + zh/communication/Mails.md | 14 +- zh/communication/README.md | 4 +- zh/contributors/README.md | 4 + zh/governance/README.md | 29 +- 32 files changed, 1395 insertions(+), 122 deletions(-) create mode 100644 en/Gitee-Management/Gitee-management-guide.md create mode 100644 en/Gitee-Management/README.md create mode 100644 en/Gitee-Management/Repository.md create mode 100644 en/Gitee-Management/opening-request.md create mode 100644 en/Gitee-Management/permissions.md delete mode 100644 en/Sigs.md delete mode 100644 en/communication.md rename en/{ => communication}/IRCs.md (100%) rename en/{ => communication}/Mails.md (45%) create mode 100644 en/communication/README.md create mode 100644 en/contributors/Gitee-workflow.md create mode 100644 en/contributors/README.md create mode 100644 en/contributors/issue-submit.md create mode 100644 en/contributors/non-code-contributions.md create mode 100644 en/contributors/packaging.md create mode 100644 en/contributors/pull-requests.md create mode 100644 en/governance/README.md create mode 100644 en/secretariat/README.md create mode 100644 en/security-committee/README.md create mode 100644 en/sig-infrastructure/README.md rename en/{ => sig-infrastructure}/Repository.md (100%) rename en/{ => sig-infrastructure}/command.md (100%) rename en/{ => sig-infrastructure}/label.md (100%) diff --git a/README.md b/README.md index 3cfa8cf40..c6326d5d2 100644 --- a/README.md +++ b/README.md @@ -10,12 +10,12 @@ The Community repo is to store all the information about openEuler Community, in ## What you can find here -- Introduction to openEuler Community +- [Introduction to openEuler Community](/en/governance) - Governance - - Secretariat - - Technical Committee - - Security Committee - - [SIGs](https://openeuler.org/en/sig.html) + - [Secretariat](/en/secretariat) + - [Security Committee](/zh/security-committee) + - [Technical Committee](/en/security-committee) + - [SIGs](https://openeuler.org/en/sig.html) - [Events](https://openeuler.org/en/events.html) - [Contribute as a developer](https://openeuler.org/en/developer.html) diff --git a/en/Gitee-Management/Gitee-management-guide.md b/en/Gitee-Management/Gitee-management-guide.md new file mode 100644 index 000000000..fb7fff74f --- /dev/null +++ b/en/Gitee-Management/Gitee-management-guide.md @@ -0,0 +1,86 @@ +# openEuler Gitee组织管理指南 + +openEuler项目使用Gitee来管理团队和代码。本指南包含如何在openEuler社区准则的基础上运作这些组织。 + + + +## 服务承诺 + +Gitee管理团队将竭尽所能提供以下的服务水平: + +- 新组织创建在所有成员资格满足以后的72小时内处理 +- Repository的新建或迁移请求在PR提交后的72小时内回复。这个过程可能需要申请人提供一些信息,所以可能会花费一些时间。但所有条件一旦满足,Gitee管理团队会在72小时内完成响应repository的处理 +- PR提交后的72小时内,会有所答复。问题解决的时间会按照问题的具体情况有所不同。 + +如果您需要上报紧急请求,请直接联系[openEuler基础设施团队]()快速寻求帮助 + + + +## openEuler的组织说明 + +- [openEuler](https://gitee.com/openeuler):主要用于存放源码类项目 +- [src-openEuler](https://gitee.com/src-openeuler):主要用于存放制作发布件所需的软件包 + + +## 将外部代码转移到openEuler组织中 + +由于开源许可和CLA等问题,在将软件包或/和代码转移到openEuler管理之前,需要进行一些调查,请先向[技术委员会](/zh/technical-committee/README.md)提交申请。 + + + +## 团队指导 + +### 团队角色和权限说明及配置方法 + + + + + +### 处理过程 + +- 创建新团队或项目请向技术委员会提交申请,请参考[如何申请一个SIG](/zh/technical-committee/governance/README.md) + +- 向团队添加新成员, 提交PR申请修改[SIG](/sig)下自己项目的OWNERS文件,该PR可以由团队的`maintainer`批准 + + + +## repository使用指导 + +repository还有license、CLA等要求,请参见[openEuler项目模板]() + + + + + +### 创建一个Repository + +``` yaml +- name: A-Tune + description: "" + protected_branches: + - master + type: private +``` + +如果你想要在openEuler社区里面新增一个仓库,你可以基于上面的示例提交一个pull request修改 +[openeuler.yaml](/repository/openeuler.yaml)或者[src-openeuler.yaml](/repository/src-openeuler.yaml)。 + +* `name`: 你想创建的新仓库名字。 + +* `description`: 新仓库描述。 + +* `type`: 表示仓库的类型。 + + * `private`意味着新仓库只对某些特定的人群可见。 + + * `public`意味着新仓库对所有人可见。 + +一旦你的pull request被合入,```openeuler-ci-bot```将会立即创建一个新仓库。 + + +### 删除repository + +待补充 + + + diff --git a/en/Gitee-Management/README.md b/en/Gitee-Management/README.md new file mode 100644 index 000000000..2dbc55067 --- /dev/null +++ b/en/Gitee-Management/README.md @@ -0,0 +1,27 @@ +**The contenct in this folder is not finalized yet. You are more than welcome to work with us together on updating tis folder. If you'd like to please visit .** + +# Gitee 管理 + +openEuler项目使用Gitee来存储和组织代码,管理问题和文档,并提供一致的贡献者流程。为了简化Gitee存储库的组织和管理。我们提供了一些工具来自动设置和执行管理策略。 + +这些策略和工具的支持由基础设施下的Gitee管理团队负责。 + + + +## 帮助指南 + ++ [向Gitee求助]() ++ [团队组织者指南]() ++ [Gitee权限说明]() + + + + + + + +## Gitee 管理团队介绍 + + + + diff --git a/en/Gitee-Management/Repository.md b/en/Gitee-Management/Repository.md new file mode 100644 index 000000000..577f6a6d3 --- /dev/null +++ b/en/Gitee-Management/Repository.md @@ -0,0 +1,168 @@ +# 仓库 + +## 维护 + +### 背景 + +在openEuler社区有成百上个仓库。 +这是非常困难的去维护在每一个仓库中的所有成员。 +我们需要一个自动化的工具去解决这些问题从而节约团队的工作量。 + +### 解决方案 + +基础设施团队构建了一种机制去简化仓库的维护工作。 +所有openEuler的仓库和仓库成员都放在 +[openeuler.yaml](https://gitee.com/openeuler/infrastructure/blob/master/repository/openeuler.yaml)文件中, +而所有src-openEuler的仓库和仓库成员都放在 +[src-openeuler.yaml](https://gitee.com/openeuler/infrastructure/blob/master/repository/src-openeuler.yaml)文件中。 +如果这些yaml文件被一个pull request所修改,`openeuler-ci-bot`将会检测到这些改变 +然后自动化地完成一些操作,例如`创建一个仓库`,`为一个仓库添加成员`, +`从一个仓库移除成员`,`保护一个分支`,`移除一个保护分支`等基于Gitee API的操作。 + +### 如何创建一个仓库 + +``` yaml +repositories: + - name: abattis-cantarell-fonts + description: "fonts repo" + type: private +``` + +如果你想要在openEuler社区里面新增一个仓库, +你可以基于上面的示例提交一个pull request修改 +[openeuler.yaml](https://gitee.com/openeuler/infrastructure/blob/master/repository/openeuler.yaml) +或者[src-openeuler.yaml](https://gitee.com/openeuler/infrastructure/blob/master/repository/src-openeuler.yaml)。 + +* `abattis-cantarell-fonts`: 你想创建的新仓库名字。 +* `fonts repo`: 新仓库描述。 +* `private`: 表示仓库的类型。 + + `private`意味着新仓库只对某些特定的人群可见。 + + `public`意味着新仓库对所有人可见。 + +一旦你的pull request被合入,```openeuler-ci-bot```将会立即创建一个新仓库。 + +### 如何创建或者删除一个成员 + +``` yaml +community: + name: openeuler + managers: + - zhuchunyi + - overweight + developers: + - igorkorkin + viewers: + - jianminw +repositories: + - name: abattis-cantarell-fonts + description: "fonts repo" + type: private + - name: accountsservice + description: "account repo" + type: private + managers: + - dogsheng + developers: + - igorkorkin + viewers: + - jianminw +``` + +如果你想要添加或者删除一个仓库的成员, +你可以基于上面的示例提交一个pull request +修改[openeuler.yaml](https://gitee.com/openeuler/infrastructure/blob/master/repository/openeuler.yaml) +或者[src-openeuler.yaml](https://gitee.com/openeuler/infrastructure/blob/master/repository/src-openeuler.yaml)。 + +* `openeuler`: openEuler组织名称, 另外还有一个组织`src-openeuler`,实际上不需要做修改。 +* `managers`: 你想在`community`或者`repositories`下指定的管理员。 + 这里需要Gitee账号,例如 `zhuchunyi`。 +* `developers`:你想在`community`或者`repositories`下指定的开发者。 + 这里需要Gitee账号,例如`igorkorkin`。 +* `viewers`: 你想在`community`或者`repositories`下指定的观察者。 + 这里需要Gitee账号,例如`jianminw`。 + +***注意***:你可能已经发现`managers`,`developers`和`viewers`是同时存在于`community`和`repositories`。 +让我们来看看它们的不同之处: + +* 通常情况下你想要为所有仓库添加或删除一个管理员,开发者或者观察者, + 你可以修改`community`下的`managers`,`developers`或者`viewers`。 +* 特定的情况下你想要为一个指定的仓库添加或删除一个管理员,开发者或者观察者, + 你可以修改指定的仓库例如`accountsservice`下的`community`下的`managers`,`developers`或者`viewers`。 +* 如果一个仓库没有指定任何成员(包括`managers`,`developers`和`viewers`),例如`abattis-cantarell-fonts`仓库, + `openeuler-ci-bot`将会使用`community`下的`managers`,`developers`和`viewers` + 来为这个仓库例如`abattis-cantarell-fonts`仓库创建成员。 +* 如果一个仓库指定了一些成员(包括`managers`,`developers`和`viewers`),例如`accountsservice`仓库, + `openeuler-ci-bot`将会使用这个仓库下的`managers`,`developers`和`viewers` + 来为这个仓库例如`accountsservice`仓库创建成员。 +* 如果一个Gitee账号是存在于`managers`,`developers`和`viewers`之中, + 这个Gitee账号将会是一个管理员,因为从Gitee的权限来讲,`managers` > `developers` > `viewers`。 + +### 如何创建或者删除一个保护分支 + +```yaml +community: + name: openeuler + protected_branches: + - master +repositories: + - name: abattis-cantarell-fonts + description: "fonts repo" + type: private + - name: accountsservice + description: "account repo" + protected_branches: + - master + - dev + type: private +``` + +如果你想要在一个仓库上创建或者删除一个保护分支, +你可以基于上面的示例提交一个pull request +修改[openeuler.yaml](https://gitee.com/openeuler/infrastructure/blob/master/repository/openeuler.yaml) +或者[src-openeuler.yaml](https://gitee.com/openeuler/infrastructure/blob/master/repository/src-openeuler.yaml)。 + +* `openeuler`:openEuler组织名称, 另外还有一个组织`src-openeuler`,实际上不需要做修改。 +* `protected_branches`:你想要在`community`或`repositories`创建的保护分支。 + +***注意***:你可能已经发现`protected_branches`是同时存在于`community`和`repositories`。 +让我们来看看它们的不同之处: + +* 通常情况下你想要为所有仓库创建或删除一个保护分支, + 你可以修改`community`下的`protected_branches`。 +* 特定的情况下你想要为一个指定的仓库添加或删除一个保护分支, + 你可以修改指定的仓库例如`accountsservice`下的`community`下的`protected_branches`。 +* 如果一个仓库没有指定任何保护分支,例如`abattis-cantarell-fonts`仓库, + `openeuler-ci-bot`将会使用`community`下的`protected_branches` + 来为这个仓库例如`abattis-cantarell-fonts`仓库创建保护分支。 +* 如果一个仓库指定了一些保护分支,例如`accountsservice`仓库, + `openeuler-ci-bot`将会使用这个仓库下的`protected_branches` + 来为这个仓库例如`accountsservice`仓库创建保护分支。 +* 如果指定的`protected_branches`不存在,`openeuler-ci-bot`将会做任何动作。 + +### 如何创建或者删除一个在Gitee之外的维护人员 + +Gitee提供管理员、开发者和观察者等权限管理。 +`openeuler-ci-bot`支持另一种为每一个仓库添加维护人员的方式。 +`openeuler-ci-bot`将会扫描 `OWNERS`文件在每一个仓库下去发现额外的仓库维护人员。 + +以`ci-bot`仓库下的 为例。 +文件内容如下: + +``` yaml +maintainers: + - edisontest + - freesky-edward + - TommyLike + - xiangxinyong + - zerodefect +``` + +这意味着所有这5个用户具备在`ci-bot`仓库下合入pull request的权限。 +这些用户能使用`/lgtm`和`/approve`命令去触发`openeuler-ci-bot`何如pull request。 +你可以发现更多的命令说明 。 +顺便说下,所有的Gitee管理员和开发者也能使用`/lgtm`和`/approve`命令。 + +如果你想要维护Gitee之外的仓库维护人员,请在你的仓库下添加`OWNERS`文件, +然后添加仓库维护人员到`OWNERS`文件,`openeuler-ci-bot`将会给予这些仓库维护人员`合入`权限。 \ No newline at end of file diff --git a/en/Gitee-Management/opening-request.md b/en/Gitee-Management/opening-request.md new file mode 100644 index 000000000..cd9427b1f --- /dev/null +++ b/en/Gitee-Management/opening-request.md @@ -0,0 +1,28 @@ +# 如何向Gitee求助 + +如果你需要了解和Gitee相关的以下内容,请向gitee管理团队求助 + +- 权限问题 +- Gitee内的组织角色关系 +- 第三方集成 +- Reopsitory的新建和迁移 +- Repository的归档 +- 其他repository配置相关的问题 + +请向[openEuler/sig-infrastructure]()提交你的issue。如果你的问题很紧急,请直接联系[Gitee管理团队的成员]()。 + +创建新团队,添加新成员或者重命名您的团队,请根据[团队指南]()向[openEuler/technical-committee]()提交PR申请。 + + + +## 社区biot/自动化问题 + +如果您需要以下方面的帮助: + +- biot配置 +- 自动合并 +- 问题标签 +- 自动化反馈和功能需求 + +请向[openEuler/sig-infrastructure]()提交你的issue。如果你的问题很紧急,请直接联系[Gitee管理团队的成员]()。 + diff --git a/en/Gitee-Management/permissions.md b/en/Gitee-Management/permissions.md new file mode 100644 index 000000000..bdf98f93c --- /dev/null +++ b/en/Gitee-Management/permissions.md @@ -0,0 +1,2 @@ +# Gitee 权限说明 + diff --git a/en/Sigs.md b/en/Sigs.md deleted file mode 100644 index 58608635c..000000000 --- a/en/Sigs.md +++ /dev/null @@ -1,24 +0,0 @@ -## Sigs - -Sigs are groups in community which setting for differecnt domain via interests. -Each sig will maintain one or more projects. - -### DOC SIG - -DOC SIG is responsible for doc maintain in community. -Project: https://gitee.com/openeuler/docs -Email: dev@openeuler.org -IRC: #openeuler-doc -Manager: N/A - -### INFRASTRUCTURE SIG - -Infrastructure SIG is responsible for the basic system building, -e.g. development system, communicating systems. - -Project: https://gitee.com/openeuler/infrastructure - https://gitee.com/openeuler/website -Email: infra@openeuler.org -IRC: #openeuler-infra -Manager: N/A - diff --git a/en/communication.md b/en/communication.md deleted file mode 100644 index 04abf01a3..000000000 --- a/en/communication.md +++ /dev/null @@ -1,17 +0,0 @@ -# openEuler Communication - -### Chat - -For every team and sigs, we recommend to use IRC channel as the basic communication chat tool. The [IRC channel](IRCs.md) lists all the channels, pick one or more and free free to join them. - - -### Mail - -If you want to start an open topics discussion, sending an email to the relavant mail-list is another good choice. The [Mail lists](Mails.md) lists all the mail list - - -### Sig - -TO BE DEFINED - - diff --git a/en/IRCs.md b/en/communication/IRCs.md similarity index 100% rename from en/IRCs.md rename to en/communication/IRCs.md diff --git a/en/Mails.md b/en/communication/Mails.md similarity index 45% rename from en/Mails.md rename to en/communication/Mails.md index aaa22a42d..ec2302b88 100644 --- a/en/Mails.md +++ b/en/communication/Mails.md @@ -1,34 +1,22 @@ -# Mail list +# Mail List -### Joining Mail List - -Following table shows the mail lists available currently. Please follow the steps to join them according to your interests. - - -| Name| Address | Type| Description | -| :--------| :----|:-----| :----| -|[Announce](https://mailweb.openeuler.org/postorius/lists/announce.openeuler.org/)| announce@openeuler.org| Announce| Key announcements about openEuler community, e.g. News and Events| -|[Council](https://mailweb.openeuler.org/postorius/lists/council.openeuler.org/)|council@openeuler.org|Discussion|Discussion list for openEuler council and management.| -| [Community](https://mailweb.openeuler.org/postorius/lists/community.openeuler.org/)|community@openeuler.org|Discussion |the main contact endpoint of openeuler community| -|[Dev](https://mailweb.openeuler.org/postorius/lists/dev.openeuler.org/)|dev@openeuler.org|Discussion|the development main contact endpoint| -|[Marketing](https://mailweb.openeuler.org/postorius/lists/marketing.openeuler.org/)| marketing@openeuler.org | Discussion| Facilitate discussion and best practice sharing among marketers and organizers| -|[User-committee](https://mailweb.openeuler.org/postorius/lists/user-committee.openeuler.org/)|user-committee@openeuler.org|Discussion|the user committe email contact endpoint| -|[Infra](https://mailweb.openeuler.org/postorius/lists/infra.openeuler.org/)|infra@openeuler.org|Discussion|the infrastructure supports for this community| -|[Build](https://mailweb.openeuler.org/postorius/lists/buildteam.openeuler.org/)|buildteam@openeuler.org|Discussion|the team who maintains openEuler OS building for this community| +### Subscribe Mail List +Visit to find the available mail lists, and follow the steps below to subscribe mail list you'd like. There are two ways to join the list. -Web Page +#### 1. Web Page -> 1) Visit the subscribing page via clicking the list name in the above table +> 1) Visit the subscribing page via clicking the list name in . > 2) Provide your email address, name and click the ```Subscribe``` button -> 3) Login your email and reply the confirm email from openeuler.org directly +> 3) Login your email and reply the confirm email from @openeuler.org directly when you recieve the ```Welcome``` mail form openeuler.org means you are already in the list now. Note: if you don't recieve the welcome mail, please keep the title as the same as confirmming email and reply again. -Email + +#### 2. Email > 1) Send an email to the list ```subscibe address```(list address subfix with ```-join```) with ```subscribe``` subject(title). > 2) Reply the confirm email from openeuler.org directly. @@ -41,15 +29,15 @@ subject: subscribe content: NA ``` -### Sending Email +### Send Email There are two kinds of list the Announce and Discussion, for Discussion,there is nothing difference between sending email to list and to other private address, just send it as normal,adding a prefix with channel name in brackets([dev]) into subject would be a good practise but not mandate. however, Announce only be used to publish message or notice, it won't accept any mail delivery. note: if you cann't recieve any mail in income box, please firstly check your spam box. -### Leaving Mail List +### Unsubscribe Mail List -If you want to leave a joined mail list, please take the following steps: +If you want to unsubscribe a joined mail list, please take the following steps: > 1) Send an email to the ```unsubscribe address``` (list addreess subfix with ```-leave```) with ```unsubscribe``` subject. > 2) Reply the confirm email without any modification. @@ -62,6 +50,6 @@ You have been out of the list after recieving the unsubcribe email. If you meet any problem, please contact the infrastructure team via: - Email: infra@openeuler.org -- IRC: #openEuler-infra(TO BE DEFINED) +- IRC: #openEuler-infra If you find any issue relevant mail list, please feel free to open an issue in [infrastructure](https://gitee.com/openeuler/infrastructure/issues) diff --git a/en/communication/README.md b/en/communication/README.md new file mode 100644 index 000000000..06bd4c7b4 --- /dev/null +++ b/en/communication/README.md @@ -0,0 +1,12 @@ +# openEuler Communication + +### Chat + +For SIGs and individuals, it is recommended to use IRC channel as the basic communication chat tool. The [IRC guidance](IRCs.md) describes how to use and where to find the [IRC Channels list](https://openeuler.org/en/community/irc.html). . + + +### Mail + +If you want to start an open topics discussion, sending an email to the relavant mail-list is another good choice. Visit [Mail lists](Mails.md) to get detailed introduction. + + diff --git a/en/contributors/Gitee-workflow.md b/en/contributors/Gitee-workflow.md new file mode 100644 index 000000000..954d21069 --- /dev/null +++ b/en/contributors/Gitee-workflow.md @@ -0,0 +1,191 @@ +# Gitee 工作流说明 + +### 1.从云上folk + +1. 访问 https://gitee.com/openEuler/openEuler +2. 点击右上角的 `Fork` 按钮建立一个属于自己的云上folk分支 + + + +### 2.把folk分支复制到本地 + +请按照以下的复制过程将openEuler的代码下载到您的在计算机上。 + +定义本地工作目录: + +``` +# If your PATH has multiple paths, pick +# just one and use it instead of $PATH here. +# You must follow exactly this pattern, +# neither `$PATH/src/gitee.com/${your gitee profile name/` +# nor any other pattern will work. +export working_dir=$PATH/src/XXXXXX +``` + +> 如果你已经在openEuler上做过开发, `XXX`会成为您现有的`gitee.com` 目录的子目录. + +把git上的 `user` 设置成您gitee的个人名称: + +``` +export user={your gitee profile name} +``` + +`$working_dir` and `$user` 都需要按照上面的要求完成配置 + + + +创建您的分支: + +``` +mkdir -p $working_dir +cd $working_dir +git clone https://gitee.com/$user/openEuler.git +# or: git clone git@gitee.com:$user/openEuler.git + +cd $working_dir/openEuler +git remote add upstream https://gitee.com/kubernetes/openEuler.git +# or: git remote add upstream git@gitee.com:openEuler/openEuler.git + +# Never push to upstream master +git remote set-url --push upstream no_push + +# Confirm that your remotes make sense: +git remote -v +``` + + + +### 3.拉分支 + +更新您的本地分支 + +``` +cd $working_dir/openEuler +git fetch upstream +git checkout master +git rebase upstream/master +``` + +从这里拉分支: + +``` +git checkout -b myfeature +``` + +然后在 `myfeature` 分支上编辑和修改代码。 + +#### 构建 + +具体的构建请参考:[《开发指南》]() + + + +### 4.保持您的分支和master的同步 + +``` +# While on your myfeature branch +git fetch upstream +git rebase upstream/master +``` + +执行merge的时候,请不要使用 `git pull` 替代上面的 `fetch` / `rebase`. `git pull` 。因为这种方式会使提交历史变得混乱,并使代码更难被理解。您也可以通过更改文件来达到目的, `.git/config` 文件通过 `git config branch.autoSetupRebase always` 去改变 `git pull`的行为。 + + + +### 5 提交 + +提交您的更改。 + +``` +git commit +``` + +您可能会回来继续编辑构建并测试更多内容,可以使用 `commit --amend` 继续添加提交。 + + + +### 6 推送 + +准备进行审查(或只是建立工作的异地备份)时,将分支推到你在`gitee.com`的folk: + +``` +git push -f ${your_remote_name} myfeature +``` + + + +### 7 创建一个 pull request + +1. 访问你在 `https://gitee.com/$user/openEuler` +2. 在您的 `myfeature` 分支上点击`Compare & Pull Request` . +3. 可以查看[pull-request](pull-request)获得更多的建议. + +*如果您具有上游写访问权*,请不要使用Gitee UI创建PR,因为Gitee会在主存储库而不是您的fork中创建PR分支。 + +#### 获取代码审查 + +#### 查看代码检视 + +你提交PR申请后,PR被分配给一个或多个检视者。这些检视者将进行彻底的代码检视。 + +小的PR很容易检视。量级较大的PR很难被正确的检视。 + +#### Squash and Merge + +Upon merge (by either you or your reviewer), all commits left on the review branch should represent meaningful milestones or units of work. Use commits to add clarity to the development and review process. + +Before merging a PR, squash any *fix review feedback*, *typo*, *merged*, and *rebased* sorts of commits. + +It is not imperative that every commit in a PR compile and pass tests independently, but it is worth striving for. + +In particular, if you happened to have used `git merge` and have merge commits, please squash those away: they do not meet the above test. + +A nifty way to manage the commits in your PR is to do an [interactive rebase](https://git-scm.com/book/en/v2/Git-Tools-Rewriting-History), which will let you tell git what to do with every commit: + +``` +git fetch upstream +git rebase -i upstream/master +``` + +For mass automated fixups (e.g. automated doc formatting), use one or more commits for the changes to tooling and a final commit to apply the fixup en masse. This makes reviews easier. + +### 回退一个提交 + +如果你想回退提交,请采用下面的方式 + +*如果您具有上游写访问权限*,请不要使用`Revert`Gitee UI中的 按钮创建PR,因为Gitee会在主存储库而不是您的fork中创建PR分支。 + +- 创建一个分支并用upstream进行同步 + + ``` + # create a branch + git checkout -b myrevert + + # sync the branch with upstream + git fetch upstream + git rebase upstream/master + ``` + +- 如果您希望还原的提交是: + + - **merge commit:** + + ``` + # SHA is the hash of the merge commit you wish to revert + git revert -m 1 SHA + ``` + + - **single commit:** + + ``` + # SHA is the hash of the single commit you wish to revert + git revert SHA + ``` + +- 这将创建一个新的提交以回退到更新前。 push这次提交到远程工作目录 + +``` +git push ${your_remote_name} myrevert +``` + +- 用这个分支创建一个PR. \ No newline at end of file diff --git a/en/contributors/README.md b/en/contributors/README.md new file mode 100644 index 000000000..2026a1f8b --- /dev/null +++ b/en/contributors/README.md @@ -0,0 +1,218 @@ +**The contenct in this folder is not finalized yet and please visit [How to contribute](https://openeuler.org/en/developer.html) to get help. And you are more than welcome to work with us together on updating tis folder. If you'd like to please visit .** + +该文档指导大家如何为openEuler社区做出贡献。欢迎阅读[待解决的问题]()并提出新的问题。 + + + +# 欢迎 + +欢迎来到openEuler! + ++ 欢迎 ++ [开始之前](#id1) + + [签署CLA](#id1-1) + + [行为准则](#id1-2) + + [社区期望](#id1-3) +- [您的第一个贡献](#id2) + - [找到您感兴趣的工作](#id2-1) + - [了解SIG](#id2-1-1) + - [找到您感兴趣的SIG和respository](#id2-1-2) + - [开始您的贡献](#id2-2) + - [给你自己分配一个issue](#id2-2-1) + - [提出问题](#id2-2-2) + - [SIG贡献者指南](#id2-2-3) + - [社区贡献指导](#id2-2-4) + - [沟通](id2-3) +- [Gitee工作流程](#id3) +- [代码检视](#id4) +- [测试](#id5) +- [选择社区组件打包](#id6) +- [下载安装openEuler](#id7) +- [安全](#id8) +- [社区文档](#id9) +- [社区活动](#id10) + - [社区交流](#id10-1) + - [大事记](#id10-2) + - [聚会](#id10-3) + + + + +

开始之前

+

签署CLA

+ +您必须首先签署[“贡献者许可协议”(CLA)](./../CLA.md),然后才能参与社区贡献. + + + +

行为守则

+ +请确保阅读并遵守openEuler社区的[行为守则](./../../code-of-conduct.md)。 + + + +

社区期望

+ +openEuler是一个开源社区。因此它完全依赖于社区提供开发,以及友好和协作的环境,请查看[社区成员角色](./../../community-membership.md)。社区鼓励您在积累经验的同时提高你的贡献级别。 + + + +

您的第一个贡献

+随时欢迎您的加入!在社区上总是有可以改进的文档(比如您正在阅读的),可以澄清的代码,可以重构或注释的函数或变量,始终需要测试的代码。我们将帮助您了解openEuler SIG的组织方式,并引导您顺利的开始您的第一个贡献。您可以选择解决问题、编写代码,或者检视和合并等工作。所以如果您感兴趣,现在就行动吧~~ + +如果您对开发过程有疑问,请随时加入我们的[开发邮件列表](dev@openeuler.org),并在邮件标题内用“【开发过程疑问】”作为标题 写出你的疑问和困惑,openEuler团队会定期扫描邮件列表上的内容,并尽力确保您的问题得到解答。 + + +

找到您感兴趣的工作

+ +

了解SIG

+ +#### SIG和Repository + +我们将社区按照不同的SIG来组织,以便于更好的管理和改善工作流程。 + +SIG组是开放的,欢迎任何人加入并参与贡献。SIG组内部会定期开会,每一个SIG都有一个公共频道。每一个SIG在Gitee上都会拥有一个或多个repository,单击SIG名称中的链接,可以获取每个SIG的`README.md`。在`README.md`里可以查找到SIG包含的子项目和子项目的额repository。 + +

找到您感兴趣的SIG和repository

+ +找到适合您贡献的SIG组,可以帮助您在正确的地方提出问题,为您的贡献提供更高的知名度和更快的社区响应速度。您可以查看[SIG列表](https://openeuler.org/zh/sig.html),以便您最快速的定位到自己感兴趣的领域。 + +在openEuler的Repository列表下搜索SIG名称,也可以找到对应子SIG的repository。如果搜索不到,您可以尝试在dev@openeuler.org中寻求帮助。同样,请在邮件列表内用“【开发过程疑问】”作为标题 写出你寻找的SIG或项目。 + + + +

开始您的贡献

+ +如果您的兴趣不在编写代码方面,可以在[《非代码贡献指南》](non-code-contributions.md)中找到感兴趣的工作。 + + + +

给自己分配一个issue

+ +如果您愿意处理一个issue,可以将它分配给自己。只需要在评论框内输入 `/assign`或 `/assign @yourself`,机器人就会将问题分配给您,您的名字将显示在负责人列表里。 + + + +

提出问题

+ +尽管社区鼓励每个人贡献代码,但是当您报告问题或缺陷的时候,也是值得赞赏的。问题应提交到对应的repository下面。您可以查看[问题提交指南](issue-submit.md)以获取更多的信息。提交问题时,请确保遵守问题提交准则。 + + +

SIG贡献指南

+每个SIG或子项目的编码语言、开发环境、编码约定等都可能是由差异的。所以每一个SIG或其子项目都可能有自己的贡献者指南——一般是`CONTRIBUTING.md`文件。除了这些文件外,SIG可能还会提供其他指南信息。这些信息位于SIG或子项目的特定社区目录中。 + + + +

社区贡献指导

+ +初学者也可以通过下面的[提交PR](pull-requests.md)和[代码检视](expectations.md)中找到相关指导。 + + + + +

沟通

+ +openEuler是开源的,我们希望围绕开发建立一些半正式的管理规则,这样可以使事情开展的更加顺利。如果您认为这些规则有问题,请提出来。作为潜在的贡献者,无论是在白天、黑夜、工作日、周末或节假日,不要犹豫,我们都欢迎您提出自己的想法到dev@openeuler.org。我们致力于改善您的贡献体验。如果您发现不良的参与体验,请告诉我们! + + + +

Gitee工作流程

+ +想获取要使用的代码,请参考[Gitee workflow Guide](Gitee-workflow.md)。 + +### 提交一个PR + +openEuler遵循标准的[Gitee PR请求流程](https://gitee.com/help/articles/4122),但openEuler社区还做了部分的定制,请参考[openEuler社区Gitee工作流程](pull-requests.md)。 + +这两个流程的主要区别是,openEuler的机器人会将结构化标签运用于PR中。该机器人可以为您的PR过程提供一些有用的建议。为了方便查看,可以在注释中输入XXXXXXX选项,以触发自动标记和通知功能。请参阅[社区命令参考文档](./../sig-infrastructure/command.md)。 + +对于新贡献者来说,常遇到的问题是: + ++ 在您的第一个PR之前没有正确的签署CLA(请参阅[签署CLA](/../CLA.md)) ++ 为PR在SIG组内找到合适的检视者,并保证自己的贡献遵循SIG组内特定的贡献准则(请参阅[了解SIG](https://openeuler.org/zh/sig.html),从其中查找感兴趣的SIG提供的贡献者指导) ++ 处理在PR上失败的测试用例,这些测试用例可能与您引入的更改无关(请参阅) ++ 不遵守一些[良好的编码实践]() ++ 在提交的信息中包含了可能关闭issue的关键字,比如XXXXXXXX等 + + + +

代码检视

+ +对于贡献者,关于代码检视的重要性的简要说明,请参阅[代码检视](expectations.md)。为了使您的提交更容易被接受,您需要: + ++ 遵循SIG组的[编码约定]() ++ 准备完善的提交信息 ++ 如果一次提交的代码量较大,建议将大型的内容分解成一系列逻辑上较小的内容,分别进行提交会更便于检视者理解您的想法 ++ 使用适当的SIG组和监视者标签去标记PR:机器人会发送给您消息,以方便您更好的完成整个PR的过程 + + + +对于检视者,强烈建议本着[行为准则](/../code-of-conduct.md)和[社区期望](/expectations.md),超越自我,相互尊重和促进协作。在审查其他人的PR的时候,[补丁审核的柔和艺术](https://sage.thesharps.us/2014/09/01/the-gentle-art-of-patch-review/)提出了一系列检视的重点,旨在说明检视的活动也希望能够促进新的贡献者积极参与,而不会使贡献者一开始就被细微的错误淹没,所以检视的时候,可以重点关注包括: + ++ 贡献背后的想法是否合理 ++ 贡献的架构是否正确 ++ 贡献是否完善 + +注意:如果您的PR请求没有引起足够的关注,可以在XXXXX的XXXXX频道来获取查找评论者们的帮助。 + + + +

测试

+ +测试——是所有贡献者的责任,对于社区版本来说,sig-qa也会做很多的协调工作。有关的信息信息,可以参考[《测试指南》](./../sig-test/testing.md) + +为了成功发行一个社区版本,需要完成多种测试活动。不同的测试活动,测试代码的位置也有有所不同,成功运行测试所需的环境的细节也会有差异: + +todo:待qa团队补充具体的测试活动内容 + ++ 单元测试:这一测试活动确定特性功能的行为是否符合预期。XXXXXXXXXXXXXXXX,可以在给定包中与相应源代码的相邻位置找到单元测试的源代码。例如XXXXXXXX中定义的函数将在XXXXXXXXXX中进行单元测试。 ++ XXXX测试 ++ XXXX测试 + +持续集成会将这些测试活动在PR提交前完成,结果会出现在XXXX上 + +[sig-qa组](/../sig/sig-qa/)是负责测试活动的官方机构,他们的相关测试自动化工具在test-fra中。如果您你希望自己的基础架构上能运行XXX测试,可以考虑采用。 + + + +

选择社区组件打包

+ +请参考[如何打包](packaging.md) + + + +

安装openEuler

+ +请参考[下载安装openEuler](https://openeuler.org/zh/docs/installation/installation.html) + + + +

安全

+ ++ [安全发布页面]()——简要描述了处理安全问题的过程 ++ [安全披露信息]()——如果您希望报告安全漏洞,请参考此页面 + + + +

社区文档

+ ++ [贡献文档]() + + + +

社区活动

+ +

交流

+ +[社区常规交流方式](./communication) + + +

大事记

+ +openEuler参加了XXXXXX,每年在XXXXXXX,关于这些事件和其他社区事件信息可以在[openEuler事件]()页面上找到 + + + +

聚会

+ +我们遵循针对开发者的聚会的XXXXX准则,您可以通过XXXXX上的直接消息或通过电子邮件与XXXX联系。来加入我们把~ diff --git a/en/contributors/issue-submit.md b/en/contributors/issue-submit.md new file mode 100644 index 000000000..ea10d1002 --- /dev/null +++ b/en/contributors/issue-submit.md @@ -0,0 +1,63 @@ +# 问题提交指南 + +发现并提交问题,也是对社区良好的贡献方式。 + +本文详细描述如何提交一个良好的问题。 + + + +### 确认问题所属的SIG或项目组 + +- 如果您能够确定问题归属于哪一个SIG或项目组,请在repository的搜索栏找到该SIG或项目组的repository。 +- 如果您不能确定问题归属,请点击“[community-issue](https://gitee.com/openeuler/community-issue)”repository + + + +### 创建一个新的issue + +1、点开对应的repository后,在repository的工具栏内点击“Issue”,再点击创建“+新建Issue”按钮。 + +2、将新ISSUE的标题栏内的问题类型选择为“缺陷” + +3、在标题栏内简要描述一下问题的现象和影响 + +4、在详细描述框下,请按照模板说明问题发生的细节,如下: + +``` +**【环境信息】** +硬件信息 +- 裸机场景请提供问题的硬件信息 +- 虚拟机场景请提供虚拟机的XML文件或配置信息 +软件信息 +- OS版本及分支信息 +- 内核信息 +- 发现问题的组件版本信息 +网络信息 +- 如果有特殊组网,请提供网络拓扑信息 + +**【问题复现步骤】**,请描述具体的操作步骤 +**【实际结果】**,请描述出问题的结果和影响 +**【其他相关附件信息】** +比如系统message日志/组件日志、dump信息、图片等 +``` + + + +### 提交并配合问题处理 + +您提交问题以后,如果问题的描述和复现步骤清晰明确和可定位,会有人直接定位和解决该问题。但也有可能会出现,负责跟进该问题的开发者需要您提供更加详细的信息的情况,也感谢您的配合。 + + + + + + + + + + + + + + + diff --git a/en/contributors/non-code-contributions.md b/en/contributors/non-code-contributions.md new file mode 100644 index 000000000..1afabef12 --- /dev/null +++ b/en/contributors/non-code-contributions.md @@ -0,0 +1,49 @@ +# 非代码类贡献 + +下面的列表旨在帮助非代码贡献者找到openEuler社区项目中可以利用其专业知识的最佳领域。这样不仅是为希望参与贡献的任何人提供了入门指南,而不必限于编码,还可以满足项目组当前可能无法由专注于代码贡献者完成的任何需求。您对以下的项目或角色感兴趣,都可以联系我们! + + + +## 外向型社区工作 +- 参与[社区交流](/../communication/),包括帮助引导社区新人贡献社区,回答社区上的疑问等, +- 运维社区通信工具,包括联系主持社区会议等 +- 共同组织社区聚会,包括openEuler开发者大会等, +- 管理社区“大事件”等,包括查看管理讨论中的事件 +- 参与社区非文件的写作,包括社区推广、安装手册、博客和视频等 + + + +## 内向型社区工作 + +- 参与社区文档写作 +- 参与社区版本测试验证,请加入sig-test,参考该SIG的[README]()和贡献者相关的指导。 +- 参与社区基础设施建设,请加入sig-infrastructure +- 参与社区视觉设计,请加入sig-ucd + + + +## SIG内的特定角色 + +以下的角色对于openEuler中的每一个SIG都很重要。如果您对项目中的特定主体感兴趣,可以通过多种不同的方式为特定的项目组做出贡献。 + +- 文献资料 + - 项目/SIG专业知识领域的通用文档 + - 更新,审查和记录文档 + - 翻译 + +- UX/UI设计 +- 打包发布 +- 项目管理 + - 确认任务、问题等的所有权 + - 管理PR,管理项目组分类和标签,编辑PR相关文本 + - 为SIG等组织和帮助召开会议 + + + +### 具备基本代码能力的非代码任务 + +以下角色不写代码,但需要具有基本的编码知识或编码相关特定领域知识。 + +- 产品文档 +- 管理发行说明 +- 项目内Github管理(存储库管理) \ No newline at end of file diff --git a/en/contributors/packaging.md b/en/contributors/packaging.md new file mode 100644 index 000000000..f9eecf81c --- /dev/null +++ b/en/contributors/packaging.md @@ -0,0 +1,262 @@ +# openEuler软件打包指南 + +目录 + +- [软件打包基础说明](#id1) + - [打包规则](#id1-1) + - [打包基础知识](id1-2) +- [openEuler打包规则](#id2) + - [软件包拆分/合并规则](#id2-1) +- [SPEC编写规范](#id3) + - SPEC文件说明 + - [openEuler custom amcros](#id4) + - [软件打包验证](#id5) + +- [范例说明](#id5) + - [范例一](#id5-1) + - [范例二](#id5-2) + - [范例三](#id5-3) + - [范例四](#id5-4) + - [范例五](#id5-5) + + + +

软件打包基础

+**打包**是指编译并捆绑软件与元数据,例如软件全名、描述、正常运行所需要的依赖列表等的动作。这是为了让软件使用者可以使用类似RPM等软件包管理器,方便舒服的对其所使用的软件进行安全、升级或者删除。 + + + +

打包规则

+openEuler社区综合了多个开源项目的软件包,并把他们集成到一个系统中。所以规范化多种多样的开源项目到一个连贯的系统中是非常有必要的。此处简要描述openEuler社区的打包规则: + +- 我们遵守一般的[Linux基础标准(LSB)]()。该标准致力于减少各个发现版之间的差异; + +- 我们遵守[Linux文件系统层级标准(FHS)]()。该标准主要是关于如何管理Linux文件系统层级的参考; + +- 除了遵守以上Linux发行版通常都会默认遵守的规则,本指南还规范化了为openEuler社区的软件包打包的的规则要求。 + + + +

打包基础知识

+一个软件包(假设软件包名为*pgname*)通常会拆分成多个RPM包: + +- **与软件包同名的主包**:包括命令、配置、动态库(简单的软件无需对外提供libs时会使用)等 + +- **libs包**:提供动态库,供二次开发和使用,通常命名为*pgname*-libs + +- **开发用devel包**:提供动态库、编译使用的头文件,两者命名方式和拆分原则一致?????,通常命名为*pgname*-devel?? + +- **开发用static包** :提供.a等静态编译需要的组件,通常命名为devel-static + +- **文档doc包**:提供二次开发文档、接口函数说明手册、范例和man、info等手册 + +- **本地化支持lang包**:提供语言和时区等本地化支持,通常命名为*pgname*-local; + +- **其他包**:如server、utils、tools、plugins等,和包的功能紧密相关的软件包,比如部分网络软件单独提供一个server或clinet包。 + + 大部分软件包遵循以上拆分原则,openEuler在次基础上定义了自己的打包规则,以指导软件包的拆分、依赖关系建立,从而形成自己的软件包体系。 + + + +

openEuler打包规则

+

软件包拆分/合并规则

+openEuler将软件包拆分成3个主要的二进制RPM包:主包、devel包和help包,其规则如下: + + - **主包** + - 包名:*pgname* + - 包含内容:命令、配置、本软件包包含的命令运行所需的so,以及本软件对外提供的动态库、license、copyright、Author、readme(如果包含版权信息) + - 主要变化:主包中的man、info、readme等功能、版权、license无关的文档信息拆分到help包中 + - 关键点:通过Provides、Obsoletes声明实现与前项版本的兼容 + - 动态库.so,RPM构建会到处动态库的内容,无需单独提供Provides声明 + - libs包合并到主包后,Provides的内容RPM无法自动导出,需要在主包对原来libs包中的内容追加Provides声明 + - 原本libs包提供的功能已经又主包提供,可以添加Obsoletes来指明主包已经替换了libs包(请参见[范例一]()) + - **devel包** + - 包名:*pgname*-devel + - 包含内容:静态库.a、头文件、example范例、test用例、其他开发使用的内容 + - 主要变化: + - 合并devel包和static包 + - 所有开发使用的内容都收编到devel包中 + - 关键点: + - 所有属于开发范围的内容,统一打包成devel包。如果devel的内容包含了原来static等包提供的功能,需要应用Provieds和Obsoletes来保持和前项版本的兼容 + - 动态库打包到主包后,devel包一般需要Requires主包,否则部分动态库会找不到 + - **help**包 + - 包名:*pgname*-help + - 包含内容:二次开发文档、接口函数说明手册和man、info手册等相关文档和手册 + - 主要变化:主包中的man、info等手册和文档拆分到help包中 + - 关键点: + - 通常help包只依赖man、info等手册查询工具,不需要任何其他编译依赖和安装依赖。 + - 外部大部分软件包以doc包命名,修改时需要将其改成help包(请参考[范例二]()) + +如果是复杂软件包,在上面3个分类的基础上,特殊场景还需考虑: + +- **for-language包** + - 包名:如python2-*pgname*、python3-*pgname*、per-*pgname* + - 包含内容:针对perl、python2、python3等语言的支持的分拆 + - 主要变化:NA + - 关键点:NA + +- **本地化支持包** + - 包名:*pgname*-lang + - 包含内容:本地化、语言支持、时区相关等国际化相关内容。这里是针对复杂的、国际化的相关软件,简单的包不需要单独拆分出lang + - 主要变化:所有lang合并成一个,不针对国家、地区进行拆分 + - 关键点:NA +- **其他复杂和特殊包** + - 包名:例如openssh-server、openssh-client等 + - 包含内容:NA + - 主要变化:建议尽可能将原有内容按照上面分类拆分,减少此类包 + - 关键点:单独评审是否有此类包 + + + +

SPEC编写规范

+

SPEC文件说明

+**spec中的缩进统一格式,使用空格,保持对齐** + +**文件头** + +> *Name*:#软件包名字,**保持** +> +> *Version*:#软件版本号,**保持** +> +> *Release*:#软件包发行号,**变更**。例如:`RElease:4%{?dist}->5` +> +> *Summary*:#概要,**变更**。一句话概括该软件包信息,打开URL查看软件包主页信息 +> +> *License*:#变更:软件授权方式,多个License之间用and隔开。错误格式:LGPLv2 BSD,正确格式:LGPLv2 and BSD +> +> *Group*:#组信息,**删除** +> +> *URL*:#一般**保持**,需尝试登陆能否登上,无效的要替换成有效的 +> +> *Source*:#**保持**,源码包的名字/下载地址,按顺序表示 +> +> *Patch*:#补丁,需标明补丁来源,以保证补丁可溯性,**保持** +> +> *Description*:软件包具体描述 + +说明: + +1.基础字段全部使用空格保证对齐,且各项关键字顺序需与上述一致 + +2.openEuler会自动匹配当前芯片架构,`%{?_isa}`可去除,比如`%{name}%{?_isa}`可以替换成`%{name}` + +3.spec中version、release比较复杂的场景,如果灭有特殊要求,尽量简化为单个数字,且保持递增,h和`%{?dist}`的后缀要去除 + + + +**软件包依赖** + +> - *BuildRequires*:定义build时所依赖的软件包,在构建编译软件包时需要的辅助工具。**尽量写到一行,用空格隔开,gcc建议去掉,因为一般环境中已经存在,无需特意说明。且写包名即可**,例如`%{bindir}/man`替换成`man` +> - *Requires*:定义安全时的依赖包,指二进制软件包在其他机器上的安装时,所需要依赖的其他软件包,**尽量写成一行,用空格隔开**。RreReq、Requires(pre)、Requires(post)、Requires(preun)、Requires(postun)等都是针对不同阶段的依赖指定的,**策略相同**。 + +说明: +1.该部分的依赖关系定义了一个软件包正常工作需要依赖其他软件包,在RPM包升级、安装和删除的时候需要确保依赖关系得到满足 +2.多个编译依赖或安装依赖可以汇总成1~3行,这样看起来简洁 + + + +**预处理阶段(%prep)** + +该阶段描述了解压源码包的方法 + +`%setup -q# ` 解压源文件程序 + +`patch #` 应用对应补丁 + +推荐更改成`%autosetup`命令,自动解压源码包和打补丁(请参考[范例三]()) + + + +**编译阶段**(%build) + +`%configure`:#configer文件默认不编译静态库,参数`--disable-static`可以去掉。#配置参数尽量**合并**一行(请参考[范例四]()) + +`make`:#替换成`%nake build`(请参考[范例五]()) + +说明:configure、make等编译命令,选项如果没有宏控制,可以汇总到1行。 + + + +**安装阶段**(%install) + +需替换的指令: + +1.清空安装目录在安装时会自动清除,`rm -rf %{buildroot}`和`rm -rf $RPM_BUILD_ROOT`命令可以删除 + +2.删除*.la和.a文件命令: + +`rm %{buildroot}%{_libdir}/*.la` + +或者 + +``` +find $RPM_BUILD_ROOT -type f -name "*.la" -delete \ +find $RPM_BUILD_ROOT -type f -name "*.a" -delete \ +``` + +可以用宏`%delete la and a`调换 + +3.删除*.la文件: + +`find $RPM_BUILD_ROOT -type f -name "*.la" -delete ` + +可以用宏`%delete la`调换 + + + +**%file阶段%** + +%file是对软件打包时,**打包的顺序要和前面定义package的顺序保持一致** + + + +

openEuelr custom amcros

+``` +%disable_rpath +sed -i 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|g' libtool \ +sed -i 's|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|g' libtool + +%delete_la_and_a +find $RPM_BUILD_ROOT -type f -name "*.la" -delete \ +find $RPM_BUILD_ROOT -type f -name "*.a" -delete + +%delete_la +find $RPM_BUILD_ROOT -type f -name "*.la" -delete + +%chrpath_delete +find $RPM_BUILD_ROOT/ -type f -exec file {} ';' | grep "\" | awk -F ':' '{print $1}' | xargs –i chrpath --delete {} + +%package_help +%package help \ +Summary: Documents for %{name} \ +Buildarch: noarch \ +Requires: man info \ +\ +%description help \ +Man pages and other related documents for %{name}. + +%install_info() +/sbin/install-info %1 %{_infodir}/dir || : + +%install_info_rm() +/sbin/install-info --remove %1 %{_infodir}/dir || : +``` + + + +

软件打包验证

+建议从下面三个角度验证。 + +- 不同的软件列表,软件选型 +- 独立的软件拆分规则 +- 基于不同分拆规则的软件依赖关系树。 +- 确认软件是否重新选型,重新选型后,是否有接口、功能、使用方式上的差异,软件升级后,是否导致依赖此软件的上层软件功能异常。 +- 如果软件未做选型升级,确认拆分前后,所有二进制RPM包含的内容是否有变化、遗漏,可以通过`rpm –qpl`查询对比。 +- 拆分前后生成二进制RPM的Provides、Requires是否有变化,可以通过命令`rpm --provides` 或`rpm --requires`查看。特别是主包收编libs包的场景,要查看主包是否包含原libs包Provides、Requires内容。 +- 将软件拆分前编译的二进制全部安装到系统,查看软件选型打包后的二进制包是否可以使用`rpm –Uvh`进行正确升级。 +- 安装升级后,验证:① 服务类的,验证`start/ stop /restart/reload`;② 命令类的,至少要验证基本功能可用。 +- 软件选型升级后,对其他软件包的影响,很难独立判断,需要做集成测试。 + + + +

范例

diff --git a/en/contributors/pull-requests.md b/en/contributors/pull-requests.md new file mode 100644 index 000000000..9f6a4a2fc --- /dev/null +++ b/en/contributors/pull-requests.md @@ -0,0 +1,71 @@ +# PR提交指南 + +本指南确保您的PR请求符合我们的最佳实践。 + + + +## 在提交PR请求之前 + +请您在提交PR之前完成本地验证,以便在一定程度上保证在提交PR后的持续集成测试的通过。 + +XXXXXXXXXXXX(todo:此处需提供在本地完成测试的方法) + + + + + +## 提交PR + +### PR提交工作流 + +1、提交PR请求 + +2、机器人分配评审人 + +3、运行自动化测试。 + +- 如果测试成功 +- 如果测试失败,则XXXXXXXXXXX + +4、审核人对提交进行审核 + +5、将审核意见推送给您的PR分支 + +6、根据需要重复前两个步骤。直到评审者添加``标签。该标签说明,该评审者已经认为本次的PR提交内容,已经通过该评审人的审核。 + +7、机器人分配的审批者会根据评审人意见,以及自己的评审意见添加``标签,表示本次PR提交通过最终审核,并准备自动合并。 + + + +### 关于`Test-Ready` + +- 组织成员可以将`test-ready`标签应用到贡献者提交的PR,以表明可以对该PR进行测试 + + + +### 标记未完成的PR请求 + +如果您想在PR请求完成之前先征求大家的意见,有两种方法可以实现此目的: + +1、您可以添加`hold`或`hold-cancel`注释 + +2、您可以在PR请求的标题中添加或删除`WIP`或`[WIP]`前缀 + +当存在这两个标签时,将不会考虑合并你的PR请求。 + + + +### PR请求和发布周期 + +如果您的PR请求已经通过审核,但是一直未合入,则可能是由于当前出去版本的发布周期处于特定阶段造成的。有时版本致力于解决特定的问题或达成特定的目标,可能会冻结代码库的合入。 + +如果您认为此种状态不合理,可以联系对应的SIG/项目或[sig-pm]()进行澄清。 + + + +### 注释命令参考 + +请参考[命令行文档](/.../../sig-frastructure/Comand.md) + + + diff --git a/en/governance/README.md b/en/governance/README.md new file mode 100644 index 000000000..d4da75118 --- /dev/null +++ b/en/governance/README.md @@ -0,0 +1,45 @@ +# openEuler Community + +Welcome to openEuler community. + +## Community Vision + +**openEuler builds an innovative platform and a unified and open OS that supports the multi-processor architecture**. + +## Coummunication + + +There are several ways to communicate in openEuler, and please read [Communication](/en/communication/) for details. + +## Community Governance + +openEuler has the following official organizations: + ++ **Committee**: A group of people who are assigned to take care of some topics. Although the community encourages being as open as possible, personal communication is allowed due to the sensitivity of the topics undertaken by this group of people. Such as security committee, financial committee, etc. + ++ **SIG**: A persistent and open team focused on **specific domain**. This team achieves specific delivery goals through regular tasks and activities. SIG has an open and transparent process, which follows openEuler's [code of conduct](/code-of-conduct.md). Anyone can participate and contribute. Find SIGs in . + ++ **Sub-projects**: Sub-projects are established within the SIG to achieve **specific delivery goals or results** and can work independently. A subproject has one or more repositories, which are the main output organization of the openEuler community. All sub-projects are in the SIG to which they belong. If the project's deliverables need to enter the community distribution scope, you can submit an application to the technical committee. Please refer to [SIG application guidance](/en/technical-committee/governance/README.md). + ++ **The sub-project has two phases: incubation phase and maturity phase**. Software packages for mature projects are available on the community distribution CD. Incubation projects can apply for software packages to enter the community's `/extra` (extra package not included in the CD-ROM) directory or` /experimental` (exploration, experimental package) directory + ++ **Working Group**: An ad hoc group set up to resolve issues across SIG borders. The workgroup does not own any code or long-term deliverables. It can be reported through the relevant SIG. One example is the Community Security Coding Working Group. + + More detailed information about these organizations can be found in [Community Governance](/en/governance/). SIG can have its own contribution strategy (described in the "README" or "CONTRIBUTING" file in this SIG/project team's repo), as well as its own mailing list, IRC channel, etc. + +If you need more information about SIG/project structure and organization, please refer to [SIG Governance](/en/technical-committee/governance/). + + + +## Contribute + +The first step to make a contribution is to choose from [openEuler SIG/Project list](https://openeuler.org/en/sig.html). Start participating in SIG/project meetings, join the IRC channel and subscribe to the mailing list. SIGs/projects usually consist of a series of `help-wanted` ISSUEs that can help new contributors to participate. + +The Contribution Guide provides ways to get your ideas and bug fixes seen and accepted, including detailed instructions: + +1. How to ask questions + +2. How to find what works + +3. How to submit a PR + diff --git a/en/secretariat/README.md b/en/secretariat/README.md new file mode 100644 index 000000000..383af7097 --- /dev/null +++ b/en/secretariat/README.md @@ -0,0 +1,28 @@ +# Secretariat + +The openEuler community is still in the preparation phase. During the preparation phase, the secretariat is responsible for the operation of the openEuler community. At this stage, the main responsibilities of the openEuler community secretariat are as follows: + +- Develop community operation plan + +- Financial budge plan preparation. + +- Perform community founder preparations + +- Other unassigned in the openEuler community + +## Members + +1. Fred Li(@zerodefect), since December 2019 +2. freesky-edward(@freesky-edward), since December 2019 + + + +## Contact + +Mail: council@openeuler.org + +## Meeting + +会议时间尚未确定,确定后会更新。 + + diff --git a/en/security-committee/README.md b/en/security-committee/README.md new file mode 100644 index 000000000..b52d55192 --- /dev/null +++ b/en/security-committee/README.md @@ -0,0 +1,42 @@ +**The contenct in this folder is not finalized yet.** + +# 安全委员会 + +openEuler安全委员会是负责接收和响应openEuler产品安全问题报告的机构。该机构的使命是通过以下方式为openEuler用户提供最安全的操作环境: + ++ 通过打包程序修复和更新软件包 ++ 确定并帮助改善社区内的安全开发实践 ++ 回答社区中的软件安全性相关问题 + + + +## 工作职责 + ++ 协助漏洞修复:确保及时修补和发布已知漏洞。通过为软件包Maintainer们提供补丁帮助,帮助用户系统在成为攻击受害者之前进行漏洞修复,包括提供相关漏洞检测和修复工具。 ++ 响应安全问题:响应上报的安全问题,跟踪安全问题的处理进展,并遵循安全问题披露策略对安全问题在社区内进行披露和公告。 ++ 安全编码规则:防止漏洞被首先写入是安全团队的目标。安全团队会努力创建文档或开发工具来帮助开发团队避免软件开发过程中的常见陷阱。安全团队还会尝试回答过程中遇到的任何问题。 ++ 参与代码审核:安全团队希望能够通过代码审核帮助团队提前发现代码中的漏洞。 + + + +## 成员 + +***待任命*** + + + +## 联系 + ++ 邮件列表:security@openEuler.org ++ openEuler社区ISSUE/PR + + +## 安全 + +安全委员会的政策和文件 + ++ 地址: + + + +*如果要报告安全问题,请通过电子邮件发送到私人邮件列表:security@openeuler.org,其中包含安全问题的详细信息,以及所有openEuler错误报告的预期详细信息。* \ No newline at end of file diff --git a/en/sig-infrastructure/README.md b/en/sig-infrastructure/README.md new file mode 100644 index 000000000..7f46ae4d7 --- /dev/null +++ b/en/sig-infrastructure/README.md @@ -0,0 +1,43 @@ + +**Please visit instead of reading the content here.** + + +# 基础设施SIG +*todo*:基础设施团队的领域范围和目标 + +## 组内会议 + + + +## 团队成员 + + + +## 沟通联系方式 +- [邮件列表]() +- [IRC]() +- [Gitee Issue/PRs]() + + + + + + + +## 子项目 + +*todo*:子项目介绍和[repo链接]() + +对于基础设施团队来说,肯定有一个关于gitee管理的子项目 + + + + + + + + + + + +## 目标 \ No newline at end of file diff --git a/en/Repository.md b/en/sig-infrastructure/Repository.md similarity index 100% rename from en/Repository.md rename to en/sig-infrastructure/Repository.md diff --git a/en/command.md b/en/sig-infrastructure/command.md similarity index 100% rename from en/command.md rename to en/sig-infrastructure/command.md diff --git a/en/label.md b/en/sig-infrastructure/label.md similarity index 100% rename from en/label.md rename to en/sig-infrastructure/label.md diff --git a/en/technical-committee/README.md b/en/technical-committee/README.md index 190c26a4e..0ebfe5aff 100644 --- a/en/technical-committee/README.md +++ b/en/technical-committee/README.md @@ -1,24 +1,30 @@ -# 技术委员会 +# Technical Committee -openEuler技术委员会是openEuler社区的技术决策机构,负责社区技术决策和技术资源的协调。技术委员会的主要职责如下: +The openEuler technical committee is the technical decision-making body of the openEuler community and is responsible for the coordination of technical decisions and technical resources in the community. The main responsibilities of the technical committee are: -- 对社区技术路线、接口定义、架构设计、构建发布等进行指导和决策 -- 协调跨项目合作,对社区跨项目技术问题进行决策 -- 制定项目孵化、开发流程,支撑社区技术生态健康发展 -- 批准新项目加入社区,并帮助社区开发者对新项目进行孵化 -- 根据社区发展蓝图,调整社区现有项目,对不符合社区规划的项目,进行删除或者归档 -- 接受用户委员会的反馈(需求和问题),明确技术实施计划,牵引社区资源将其落地至项目 -- 建立社区认证标准和平台,为社区认证(OS商业发行版认证、硬件兼容性认证等)提供技术支撑 +- Guidance and decision on community technology route, interface definition, architecture design, build release, etc. +- Coordinate cross-projects cooperation and make decisions on cross-project technical issues in the community +- Formulate project incubation and development processes to support the healthy development of community technology ecology -# 组织会议 +- Approve new projects to join the community and help community developers incubate new projects -- 公开的会议时间:北京时间,每周X 下午,XX点~XX点 +- Adjust existing projects in the community according to the community development blueprint, delete or archive projects that do not meet the community plan +- Accept feedback (needs and questions) from user committees, clarify technical implementation plans, and draw community resources to bring them to the project +- Establish community certification standards and platforms to provide technical support for community certification (OS commercial release certification, hardware compatibility certification, etc.) -# 成员 + + +# Meeting + +- Meeting schedule: to be updated + + + +# Members - 熊伟[[@myeuler](https://gitee.com/myeuler)] @@ -27,13 +33,11 @@ openEuler技术委员会是openEuler社区的技术决策机构,负责社区 - 王勋[[@dream0819](https://gitee.com/dream0819)] - 郭寒军[[@hanjun-guo](https://gitee.com/hanjun-guo)] - 谢秀奇[[@xiexiuqi](https://gitee.com/xiexiuqi)] -- zhanghailiang[[@zhanghailiang_lucky](https://gitee.com/zhanghailiang_lucky)] - +- zhanghailiang[[@zhanghai_lucky](https://gitee.com/zhanghailiang_lucky)] -# 联系方式 -- [邮件列表](tc@openeuler.org) +# Contact - +- [Mail List](tc@openeuler.org) diff --git a/en/technical-committee/governance/SIG-governance-requirements.md b/en/technical-committee/governance/SIG-governance-requirements.md index eea04692e..370d3c3de 100644 --- a/en/technical-committee/governance/SIG-governance-requirements.md +++ b/en/technical-committee/governance/SIG-governance-requirements.md @@ -1,3 +1,5 @@ +**to be translated into English** + # SIG治理要求 diff --git a/en/technical-committee/governance/SIG-governance.md b/en/technical-committee/governance/SIG-governance.md index 30beb4f73..dffe4e3e4 100644 --- a/en/technical-committee/governance/SIG-governance.md +++ b/en/technical-committee/governance/SIG-governance.md @@ -1,3 +1,5 @@ +**to be translated into English** + # SIG角色和组织治理 ​ 该Charter内容遵循openEuler宪章 [README](README.md)中描述的约定,本文会根据需要进行更新,以满足openEuler SIG的需求。 diff --git a/en/technical-committee/governance/template-release.md b/en/technical-committee/governance/template-release.md index 19f30ece9..f4344cfb7 100644 --- a/en/technical-committee/governance/template-release.md +++ b/en/technical-committee/governance/template-release.md @@ -1,3 +1,5 @@ +**to be translated into English** + # SIG 交付件进入社区发行申请模板 (还待补充或细化) diff --git a/zh/communication/Mails.md b/zh/communication/Mails.md index 4ec10bf5e..8a3244bb0 100644 --- a/zh/communication/Mails.md +++ b/zh/communication/Mails.md @@ -2,22 +2,20 @@ ### 加入邮件列表 -以下表格展示了当前社区可用的邮件列表,请根据您的兴趣参照下面步骤去加入某个邮件列表。 - -更多信息请参照 +访问该地址找到社区可用的邮件列表,请根据您的兴趣参照下面步骤去加入某个邮件列表。 这里有两种加入方式. -网页 +#### 1. 网页 -> 1) 点击上表中的列表名字进入订阅页面。 +> 1) 点击中的列表名字进入订阅页面。 > 2) 输入订阅邮箱并点击“订阅”按钮。 > 3) 登录邮箱并回复从openeuler.org发来的确认邮件。 -如果接收到从openeuler.org发来的类似“Welcome”的邮件就意味着您已经订阅成功了。 +如果接收到从@openeuler.org发来的类似“Welcome”的邮件就意味着您已经订阅成功了。 注意:如果没有收到“Welcome”邮件,请确保回复邮件时标题保持与原邮件一致再发一次。 -邮箱 +#### 2. 邮箱 > 1) 发送一封以“subscribe”为标题的邮件到每个邮件列表的提供的订阅地址(订阅地址是列表地址+“-join”后缀组成)。 > 2) 回复从openeuler.org发送的确认邮件。 @@ -50,6 +48,6 @@ content: NA 如果过程中遇到问题,请联系基础设施团队: - 邮件: infra@openeuler.org -- IRC: #openEuler-infra(TO BE DEFINED) +- IRC: #openEuler-infra 如果您发现任何有关邮件列表相关的bug,请直接提交issue到[infrastructure](https://gitee.com/openeuler/infrastructure/issues) diff --git a/zh/communication/README.md b/zh/communication/README.md index 936ffa29e..65917d3fc 100644 --- a/zh/communication/README.md +++ b/zh/communication/README.md @@ -6,10 +6,10 @@ openEuler包含许多项目,这些项目被组织成社区团体。这些团 ## IRC 聊天室 -对于每个团队和信号,我们建议使用IRC频道作为基本的通讯聊天工具。在[IRC频道](IRCs.md)中列出了所有通道,选择一个或多个和自由免费加入他们的行列。 +对于每个团队和信号,我们建议使用IRC频道作为基本的通讯聊天工具。在[IRC使用指南](IRCs.md)中可以找到如何使用ICR,以及[IRC频道列表](https://openeuler.org/zh/community/irc.html)。 ## 邮件 -如果要开始一个开放主题的讨论,将电子邮件发送到相关的邮件列表是另一个不错的选择。在[邮件列表中](Mails.md)列出了所有的邮件列表。 +如果要开始一个开放主题的讨论,将电子邮件发送到相关的邮件列表是另一个不错的选择。访问[邮件列表](Mails.md)获取详细信息。 diff --git a/zh/contributors/README.md b/zh/contributors/README.md index b9670d384..2af3668ba 100644 --- a/zh/contributors/README.md +++ b/zh/contributors/README.md @@ -1,3 +1,7 @@ +**贡献指南文件夹下的内容尚不完善,请暂时访问[开发者贡献指南](https://openeuler.org/zh/developer.html)获取帮助。欢迎联系一起完善该文件夹下的内容** + + + 该文档指导大家如何为openEuler社区做出贡献。欢迎阅读[待解决的问题]()并提出新的问题。 diff --git a/zh/governance/README.md b/zh/governance/README.md index 57c84b412..ed0cfb8aa 100644 --- a/zh/governance/README.md +++ b/zh/governance/README.md @@ -27,10 +27,12 @@ openEuler社区有多种沟通渠道,请参考[社区交流](/zh/communication openEuler有以下受官方支持的组织类型: -+ **委员会**:被授予承担一些敏感的主题的一组人。虽然社区鼓励尽可能开放,但是由于这组人所承担的主题的敏感性,允许进行私人的交流。比如安全委员会、打包委员会等 ++ **委员会**:被授予承担一些敏感的主题的一组人。虽然社区鼓励尽可能开放,但是由于这组人所承担的主题的敏感性,允许进行私人的交流。比如安全委员会、财务委员会等 + ++ **SIG**:专注于**一个领域**的持久和开放的团队,该团队通过定期的任务和活动实现特定的交付目标。SIG具有公开透明的程序,要遵循openEuler的行为准则。任何人都可以参与并作出贡献。所有的SIG都存在于。 -+ **SIG**:专注于**一个领域**的持久和开放的团队,该团队通过定期的任务和活动实现特定的交付目标。SIG具有公开透明的程序,要遵循openEuler的行为准则。任何人都可以参与并作出贡献。所有的SIG都存在于`sig`文件夹下; + **子项目**:子项目是SIG内为实现**特定交付目标或成果**而成立的,可以独立工作。子项目有一个或多个仓库,是openEuler社区内主要交付成果的输出组织,所有的子项目都在其所属的SIG内。项目的交付件要进入社区发行范围,可以向技术委员会提交申请,请参考相关[申请指导](/zh/technical-committee/governance/README.md)。 + + **子项目有两个阶段:孵化阶段和成熟阶段**。成熟项目的软件包可以进入社区发行光盘。孵化项目可以申请软件包进入社区发行的`/extra`(不在光盘内的额外的软件包)目录或`/experimental`(探索、实验性质的软件包)目录 + **工作组**:为了解决跨SIG边界的问题而临时成立的小组。工作组不拥有任何代码或长期交付件。可以通过相关的SIG进行报告。比如社区安全编码工作组等。 @@ -54,26 +56,3 @@ openEuler有以下受官方支持的组织类型: 3、如何提交一个PR - - - -

openEuler Community

-Welcome to openEuler community! This repository will guide you to get started for joining and contributing to openEuler community. This would be a good starting point for any activities in openEuler community. - -### Communicating - -The [Communicating](https://gitee.com/openeuler/community/blob/master/en/communication.md) lists all the communication channels including chat(IRCs), mail(mail lists) and meeting(meeting channels), by which you can join openEuler community conveniently. - -### Learn to use - -Please refer to [Learning](https://gitee.com/openeuler/community/blob/master/en/use-guide.md) to learn how to use. - -### Contributing - -Picking the [SIGs](https://gitee.com/openeuler/community/blob/master/en/Sigs.md) would be a good start for the first step to contribute. After that, join into the IRC channel, and subscribe the relevant mail list. Each SIG has a set of issues with "Help wanted" label that will help new contributors to start the first contribution. Additionally, fixing the docs issues would be another good start point for who is not familiar with coding. - -The [CONTRIBUTING.md] in each project provides the detailed instruction on how to contribute step by step. However, before you submit the PR, please ensure the [CLA](https://gitee.com/openeuler/community/blob/master/en/CLA.md) signed. Please follow the steps - -> - COPY the [CLA](https://gitee.com/openeuler/community/blob/master/en/CLA.md) -> - Add your information -> - Send it to [contact@openeuler.org](mailto:contact@openeuler.org) \ No newline at end of file -- Gitee From 286e2c0c77ee1fba8c9093b265dd22032e97934c Mon Sep 17 00:00:00 2001 From: liyongle Date: Mon, 10 Feb 2020 22:52:20 +0800 Subject: [PATCH 2/4] updated according to [1]. [1] https://mailweb.openeuler.org/hyperkitty/list/community@openeuler.org/thread/3LAVA4VPFGBJKEQP2TQ3DKIHIL2RMOWC/ --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index c6326d5d2..2d7abd0b8 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ The Community repo is to store all the information about openEuler Community, in - [Technical Committee](/en/security-committee) - [SIGs](https://openeuler.org/en/sig.html) - [Events](https://openeuler.org/en/events.html) -- [Contribute as a developer](https://openeuler.org/en/developer.html) +- [Contribution Guideline](https://openeuler.org/en/developer.html) -- Gitee From 688f108986a3bc7ba2176a302473660359b42d97 Mon Sep 17 00:00:00 2001 From: liyongle Date: Tue, 11 Feb 2020 11:01:14 +0800 Subject: [PATCH 3/4] add today's mom --- meeting_records/README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/meeting_records/README.md b/meeting_records/README.md index 375a4e05a..4a2d4bfac 100644 --- a/meeting_records/README.md +++ b/meeting_records/README.md @@ -38,6 +38,8 @@ THe common used commands are below. To find more, please visit [https://kiwiirc. ### Meeting Archives +Meeting minutes on Feb 11, 2020: http://meetings.openeuler.org/openeuler-meeting/2020/community/2020-02-11-02.00.html + Meeting minutes on Fed 4, 2020: http://meetings.openeuler.org/openeuler-meeting/2020/community/2020-02-04-02.00.html Meeting minutes on Jan 21, 2020: http://meetings.openeuler.org/openeuler-meeting/2020/community/2020-01-21-01.01.html -- Gitee From 86c83931ba2fb9bbc7dffaba0a7657cdd1c94ce0 Mon Sep 17 00:00:00 2001 From: liyongle Date: Wed, 19 Feb 2020 11:56:22 +0800 Subject: [PATCH 4/4] modify according to blueskycs2c's comment. --- en/contributors/pull-requests.md | 3 ++- zh/contributors/pull-requests.md | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/en/contributors/pull-requests.md b/en/contributors/pull-requests.md index 9f6a4a2fc..e2ea1a9a7 100644 --- a/en/contributors/pull-requests.md +++ b/en/contributors/pull-requests.md @@ -65,7 +65,8 @@ XXXXXXXXXXXX(todo:此处需提供在本地完成测试的方法) ### 注释命令参考 -请参考[命令行文档](/.../../sig-frastructure/Comand.md) +请参考[命令行文档](/en/sig-infrastructure/command.md) +en/sig-infrastructure/command.md \ No newline at end of file diff --git a/zh/contributors/pull-requests.md b/zh/contributors/pull-requests.md index 9f6a4a2fc..3aaf8ae1b 100644 --- a/zh/contributors/pull-requests.md +++ b/zh/contributors/pull-requests.md @@ -65,7 +65,7 @@ XXXXXXXXXXXX(todo:此处需提供在本地完成测试的方法) ### 注释命令参考 -请参考[命令行文档](/.../../sig-frastructure/Comand.md) +请参考[命令行文档](/zh/sig-infrastructure/command.md) -- Gitee