'SVN trunk(主線) branch(分支) tag(標記) 鉅細的圖解操作步驟'

"

本號主要用於分享企業中常用的技術,更加側重於實用,歡迎關注,便於瀏覽其它更多實用的歷史文章。

工作中大家都會update代碼和commit代碼,這是普通程序員都會的,假如你是項目經理或者項目組中的核心開發人員那麼你可能需要維護SVN,比如從最開始的創建倉庫、管理分支、管理標籤等這些所有操作都會遇到,那麼整個SVN的管理你都非常清楚嗎???這是一篇非常簡潔卻又非常詳細的教程,如果您不會,相信只需要看懂這一篇文章就能一次性掌握SVN常用操作(這是我博客中訪問量和點贊數非常高的文章)

使用場景

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

1:bug修復好之後可立即上線,不會因為新需求還沒有完成或測試而延遲上線時間

2: 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

"

本號主要用於分享企業中常用的技術,更加側重於實用,歡迎關注,便於瀏覽其它更多實用的歷史文章。

工作中大家都會update代碼和commit代碼,這是普通程序員都會的,假如你是項目經理或者項目組中的核心開發人員那麼你可能需要維護SVN,比如從最開始的創建倉庫、管理分支、管理標籤等這些所有操作都會遇到,那麼整個SVN的管理你都非常清楚嗎???這是一篇非常簡潔卻又非常詳細的教程,如果您不會,相信只需要看懂這一篇文章就能一次性掌握SVN常用操作(這是我博客中訪問量和點贊數非常高的文章)

使用場景

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

1:bug修復好之後可立即上線,不會因為新需求還沒有完成或測試而延遲上線時間

2: 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 trunk(主線) branch(分支) tag(標記) 鉅細的圖解操作步驟

"

本號主要用於分享企業中常用的技術,更加側重於實用,歡迎關注,便於瀏覽其它更多實用的歷史文章。

工作中大家都會update代碼和commit代碼,這是普通程序員都會的,假如你是項目經理或者項目組中的核心開發人員那麼你可能需要維護SVN,比如從最開始的創建倉庫、管理分支、管理標籤等這些所有操作都會遇到,那麼整個SVN的管理你都非常清楚嗎???這是一篇非常簡潔卻又非常詳細的教程,如果您不會,相信只需要看懂這一篇文章就能一次性掌握SVN常用操作(這是我博客中訪問量和點贊數非常高的文章)

使用場景

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

1:bug修復好之後可立即上線,不會因為新需求還沒有完成或測試而延遲上線時間

2: 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 trunk(主線) branch(分支) tag(標記) 鉅細的圖解操作步驟

SVN trunk(主線) branch(分支) tag(標記) 鉅細的圖解操作步驟

"

本號主要用於分享企業中常用的技術,更加側重於實用,歡迎關注,便於瀏覽其它更多實用的歷史文章。

工作中大家都會update代碼和commit代碼,這是普通程序員都會的,假如你是項目經理或者項目組中的核心開發人員那麼你可能需要維護SVN,比如從最開始的創建倉庫、管理分支、管理標籤等這些所有操作都會遇到,那麼整個SVN的管理你都非常清楚嗎???這是一篇非常簡潔卻又非常詳細的教程,如果您不會,相信只需要看懂這一篇文章就能一次性掌握SVN常用操作(這是我博客中訪問量和點贊數非常高的文章)

使用場景

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

1:bug修復好之後可立即上線,不會因為新需求還沒有完成或測試而延遲上線時間

2: 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 trunk(主線) branch(分支) tag(標記) 鉅細的圖解操作步驟

SVN trunk(主線) branch(分支) tag(標記) 鉅細的圖解操作步驟

SVN trunk(主線) branch(分支) tag(標記) 鉅細的圖解操作步驟

二:將項目上傳到SVN上

---> 桌面右鍵

---> TortoiseSVN

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

--> 選中trunk文件夾右鍵

---> Add folder...

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

---> Ok

"

