我的项目开发文件管理

  cheney

    ##文档库
    自己部署一个文件库耗费太大,所以暂时使用 百度网盘 作为我的文档库,用来管理项目文件。选择 百度网盘 的原因是:
    1. 存储流量都完全免费;(最初的想法是用七牛,但是考虑到经济和开发问题还是暂时放弃了。)
    2. 容量够大,2T 完全满足要求;(Wiz 的组群能够提供很好的 Markdown 文件的渲染 和 版本管理,但是免费容量太小了,因为我希望在文件管理系统中放入许多软件)
    3. 够快,上传下载速度都可以接受;
    4. 可扩展,提供外部调用 API ;(下一步打算是做一个网站将 百度网盘 封装一层,需要的功能大致包括 目录共享、权限管理 、MarkDown解析 、版本管理、评论系统 和 高速缓存等 。)
    5. 品牌,百度能够提供足够长时间的稳定服务;

    吸取我用过的管理系统的经验,融合自己的一些想法,开发目录定义如下的目录结构:

    • 公用库
    • 项目名称-1
      • 项目文档
        • 需求文档
        • 计划文档
        • 设计文档
        • 临时文档
      • 结构
        • 设计文档
        • 图纸
        • 临时资料
      • 硬件
        • 设计文档
        • 图纸
        • 临时资料
      • 软件
        • 设计文档
        • 说明文档
          • 使用文档
          • 构建文档
          • 构建工具
        • 程序
        • 临时资料
        • 子模块
          • 软件-1
            • 设计文档
            • 说明文档
              • 使用文档
              • 构建文档
              • 构建工具
            • 程序
            • 临时资料
          • 软件-2 ( 链接至公用库)

    自己编写的文档全部使用 Markdown 格式,需另配编辑器预览和修改。

    公用库里用来存放已经完成的项目,很可能被重复使用的项目,如各种 dll lib 等。内容是一个完整的软件包结构 。这个软件包结构是由项目内软件模块包开发完成后剪切过来的,原目录改为公用目录下的链接。以后自己做的皮肤就可以完全忽略这点不同。(Windows 下相对路径的链接方法见下文)。

    公用库里也可以别人写好的东西,只需要补文档就好了。

    项目文档目录,结构目录,硬件目录都是很正常的结构。软件目录一个包括 设计文档 说明文档 程序 组成的完整的软件包结构。如果有子模块,还会有子模块的又一层软件包结构。如果子模块是引用的公用库,或者已经开发完的接口类软件,则放置一个链接。说明文档下的构建工具也是只创建链接,本体在公用软件库。

    现在就是链接功能有些不好,Windows 不能直接支持相对链接,所以只能用命令代替。写一个 name.bat 文件,内容是 start "" dir/1。以后自己的界面也将解析这个文件来做虚拟目录。

    ##源码库
    自己搭建源码库的时机也没有成熟,目前将 Git@OSC 作为私有源码库。(所有开发的程序都放在这里,全部私有。如果要开源,则在 Github 上同步一份。共有库中的别人的程序的源代码,按照分享协议要求必须开源则放在 github ,如果要求不能传播或者没有要求,就放在 Git@OSC 私有。)这么选择的原因是:
    1. 几乎无限个免费的私有库;
    2. 每个项目几乎没有的空间;
    3. 上传下载速度可以接受;
    4. 品牌,能够在一定程度上保证源码不外泄;

    Git 方式的版本管理解决了绝大多数软件版本管理的问题,只要照着做就好了。让人头疼的问题是在 Windows 最好的 IDE ,VS 系列 ,对工程文件和代码文件分目录存放问题,很不讲究。每次都要我把文件全部删掉,再加回去。这种操作对新建的工程还好,对已经很乱的工程来说,我几乎没有看的兴趣。庆幸的是大部分 Web 开发对文件目录还是很讲究的。
    源码目录我都整理成这样的结构:

    • ProjectName
      • Public
      • Code
        • Src
        • Inc
        • Module
          • Src
          • Inc
      • Lib
      • Res
      • Doc
      • ProjectTool
        • SubProject
      • ReadMe

    ProjectTool ,代表了工具的名字,比如:开发嵌入式,可能是 MDK460 MDK500 。开发 Windows 程序 可能是 VC6 VS2008 。也可以有多个,感觉这样会清楚一点,以后遇到具体问题再改进。