eclipse svn 分支合并到主干
最近公司產(chǎn)品上線,整個(gè)系統(tǒng)架構(gòu)包含有七八個(gè)子系統(tǒng),并且子系統(tǒng)都是集群部署。所以每次升級(jí)維護(hù)都要確保盡可能不出問(wèn)題。因?yàn)檎麄€(gè)系統(tǒng)剛上線不久,意味著新系統(tǒng)不定期有BUG需修復(fù),但新功能模塊也在持續(xù)的開發(fā)中(可能持續(xù)的時(shí)間還不短),所以就引發(fā)一個(gè)問(wèn)題:持續(xù)開發(fā)的新功能代碼與生產(chǎn)上的代碼 如何進(jìn)行隔離開來(lái)進(jìn)行維護(hù),而且二者還需要不定期的合并代碼。所以就研究了下SVN分支。
首先需厘清SVN的分支以下幾個(gè)概念:
trunk: 主干(可以理解為開發(fā)環(huán)境的代碼,平常做開發(fā)的工作目錄)
branches:從主干拷貝了一份代碼重新在svn服務(wù)器上的建了個(gè)分支目錄(通常叫branch,一般與生產(chǎn)上的代碼保持同步)
tag:主干版本標(biāo)記(標(biāo)識(shí)每次大的升級(jí)版本號(hào))。
?
我們項(xiàng)目目前的版本管理策略如下(可以根據(jù)自已的項(xiàng)目實(shí)際需要建立不同的版本管理策略):
1、系統(tǒng)在沒(méi)有上線之前,只有一個(gè)主干(trunk),所有開發(fā)人員在主干上進(jìn)行協(xié)同開發(fā)。
2、系統(tǒng)上線之后,在主干的基礎(chǔ)上創(chuàng)建一個(gè)分支,該分支上主要用于修復(fù)生產(chǎn)環(huán)境的BUG,或者緊急新功能上線。主干仍然進(jìn)行新功能模塊的開發(fā)。
3、每次生產(chǎn)環(huán)境的升級(jí),都從分支上進(jìn)行打包部署。升級(jí)完之后需將分支上改動(dòng)的代碼及時(shí)合并到主干上(開發(fā)人員常常忘記,切記)。
4、新功能在主干上開發(fā)好了,需要進(jìn)行一次大的升級(jí),可以先將主干打上一個(gè)TAG做為大版本號(hào),并且同時(shí)在此基礎(chǔ)上創(chuàng)建一個(gè)對(duì)應(yīng)的分支,然后切換到分支上進(jìn)行打包部署,這個(gè)版本的生產(chǎn)代碼維護(hù)也在分支上。
原則:分支用于生產(chǎn)代碼維護(hù),主干用于平時(shí)開發(fā),TAG用于主干大版本的標(biāo)記。
由于我們項(xiàng)目由好幾個(gè)子系統(tǒng)構(gòu)成一個(gè)大的集群系統(tǒng),系統(tǒng)之間的版本統(tǒng)一就顯得很重要。所以每次上線,即使相關(guān)子系統(tǒng)沒(méi)有代碼改動(dòng),也需要重新建立一個(gè)分支版本以適應(yīng)其它子系統(tǒng)的版本改動(dòng)。
?
說(shuō)了這么多之后,來(lái)說(shuō)下具體分支合并到主干上的操作,因?yàn)檫@部分最容易出錯(cuò):
合并根據(jù)目標(biāo)不同分為2種:
1、分支合并到主干:主要用在修復(fù)完生產(chǎn)BUG,并上線之后。需把改動(dòng)的代碼合并到主干上。
2、主干合并到分支:公用的邏輯改動(dòng),需反映到所有并行的分支上。
注意:合并是要在目標(biāo)目錄上進(jìn)行操作的,如:分支合并到主干(主干為目標(biāo)),需切換到主干上操作合并功能,主干合并到分支(分支為目標(biāo)),需切換到分支上進(jìn)行操作。
分支合并到主干的具體步驟:
1、主干目錄右鍵選擇合并
?出現(xiàn)以上6個(gè)合并選項(xiàng),
第一個(gè)選項(xiàng):合并指定的版本,可以是從分支合并到主干,也可以是主干合并的版本,主要作用把分支的部份修改合并到主干上。
第二個(gè)選項(xiàng):復(fù)興分支,這里會(huì)把分支上所有的需改都合并到主干上。如果只想合并修改的一部分,并適合這項(xiàng)。
第三個(gè)選項(xiàng):將主干上的修改合并到分支。
第四個(gè)選項(xiàng):2個(gè)不同的分支合并,但其實(shí)也可以是分支和主干的合并,只要from選擇為主干就行。
通常選擇第一項(xiàng)或第四項(xiàng)進(jìn)行操作,這里需要注意的是:
這里其實(shí)就是比對(duì)TO版本和FROM版本的差異,并把差異合并到TO的當(dāng)前版本(head版本)中去。
?
注:如果要把分支所有的修改合并到主干上,FROM需要選擇主干創(chuàng)建見分支時(shí)的版本號(hào),TO選擇分支最新版本(head版本)就行了。
? ? ? 如果FROM也選擇主干head版本,TO也選擇head版本,就會(huì)把所有分支與主干不同的差異覆蓋到當(dāng)前主干上來(lái)。造成主干的文件被分支覆蓋。
?
合并當(dāng)中出現(xiàn):
no uncommited modified :表示當(dāng)前版本還有沒(méi)有提交的文件,如果不需要提交就選擇revert.
working copy at a single version:表示當(dāng)前目錄沒(méi)有從SVN服務(wù)器更新最新的版本。update下后在操作就行了。
很久沒(méi)有寫這么長(zhǎng)的文章了,希望對(duì)大家有幫助。
?
?
?
?
? ? ?
?
?
?
?
?
?
?
轉(zhuǎn)載于:https://www.cnblogs.com/sanxiong/p/3802360.html
總結(jié)
以上是生活随笔為你收集整理的eclipse svn 分支合并到主干的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Python 之 pip安装 及 使用详
- 下一篇: 基于消息队列的日志组件