Git协作编程

Team Code 协作编程平台工作流

Team Code 协作编程平台是基于 Google Gerrit 搭建的团队协作编程的平台。Gerrit 不仅仅
是 Code Review,更是一种社会化的协作模式。因此,我们将以 Google Gerrit 为基础的 Git
Server 定位为 Team Code,意为 Team Programming Platform。

Code Base = Team Code + Code Search + else

Team Code 是 Code Base 的最主要的部分。

前提

Team Code 平台工作流的前提,是了解 Git,安装 Git,会使用 Git。

Git 的安装请参考 Git 起步 - 安装 Git

如果你不知道 Git 是什么,或者对 Git 的使用不熟悉,请从 这里开始

本手册的所有操作,都是在 Git Bash 中进行。Git Bash 是 Windows 中的集成了 Git 的 Bash,
在 Mac OS 与 Linux 等系统中,它就是 Bash Shell,后面统称为 Git Bash

变量约定

在后面的命令与说明中,使用以下约定

  • {PROJECT-NAME} 表示项目的名称,例如 fangdd/customer/newhouse-website
  • {REPOSITORY-NAME} 表示你的仓库的名称,例如 fangdd/customer/newhouse-website 的
    仓库名就是 newhouse-website
  • {MY-USERNAME} 表示你的账号名,{MY-USERNAME}@fangdd.com 就是你的邮箱地址
  • {MY-NAME} 表示你的姓名
  • {BRANCH} 表示你的工作分支

Team Code 使用步骤

创建密钥

如果你已经有 rsa 密钥,跳过这一步。

ssh-keygen 

进入命令行交互之后,一路按回车,它会生成一对密钥,位于 ~/.ssh 目录。

添加公钥到 Gerrit

先查看公钥内容

cat ~/.ssh/id_rsa.pub

步骤如下:

  • 打开 Gerrit:http://teamcode.fangdd.net
  • 使用 统一账号 登录
  • 点击右上角的名字旁边的下拉箭头
  • 点击【Settings】
  • 点击左侧的【SSH Public Keys】
  • 点击【Add Key …】按钮
  • 将 ~/.ssh/id_rsa.pub 文件的内容,粘贴到文本框内
  • 再点击【Add】按钮
  • 完成

配置 SSH 客户端

vim ~/.ssh/config

加入以下内容

# 这一行可以让你连接服务器的速度更快
GSSAPIAuthentication no
# 这一行让较新的客户端允许使用旧老的算法来适应较老的ssh服务器
KexAlgorithms +diffie-hellman-group1-sha1

克隆项目

  • 登录 Team Code 的 Web UI:http://teamcode.fangdd.net
  • 在【Projects】列表中,找到你的项目
  • 点击你的项目连接,进入【Projects】【General】页面
  • 点击【Clone with commit-msg hook】这个 Tab
  • 点击【git clone ssh ……】右边的复制图标,复制其中的命令;
    或者直接选择【git clone ssh ……】来复制(注意要复制完整)
  • 进入你的 Git Bash,使用 cd /path/to/your/workspace 进入你的工作空间
  • 粘贴刚刚复制的命令,敲回车执行
  • 完成克隆,进入你的 {REPOSITORY-NAME} 开始工作

如果提示

fatal: could not fetch refs from ssh://{MY-USERNAME}@teamcode.fangdd.net:29418/{PROJECT-NAME}

或者提示

fatal: could not fetch refs from teamcode/{PROJECT-NAME}

说明这是一个空的仓库,你可以使用以下操作来继续

mkdir {REPOSITORY-NAME}
cd {REPOSITORY-NAME}
git init
scp -p -P 29418 {MY-USERNAME}@teamcode.fangdd.net:hooks/commit-msg .git/hooks
git remote add origin ssh://{MY-USERNAME}@teamcode.fangdd.net:29418/{PROJECT-NAME}

GIT 配置

如果你已经有全局的 GIT 的配置,跳过这一步。

# user.name 是你的中文名
git config user.name {MY-NAME}
git config user.email {MY-USERNAME}@fangdd.com

建议将 user.name 和 user.email 设置成全局的配置,以免每个项目都配一次

git config --global user.name {MY-NAME}
git config --global user.email {MY-USERNAME}@fangdd.com

