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

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

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

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

  1. [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.

首先创建分支目录:

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

创建分支的方式一:

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

创建分分支的方式二:

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

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

  1. [root@ok app01]# svn cp svn://192.168.1.111/app01/branches/iterative-2 \
  2. > svn://192.168.1.111/app01/branches/iterative-2-feature-say-hi \
  3. > -m "2期需求:say hi功能"
  4.  
  5. Committed revision .
  6. [root@ok app01]# svn update
  7. A branches/iterative--feature-say-hi
  8. A branches/iterative--feature-say-hi/hello.py
  9. Updated to revision .
  10. [root@ok app01]# svn ci -m "2期需求:say hi功能"
  11. [root@ok app01]# svn update
  12. At revision .
  13. [root@ok app01]# svn log -v
  14. ------------------------------------------------------------------------
  15. r12 | svnroot | -- :: + (Fri, Aug ) | line
  16. Changed paths:
  17. A /branches/iterative--feature-say-hi (from /branches/iterative-:)
  18.  
  19. 2期需求:say hi功能
  20. ------------------------------------------------------------------------
  21. r11 | svnroot | -- :: + (Fri, Aug ) | line
  22. Changed paths:
  23. A /branches/iterative- (from /trunk:)
  24.  
  25. 创建二期迭代分支
  26. ------------------------------------------------------------------------
  27. r10 | svnroot | -- :: + (Fri, Aug ) | line
  28. Changed paths:
  29. D /branches/iterative-

实现特性功能:

  1. [root@ok app01]# echo "加入代码实现一些功能!!!">branches/iterative--feature-say-hi/hello.py
  2. [root@ok app01]# svn commit -m "say hi 功能"
  3. Sending branches/iterative--feature-say-hi/hello.py
  4. Transmitting file data .
  5. Committed revision .
  6. [root@ok app01]# svn update
  7. At revision .
  8. [root@ok app01]# svn log -v branches/iterative--feature-say-hi/hello.py
  9. ------------------------------------------------------------------------
  10. r13 | svnroot | -- :: + (Fri, Aug ) | line
  11. Changed paths:
  12. M /branches/iterative--feature-say-hi/hello.py
  13.  
  14. say hi 功能
  15. ------------------------------------------------------------------------
  16. r12 | svnroot | -- :: + (Fri, Aug ) | line
  17. Changed paths:
  18. A /branches/iterative--feature-say-hi (from /branches/iterative-:)
  19.  
  20. 2期需求:say hi功能
  21. ------------------------------------------------------------------------
  22. r11 | svnroot | -- :: + (Fri, Aug ) | line
  23. Changed paths:
  24. A /branches/iterative- (from /trunk:)
  25.  
  26. 创建二期迭代分支

合并回迭代分支

  1. [root@ok app01]# svn mkdir branches/{iterative--feature1,iterative--feature2}
  2. A branches/iterative--feature1
  3. A branches/iterative--feature2
  4. [root@ok app01]# svn ci -m "基于迭代分支的特性1和2分支"
  5. Adding branches/iterative--feature1
  6. Adding branches/iterative--feature2
  7.  
  8. Committed revision .
  1. [root@ok app01]# cd branches/iterative--feature1/
  2. [root@ok iterative--feature1]# svn merge svn://192.168.1.111/app01/branches/iterative-2
  3. [root@ok iterative--feature1]# svn commit -m "合并迭代分支的修改"
  4. Sending iterative--feature1
  5.  
  6. Committed revision .
  7. //自测,没问是后,合并回迭代分支
  8. [root@ok branches]# cd iterative-
  9. [root@ok iterative-]# svn merge --reintegrate svn://192.168.1.111/app01/branches/iterative-2-feature-say-hi
  10. --- Merging differences between repository URLs into '.':
  11. U hello.py
  12. [root@ok iterative-]# svn status
  13. M .
  14. M hello.py
  15. [root@ok iterative-]# svn diff
  16.  
  17. Property changes on: .
  18. ___________________________________________________________________
  19. Added: svn:mergeinfo
  20. Merged /branches/iterative--feature-say-hi:r12-
  21.  
  22. Index: hello.py
  23. ===================================================================
  24. --- hello.py (revision )
  25. +++ hello.py (working copy)
  26. @@ -, + @@
  27. +加入代码实现一些功能!!!
  28. [root@ok iterative-]# svn ci -m "合并回迭代分支"
  29. Sending iterative-
  30. Sending iterative-/hello.py
  31. Transmitting file data .
  32. Committed revision .

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

迭代分支合并到 trunk 中

  1. [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
  2.  
  3. Property changes on: .
    ___________________________________________________________________
    Added: svn:mergeinfo
       Merged /branches/iterative-2-feature-say-hi:r30-33
  4.  
  5. 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
  6.  
  7. 合并到turnk
    ------------------------------------------------------------------------
    r27 | svnroot | 2016-08-26 18:40:48 +0800 (Fri, 26 Aug 2016) | 1 line
  8.  
  9. init
    ------------------------------------------------------------------------

删除特性分支

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

打一个tag:

  1. [root@ok app01]# svn mkdir tags
  2. A tags
  3. [root@ok app01]# svn ci -m ""
  4. Adding tags
  5.  
  6. Committed revision .
  7. [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"
  8.  
  9. Committed revision .
  10. [root@ok app01]# tree
  11. .
  12. ├── branches
  13.    ├── iterative-
  14.       └── hello.py
  15.    ├── iterative--feature1
  16.    ├── iterative--feature2
  17.    └── iterative--feature-say-hi
  18.    └── hello.py
  19. ├── tags
  20.    └── 1.0
  21.    └── hello.py
  22. └── trunk
  23. └── hello.py
  24.  
  25. directories, files
  26. [root@ok app01]# cat tags/1.0/hello.py
  27. 进行了一些修改 实现了要求达到的功能!!

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

创建分支:

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

获得分支:

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

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

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

测试如下:

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

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

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

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

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

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

  1. [root@ok trunk]# svn log
  2. ------------------------------------------------------------------------
  3. r19 | svnroot | -- :: + (Fri, Aug ) | line
  4.  
  5. ------------------------------------------------------------------------
  6. r18 | svnroot | -- :: + (Fri, Aug ) | line
  7.  
  8. 12k
  9. ------------------------------------------------------------------------
  10. r7 | svnroot | -- :: + (Fri, Aug ) | line
  11.  
  12. init
  13. ------------------------------------------------------------------------
  14. [root@ok trunk]# svn -r : merge svn://192.168.1.111/app01/trunk

建立tags

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

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

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

svn分支管理进行迭代开发的更多相关文章

  1. SVN分支管理策略个人见解

    本篇目录 前言 SVN分支管理策略 VisualSVN Server TortoiseSVN客户端 Repository的创建 Check out trunk创建新项目MyProject trunk更 ...

  2. SVN 分支管理

    平时在工作中使用 SVN 只是限于 commit,update 这样的操作,至多再 reslove 解决一下冲突,没有用过分支管理.开发过程中一般都是一个功能开发完成之后整体进行提交,而最近在项目中有 ...

  3. 版本分支管理标准 - Trunk Based Development 主干开发模型

    之前分享过<版本分支管理标准 - Git Flow>,不过在实际使用过程中, 因为其有一定的复杂度,使用起来较为繁琐,所以一些人员较少的团队并不会使用这个方案. 在这基础上,一些新的分支管 ...

  4. git 分支管理方案

    现有一般的公司项目均使用git(大多数是gitLab)管理. 开发组 我们的项目都要建立在 开发组的名下 (git.xxcompany.com/xxgroup),除需要公司内部开源的项目,都必须设置为 ...

  5. Git工程开发实践(四)——Git分支管理策略

    A successful Git branching model https://nvie.com/posts/a-successful-git-branching-model/ Git工程开发实践( ...

  6. Git学习总结(12)——多人开发 Git 分支管理详解

    1.前言 在上一篇博客中我们主要讲解了Git 远程仓库,相信大家对远程的Git仓库有一定的了解,嘿嘿.在这一篇博客中我们来在大家讲解一下Git 分支管理,这可以说是Git的又一大特点.下面我们就来学习 ...

  7. Eclipse集成Git做团队开发:分支管理

    在日常开发工作中,我们通常使用版本控制软件管理团队的源代码,常用的SVN.Git.与SVN相比,Git有分支的概念,可以从主分支创建开发分支,在开发分支测试没有问题之后,再合并到主分支上去,从而避免了 ...

  8. git flow开发分支管理模型

    Git Flow 是什么 Git Flow是构建在Git之上的一个组织软件开发活动的模型,是在Git之上构建的一项软件开发最佳实践.Git Flow是一套使用Git进行源代码管理时的一套行为规范和简化 ...

  9. [svn] 分支开发

    参考博客: http://www.cnblogs.com/cxd4321/archive/2012/07/12/2588110.html (1)为什么要使用SVN分支开发和主干合并? 目的:在SVN下 ...

随机推荐

  1. HD 1011 Starship Troopers(树上的背包)

    Starship Troopers Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Other ...

  2. IE 兼容模式下不支持DIV CSS样式display:inline-block,解决

    样式改为: display: inline-block;*display: inline;zoom: 1; 就可以了

  3. hdu 2085 核反应堆

    看完题,想到用结构体存储高质点和低质点,然后打表存储<33的质点数量. #include<stdio.h> struct hilo { long long hi,lo; }; int ...

  4. 七层负载均衡——HAProxy

    HAProxy入门 HAProxy是一款提供高可用性.负载均衡以及基于TCP(第四层)和HTTP(第七层)应用的代理软件,HAProxy是完全免费的.借助HAProxy可以快速并且可靠的提供基于TCP ...

  5. 修改php执行用户,并使其拥有root权限

    useradd apachephp vi /etc/httpd/conf/httpd.conf 将组和用户修改成apachephp,重启apache,然后用lsof -i:80查看apache的执行用 ...

  6. 字符串模拟赛T1

    // source code from laekov for c0x17 #define PRID "bxjl" #include <cstdio> #include ...

  7. 深入理解Java中的继承

    对于面向对象的程序设计而言,每一个程序员都应该去了解Java中的封装,继承和多态,那么我今天来说的主要是以继承为核心的主题. 一.关于对继承的理解. 继承是面向对象的三大特性之一,是java中实现代码 ...

  8. NGUI之scroll view制作,以及踩的坑总结

    http://blog.csdn.net/monzart7an/article/details/23878505 链接: http://game.ceeger.com/forum/read.php?t ...

  9. 翻译:非常详细易懂的法线贴图(Normal Mapping)

    翻译:非常详细易懂的法线贴图(Normal Mapping) 本文翻译自: Shaders » Lesson 6: Normal Mapping 作者: Matt DesLauriers 译者: Fr ...

  10. php页面打开响应时间

    $start_time = array_sum(explode(' ',microtime())); //your code here   $end_time = array_sum(explode( ...