文档章节

CODE-豆瓣代码托管系统

openthings
 openthings
发布于 2015/12/09 09:45
字数 1337
阅读 38
收藏 0

Douban CODE 是豆瓣开发的一个基于 git 版本控制系统的协作平台。

代码访问:https://github.com/douban/code

CODE —— C: Community O: Original D: Developer E: Eldamar

目前 CODE 仅开放了一个框架,支持:

  • clone & push project

  • create project

  • create user

准备环境

  • MySQL

  • Memcached

  • Python >= 2.7

  • pip >= 1.4.1

  • virtualenv

  • git

CODE 为每个项目设置了三个角色,分为 owner(有全部权限)、committer(有 push 和 merge 权限)、member。review 机制根据项目的不同设置了不同的规则,如产品线级别的、需要对外发布的项目,基础库等项目都需要经过严格的 review,如东西团队对 review 设置了如下规则:

  • 尊重他人,就事论事,对事不对人,毕竟每个人都写过烂代码;

  • PR 中的每一个 commit log 都应该可以和代码对应,方便 review;

  • 尽量不要发太大的 PR,以免引起 reviewer 的恐慌;

  • 建议保证一个 PR 的粒度和专注,最好不要出现一个 PR 里又有重构又加新 feature 的情况,同样容易引起 reviewer 的恐慌;

  • 提 PR 之前请确保在本地或测试环境一切正常;

  • reviewee 如果接受 reviewer 提出的修改意见,需要在修改提交以后知晓 reviewer,常见的做法可以是在 review comment 处回复(并带 commit 链接);

  • 评论中至少出现一个 lgtm 且保证 ci 通过之后 PR 才可以被合并;(注:lgtm 即 looks good to me 的缩写)

  • PR 合并者与提交者不能是同一个人;

  • PR 需从一个特定分支(分支的名字尽量能表达代码的功能)发往上游的 master 分支;

  • Model 的部分,如不紧急需要unittest;

  • Web 的部分,如不紧急需要webtest;

  • PR 合并后如引起 bug 或功能异常,并经查确为此 PR 引起,提交者需请全组攻城湿喝饮料或吃冰棍(由被请者决定);

  • 将 fork 的仓库与上游同步时,应使用 git fetch upstream && git rebase upstream/master (或 code sync -r ),而不是 git merge 或 code sync (这里code是指面向 CODE 系统的一个命令行工具),以保持清晰的提交历史,并防止覆盖他人的修改;

  • 注意安全问题,对于 SQL 拼字符串,模版中有 |n 的,以及处理用户输入等地方都需要仔细review,更多请参考 Web 安全开发指南

对于松散或娱乐性项目、小工具项目,并不会那么严格的 review,这也取决于 owner 自己,他可以借这个项目寻找到一位导师,来帮助他进行 review:

举一个具体的例子,例如东西团队的 Android 版本的开发,实际上最开始只是团队内部的一些成员想学习 Android 开发自发组织起来的,但一开始就找了移动组的同学来随时帮助 review。

对于 CODE 项目本身,所有工程师都可以向 CODE 上的任意项目提 PR,也都可以是CODE 的 reviewer,同时所有工程师的代码都需要经过 review 才会被 merge 到 master 分支。

发展到现在,豆瓣的 review 基本上都是自发,很少遇到需要 review 的代码堆积的情况。代码讨论区里据说时不时会出现美女图,这可能是刺激工程师们去 review 的因素之一;另外,CODE 系统本身也有奖励机制,鼓励大家去评论别人的代码。

CODE 系统的奖励机制主要有积分和勋章这两个部分。积分的规则主要就两个:

  1. 提交的 PR 被 merge,增加 100 点积分

  2. 提交的 PR 被评论,增加 5 点积分

目的就是鼓励多发 PR。一般来说,小 PR 要好过大 PR,不过有时候开发任务比较紧的时候,发出比较大的 PR 也是在所难免。

勋章系统在 CODE 早期阶段就做了进去,早期的奖励规则主要跟代码提交相关,例如给开源项目发过 Patch 并被 merge 会有相应的徽章。现在 CODE 团队对勋章系统有一些新的规划:

