当前位置: 首页 > 软件库 > 开发工具 > Git开源工具 >

Douban CODE

豆瓣代码托管系统
授权协议 BSD
开发语言 Python
所属分类 开发工具、 Git开源工具
软件类型 开源软件
地区 国产
投 递 者 景德海
操作系统 Linux
开源组织 豆瓣
适用人群 未知
 软件概览

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

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.dongwm.com/archives/codekai-yuan-liao/

  • 2014 年 2 月 14 日是豆瓣 CODE 项目成立两周年,同日豆瓣 CODE 团队宣布将整个框架开源。本次开源包含 CODE 框架以及 Mikoto、Linguist、P、CodeLive 等周边项目,感兴趣的工程师可以在这个基础上继续开发。 下面,豆瓣 CODE 的工程师们将在 InfoQ 上分享一些 CODE 背后的故事。 背景 2012年初,已经对 SVN 和 Mercurial 无力

  • 网上找到的douban api,目前老版本的接口 http://api.douban.com 已经都失效了 最新的API只需要将 http://api.douban.com 替换为 http://t.yushu.im 即可 ## 豆瓣API 说明 新版本接口已由 http://api.douban.com 更改为 http://t.yushu.im #### 正在热映 接口示例 ``

  • from bs4 import BeautifulSoup import requests from html.parser import HTMLParser from PIL import Image #模拟登陆豆瓣 class MomNi(): #初始化 def init(self): self.header = { ‘User-Agent’:’Mozilla/5.0 (Windows NT

  •       本文简单介绍一下豆瓣的开源:   CODE http://douban-code.github.io/ 代码管理和协作工具

  • importrequestsfrom selenium importwebdriverfrom selenium.webdriver.support.wait importWebDriverWaitfrom selenium.webdriver.support importexpected_conditions as ECfrom selenium.webdriver.common.by impo

  • 好吧,我又开始折腾豆瓣电影top250了,只是想试试各种方法,看看哪一种的方法效率是最好的,一直进行到这一步才知道 scrapy的强大,尤其是和selector结合之后,速度飞起。。。。 下面我就采用scrapy爬取豆瓣电影top250的方法记录一下,里面采用了selector的xpath和css两种各实现了一遍,其中xpath的选取路径较为清晰以及能够直接选到标签属性,css则较为有点小抽象,没

 相关资料
  • Managed Bean是在JSF中注册的常规Java Bean类。 换句话说,Managed Beans是由JSF框架管理的Java bean。 托管bean包含getter和setter方法,业务逻辑,甚至是一个支持bean(bean包含所有HTML表单值)。 托管bean用作UI组件的Model。 可以从JSF页面访问Managed Bean。 在JSF 1.2 ,托管bean必须在JSF配

  • 当你想要分享你代码给其他人,或者是你需要在另外一台电脑上工作时,托管代码就会是一个非常重要的话题。基本上代码托管有两种不同的形式: do-it-yourself(建立一个自己的)或者 leave-me-in-peace(使用第三方提供的平台,不麻烦自己)。 (A) Do-It-Yourself 把你的 Git 仓库托管在你自己的服务器上会有很多的优点: 可以节省你花在代码托管服务上的费用。 你的代

  • 项目管理 & 代码托管 Github [free to $] Codebase [$] Bitbucket [free to $] Unfuddle [$] Assembla [free to $]

  • 第一章 GitLab简介 GitLab 是一个用于仓库管理系统的开源项目。使用Git作为代码管理工具,并在此基础上搭建起来的web服务。 可通过Web界面进行访问公开的或者私人项目。它拥有与Github类似的功能,能够浏览源代码,管理缺陷和注释。可以管理团队对仓库的访问,它非常易于浏览提交过的版本并提供一个文件历史库。团队成员可以利用内置的简单聊天程序(Wall)进行交流。它还提供一个代码片段收集

  • 本文向大家介绍.NET中托管和非托管代码之间的区别,包括了.NET中托管和非托管代码之间的区别的使用技巧和注意事项,需要的朋友参考一下 .NET Framework具有CLR(公共语言运行时),可以执行用.NET语言编写的代码。CLR管理内存需求,安全性,代码优化,特定于平台的转换等。在非托管代码的情况下,不存在CLR,并且代码由操作系统直接执行。 以下是托管代码和非托管代码之间的一些重要区别。

  • 本文向大家介绍ajax结合豆瓣搜索结果进行分页完整代码,包括了ajax结合豆瓣搜索结果进行分页完整代码的使用技巧和注意事项,需要的朋友参考一下 使用豆瓣api,得到分页结果。相当于从后台数据库获得的结果一样。所不同的是,没法事先知道页数。虽然通过请求api可以获得总页数,但由于ajax是异步的,所以对于分页一开始就要给出总页数来说,这是没有意义的。我使用了一个固定总页数65(正是搜索javascr

  • 本文向大家介绍Python爬豆瓣电影实例,包括了Python爬豆瓣电影实例的使用技巧和注意事项,需要的朋友参考一下 文件结构 html_downloader.py - 下载网页html内容 html_outputer.py - 输出结果到文件中 html_parser.py: 解析器:解析html的dom树 spider_main.py - 主函数 综述 其实就是使用了urllib2和Beauti

  • 斌哥豆瓣FM桌面版,是一款第三方豆瓣FM客户端(PC版)。 软件使用 AAuto 语言编写,源码下载地址 http://wubin.in/app/source/doubanFM.20140101.7z 斌哥豆瓣FM第三方客户端,可替代豆瓣FM官方桌面版客户端。其除具有豆瓣FM的一般功能(登录、收听红心兆赫、加红心、标记不再听等),还具备如下特点: 1)单文件免安装绿色版(无需.net等运行库),软