--集成分支:里面各个子目录的命名为是:某年某月某周,里面存放这周的全部增量内容(包括修改和新增)的代码
--功能分支:里面各个子目录的命名为:项目名_某月某日,里面存放这周这个开发的任何一个小项目的增量内容.当然还有其他用处,后面再说.
我觉得命名不好,功能分支的名字应该和发布时间无关,而是一个功能的描述,考虑如果这个周一个特性没有改完,这个功能分支是保留名称呢,还是改变成一个新的名称?
--1.某项目完成后,开发把增量部分内容代码提交到功能分支和集成分支内.在往集成分支放的时候,会发现本项目与其他项目是否有共同修改同一个文件的情况. 如果有,约定好用其他方式交换代码即可.因为我们的各个项目间一般都不会有共同修改同一个文件的需求,所以我们的这个方案里面几乎都是并行开发的的.
是不是就是说代码会在多个地方同时被修改?如果确实会出现这个情况,建议用外部定义功能,我想这样可以避免出现错误。
1.利用svn特色功能极少,通过学习,我个人很崇拜merge功能,和merge记录功能(就是给merge过的目录加属性的那个).认为没有merge的svn应用等于没真正用svn.但是我想了半天,要不违反领导的上面的流程,merge基本不可用.或者说不方便.
我觉得你说的情况完全还是可以使用merge阿,为什么不行啊?
--2.可回退.如果在周五上线日,决定某一项目不上了.那么所需的就是集成分支下,除了这个项目的全部内容.那么如何取出呢.是试过merge,但是不可以.那么首先删除集成分支下所有东西,然后用程序(我已写好一个java程序)把功能分支下的一个个项目添加到集成分支去(不添加那个不上的项目).虽然看起来麻烦一点,实际操作还是很快的,而且这种事几个月也不见得发生一次.
呵呵,merge是可以做的,反向merge就可以去掉以前提交过的某些东西,只要你各个模块是分别提交的,例如修订10需要去掉,则命令就是 svn merge -c -10
--3.利用上我写的java程序来实现:开发不提交到trunk还能把trunk下工作增量部分提取出来.
原理是,开发在本地的trunk副本工作,但是没有提交权限.他的全部工作内容,可以认为就是副本下显示add和modify和replace的文件.我利用程序,把这些文件,带完整结构的,复制到集成分支某项目目录下.检查无误,提交.确定这个项目是本周上线的话,可以执行我第二个程序,把功能分支下某项目内容的文件全部,带结构的复制到集成分支下.检查无误.提交.如果出现冲突.解决冲突.
没提交之前感觉以后跟踪不方便,因为版本库中没有一个版本和上线版本一致。
感觉你写的程序和我最近写的几个工具有点类似:
http://rocksun.cn/upload-file-changed/
你的整个方案感觉非常不传统,确实浪费了svn的能力,可能还是因为你的各个项目实际上耦合度不大,所以还不会出现太多的问题,否则的话你要处理的特殊情况太多了。