306 lines
16 KiB
Markdown
306 lines
16 KiB
Markdown
|
# 红山开源平台开源项目使用手册
|
|||
|
## 1. 开源项目:项目管理
|
|||
|
|
|||
|
项目是用户创建的对应于一个小组或团队的协同实践社区,由项目管理员、开发人员和报告人员组成,提供问题跟踪、版本管理、里程碑、代码质量分析、资源托管、交流研讨等功能。
|
|||
|
|
|||
|
注意:未开展分组作业或项目开发的用户暂不涉及本章内容。
|
|||
|
|
|||
|
### 1.1 基本操作流程
|
|||
|
|
|||
|
开源项目是一种协同实践社区,支持团队和小组开展各种协作活动。 开源项目的典型操作流程如下:
|
|||
|
|
|||
|
1. 项目创建:团队(或小组)的核心成员首先创建一个项目。
|
|||
|
|
|||
|
2. 成员添加:通知团队其他成员在红山开源平台上注册(如已注册则忽略此步),将团队成员加入项目。
|
|||
|
|
|||
|
3. 问题跟踪:发布不同类型的问题,指派给责任人,并跟踪问题的解决进度。
|
|||
|
|
|||
|
4. 版本管理:基于Git版本库实现分布式版本控制。
|
|||
|
|
|||
|
5. 交流互动:基于讨论区等工具开展深度技术交流和研讨。 上述步骤的详细操作参见以下章节。
|
|||
|
|
|||
|
### 1.2 项目创建
|
|||
|
|
|||
|
项目包括创建:1、创建镜像项目;2、创建托管项目;3、创建组织。
|
|||
|
|
|||
|
1、创建镜像项目 点击右上角“⊕”,选择“创建镜像项目”,如下图所示: ![创建镜像项目](./static/img/3266.png) 填写项目基本信息,包括项目拥有者、镜像版本库地址、项目名称、项目简介等信息,并点击“创建项目”如下图所示: ![img](./static/img/3267.png)
|
|||
|
|
|||
|
2、创建托管项目 点击右上角“⊕”,选择“创建托管项目”,如下图所示: ![img](./static/img/3239.png) 填写项目基本信息,包括项目拥有者、项目名称、项目简介等信息,并点击“创建项目”如下图所示: ![img](./static/img/3240.png)
|
|||
|
|
|||
|
3、创建组织 点击右上角“⊕”,选择“创建组织”,如下图所示: ![img](./static/img/3241.png) 填写组织基本信息,包括组织名称、组织描述等,选择可见性,并上传头像后,点击“创建组织”如下图所示: ![img](./static/img/3242.png)
|
|||
|
|
|||
|
### 1.3 项目配置
|
|||
|
|
|||
|
项目的管理员可以对项目进行多种配置。 可配置的内容主要包括:
|
|||
|
|
|||
|
1. 项目基本信息:包括项目名称和简介,还包括项目是否公开、是否隐藏项目代码库以及删除项目
|
|||
|
|
|||
|
2. 成员管理:为项目添加各种角色的成员,点击“成员”标签页
|
|||
|
|
|||
|
3. 关联组织:将项目关联到相应的组织,点击“组织”标签页
|
|||
|
|
|||
|
4. 创建里程碑:为项目创建阶段性的产品版本,点击“里程碑”标签页
|
|||
|
|
|||
|
5. 创建版本库:为项目创建版本库(Git),点击“版本库”标签页
|
|||
|
|
|||
|
### 1.4 成员管理
|
|||
|
|
|||
|
项目管理员可以在项目配置中管理项目的成员。
|
|||
|
|
|||
|
1、点击“仓库设置”,进入标签页,选择左侧菜单栏的“协作者管理”,将看到如下页面: ![img](./static/img/3243.png) 2、在下图所示的搜索框内输入欲添加成员的用户名,如下图所示: ![img](./static/img/3244.png) 3、在搜索结果中选择想要添加的成员,点击“添加成员”,如下图所示: ![img](./static/img/3245.png) 4、成员添加成功后,可为其选择角色,包括管理员、开发者、报告者三种,如下图所示: ![img](./static/img/3246.png) 注意:项目成员的不同角色具有不同权限。 管理员:可以对项目中的所有模块进行操作。 开发者:不能对项目进行配置。 报告者:不能对版本库进行操作。
|
|||
|
|
|||
|
### 1.5 删除项目
|
|||
|
|
|||
|
管理员可以删除项目。步骤如下: 点击“仓库设置”,进入标签页,选择左侧菜单栏的“基本设置”,点击下方的“删除本仓库”,即可删除当前项目。 ![img](./static/img/3247.png)
|
|||
|
|
|||
|
### 1.6 发布问题
|
|||
|
|
|||
|
1、点击“易修(Issue)”,进入标签页,点击页面右侧的“创建任务”。 ![img](./static/img/3260.png) 2、填写任务标题及内容,选择指派成员、状态、类型、优先度等,点击“创建”。 ![img](./static/img/3251.png) ![img](./static/img/3252.png) ![img](./static/img/3253.png) ![img](./static/img/3254.png) ![img](./static/img/3255.png) 3、出现如下图所示信息时,表明问题发布成功。 ![img](./static/img/3256.png) 4、点击已发布的问题,进入问题详情页面,点击下图所示的评论区输入栏。 ![img](./static/img/3257.png) 5、点开输入栏后出现下图所示输入界面,输入想要评论的内容后,点击“评论”。 ![img](./static/img/3258.png) 6、出现如下图所示信息时,表明评论成功。 ![img](./static/img/3259.png) 注意: 每个问题都相当于一个可以进度追踪的帖子。因此支持回复、点赞、@等。 在问题截止日期的前一天,系统将对问题的发布人和被指派人发送提示消息。
|
|||
|
|
|||
|
### 1.7 新建里程碑
|
|||
|
|
|||
|
管理员可以新建里程碑。步骤如下: 1、点击“里程碑”,进入标签页,点击页面右侧的“新建里程碑”。 ![img](./static/img/3261.png) 2、填写新里程碑相关信息,包括标题、描述等,选择截止日期后,点击“创建里程碑”。 ![img](./static/img/3262.png) 3、出现如下图所示信息时,表明新的里程碑创建成功。 ![img](./static/img/3263.png) 注意:项目成员在发布问题时。将在“目标版本”属性中看到新建的版本。
|
|||
|
|
|||
|
### 1.8 关联里程碑
|
|||
|
|
|||
|
项目成员可以将项目问题关联到里程碑,从而使里程碑包含明确的任务列表。 步骤如下: 1、进入某个问题的页面,编辑“里程碑”属性,从“里程碑”下拉框中选择适当的里程碑,点击“提交”。 ![img](./static/img/3264.png) 2、出现如下图所示信息时,表明里程碑关联成功。 ![img](./static/img/3265.png)
|
|||
|
|
|||
|
## 2. 开源项目:组织管理
|
|||
|
为了满足团队开发、协作、宣传和管理需要,红山开源提供了组织功能。
|
|||
|
### 2.1 组织创建
|
|||
|
1. 在用户登录状态下,点击右上角用户头像,选择开源主页。
|
|||
|
![img](./static/img/9999.jpg)
|
|||
|
2. 进入开源主页后,点击组织按钮
|
|||
|
![img.png](./static/img/img.png)
|
|||
|
3. 点击新建组织,跳转至新建组织页面并输入组织相关信息,输入完成后点击创建组织进行创建
|
|||
|
![img.png](./static/img/9997.png)
|
|||
|
![img.png](./static/img/9996.png)
|
|||
|
|
|||
|
### 2.2 组织页面配置及介绍
|
|||
|
|
|||
|
在`2.1 组织创建`点击创建组织后,网站将自动跳转至组织页面。
|
|||
|
|
|||
|
![image-20220805093839705](./static/img/4000.png)
|
|||
|
|
|||
|
点击组织页面右上角设置按钮进入组织页面配置页面
|
|||
|
|
|||
|
![image-20220805094357904](./static/img/4001.png)
|
|||
|
|
|||
|
组织设置共分为四个模块:基本设置、组织首页管理、组织成员管理、组织团队管理
|
|||
|
|
|||
|
![image-20220805094500603](./static/img/image-20220805094500603.png)
|
|||
|
|
|||
|
1. 基本设置
|
|||
|
|
|||
|
在组织配置的基本设置中,可对当前组织的组织名称、组织描述、官方网站、所在地区、可见性、权限、最大仓库数、组织头像(推荐上传正方形图片)进行修改。
|
|||
|
|
|||
|
其中,组织名称、组织描述、可见性、组织头像为必填项,其余为选填项;用户可根据自身需求进行相关的编辑及修改。
|
|||
|
|
|||
|
2. 组织首页管理
|
|||
|
|
|||
|
在组织首页管理当中,主要可对两个部分进行相应配置:新闻动态、组织介绍(均不是必填项,若不填写 组织页面将进行隐藏显示)。
|
|||
|
|
|||
|
其中新闻动态图片推荐大小为288*120
|
|||
|
|
|||
|
+ 新闻动态
|
|||
|
+ 新闻动态图片 大小288*120
|
|||
|
+ 新闻动态原文链接,此处可以填写相应的网站链接。用户点击新闻即可进行跳转
|
|||
|
+ 新闻动态标题,此处为新闻的标题信息
|
|||
|
+ 新闻动态内容,此处为新闻的动态内容,最多可输入200字
|
|||
|
+ 组织介绍
|
|||
|
+ 此处为组织介绍,需填写组织的相关信息。支持markdown语法
|
|||
|
|
|||
|
![image-20220805095532236](./static/img/image-20220805095532236.png)
|
|||
|
|
|||
|
3. 组织成员管理
|
|||
|
|
|||
|
组织成员管理页面可查看、添加、删除组织的成员。
|
|||
|
|
|||
|
+ 点击右上角`添加成员`进行人员添加(需要选择添加人员的组织团队)
|
|||
|
|
|||
|
![image-20220805101149075](./static/img/image-20220805101149075.png)
|
|||
|
|
|||
|
选择组织团队之后跳转至人员添加页面,点击右上角搜索框,输入需要添加的用户名对平台用户进行搜索
|
|||
|
|
|||
|
![image-20220805101655892](./static/img/image-20220805101655892.png)
|
|||
|
|
|||
|
点击对应用户,点击右侧按钮`添加成员`进行人员添加。
|
|||
|
|
|||
|
|
|||
|
|
|||
|
4. 组织团队管理
|
|||
|
|
|||
|
|
|||
|
|
|||
|
## 3. 开源项目:版本管理
|
|||
|
|
|||
|
版本管理又称版本控制,是一种分布式协同编程的重要工具。没有掌握好版本管理工具,团队式协同开发是不可想象的。
|
|||
|
|
|||
|
红山开源平台集成了Gitlab版本管理系统,可以提供标准的Git版本库操作流程。 因此,在使用本平台提供的Git仓库时。可以直接参考本手册。也可以在互联网中搜索相关问题的解决方法。 详见:Git使用指南(https://git-scm.com/book/zh/v2)
|
|||
|
|
|||
|
注意:未开展项目开发的用户暂不涉及本章内容。
|
|||
|
|
|||
|
### 3.1 基本操作流程
|
|||
|
|
|||
|
Git版本库的使用非常灵活,功能非常强大,但其基本流程也是非常简单的:
|
|||
|
|
|||
|
1. 在平台上新建远程版本库或fork一个远程版本库
|
|||
|
|
|||
|
2. 将远程库clone到本地
|
|||
|
|
|||
|
3. 在本地库中创建分支(缺省为master)
|
|||
|
|
|||
|
4. 提交(commit)代码到本地分支
|
|||
|
|
|||
|
5. 推送(push)代码到远程库的分支/下拉(pull)远程库的代码到本地
|
|||
|
|
|||
|
6. 解决冲突
|
|||
|
|
|||
|
7. 合并分支
|
|||
|
|
|||
|
以上是一个在实际操作中反复进行的基本流程。
|
|||
|
|
|||
|
注意: 在多人协同编程的情况下,每个成员在开发自己的模块时,尽可能先从master或developer分支下载最新代码,并与本地分支合并,否则时间久了,合并分支将是一个灾难。 上连基本流程可以使用Git命令行客户端、Tortoise Git客户端等工具完成。
|
|||
|
|
|||
|
### 3.2 fork版本库
|
|||
|
|
|||
|
用户对某一个版本库的fork操作将会为该用户创建一个同名项目和同名版本库。
|
|||
|
|
|||
|
操作步骤:进入需要fork的版本库页面,点击右上角的Fork按钮即可。
|
|||
|
|
|||
|
注意: 任何用户都可以fork一个公开的版本库。 连续两次fork同一版本时,系统将直接跳转到第一次fork后的版本库。
|
|||
|
|
|||
|
### 3.3 新建版本库
|
|||
|
|
|||
|
管理员可以新建版本库。步骤如下:
|
|||
|
|
|||
|
1. 进入相应的开源项目的“项目配置”页面
|
|||
|
2. 点击“版本库”标签页,点击“新建版本库”链接
|
|||
|
3. 填写版本库名称后,点击“创建”
|
|||
|
|
|||
|
注意: 同一用户名下的版本不能重名。 平台也将在近期提供SSH访问方式。
|
|||
|
|
|||
|
### 3.4 克隆版本库(clone)
|
|||
|
|
|||
|
克隆版本库是将开源项目的版本库完整的克隆到本地的过程。其中包括了版本库的所有提交记录。步骤如下:
|
|||
|
|
|||
|
1. 确定需要克隆的版本库地址:从项目的版本库页面中即可找到该地址
|
|||
|
|
|||
|
2. 在本地的git命令行执行:
|
|||
|
|
|||
|
```bash
|
|||
|
git clone https://git.osredm.com/xxx/yyy.git
|
|||
|
```
|
|||
|
|
|||
|
其中“https:// git.osredm.com /xxx/yyy.git”是版本库的地址,xxx为用户ID,yyy为项目名称
|
|||
|
|
|||
|
3. 如果项目是私有的,根据提示输入版本库用户名和密码,输入当前用户的红山开源平台登录名和密码即可
|
|||
|
|
|||
|
注意:如果项目公开, 无需输入口令, 可以直接克隆。 对于私有项目,只有项目成员才具有克隆的权限。
|
|||
|
|
|||
|
### 3.5 新建分支、切换分支
|
|||
|
|
|||
|
+ 新建分支
|
|||
|
|
|||
|
新建分支是指在本地库创建一个新的分支(用于开发新的功能),并且将其同步到远程库。主要步骤如下:
|
|||
|
|
|||
|
1. 从已有的分支创建新的分支(如从master分支),例如创建一个dev分支: `git checkout -b dev`
|
|||
|
|
|||
|
2. 创建后可以查看一下当前分支,确认当前分支已经切换到dev: `git branch dev master`
|
|||
|
|
|||
|
3. 提交该新的分支到远程仓库: `git push origin dev:devl`
|
|||
|
|
|||
|
其中: dev为本地新建分支:devl为远程分支,如果devl不存在则会自动创建分支。这里,dev应该等于devl。
|
|||
|
|
|||
|
+ 切换分支
|
|||
|
|
|||
|
切换分支是指将当前工作分支换为另一个分支 。假设,本地仓库有master和dev两个分支,当前分支是master(其实也可以是其他分支)。那么切换到dev分支的命令是: `git checkout dev`
|
|||
|
|
|||
|
注意:用户可以使用git branch命令确认当的分支是否已经切换到dev
|
|||
|
|
|||
|
### 3.6 提交代码(commit)
|
|||
|
|
|||
|
项目成员在本地编辑代码或修改文件后,可以将新修改的文件提交到本地库:
|
|||
|
|
|||
|
1. 将新修改的所有文件添加到本地版本库的暂存区(stage): `git add .`
|
|||
|
|
|||
|
注意:如果仅添加单个文件,或一类文件,可以: `git add somefile.txt #添加单个文件`
|
|||
|
|
|||
|
2. 将提交到暂存区的修改提交到本地的当前分支: `git commit -m “myfirstcommit”`
|
|||
|
|
|||
|
其中,“mycommit”中的内容是关于本次提交的说明文字。
|
|||
|
|
|||
|
注意:commit只能将修改的文件提交到本地库,与远程库没有关系。
|
|||
|
|
|||
|
### 3.7 推送代码(push)
|
|||
|
|
|||
|
项目成员可以将本地提交后的改动,推送到远程库。
|
|||
|
|
|||
|
假设用户需要将本地库的dev分支推送至远程库的dev分支,执行: `git push -u origin dev `
|
|||
|
|
|||
|
如果用户的当前的本地分支己经是dev, 那么执行: `git push`
|
|||
|
|
|||
|
如果用户需要将本地的全部分支推送到远程库。那么执行: `git push -all origin`
|
|||
|
|
|||
|
注意: push代码时会提示输入用户密码,请输入红山开源平台登录名和密码即可。 Push代码之前通常要先pull,解决冲突后才能提交,否则不是最新的文件就提交不上去。
|
|||
|
|
|||
|
### 3.8 下拉代码(pull)
|
|||
|
|
|||
|
下拉代码是指从远程版本库获取代码文件到本地分支。
|
|||
|
|
|||
|
例如,用户希望将远程版本库的devl分支下拉到本地的dev分支,需要执行: `git pull origin dev devl`
|
|||
|
|
|||
|
注意:下拉代码时可能会出现冲突(即两个分支对同一个文件的同一行代码做了不同的修改)。此时常利用merge来解决冲突。
|
|||
|
|
|||
|
### 3.9 合并分支(merge)
|
|||
|
|
|||
|
合并分支是指将一个分支合并到当前分支。通常有两种情况:
|
|||
|
|
|||
|
1. 将一个本地分支合并到当前分支:
|
|||
|
|
|||
|
例如,假设用户希望将本地库的devl分支合并到当前分支dev ,命令如下: `git merge dev1`
|
|||
|
|
|||
|
2. 将一个远程库的分支合并到当前分支:
|
|||
|
|
|||
|
例如,假设用户希望将远程库的devl分支合并到当前分支dev,有多种方法,这里仅给出最基本的:
|
|||
|
|
|||
|
```bash
|
|||
|
git checkout -b temp #新建一个临时分支temp
|
|||
|
git pull origin dev1:temp #将远程devl分支下拉到temp分支
|
|||
|
git checkout dev #切换到本地dev分支
|
|||
|
git merge temp #合并分支(可能 产生冲突,合并完成后,应删除temp分支)
|
|||
|
```
|
|||
|
|
|||
|
注意:合并分支可能会出现冲突(即两个分支对同一个文件的同一行代码做了不同的修改)。
|
|||
|
|
|||
|
### 3.10 解决冲突
|
|||
|
|
|||
|
冲突是两次不同的提交修改了同一行代码导致的,通常表现为两个分支对同一行代码做了不同的修改。 版本冲突主要出现在以下两种情况:
|
|||
|
|
|||
|
第一种情况:在对远程版本库进行pull操作时。
|
|||
|
|
|||
|
第二种情况:对本地版本库的不同分支进行merge操作时。
|
|||
|
|
|||
|
解决冲突的主要方法有两种:
|
|||
|
|
|||
|
1. 对于简单的冲突,直接修改有冲突的文件,然后重新提交即可
|
|||
|
2. 对于复杂的冲突,需要用**git merge tool**来解决。 复杂的冲突解决方法(基于git merge tool)将在近期提供给大家
|
|||
|
|
|||
|
### 3.11 常见错误
|
|||
|
|
|||
|
新手在使用Git时经常遇到各种错误,由于平台集成的是标准Git服务(Gitlab),建议大家可以直接在互联网搜索疑难问题的解决办法。 或参考Git使用手册: https://git-scm.com/book/zh/v2 为给大家提供方便,这里先列出一种最常见的错误:
|
|||
|
|
|||
|
错误1:
|
|||
|
|
|||
|
```bash
|
|||
|
fatal:The remote end hung up unexpectedly
|
|||
|
```
|
|||
|
|
|||
|
|
|||
|
|
|||
|
Windows环境解决方法,在.git/config文件中加入: `[http] postBuffer = 524288000`
|
|||
|
|
|||
|
Linux环境解决方法,在命令行执行: `git config http.postBuffer 524288000`
|
|||
|
|
|||
|
注:后续我们将列出更多的错误解决办法。
|