本號主要用於分享企業中常用的技術,更加側重於實用,歡迎關注,便於瀏覽其它更多實用的歷史文章。

工作中大家都會update代碼和commit代碼,這是普通程序員都會的,假如你是項目經理或者項目組中的核心開發人員那麼你可能需要維護SVN,比如從最開始的創建倉庫、管理分支、管理標籤等這些所有操作都會遇到,那麼整個SVN的管理你都非常清楚嗎???這是一篇非常簡潔卻又非常詳細的教程,如果您不會,相信只需要看懂這一篇文章就能一次性掌握SVN常用操作(這是我博客中訪問量和點贊數非常高的文章)

使用場景

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

1:bug修復好之後可立即上線,不會因為新需求還沒有完成或測試而延遲上線時間

2: 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 trunk(主線) branch(分支) tag(標記) 鉅細的圖解操作步驟

SVN trunk(主線) branch(分支) tag(標記) 鉅細的圖解操作步驟

SVN trunk(主線) branch(分支) tag(標記) 鉅細的圖解操作步驟

二:將項目上傳到SVN上

---> 桌面右鍵

---> TortoiseSVN

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

--> 選中trunk文件夾右鍵

---> Add folder...

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

---> Ok

SVN trunk(主線) branch(分支) tag(標記) 鉅細的圖解操作步驟

"

本號主要用於分享企業中常用的技術,更加側重於實用,歡迎關注,便於瀏覽其它更多實用的歷史文章。

工作中大家都會update代碼和commit代碼,這是普通程序員都會的,假如你是項目經理或者項目組中的核心開發人員那麼你可能需要維護SVN,比如從最開始的創建倉庫、管理分支、管理標籤等這些所有操作都會遇到,那麼整個SVN的管理你都非常清楚嗎???這是一篇非常簡潔卻又非常詳細的教程,如果您不會,相信只需要看懂這一篇文章就能一次性掌握SVN常用操作(這是我博客中訪問量和點贊數非常高的文章)

使用場景

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

1:bug修復好之後可立即上線,不會因為新需求還沒有完成或測試而延遲上線時間

2: 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 trunk(主線) branch(分支) tag(標記) 鉅細的圖解操作步驟

SVN trunk(主線) branch(分支) tag(標記) 鉅細的圖解操作步驟

SVN trunk(主線) branch(分支) tag(標記) 鉅細的圖解操作步驟

二:將項目上傳到SVN上

---> 桌面右鍵

---> TortoiseSVN

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

--> 選中trunk文件夾右鍵

---> Add folder...

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

---> Ok

SVN trunk(主線) branch(分支) tag(標記) 鉅細的圖解操作步驟

SVN trunk(主線) branch(分支) tag(標記) 鉅細的圖解操作步驟

三:Check Out

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

2. 將代碼檢出到該位置

"

本號主要用於分享企業中常用的技術,更加側重於實用,歡迎關注,便於瀏覽其它更多實用的歷史文章。

工作中大家都會update代碼和commit代碼,這是普通程序員都會的,假如你是項目經理或者項目組中的核心開發人員那麼你可能需要維護SVN,比如從最開始的創建倉庫、管理分支、管理標籤等這些所有操作都會遇到,那麼整個SVN的管理你都非常清楚嗎???這是一篇非常簡潔卻又非常詳細的教程,如果您不會,相信只需要看懂這一篇文章就能一次性掌握SVN常用操作(這是我博客中訪問量和點贊數非常高的文章)

使用場景

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

1:bug修復好之後可立即上線,不會因為新需求還沒有完成或測試而延遲上線時間

2: 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 trunk(主線) branch(分支) tag(標記) 鉅細的圖解操作步驟

SVN trunk(主線) branch(分支) tag(標記) 鉅細的圖解操作步驟

SVN trunk(主線) branch(分支) tag(標記) 鉅細的圖解操作步驟

二:將項目上傳到SVN上

---> 桌面右鍵

---> TortoiseSVN

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

--> 選中trunk文件夾右鍵

---> Add folder...

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

---> Ok

