自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

經(jīng)典剖析SVN分支與合并

開發(fā) 項目管理
在學(xué)習(xí)SVN的過程中,你可能會遇到SVN分支與合并問題,本文簡單介紹一下分支和SVNmerge有很多不同的用法最常見的一些用法,歡迎大家一起來學(xué)習(xí)。

本節(jié)主要向大家描述一下SVN分支與合并,分支和SVNmerge有很多不同的用法,這個小節(jié)描述了最常見的用法,希望通過本節(jié)的學(xué)習(xí),大家對SVN分支與合并有深刻的理解。下面是SVN分支與合并

合并分支到另一分支

為了完成這個例子,我們將時間往前推進,假定已經(jīng)過了幾天,在主干和你的分支上都有許多更改,假定你完成了分支上的工作,已經(jīng)完成了特性或bug修正,你想合并所有分支的修改到主干上,讓別人也可以使用。
SVN分支與合并中在這種場景下如何使用svnmerge?記住這個命令比較兩個目錄樹,然后應(yīng)用比較結(jié)果到工作拷貝,所以要接受這種變化,你需要主干的工作拷貝,我們假設(shè)你有一個最初的主干工作拷貝(完全更新),或者是你最近取出了/calc/trunk的一個干凈的工作拷貝。

但是要哪兩個樹進行比較呢?乍一看,回答很明確,只要比較***的主干與分支。但是你要意識到—這個想法是錯誤的,傷害了許多新用戶!因為svnmerge的操作很像svndiff,比較***的主干和分支樹不僅僅會描述你在分支上所作的修改,這樣的比較會展示太多的不同,不僅包括分支上的增加,也包括了主干上的刪除操作,而這些刪除根本就沒有在分支上發(fā)生過。

為了表示你的分支上的修改,你只需要比較分支的初始狀態(tài)與最終狀態(tài),在你的分支上使用svnlog命令,你可以看到你的分支在341版本建立,你的分支最終的狀態(tài)用HEAD版本表示,這意味著你希望能夠比較版本341和HEAD的分支目錄,然后應(yīng)用這些分支的修改到主干目錄的工作拷貝。

查找分支產(chǎn)生的版本(分支的“基準(zhǔn)”)的***方法是在svnlog中使用--stop-on-copy選項,log子命令通常會顯示所有關(guān)于分支的變化,包括創(chuàng)建分支的過程,就好像你在主干上一樣,--stop-on-copy會在svnlog檢測到目標(biāo)拷貝或者改名時中止日志輸出。

所以,在我們的例子里,$svnlog-v--stop-on-copy\
http://svn.example.com/repos/calc/branches/my-calc-branch

------------------------------------------------------------------------
r341|user|2002-11-0315:27:56-0600(Thu,07Nov2002)|2lines
Changedpaths:
A/calc/branches/my-calc-branch(from/calc/trunk:340)

$
正如所料,***打印出的版本正是由my-calc-branch拷貝生成的版本。

如下是最終的合并過程,然后:

  1. $cdcalc/trunk  
  2. $svnupdate  
  3. Atrevision405.  
  4.  
  5. $svnmerge-r341:405http://svn.example.com/repos/calc/branches/my-calc-branch  
  6. Uinteger.c  
  7. Ubutton.c  
  8. UMakefile  
  9.  
  10. $svnstatus  
  11. Minteger.c  
  12. Mbutton.c  
  13. MMakefile  
  14.  
  15. #...examinethediffs,compile,test,etc...  
  16.  
  17. $svncommit-m"Mergedmy-calc-branchchangesr341:405intothetrunk."  
  18. Sendinginteger.c  
  19. Sendingbutton.c  
  20. SendingMakefile  
  21. Transmittingfiledata...  
  22. Committedrevision406.  
  23.  

 

再次說明,日志信息中詳細(xì)描述了合并到主干的的修改范圍,記住一定要這么做,這是你以后需要的重要信息。

舉個例子,你希望在分支上繼續(xù)工作一周,來進一步加強你的修正,這時版本庫的HEAD版本是480,你準(zhǔn)備好了另一次合并,但是我們在“合并的***實踐”一節(jié)提到過,你不想合并已經(jīng)合并的內(nèi)容,你只想合并新的東西,技巧就是指出什么是“新”的。

***步是在主干上運行svnlog察看***一次與SVN分支與合并的日志信息:

$cdcalc/trunk
$svnlog

------------------------------------------------------------------------
r406|user|2004-02-0811:17:26-0600(Sun,08Feb2004)|1line

Mergedmy-calc-branchchangesr341:405intothetrunk.
------------------------------------------------------------------------

阿哈!因為分支上341到405之間的所有修改已經(jīng)在版本406合并了,現(xiàn)在你只需要在SVN分支與合并中合并分支在此之后的修改—通過比較406和HEAD。

 

  1. $cdcalc/trunk  
  2. $svnupdate  
  3. Atrevision480.  
  4.  
  5. #WenoticethatHEADiscurrently480,soweuseittodothemerge:  
  6.  
  7. $svnmerge-r406:480http://svn.example.com/repos/calc/branches/my-calc-branch  
  8. Uinteger.c  
  9. Ubutton.c  
  10. UMakefile  
  11.  
  12. $svncommit-m"Mergedmy-calc-branchchangesr406:480intothetrunk."  
  13. Sendinginteger.c  
  14. Sendingbutton.c  
  15. SendingMakefile  
  16. Transmittingfiledata...  
  17. Committedrevision481.  

現(xiàn)在主干有了分支上第二波修改的完全結(jié)果,此刻,你可以刪除你的分支(我們會在以后討論),或是繼續(xù)在你分支上工作,重復(fù)這個步驟。請期待下節(jié)SVN分支與合并介紹。

【編輯推薦】

  1. SVN分支與合并之專家課堂
  2. 深入講解SVN分支與合并的關(guān)系
  3. SVN分支與合并實例剖析
  4. SVN分支與合并學(xué)習(xí)大本營
  5. 兩個簡單操作介紹TortoiseSVN項目

 

 

 

 

 

責(zé)任編輯:佚名 來源: it168.com
相關(guān)推薦

2010-05-20 15:32:38

SVN分支與合并

2010-05-28 17:00:24

SVN分支與合并

2010-05-28 17:15:17

SVN分支與合并

2010-05-20 15:12:02

SVN分支與合并

2010-05-20 15:50:05

SVN分支

2010-06-01 11:13:40

Svn分支合并

2010-06-01 12:36:04

SVN分支與合并

2010-06-01 19:47:29

SVN分支與合并

2010-06-01 11:22:30

SVN合并跟蹤

2010-05-28 15:47:29

SVN分支

2010-05-28 15:57:20

SVN分支

2010-05-27 10:23:01

SVN文檔

2010-05-27 12:58:07

SVN升級

2010-05-20 16:01:36

SVN分支維護

2010-06-01 10:37:15

SVN合并

2010-02-22 16:09:33

WCF宿主

2010-06-01 12:49:04

SVN分支模式

2011-03-30 10:50:55

GitLinux 版本控制

2010-05-26 19:36:34

SVN目錄結(jié)構(gòu)

2010-05-28 17:30:58

SVN分支
點贊
收藏

51CTO技術(shù)棧公眾號