昂信嵌入式 工程师指南¶
工程师应养成记录工作笔记的习惯,建议将笔记保存在有道云笔记或印象笔记。 计算机操作界面截图保存,以利于交流。
阶段性工作完成后,将笔记整理发布Blog。 我们的愿景是:加速智能设备开发进程。 因此,能够帮助了解开发流程与提高开发效率、能够帮助解决开发中的技术难题、 能够帮助实现优化设计,对于这一类Blog我们要整理成文档。 文档发布在 http://www.readthedocs.org 。 知识体系的演进遵从: 笔记 > Blog > 文档
所有的源程序使用git版本库维护。 开源项目使用github维护,内部项目用QA系统维护。
书写 Blog¶
我们鼓励工程师将日常工作的笔记以Blog的形式发表。 公开发表工作笔记,首先,便于客户了解我们的工作内容,增加与客户的交流。 第二,有利于工程师自己整理思路。 Blog不需要写的非常详细,不必写成文档的形式; 只需要将最核心的思想描述清晰就很好了。
因为我们的Blog系统是给程序员使用的, 所以将过去的wordpress迁移到jekyll系统。 Jekyll没有很好的图形界面,但是完全可以用git管理, 这是我们更喜欢的方式。
下载源码¶
Blog的内容托管在github.com。
简单的 git clone https://github.com/EMSYM/octopress.git
即可实现
如果增加笔记、修改内容,请先在github fork https://github.com/EMSYM/octopress/fork ,
再按照 github的提交流程 发起pull request。
编译¶
生成网站需要安装octopress,具体参考 octopress 的文档
因为 Jekyll 基于 ruby 开发,所以需要先安装 ruby,要求版本≥1.9.3
git clone https://github.com/EMSYM/octopress.git emsym
cd emsym
gem install bundler
bundle install
rake install
rake preview
打开 http://localhost:4000 即可
格式¶
文字的格式参考 Jekyll官方文档
write-doc-in-github¶
Sphinx是由python写成的文档编辑工具,语法简洁,方便使用。
readthedocs.org是一个网站,可以导入Sphinx文档,并且可以与git等代码库关联自动生成文档。
[使用方向]
:研发人员所开发的成果,要以文档的形式体现出。
- 网页文档是基于sphinx工具来做的,所以需要先安装sphinx文档工具,用命令行安装。

- 登陆github的EMSYM页面,网址:https://github.com/emsym

- 找到要写的文档仓库,复制版本库网址。


- 如果文件版本库不在自己的github库中,则需要先fork到自己的github库。
- 在Linux中打开终端,执行git clone下载此版本库到本地。

- 本地目录下就有了此版本库的文件夹。

- 打开文件夹,里面 .rst 就是可以打开编辑的文件。

- sphinx语法特列

- 新建文档:
- 在 index.rst 文件中的主标题之后,有一个内容清单,其中包括 toctree 声明。toctree 是将所有文档汇集到文档中的中心元素。如果有其他文件存在,但没有将它们列在此指令下,那么在构建的时候,这些文件不会随文档一起生成。
- 我们想将一个新文件添加到文档中,并打算将其命名为 blog.rst。还需要将它列在 toctree 中,但要谨慎操作。文件名后面需要有一个间隔,这样文件名清单才会有效,该文件不需要文件扩展名(在本例中为 .rst)。在文件名距离左边距有三个空格的距离,maxdepth 选项后面有一个空白行。

- 在blog.rst文件中添加内容,现在我们准备生成输出。
- 运行 make 命运,并将 HTML 指定为输出格式。可直接将该输出用作网站,因为它包含了生成的所有内容,包括 JavaScript 和 CSS 文件。

写好后提交代码,github会自动生成网页文档。
readthedocs使用文档¶
Sphinx是由python写成的文档编辑工具,语法简洁,方便使用。
readthedocs.org是一个网站,可以导入Sphinx文档,并且可以与git等代码库关联自动生成文档。
[使用方向]
:研发人员所开发的成果,要以文档的形式体现出。
建议地址 sphinx that
Git 使用文档¶
Git是一个分布式的版本控制系统。安装与学习这个软件,建议到官网学习。
我们所做的项目不可能是由一个人来完成,而是要一个团队。就会出现多人同时开发代码。
Git是提交代码的工具,使用中应当与我们在QA系统中提交的工作报告相一致。Git能够很好的对开发人员的代码进行版本控制。
Release workflow¶
Phabricator使用向导¶
Phabricator代替redmine,成为昂信嵌入式的最新的QA系统。 Phabricator是facebook.com的团队开发的,对于软件团队协作的意义巨大。 之所以从redmine迁移过来,是因为Phabricator支持代码提交的 前审核流程 。
前审核的概念:工程师修改的代码不会直接进入git版本库,而是先提交至QA; 再由另外(至少)一名工程师进行审核。直至审核通过后,方能够提交至git。 相当于一个人做作业,一个人检查错误,将显著提高准确率。 因此,这一套工作流程,保证我们的代码库的所有代码都是经过较有经验的工程师检验过, 提高代码的质量。
wiki¶
审核流程¶
审核的操作工具是Phabricator的 arc 工具,目前只支持命令行。 具体安装和操作方法在此不表,请参考文档。
我们仅将公司内部使用前审核的最佳实践流程给出。 审核流程如下图所示:
首先,git clone 下载版本库,切换到主分支master分支。 我们此时位于master分支的某个版本r1之上。
工程师计划完成T123编号的任务,首先要建立分支,分支名就是 T123 , 分支名称与任务编号一致。建立新分支是必要的,因为arc创建更改的基本单位是分支。 即使一个分支上有多次git提交,arc只会创建一个 更新编号 。 换言之,你arc新建了一份更改,此时不变分支,新建git提交,再arc diff, 还是提交到前一次的更改当中。
开发完成后,arc diff 命令 提交前审核代码,生成Diff1,并且指定某工程师为其审核。审核者登录QA,进入 Differencial ,查看修改的代码, 如果认为存在问题的话,可以直接在QA进行批注。 在此例子中,Diff1被拒绝,所以工程师需要继续修改, 再次提交,生成Diff2. Diff2 被审核者批准。 之后,开发者 arc land 命令, 提交代码到git,生成新版本r2.
如果在处理T123的过程中,突发任务T77,需要同一名开发者紧急改bug。 此时需回到r1。因为Diff1、Diff2都还没有提交到git, 我们需要回到远程git库的一个状态(一般都是最新状态)。 这一步是必须的,因为arc提交更改是以分支为单位的。
然后类似的:建立分支名 T77 ,arc diff 提交更改, 指定审核人。通过审核之后,arc land 命令 提交代码到git,生成新版本r3. 这个命令是phabricator文档推荐的方法,批处理封装了git命令, 但是实际上傻瓜化的方法会丧失灵活性。 所以我们还是建议直接用 git push