剖析一个 Pull Request
- 1、当你提交一个
Pull Request
的时候,你做的事情是 请求(request) 另一个开发者(比如项目维护者)来 拉取(pull) 你仓库中的一个分支到他们的仓库 - 2、
PR
一般是pull request
,MR
是merge request
,是一样的意思。都是请求某个分支merge到目标的另外一个分支的操作。不一定要merge到master分支,merge到什么分支由你决定。
目录结构
好的开源项目,通常会选择合理的目录结构,来组织自己的代码。而所谓合理,通常意味着遵循约定俗成的规范。比如:
目录名 | 含义 |
---|---|
conf/configure | 各种配置文件 |
src/source | 项目的源代码 |
doc/document | 项目文档 |
test/unittest | 单元测试 |
tools/utils | 相关工具 |
lib | 库文件 |
app | 应用相关的文件(在web项目中经常出现) |
controllers | 控制器,在遵循MVC模式的Web项目中,经常出现 |
models | 模型,在遵循MVC模式的Web项目中,经常出现 |
views | 视图,在遵循MVC模式的Web项目中,经常出现 |
db | 数据库相关文件 |
demo/example | 相关示例代码 |
misc | 其他杂项 |
include | 头文件所在目录,C/C++项目中常见 |
out/build | 编译结果输出目录 |
third_party/vender | 第三方库 |
install | 安装所需的相关文件 |
包和模块
而包(Package),则往往具有一定的可重用性。我们可以认为,一个模块,开源出去未必会有人来用。而一个设计良好的包,本身就可以作为一个开源项目,放出去给被人使用。
开源项目分类
我们可以简单的将开源项目划分成两类,一类是给最终用户使用的项目;一类是基于这个项目,可以继续做开发的。 对于第二类项目,有可以分为几类:开发框架(各种Web MVC框架)、基础服务(MySQL、Message Queue)、可以被插件扩展的软件(FIrefox、Chrome)、编程语言(Ruby、Python、NodeJS)、模板引擎(SaSS、Less、HAML)等等。