svn命令行創建和刪除分支和tags


 

 

目錄

創建分支

  • 創建一個分支
    1
    svn copy svn: //xx .com /repo/trunk svn: //xx .com /repo/branches/TRY-something -m 'make branches TRY-something'
  • 把工作目錄轉到分支
    1
    svn switch svn: //xx .com /repo/branches/TRY-something

當然,也可以再轉到主干: svn switch svn://xx.com/repo/trunk

合並一個分支到主干

一旦分支上的開發結束,分支上的代碼需要合並到主干。SVN中執行該操作需要在trunk的工作目錄下進行。

  • 查找到分支版本
    • 方法一:最后一個r11340就是創建分支時的reversion
      1
      2
      cd branch
      svn log --stop-on-copy
    • 方法二:
      1
      2
      3
      4
      5
      cd trunk
      svn -q --stop-on-copy 分支URL #這條命令會查詢出自創建分支以后分支上的所有修改,最下面的那個版本號就是我們要找的版本號.
       
      #示例:
      svn log -q --stop-on-copy svn: //192 .168.1.177 /tags/beta_2009_12_24
  • 分支合並到主干
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    svn merge -r 分支版本號:HEAD 分支的URL   #HEAD為當前主干上的最新版本
     
    #示例:
    cd trunk
    svn merge -r 12:HEAD svn: //192 .168.1.177 /tags/beta_2009_12_24
     
    cd trunk
    svn merge --reintegrate http: //svn_server/xxx_repository/branches/br_feature001
    # 分支合並到主干中完成后應當刪該分支,因為在SVN中該分支已經不能進行刷新也不能合並到主干。
     
    # 合並版本並將合並后的結果應用到現有的分支上
    svn -r 148:149 merge http: //svn_server/xxx_repository/trunk
  • 解決沖突:
    1
    2
    3
    4
    5
    6
    7
    svn st | grep ^C      # 查找合並時的沖突文件,手工解決沖突
    svn resolved filename # 告知svn沖突已解決
    svn commit -m ""      # 提示合並后的版本
     
    svn: Aborting commit: '/path/resources/noc' remains in conflict
    $ svn revert resources /noc
    Reverted 'resources/noc'

兩個分支合並

兩個分支合並可以拆分為一下兩步:

  • 第一步:

197從舊主干引出,186打完tag,表示是新主干

合並最新代碼的意思是:將新主干與舊主干比對,並添加到197中。這樣197既有自己的新增的代碼,也同時有最新線上的代碼。

1
2
3
cd 197_Branch
svn merge https: //xxx .com /tags/project/project_Old_BL https: //xxx .com /tags/project/project_New_BL
svn ci -m 'merge 186 trunk'
  • 第二步:

但是后來,其他人又向186提了代碼,所以還需要將186分支(即打了tag后的186,打了tag前的186已是主干)合並至197中。

合並辦法:找出186分支,比對與新主干之間的差別,並添加到197中。這樣197就有最新的全部代碼了。

1
2
3
cd 197_Branch
svn merge https: //xxx .com /tags/project/project_New_BL https: /xxx .com /project/branches/project/186_Branch
svn ci -m 'merge 186 branch'

合並主干上的最新代碼到分支上

1
2
3
4
5
6
7
cd br_feature001
svn merge http: //svn_server/xxx_repository/trunk
 
# 如果需要預覽該刷新操作,可以使用svn mergeinfo命令,如:
svn mergeinfo http: //svn_server/xxx_repository/trunk --show-revs eligible
 
# 或使用`svn merge --dry-run`選項以獲取更為詳盡的信息。

發布

產品開發已經基本完成,並且通過很嚴格的測試,這時候我們就想發布給客戶使用,發布我們的1.0版本。

給當前主干打個標簽,並且這個標簽不再改動了,但是實際上標簽和分支是一個意思,你可以在標簽上繼續做改動,但這不推薦。

1
2
3
4
5
6
7
# 建立tags
svn copy svn: //xx .com /repo/trunk svn: //xx .com /repo/tags/RB-1 .0
svn copy http: //svn_server/xxx_repository/trunk http: //svn_server/xxx_repository/tags/release-1 .0 -m "1.0 released"
 
# 刪除分支或tags
svn rm http: //svn_server/xxx_repository/branches/br_feature001
svn rm http: //svn_server/xxx_repository/tags/release-1 .0
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM