• svn分支管理进行迭代开发


    [root@ok svndata]# svn co svn://192.168.1.111/app01
    # checkout项目到本机

    开始规划我们的svn项目目录:

    [root@ok svndata]# tree app01/ 
    app01/ #项目根目录
    ├── branches #其他分支
    │   ├── iterative-2 #迭代分支
    │   ├── iterative-2-feature1 #基于迭代分支的特性1分支
    │   └── iterative-2-feature2    #基于迭代分支的特性2分支
    ├── tags
    └── trunk #主干分支
    
    6 directories, 0 files

    主干分支上创建第一个代码文件:

    [root@ok app01]# svn mkdir trunk
    A         trunk
    [root@ok app01]# touch trunk/hello.py    
    [root@ok app01]# svn add trunk/hello.py
    A         trunk/hello.py
    [root@ok app01]# svn ci -m "init"
    Adding         trunk
    Adding         trunk/hello.py
    Transmitting file data .
    Committed revision 7.
    [root@ok app01]# svn update
    At revision 7.

    首先创建分支目录:

    [root@ok app01]# svn mkdir branches
    A         branches
    [root@ok app01]# svn ci -m "创建分支目录"
    Adding         branches
    
    Committed revision 8.
    [root@ok app01]# svn update
    At revision 8.

    创建分支的方式一:

    [root@ok app01]# svn cp trunk/ branches/iterative-2
    A         branches/iterative-2
    [root@ok app01]# svn ci -m "创建二期迭代分支"
    Adding         branches/iterative-2
    
    Committed revision 9.

    创建分分支的方式二:

    [root@ok app01]# svn cp svn://192.168.1.111/app01/trunk 
    > svn://192.168.1.111/app01/branches/iterative-2 
    > -m "创建二期迭代分支"
    注意一定要svn update 否则可能会看不到更新log
    [root@ok app01]# svn update
    [root@ok app01]# svn log -v
    ------------------------------------------------------------------------
    r11 | svnroot | 2016-08-26 12:22:45 +0800 (Fri, 26 Aug 2016) | 1 line
    Changed paths:
       A /branches/iterative-2 (from /trunk:8)
    
    创建二期迭代分支

    基于迭代分支创建特性分支:
    因为一次迭代开发可能包含很多新功能,面这些个功能可以由N个开发人员来并行开发。所以最佳方案是每个功能点再建一个分支出来,实现之后再合并回二期迭代分支。

    [root@ok app01]# svn cp svn://192.168.1.111/app01/branches/iterative-2 
    > svn://192.168.1.111/app01/branches/iterative-2-feature-say-hi 
    > -m "2期需求:say hi功能"
    
    Committed revision 12.
    [root@ok app01]# svn update
    A    branches/iterative-2-feature-say-hi
    A    branches/iterative-2-feature-say-hi/hello.py
    Updated to revision 12.
    [root@ok app01]# svn ci -m "2期需求:say hi功能"
    [root@ok app01]# svn update
    At revision 12.
    [root@ok app01]# svn log -v
    ------------------------------------------------------------------------
    r12 | svnroot | 2016-08-26 12:34:40 +0800 (Fri, 26 Aug 2016) | 1 line
    Changed paths:
       A /branches/iterative-2-feature-say-hi (from /branches/iterative-2:11)
    
    2期需求:say hi功能
    ------------------------------------------------------------------------
    r11 | svnroot | 2016-08-26 12:22:45 +0800 (Fri, 26 Aug 2016) | 1 line
    Changed paths:
       A /branches/iterative-2 (from /trunk:8)
    
    创建二期迭代分支
    ------------------------------------------------------------------------
    r10 | svnroot | 2016-08-26 12:21:48 +0800 (Fri, 26 Aug 2016) | 1 line
    Changed paths:
       D /branches/iterative-2

    实现特性功能:

    [root@ok app01]# echo "加入代码实现一些功能!!!">branches/iterative-2-feature-say-hi/hello.py 
    [root@ok app01]# svn commit -m "say hi 功能"
    Sending        branches/iterative-2-feature-say-hi/hello.py
    Transmitting file data .
    Committed revision 13.
    [root@ok app01]# svn update
    At revision 13.
    [root@ok app01]# svn log -v branches/iterative-2-feature-say-hi/hello.py 
    ------------------------------------------------------------------------
    r13 | svnroot | 2016-08-26 12:38:06 +0800 (Fri, 26 Aug 2016) | 1 line
    Changed paths:
       M /branches/iterative-2-feature-say-hi/hello.py
    
    say hi 功能
    ------------------------------------------------------------------------
    r12 | svnroot | 2016-08-26 12:34:40 +0800 (Fri, 26 Aug 2016) | 1 line
    Changed paths:
       A /branches/iterative-2-feature-say-hi (from /branches/iterative-2:11)
    
    2期需求:say hi功能
    ------------------------------------------------------------------------
    r11 | svnroot | 2016-08-26 12:22:45 +0800 (Fri, 26 Aug 2016) | 1 line
    Changed paths:
       A /branches/iterative-2 (from /trunk:8)
    
    创建二期迭代分支

    合并回迭代分支

    [root@ok app01]# svn mkdir branches/{iterative-2-feature1,iterative-2-feature2}
    A         branches/iterative-2-feature1
    A         branches/iterative-2-feature2
    [root@ok app01]# svn ci -m "基于迭代分支的特性1和2分支"
    Adding         branches/iterative-2-feature1
    Adding         branches/iterative-2-feature2
    
    Committed revision 14.
    [root@ok app01]# cd branches/iterative-2-feature1/
    [root@ok iterative-2-feature1]# svn merge svn://192.168.1.111/app01/branches/iterative-2
    [root@ok iterative-2-feature1]# svn commit -m "合并迭代分支的修改"
    Sending        iterative-2-feature1
    
    Committed revision 15.
    //自测,没问是后,合并回迭代分支
    [root@ok branches]# cd iterative-2
    [root@ok iterative-2]# svn merge --reintegrate svn://192.168.1.111/app01/branches/iterative-2-feature-say-hi
    --- Merging differences between repository URLs into '.':
    U    hello.py
    [root@ok iterative-2]# svn status
     M      .
    M       hello.py
    [root@ok iterative-2]# svn diff
    
    Property changes on: .
    ___________________________________________________________________
    Added: svn:mergeinfo
       Merged /branches/iterative-2-feature-say-hi:r12-15
    
    Index: hello.py
    ===================================================================
    --- hello.py    (revision 13)
    +++ hello.py    (working copy)
    @@ -0,0 +1 @@
    +加入代码实现一些功能!!!
    [root@ok iterative-2]# svn ci -m "合并回迭代分支"
    Sending        iterative-2
    Sending        iterative-2/hello.py
    Transmitting file data .
    Committed revision 16.

    使用reintegrate合并后,迭代分支并没有保存特 性分支的提交历史(但是在branches目录下,能看到完整的提交历史)

    迭代分支合并到 trunk 中

    [root@ok trunk]# svn merge --reintegrate svn://192.168.1.111/app01/branches/iterative-2
    --- Merging differences between repository URLs into '.':
    U    hello.py
     U   .
    [root@ok iterative-2]# svn diff

    Property changes on: .
    ___________________________________________________________________
    Added: svn:mergeinfo
       Merged /branches/iterative-2-feature-say-hi:r30-33

    Index: hello.py
    ===================================================================
    --- hello.py    (revision 31)
    +++ hello.py    (working copy)
    @@ -0,0 +1 @@
    +进行了一些修改 实现了要求达到的功能!!
    [root@ok trunk]# svn ci -m "合并到turnk"
    Sending        trunk
    Sending        trunk/hello.py
    Transmitting file data .
    Committed revision 36.
    [root@ok trunk]# svn update
    At revision 36.
    [root@ok trunk]# svn log
    ------------------------------------------------------------------------
    r36 | svnroot | 2016-08-26 19:16:30 +0800 (Fri, 26 Aug 2016) | 1 line

    合并到turnk
    ------------------------------------------------------------------------
    r27 | svnroot | 2016-08-26 18:40:48 +0800 (Fri, 26 Aug 2016) | 1 line

    init
    ------------------------------------------------------------------------

    删除特性分支

    [root@ok iterative-2]# svn rm svn://192.168.1.111/app01/branches/iterative-2-feature-say-hi -m ""

     打一个tag:

    [root@ok app01]# svn mkdir tags
    A         tags
    [root@ok app01]# svn ci -m ""
    Adding         tags
    
    Committed revision 37.
    [root@ok app01]# svn copy svn://192.168.1.111/app01/trunk svn://192.168.1.111/app01/tags/1.0 -m "1.0 Released"
    
    Committed revision 38.
    [root@ok app01]# tree
    .
    ├── branches
    │   ├── iterative-2
    │   │   └── hello.py
    │   ├── iterative-2-feature1
    │   ├── iterative-2-feature2
    │   └── iterative-2-feature-say-hi
    │       └── hello.py
    ├── tags
    │   └── 1.0
    │       └── hello.py
    └── trunk
        └── hello.py
    
    8 directories, 4 files
    [root@ok app01]# cat tags/1.0/hello.py 
    进行了一些修改 实现了要求达到的功能!!

    ------------------------------------------

    创建分支:

    [root@ok branches]# svn cp -m "create branch" svn://192.168.1.111/app01/trunk svn://192.168.1.111/app01/branches/br_feature001

    获得分支:

    [root@ok branches]# svn co svn://192.168.1.111/app01/branches/br_feature001
    A    br_feature001/hello.py
    Checked out revision 17.

    合并主干上的最新代码到分支上

    [root@ok br_feature001]# svn merge svn://192.168.1.111/app01/trunk

    测试如下:

    [root@ok br_feature001]# cat hello.py 
    [root@ok br_feature001]# svn merge svn://192.168.1.111/app01/trunk
    --- Merging r18 into '.':
    U    hello.py 
    [root@ok br_feature001]# cat hello.py 
    12k

    如果需要预览该刷新操做,可以使用svn mergeinfo:

    [root@ok trunk]# svn mergeinfo svn://192.168.1.111/app01/trunk --show-revs eligible
    r18

    在分支上的开发结束,分支上的代码需要合并到主干,如下步骤:

    [root@ok br_feature001]# cat hello.py 
    12k
    [root@ok br_feature001]# svn status
     M      .
    M       hello.py
    #末把分支合并到主干之前,查看代码:
    [root@ok br_feature001]# cat ../../trunk/hello.py 
    12k
    [root@ok trunk]# cat hello.py 
    12k
    更新主干内容!!!
    [root@ok trunk]# svn merge --reintegrate svn://192.168.1.111/app01/branches/br_feature001

    分支合并到主干中完成后应当删该分支,因为在svn中该分支已经不能进行刷新也不能合并到主干。

    [root@ok trunk]# svn log
    ------------------------------------------------------------------------
    r19 | svnroot | 2016-08-26 16:10:20 +0800 (Fri, 26 Aug 2016) | 1 line
    
    
    ------------------------------------------------------------------------
    r18 | svnroot | 2016-08-26 15:57:32 +0800 (Fri, 26 Aug 2016) | 1 line
    
    12k
    ------------------------------------------------------------------------
    r7 | svnroot | 2016-08-26 12:05:49 +0800 (Fri, 26 Aug 2016) | 1 line
    
    init
    ------------------------------------------------------------------------
    [root@ok trunk]# svn -r 18:19 merge svn://192.168.1.111/app01/trunk

    建立tags

    产品开发已经基本完成,并且通过很严格的测试,这时候我们就想发布给客户使用,发布为1.0版本

    [root@ok app01]# svn copy svn://192.168.1.111/app01/trunk svn://192.168.1.111/app01/1.0 -m "Release 1.0"
    
    Committed revision 20.

    可以看出,就是简单的复制动做。

  • 相关阅读:
    LInux-crontab
    Linux权限-chmod1
    Tool_BurpSuite安装和简单使用
    python与redis交互(四)
    Flask_环境部署(十六)
    Nginx_配置文件nginx.conf配置详解
    Tool_linux环境安装python3和pip
    Nginx_全局命令设置
    Linux_无法解析域名
    VMware_克隆机器后主机Ping不同虚拟机,虚拟机能Ping通主机
  • 原文地址:https://www.cnblogs.com/bass6/p/5813399.html
Copyright © 2020-2023  润新知