一、前言
通过实际开发经历发现,git与svn下代码开发的步骤是不同的,现总结如下。
开发工具为idea。
版本工具为tortoiseGit与tortoiseSVN。
二、git下开发方法
1.首先,项目应该有一个test分支和prod分支;test分支用来打测试包,prod分支用来打生产包。
2.当有一个新需求时,用idea打开项目,切换到prod分支,然后选择New Branch,以prod为基础新建一个分支,例如起名为new_demand,然后在这个分支下开发新需求,commit与push。
3.当这个需求要提测时,用idea打开项目,切换到test分支,然后点击new_demand分支中的Merge into Current,将代码合并到test分支后,在test分支中commit与push,并打包上测试服务器。
4.当这个需求要上生产时,用idea打开项目,切换到prod分支,然后点击new_demand分支中的Merge into Current,将代码合并到prod分支后,在prod分支中commit与push,并打包上生产服务器。
5.确认生产上线成功后,删除多余的new_demand分支。
*6.如果生产和本地的properties文件不一样,有一种方法是,准备两套properties文件,然后启动jar/war项目时,把properties文件的路径当参数传递进去即可。
java -jar bootdemo-0.0.1-SNAPSHOT.jar --spring.config.location=./test.properties
//此时test.properties和jar是同级目录
java -jar bootdemo-0.0.1-SNAPSHOT.jar --spring.config.location= /opt/config/test.properties
//此时test.properties在绝对目录/opt/config;这种路径可以统一管理配置文件
三、svn下开发方法
1.svn应该有3个路径,dev,test,prod;其中dev用来提交开发代码,test用来提交测试代码与打测试包,prod用来提交生产代码与打生产包。
2.当有一个新需求时,首先用dev路径编写代码与提交,注意提交需要带上版本号。(便于merge代码到测试路径)
3.当这个需求需要提测时,使用TortoiseSVN工具,从dev路径merge到test路径,按照版本号merge每次变更;然后用test路径的项目打测试包,提测。(提交代码时也要带上版本号,便于merge变更到生产路径)
4.当这个需求需要上生产时,使用TortoiseSVN工具,从test路径merge到prod路径,按照版本号merge每次变更;然后用prod路径的项目打生产包,上生产。(提交代码时也要带上版本号,便于发现问题时回退)
四、总结
1.git开发新需求时,应该以生产代码为基础新建分支,在新分支上开发代码后,分别合并给test与prod,便于多人开发时打测试包与生产包。
2.svn开发新需求时,直接在dev路径开发,按照dev->test->prod的顺序、根据版本号合并代码即可,便于多人开发时打测试包与生产包。
============================================================
五、个人笔记,svn与git的对比
svn:
1.多人开发时,开发代码要保存,所以要dev路径
2.多人开发时,有些开发代码要提测,有些不提测,所以dev->test(根据提交版本号合并代码)
3.多人开发时,有些测试中的代码完成了测试,要上生产,还有些不上,所以test->prod(根据提交版本号合并代码)
git:
1.多人开发时,开发代码要保存,所以要根据prod建new_demand分支;
每个人开发的需求不同,则建new_demand1,new_demand2,各自使用各自的。
2.提测时,各自决定是否把new_demand1、new_demand2合并到test。(如果都使用一个new_demand,会导致开发中的某些不可以提测的代码也提交到测试,所以要按需求分开、各自使用各自的分支;与svn相比,svn是都使用一个dev路径,不过合并时可以根据提交版本号的不同区分开不同的需求,所以都使用一个dev没问题;但是git不行,不好区分)
3.上生产时,各自决定是否把new_demand1、new_demand2合并到prod。(同理,如果把test整个合并到prod,会导致某些已提测但是还不能上生产的需求合并到生产上,所以不行;只能各自合并各自的;而svn可以从test合并到prod,是因为可以根据提交版本号不同,选择只合并需要上生产的代码;但是git不行,不好区分)