SVN trunk(主線) branch(分支) tag(標記) 鉅細的圖解操作步驟

SVN trunk(主線) branch(分支) tag(標記) 鉅細的圖解操作步驟

三:Check Out

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

2. 將代碼檢出到該位置

SVN trunk(主線) branch(分支) tag(標記) 鉅細的圖解操作步驟

四:開發週期

1. 在目錄D:\\TortoiseSVN\\Repository\\Source\\trunk\\MyAppProject上進行開發,注意是在trunk主線上,因為項目剛建立,這是在開發新功能,所以要在主線上開發

2. 開發一段時間後,經測試,上線到App Store,Android上傳到其它應用商城,摘取上線時的HomeViewController文件中一段代碼如下(這裡使用的Objective-C代碼來演示的,原理都一樣,用什麼代碼演示都是一個意思)

- (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代碼完全一樣。

"

本號主要用於分享企業中常用的技術,更加側重於實用,歡迎關注,便於瀏覽其它更多實用的歷史文章。

工作中大家都會update代碼和commit代碼,這是普通程序員都會的,假如你是項目經理或者項目組中的核心開發人員那麼你可能需要維護SVN,比如從最開始的創建倉庫、管理分支、管理標籤等這些所有操作都會遇到,那麼整個SVN的管理你都非常清楚嗎???這是一篇非常簡潔卻又非常詳細的教程,如果您不會,相信只需要看懂這一篇文章就能一次性掌握SVN常用操作(這是我博客中訪問量和點贊數非常高的文章)

使用場景

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

1:bug修復好之後可立即上線,不會因為新需求還沒有完成或測試而延遲上線時間

2: 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 trunk(主線) branch(分支) tag(標記) 鉅細的圖解操作步驟

SVN trunk(主線) branch(分支) tag(標記) 鉅細的圖解操作步驟

SVN trunk(主線) branch(分支) tag(標記) 鉅細的圖解操作步驟

二:將項目上傳到SVN上

---> 桌面右鍵

---> TortoiseSVN

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

--> 選中trunk文件夾右鍵

---> Add folder...

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

---> Ok

SVN trunk(主線) branch(分支) tag(標記) 鉅細的圖解操作步驟

SVN trunk(主線) branch(分支) tag(標記) 鉅細的圖解操作步驟

三:Check Out

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

2. 將代碼檢出到該位置

SVN trunk(主線) branch(分支) tag(標記) 鉅細的圖解操作步驟

四:開發週期

1. 在目錄D:\\TortoiseSVN\\Repository\\Source\\trunk\\MyAppProject上進行開發,注意是在trunk主線上,因為項目剛建立,這是在開發新功能,所以要在主線上開發

2. 開發一段時間後,經測試,上線到App Store,Android上傳到其它應用商城,摘取上線時的HomeViewController文件中一段代碼如下(這裡使用的Objective-C代碼來演示的,原理都一樣,用什麼代碼演示都是一個意思)

- (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代碼完全一樣。

SVN trunk(主線) branch(分支) tag(標記) 鉅細的圖解操作步驟

"

本號主要用於分享企業中常用的技術,更加側重於實用,歡迎關注,便於瀏覽其它更多實用的歷史文章。

工作中大家都會update代碼和commit代碼,這是普通程序員都會的,假如你是項目經理或者項目組中的核心開發人員那麼你可能需要維護SVN,比如從最開始的創建倉庫、管理分支、管理標籤等這些所有操作都會遇到,那麼整個SVN的管理你都非常清楚嗎???這是一篇非常簡潔卻又非常詳細的教程,如果您不會,相信只需要看懂這一篇文章就能一次性掌握SVN常用操作(這是我博客中訪問量和點贊數非常高的文章)

使用場景

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

1:bug修復好之後可立即上線,不會因為新需求還沒有完成或測試而延遲上線時間

2: 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 trunk(主線) branch(分支) tag(標記) 鉅細的圖解操作步驟

SVN trunk(主線) branch(分支) tag(標記) 鉅細的圖解操作步驟

SVN trunk(主線) branch(分支) tag(標記) 鉅細的圖解操作步驟

二:將項目上傳到SVN上

---> 桌面右鍵

---> TortoiseSVN

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

--> 選中trunk文件夾右鍵

---> Add folder...

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

---> Ok

SVN trunk(主線) branch(分支) tag(標記) 鉅細的圖解操作步驟

SVN trunk(主線) branch(分支) tag(標記) 鉅細的圖解操作步驟

三:Check Out

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

2. 將代碼檢出到該位置

SVN trunk(主線) branch(分支) tag(標記) 鉅細的圖解操作步驟

四:開發週期

1. 在目錄D:\\TortoiseSVN\\Repository\\Source\\trunk\\MyAppProject上進行開發,注意是在trunk主線上,因為項目剛建立,這是在開發新功能,所以要在主線上開發

2. 開發一段時間後,經測試,上線到App Store,Android上傳到其它應用商城,摘取上線時的HomeViewController文件中一段代碼如下(這裡使用的Objective-C代碼來演示的,原理都一樣,用什麼代碼演示都是一個意思)

- (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代碼完全一樣。

SVN trunk(主線) branch(分支) tag(標記) 鉅細的圖解操作步驟

SVN trunk(主線) branch(分支) tag(標記) 鉅細的圖解操作步驟

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目錄如下:

"

本號主要用於分享企業中常用的技術,更加側重於實用,歡迎關注,便於瀏覽其它更多實用的歷史文章。

工作中大家都會update代碼和commit代碼,這是普通程序員都會的,假如你是項目經理或者項目組中的核心開發人員那麼你可能需要維護SVN,比如從最開始的創建倉庫、管理分支、管理標籤等這些所有操作都會遇到,那麼整個SVN的管理你都非常清楚嗎???這是一篇非常簡潔卻又非常詳細的教程,如果您不會,相信只需要看懂這一篇文章就能一次性掌握SVN常用操作(這是我博客中訪問量和點贊數非常高的文章)

使用場景

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

1:bug修復好之後可立即上線,不會因為新需求還沒有完成或測試而延遲上線時間

2: 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 trunk(主線) branch(分支) tag(標記) 鉅細的圖解操作步驟

SVN trunk(主線) branch(分支) tag(標記) 鉅細的圖解操作步驟

SVN trunk(主線) branch(分支) tag(標記) 鉅細的圖解操作步驟

二:將項目上傳到SVN上

---> 桌面右鍵

---> TortoiseSVN

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

--> 選中trunk文件夾右鍵

---> Add folder...

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

---> Ok

SVN trunk(主線) branch(分支) tag(標記) 鉅細的圖解操作步驟

SVN trunk(主線) branch(分支) tag(標記) 鉅細的圖解操作步驟

三:Check Out

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

2. 將代碼檢出到該位置

SVN trunk(主線) branch(分支) tag(標記) 鉅細的圖解操作步驟

四:開發週期

1. 在目錄D:\\TortoiseSVN\\Repository\\Source\\trunk\\MyAppProject上進行開發,注意是在trunk主線上,因為項目剛建立,這是在開發新功能,所以要在主線上開發

2. 開發一段時間後,經測試,上線到App Store,Android上傳到其它應用商城,摘取上線時的HomeViewController文件中一段代碼如下(這裡使用的Objective-C代碼來演示的,原理都一樣,用什麼代碼演示都是一個意思)

- (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代碼完全一樣。

SVN trunk(主線) branch(分支) tag(標記) 鉅細的圖解操作步驟

SVN trunk(主線) branch(分支) tag(標記) 鉅細的圖解操作步驟

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目錄如下:

SVN trunk(主線) branch(分支) tag(標記) 鉅細的圖解操作步驟

說明

1. 分支開發和主幹開發是兩個完全獨立的過程,兩者可以同時進行開發

2. 因分支和主幹開發是並行的,所以兩者可以任意的多次提交當前工程所修改的文件

本號致力於讓大家能夠學到實用的知識,如果您認為寫的不好請提出建議,寫的好請給個贊。

"