35.2. Subversion 版本控制

  1. subversion 初始化
  1. trunk

  2. branches

  3. releases

  4. tags

  1. svn co svn://127.0.0.1/document
    cd project
    mkdir trunk
    mkdir tags
    mkdir branches
    mkdir releases
    svn ci -m "Initialized empty subversion repository in your_project"
    				
  2. 创建docbook文档,安排章节

    将章节拆分成独立文件,并在主文档头部声明

    		    	
    	<!ENTITY chapter.system SYSTEM "chapter.system.xml">
    	<!ENTITY chapter.system.harddisk SYSTEM "chapter.system.harddisk.xml">
    	<!ENTITY chapter.network SYSTEM "chapter.network.xml">
    		    	
    		    	

    完成后导入subversion的trunk中

  3. 创建版本分支

    $ svn copy svn://netkiller.8800.org/document/trunk svn://netkiller.8800.org/document/branches/system
    $ svn copy svn://netkiller.8800.org/document/trunk svn://netkiller.8800.org/document/branches/network
    				
  1. 开始写作
  2. 我们假设jam负责system章节
    1. checkout
    $ svn checkout svn://netkiller.8800.org/document/branches/system
    						
  1. 编辑文件

    vim chapter.system.xml
    						
  2. 校验XML

    $ export DSSSL=/usr/share/xml/docbook/stylesheet/nwalsh/xhtml/chunk.xsl
    $ xsltproc --stringparam html.stylesheet docbook.css ${DSSSL} book.xml
    						
  3. 提交文件

    $ svn ci -m "I have finished this chapter."
    						
  1. 其他编辑人员操作类似checkout自己branche上的network章节等等
  2. tags运作

    当jam完成了指派的任务的第一个阶段后,可以创建一个tags

    svn copy svn://netkiller.8800.org/document/branches/system svn://netkiller.8800.org/document/tags/system_phase_I
    				

    tags 一旦建立,以后不会在更改

    然后jam可以在/document/branches/system继续写作

  3. 合并tags到主干

    当tags完成后主编将其合并到trunk

    svn merge svn://netkiller.8800.org/document/tags/system_phase_I
    				

    然后发行unstable版本,你也可以每天产生一个快照。等待用户反馈。

    反馈结果由负责人在/document/branches/system上修改,等待下一次发布在下一个阶段。

  4. 发行文档

    当一切OK时,我就可以把trunk 复制到 releases 中,随你怎命名。

    $ svn copy svn://netkiller.8800.org/document/trunk svn://netkiller.8800.org/document/release/document_v1.0
    				

    这个版本/document/release/document_v1.0就可以提供给读者了。





原文出处:Netkiller 系列 手札
本文作者:陈景峯
转载请与作者联系,同时请务必标明文章原始出处和作者信息及本声明。

上一篇:.NET Micro Framework动态调用C/C++底层代码(原理篇)


下一篇:【Java 并发编程】线程简介 ( 原子操作 | volatile 关键字使用场景 )