日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【转】SVN trunk(主线) branch(分支) tag(标记) 用法详解和详细操作步骤

發布時間:2023/12/10 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【转】SVN trunk(主线) branch(分支) tag(标记) 用法详解和详细操作步骤 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉自:https://monday.blog.csdn.net/article/details/51122637

一:使用場景:

假如你的項目(這里指的是手機客戶端項目)的某個版本(例如1.0版本)已經完成開發、測試并已經上線了,接下來接到新的需求,新需求的開發需要修改多個文件中的代碼,當需求已經開始開發一段時間的時候,突然接到用戶或測試人員的反饋,項目中有個重大bug需要緊急修復,并且要求bug修復后要立即上線;此時應該怎么修復bug呢?是在當前已經開發新需求的基礎上進行修復嗎?答案是否定的,原因是:如果是在已經開發新需求的基礎上進行修復bug,那么新需求還沒開發好,更沒有測試,怎么立刻(或最可能快的)上線?!再次如果新功能的開發和bug修復的代碼都涉及到同一段代碼沖突了怎么辦 。很顯然不能在當前開發的代碼基礎上進行bug修復工作完美的解決方案是:在當時完成的那個版本中進行bug fix,這樣帶來的好處是:

  • bug修復好之后可立即上線,不會因為新需求還沒有完成或測試而延遲上線時間
  • bug修復是在原來上線的那個版本進行修復的,引起新bug的風險小,如果是在新需求的基礎上修復bug, 那么新功能可能會帶來新的bug
  • 二:SVN倉庫目錄結構Repository:

    • trunk
    • tags
    • branches

    trunk(主干|主線) branchs(分支) tags(標記)

    • truck(主干|主線|主分支):是用來做主方向開發的,新功能的開發應放在主線中,當模塊開發完成后,需要修改,就用branch。
    • branch(分支):分支開發和主線開發是可以同時進行的,也就是并行開發,分支通常用于修復bug時使用
    • tag(標記):用于標記某個可用的版本,可以標記已經上線發布的版本,也可以標記正在測試的版本,通常是只讀的

    ?

    三:SVN具體操作步驟:(TortoiseSVN版本: 1.8.8)

    一:創建倉庫

    1. 創建目錄結構D:\TortoiseSVN\Repository\Repo-iOS

    2. 在該目錄結構上右鍵

    ---> TortoiseSVN

    ---> Create repository here(創建倉庫這里)?
    ---> Create folder structure(創建文件結構) ---> Start Repobrowser(開始倉庫瀏覽) ---> Ok
    ? ? ? ?

    二:將項目上傳到SVN上

    ? ? ? ?---> 桌面右鍵

    ? ? ? ?---> TortoiseSVN

    ? ? ? ?---> repo-browser--> URL: ?file:///D:/TortoiseSVN/Repository/Repo-iOS?---> Ok

    ? ? ? ?--> 選中trunk文件夾右鍵

    ? ? ? ?---> Add folder...?

    ? ? ? ?---> 選中要上傳到SVN的項目的最外層目錄,輸入日志

    ? ? ? ?---> Ok
    ? ? ? ?

    三:Check Out?

    1. 在電腦任意位置創建一個存放項目代碼的目錄,例如:D:\TortoiseSVN\Repository\Source
    2. 將代碼檢出到該位置
    ? ?

    四:開發周期

    ? ? ? ?1. 在目錄D:\TortoiseSVN\Repository\Source\trunk\MyAppProject上進行開發,注意是在trunk主線上

    ?

    因為項目剛建立,這是在開發新功能,所以要在主線上開發


    ? ? ? ?2. 開發一段時間后,經測試,上線到App Store,Android上傳到其它應用商城,摘取上線時的HomeViewController文件中一段代碼如下(注意:這里雖然是使用的Objective-C作為示例來演示SVN的,這并不影響你學習SVN,用什么語言來演示效果原理都是一樣的)

    ?

  • - (void) viewDidLoad {

  • [super viewDidLoad];

  • // -----------------------------------------

  • int y = 0;

  • int result = 10 / y;

  • NSLog(@"iOS APP 第一階段開發完成了! 結果是:%ld", result);

  • // End

  • }

  • ?

    ? ? ? ?3. 在D:\TortoiseSVN\Repository\Source\tags 目錄下新建一個目錄:1.0,并將該目錄提交到SVN上,然后右鍵 ? ? ? ? D:\TortoiseSVN\Repository\Source\trunk\MyAppProject該目錄---> TortoiseSVN---->Branch/tag...?-----> To Path :/tags/1.0/MyAppProject 并選中 Head revision in repository ---> Ok此時Source/tags/1.0 目錄中沒有任何內容,需要更新一下該目錄做update操作。更新之后看到一個完整的項目源碼保存到該目錄中(該目錄下的源碼可看做是trunk目錄下版本為1.0的一個副本),查看一下/tags/1.0/HomeViewController中的viewDidLoad和trunk/MyAppProject/HomeViewController中的viewDidLoad代碼完全一樣。

    ? ? ? ?4. 開發下一階段的新需求,開發中ing


    ? ? ? ?5. 用戶或測試人員反饋應用有重大bug,需要立即修復該bug并盡快上線, 此時程序員需要為?tags/1.0?下的MyAppProject 打一個分支branch,
    ? ? ? ? ? 操作過程如下:選中Source/tags/1.0/MyAppProject?右鍵 TortoiseSVN---->Branch/tag...?-----> To Path :/branches/MyAppProject ?---> Ok
    ?此時看D:\TortoiseSVN\Repository\Source\branches目錄下仍然沒有任何內容,也需要update一下,更新之后發現該目錄下
    ?也出現一個完整的項目代碼(該代碼可看做是tags/1.0/MyAppProject的一個副本),注意打分支和打標記都是使用Branch/tag...菜單,不同的是To Path 的目錄不一樣,圖解看打分支的圖,只是to path 值不一樣,此時branches/MyAppProject/HomeViewController中的viewDidLoad和tags/1.0/MyAppProject/HomeViewController中的viewDidLoad代碼完全一致。


    ? ? ? ?6. 切換工作空間,使用Xcode|Eclipse集成工具打開/branches/MyAppProject下的項目,然后在此基礎上調試并修復bug,注意打開的必須是分支中的項目


    ? ? ? ?7. bug 修復好后,先提交修改的文件,并進行客戶端App上線,上線完成后再將branches/MyAppProject/打個tag到1.0.1目錄下(tags/1.0.1)(操作步驟同步驟3),tag操作完成后,可以看到tags/1.0.1/HomeViewController.viewDidLoad 和??branches/?MyAppProject/HomeViewController.viewDidLoad是完全一致的,將branches/MyAppProject打一個新的tag是以便于下次在此基礎上再次修復bug,至此bug修復已經完成;修復bug后的代碼如下:

    ?

  • - (void) viewDidLoad {

  • [super viewDidLoad];

  • // -----------------------------------------

  • int y = 10;

  • int result = 10 / y;

  • NSLog(@"iOS APP 第一階段開發完成了! 結果是:%ld", result);

  • // End

  • ?
  • NSLog(@"1.0 版本閃退bug 已修復, 程序出現除0異常");

  • }

  • ?

    ? ? ? ?8. 接下來將branch和trunk進行合并,操作步驟如下:

    ? ? ? ? ?----> 右鍵 branches/MyAppProject?------>TortoiseSVN

    ? ? ? ? ?----> Merge...?

    ? ? ? ? ?---> Merge a range of revisions?

    ? ? ? ? ?----> Next --->URL to merge from : file:///D:/TortoiseSVN/Repository/Repo-iOS/trunk/MyAppProject?

    ? ? ? ? ?----> Next

    ? ? ? ? ?----> Merge
    ? ? ? ?

    9. 將trunk和branches進行合并 步驟如下,

    ??右鍵/turnk/MyAppProject ----> Merge... ----->?Merge a range of revisions?? -----> Next?

    ----->??URL to merge from : file:///D:/TortoiseSVN/Repository/Repo-iOS/branches/MyAppProject

    ??步驟同上,只是? URL to merge from? ?的路徑不一樣。合并完成后,查看一下/trunk/MyAppProject/HomeViewController/viewDidLoad方法如下:

    ?

  • - (void) viewDidLoad {

  • [super viewDidLoad];

  • // -----------------------------------------

  • int y = <strong>10</strong>; // <strong>可以看到branches分支中的代碼已經合并到主線上了</strong>

  • int result = 10 / y;

  • NSLog(@"iOS APP 第一階段開發完成了! 結果是:%ld", result);

  • // End

  • ?
  • NSLog(@"<strong>1.0 版本閃退bug 已修復, 程序出現除0異常</strong>");

  • ?
  • NSLog(@"其他同事在主線trunk中進行新需求開發...");

  • NSLog(@"其他同事在主線trunk中進行新需求開發...");

  • }

  • ?

    10. 此時合并徹底結束,branches目錄下的源碼如果不想要也可以刪掉,接著修改bug的這位程序員需要切換工作空間到主線上來,使用Xcode重新打開trunk/MyAppProject項目,接著開發尚未完成的新功能。SVN目錄如下:

    ? ? ? ? ?

    說明:

    1. 分支開發和主干開發是兩個完全獨立的過程,兩者可以同時進行開發
    2. 因分支和主干開發是并行的,所以兩者可以任意的多次提交當前工程所修改的文件

    ?

    ?

    ?

    ?

    ?

    本人也是剛接觸trunk,上面描述如有問題,歡迎大家評論指正,如果這篇文章能夠幫助到你,請您點個贊?!

    ?

    分享一個朋友的人工智能教程(請以“右鍵”->"在新標簽頁中打開連接”的方式訪問)。比較通俗易懂,風趣幽默,感興趣的朋友可以去看看。?

    總結

    以上是生活随笔為你收集整理的【转】SVN trunk(主线) branch(分支) tag(标记) 用法详解和详细操作步骤的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。