使用 teamcode 工作

Team Code 工作流总图

这里写图片描述

作为 Contributor 和 Reviewer 的工作流

对于所有继承了 OpenReview-Projects 的项目,任何一位开发工程师,都是任意一个项目的
Contributor 和 Reviewer。

如果你是某个项目的 Team 成员,那你需要 Watch 该项目,以便收到该项目的 New Changes、
New Patch Sets、Comments、Submitted Changes、Abandoned Changes 等消息通知。

Watch 项目的步骤:

  • 登录 Team Code 的 Web UI:http://teamcode.fangdd.net
  • 点击右上角的【姓名】下拉菜单
  • 点击【Settings】,进入个人配置页面
  • 点击左侧导航的【Watched Projects】,进入 Watched Projects 页面
  • 在【Project Name】输入项目名,或者点击【Browse】选择项目
  • 点击【Watch】按钮
  • 将 【Email Notifications】 下方的所有列都勾选
  • 完成

工作目录:是指项目的根目录,该目录下有一个隐藏的 .git 目录。

以下所有的工作,除特别说明之外,都在你的项目的 工作目录 中进行:

  1. 进行编码工作:通常是在你的 IDE(Idea, Eclipse..)上工作
  2. 提交你的工作成果

    git add {path/to/your/changed/FIELS...}
    
    # 如果是普通的提交,使用这样提交代码
    git commit -m "{Your Commit Message}"
    # 此时你的 log 上的 message 中可以看到一个新的 Change-Id
    git log -n 1
    
    # 如果是被第5步验证不通过、或者大家 Review 认为有必要再修改,就要下面这样提交
    # 在弹出的 message 中你可以适当修改,也可以直接退出关闭。
    # 这样做的目的是保持 Change-Id 不变,让这次提交变成一个 Patch Set
    git commit --amend
    
  3. 同步与合并远端仓库的提交

    git fetch origin {BRANCH}
    git merge origin/{BRANCH}
    

    如果有冲突,则解决冲突。

  4. 提交你的工作成果给大家 Review

    git push origin HEAD:refs/for/{BRANCH}
    

    成功后,会显示你的 Change 的 URL,你可以发送这个 URL 邀请大家来 Review 你的代码。

  5. 机器人会对你的代码进行构建、单元测试、Sonar 扫描、代码风格的检查等进行验证。
    给出 -1 或 +1 的评分,如果给了 -1,则说明不能通过验证,需返回第 1 步修改代码,
    再使用 git commit –amend 提交。

  6. 所有人都可以 Review 你的代码,但主要的人是你通知到的、和跟你是同一个 Team 的,
    他们会给你 -1 到 +1 的评分,或者添加一些评论。项目的 Owner 会给你 -2 到 +2 的
    评分和一些评论。Owner 如果给出 -2 的评分,或者代码不能合并,则 Owner 或你自己就要
    Abandon,或者返回第 1 步重新编辑并以 git commit –amend 提交代码。

  7. 合并你的代码到服务器的目标分支,或者 Abandon 你的代码,结束这次的工作流。

作为 Reviewer 的工作流
  1. 登录:登录 Team Code 的 Web UI,导航到评审页面上。有多种方式达到该页面:
    • 通过 Contributor 通过 IM、E-mail 等渠道发给你的链接
    • 使用 Web UI 上的 【My】-【Changes】-【Incoming reviews】
    • 使用 Web UI 上的 【All】-【Open】找到并点击你感兴趣的 Change
  2. 评论:在评审页面上,可以查看 Commit Message,Patch Sets,Files,并对 Commit message
    和 Files 的某行或某个范围进行评论。此时所写的评论为【Draft】状态。
  3. 打分:在评审页面上,通过【Code-Review+1】或【Code-Review+2】,或【Reply…】进行评分
  4. 发表:点击【Reply..】弹层的【Post】,将【Draft】状态的评论提交
  5. 完成
作为 Committer 的工作流

Committer 由项目的 Owner 承担,其工作流如下:

  1. 完成 作为 Reviewer 的工作流
  2. 如果给出 Code-Review 负的评分,可以进行【Abandon】操作,结束本次工作流。
  3. 如果给出 Code-Review+2 的评分,可以进行【Submit】合并操作,结束本次工作流。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值