目前希望徽章系统可以独立出来,只是一套独立的API,任何人任何产品线都可以去设置自己的奖励规则,让这种奖励变成不是一种公司行为,而是更小的行为。 例如 antispam 组,可能就会有百人斩徽章,这个对于其他组可能就不是那么必要,当然如果你跨界帮助过 antispam 组,那么也有可能会获得这个徽章。

CODE 上没有设置惩罚机制。

测试

相比 Github,CODE 有一些非常实用的地方,比如在提交代码入库之前可以先在 CI 里面完成自动测试,reviewer 可以直接看到代码测试是通过(绿色)还是失败(红色);代码完成 merge 之后还可以通过 DAE 直接往线上部署。持续集成、自动测试、监控、部署这些都是独立系统,与 CODE 都是靠 API 来进行交互。


本文转载自:http://www.oschina.net/p/code

openthings

openthings

粉丝 328
博文 1152
码字总数 698437
作品 1
东城
架构师
私信 提问
豆瓣代码托管系统--Douban CODE

Douban CODE 是豆瓣开发的一个基于 git 版本控制系统的协作平台。 CODE —— C: Community O: Original D: Developer E: Eldamar 目前 CODE 仅开放了一个框架,支持: clone & push project...

幻视Vision
2014/02/14
7.7K
2
OSC 第 104 期高手问答 —— Python Web 开发

OSCHINA 本期高手问答( 12月15日- 12月21日)我们请来了豆瓣 CODE 的维护者@dongwm 来解答 Python Web 开发 方面的问题。 董伟明,@dongwm ,运维 - Devops - 产品开发(Web开发),现在是国内豆...

叶秀兰
2015/12/15
8.2K
35
关于Android资源站

谷歌开发者中国站 Google Developers 中国网站是特别为中国开发者而建立的,它汇集了 Google 为全球开发者所提供的开发技术资源,包括 API 文档、开发案例、技术培训的视频。 Android官方开发...

请天点
2016/12/14
685
0
介绍几个常见的Git代码托管平台

一、GitHub 目前最流行的Git服务,也是人气最旺盛的Git代码托管网站,好多好的开源项目都来自GitHub,但是GitHub只能新建公开的Git仓库,私有项目需要付费,个人认为GitHub更适合开源项目使用...

学习也休闲
2016/03/03
495
0
Git,Gitlib,Github,Gitlab,Gerrit

Git:是一种版本控制系统,是一个命令,是一种工具。是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。使用教程:https://git-scm.com/book/zh/v2,关于分支版本库的...

analanxingde
2018/10/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

360常用小工具分享 独立版 360驱动网卡版

有些朋友为了修复断网或者修复LSP,都会选择去下载360,用完再删除有些麻烦。所以自己收集了18个实用小工具独立版本方便坛友使用。只做分享,不喜勿喷。 360驱动网卡版:链接: https://pan.b...

xiaogg
6分钟前
1
0
批量删除表中某字段

select * from information_schema.columns where table_schema='erp-zyjsgx-v2' and column_name='manageflag'; alter table jz_xiangmudj drop column manageflag;......

glen_xu
8分钟前
1
0
JavaScript面试题总结系列(八)

8. JavaScript - this对象 this对象 this总是指向函数的直接调用者(而非间接调用者) 如果有new关键字,this指向new出来的那个对象 在事件中,this指向触发这个事件的对象,特殊的是,IE中的...

张森ZS
11分钟前
2
0
Apache Camel Spring Boot

Camel应用初始化 Apache Camel 采用的是组件化的设计思想,通过Camel Component对接第三方的应用,Camel核心模块会扫描classpath 加载这些Camel Component。 Camel应用在启动的过程中,需要将...

WillemJiang
12分钟前
3
0
数据管理必看!Kendo UI for jQuery过滤器状态保持

Kendo UI for jQuery最新试用版下载 Kendo UI目前最新提供Kendo UI for jQuery、Kendo UI for Angular、Kendo UI Support for React和Kendo UI Support for Vue四个控件。Kendo UI for jQue......

FILA6666
25分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部