SVN簡介:
為什么要使用SVN?
程序員在編寫程序的過程中,每個程序員都會生成很多不同的版本,這就需要程序員有效的管理代碼,在需要的時候可以迅速,准確取出相應的版本。
Subversion是什么?
它是一個自由/開源的版本控制系統,一組文件存放在中心版本庫,記錄每一次文件和目錄的修改,Subversion允許把數據恢復到早期版本,或是檢查數據修改的歷史,Subversion可以通過網絡訪問它的版本庫,從而使用戶在不同的電腦上進行操作。
下載地址: 服務端 https://www.visualsvn.com/server/download/
客戶端 https://www.visualsvn.com/visualsvn/download/tortoisesvn/
一:SVN服務器搭建和使用。
1.首先來下載SVN服務器安裝包,進入網址后看到如下截圖:
2.VisualSVN server 服務端安裝
Location是指VisualSVN Server的安裝目錄,Repositorys是指定你的版本庫目錄.Server Port指定一個端口,Use secure connection勾山表示使用安全連接
注意:安裝路徑不能出現中文,空格,中文字符
安裝完成,運行服務端
3.VisualSVN server 服務端使用
-- 創建倉庫
--至此服務器搭建完成,但是還沒有用戶,需要創建用戶,並且需要分配權限。
(1)在VisualSVN Server Manager窗口的左側右鍵單擊用戶組,選擇Create User或者新建->User,如圖:
點擊User后,進入如下圖:
填寫Username和password后,點擊ok按鈕后,進入如下圖:
點擊OK新建用戶成功(如果有多個用戶,操作一樣)。
(2) 然后我們建立用戶組,在VisualSVN Server Manager窗口的左側右鍵單擊用戶組,選擇Create Group或者新建->Group,如圖:
輸入組名,add用戶user
點擊OK
接下來我們需要給用戶組設置權限,在MyRepository上單擊右鍵,選擇屬性,如圖:
在彈出的對話框中,選擇Security選項卡, 點擊add =》 Groups =》Developers,選中Developers,然后添加進來,權限設置為Read/Write,如下圖:
點擊【應用】【確定】按鈕即可。
(3) 拷貝訪問路徑
--用戶訪問
二:客戶端SVN安裝與使用。
1.首先我們需要下載 ”svn小烏龜”。
2.下載后雙擊開始傻瓜式安裝
--如果在桌面空白處右擊出現以下情況說明安裝成功
使這些操作生效需要重啟電腦
三:客戶端SVN漢化。
到官網下載對應版本的漢化包:漢化包下載地址
版本號查看:在電腦桌面右鍵點擊 TortoiseSVN ---》關於 ,查看SVN版本號
步驟一:找到如下圖中內容,即中文語言安裝包。這里我們選擇的是對應的64位操作系統 。
步驟二:運行點擊安裝剛剛下載好的中文語言包。一直點擊下一步即可。
步驟三:鼠標右鍵,打開svn中setting設置項,可以發現有個語言選項。這里我們就可以選擇中文,點擊應用。
步驟四:當我們再打開svn中的設置項就可以發現,svn界面呈現中文描述了。
四:客戶端SVN使用詳解。
1.Checkout檢出代碼
使用場景:一般第一次當你從SVN服務器上下載內容時需要這么操作
操作步驟:
1、新建或進入目錄下(比如E盤)
2、右鍵 → SVN Checkout,之后填寫如下信息:
a、在URL of repository 填寫倉庫路徑即可
b、在Revision處,“HEAD revision”是指最新版,也可以指定Revision為任意一個版本
2.Update更新代碼
使用場景:此操作一般是在SVN服務器上的文件有了更新變動之后,你想要獲取最新的時候進行
操作步驟:
1、選中要被更新的文件,右鍵選擇“SVN Update”項
2、點擊“SVN Update”后會彈出窗口進行更新,稍等片刻之后就好了
3.Commit提交代碼
使用場景:此操作一般是在對從SVN服務器上下載下來的文件,你修改之后想再次提交到SVN服務器(如果是新增的不能用這個操作,得使用“Add”)
在提交代碼前我們應該update
下代碼,這是個好習慣,可以避免覆蓋別人的代碼和代碼沖突。
操作步驟:
1、務必在提交更新之前線執行SVN update
2、在修改文件上擊右鍵,出現菜單,選擇“SVN Commit...”
3、然后填寫關於本次更新的日志(log message),這是必填項,否則commit會失敗
4.Add新增
使用場景:如果你是新增了文件要提交到SVN服務器就進行此操作
操作步驟:
1、新增的文件必須位於SVN Checkout出來的那個目錄里
2、鼠標選中新文件右鍵選擇“Tortoise SVN”的“Add”項
3、再次選中新增的那個文件,右鍵選擇“SVN Commit...”
5.Delete刪除
使用場景:刪除
操作步驟:
1、選中要被刪除的文件,右鍵選擇“Tortoise SVN”的“Delete”項
2、再次選中要刪除的文件,右鍵選擇“SVN Commit...”項進行提交
6.Rename重命名
使用場景:重命名
操作步驟:
1、選中需要重命名的文件或文件夾,然后右鍵“Tortoise SVN”的“Rename”
2、再次選中要修改名字的文件,右鍵選擇“SVN Commit...”項進行提交
7. add ignore忽略文件
使用場景:有時候某些目錄或者文件我們不想提交到 SVN 服務器,這時我們可以忽略這些文件。
操作步驟:下面演示忽略 temp 目錄和 *.map 文件
忽略成功
8.remove ignore撤銷忽略
使用場景:撤銷忽略
文件的操作方式步驟是一樣的,目錄的有點不一樣,請看下面演示
五:SVN倉庫目錄和開發建議
建議每個倉庫的根目錄都創建trunk、branches、tags目錄,這是經典的 SVN 目錄結構,方便開發和維護
1.創建分支
以上面的目錄結構為例子,我們從當前主干創建一個分支出去,表示1.0版本,操作步驟如下:
- 右鍵 trunk 目錄 => 右鍵TortoiseSVN => Branch/tag
- 填寫分支路徑
/branches/online1.0
,填寫注釋,選擇最用最新的版本開分支,如下:
2.合並代碼
假設我們在分支上修復了一個線上的BUG,需要把代碼那個代碼合並到主干來,操作步驟:
- 在分支的跟目錄點擊
show log
- 選中需要合並過去主干的提交記錄(可以多選)
- 點擊
merge revision to ...
- 選擇主干的跟目錄,點擊確定,就合並過去了。
- 在主干上提交這次合並的內容
SVN 的這個指定提交記錄合並功能非常的方便,我們日常中經常會遇到線上出問題需要修復,修復后把代碼合並到主干的情況。
注意:你在分支上的什么目錄點擊合並,那就需要定位到主干的對應目錄合並,不然會出錯。
3.切換分支
右鍵TortoiseSVN => Switch => 選擇需要切換的分支,點擊確定就可以了
4.修改倉庫地址
右鍵點擊倉庫根目錄 => TortoiseSVN => relocate,修改倉庫地址,點擊確定后就修改好了
5.版本回退
使用場景:退回到某個版本
選擇更新至哪一版:可以根據版本號更新 也可以根據更新日志更新
選擇根據日志更新,出現如下頁面,單擊需要回退那一版,確定即可
5.版本沖突
使用場景:實際項目中,兩個人同時修改某一個文件,后一個人就會對前一個人文件有覆蓋/刪除等沖突操作
模擬演示:
- 早上9:00上班,旺財和小強都更新數據到本地電腦
- 旺財開始修改login.java文件.並在9:30時提交了該文件
- 小強也對login.java文件作出修改,並在10:00提交該文件
提交失敗,版本沖突:
解決版本沖突:
1.合理分配項目開發時間
2.合理分配項目模塊
3.使用svn提供方法解決沖突:
1)更新服務端數據到本地,出現版本沖突后發現本地文件夾中文件多出幾個
- login.java 旺財和小強整合后的文件
- login.java.mine 我們自己(小強)修改后的文件
- login.java.r5 這個文件在旺財和小強更新前的狀態 (起始狀態文件)
- login.java.r6 之前提交的(旺財修改后提交的)文件
2)刪除除login.java 文件之外的所有文件
3)自行修改整合的login.java文件
4)重新提交,(提交成功)
六:SVN的狀態圖標的含義
1、“常規”:綠色圈帶白色對勾,主要是表示自己電腦上的文件或者文件夾與SVN服務器上對應的文件一致,在自己電腦沒有進行任何修改。
2、“修改”:紅色圈帶白色感嘆號,當你開始編輯一個文件,這個文件的狀態就會變成修改狀態,圖標也會變成紅色圓圈帶白色感嘆號。通過這種狀態的變化,你就可以知道自己修改過哪些文件,需要提交哪些文件。
3、“沖突”:黃色三角形帶黑色感嘆號,是指出現了沖突,一般在同時編輯一個文件時容易出現這種沖突的現象。
4、“只讀”:灰色圈帶白色對勾,這是設置只讀屬性后才會出現的標識,直到你獲得文件鎖才能取消只讀。只讀文件用這個重載圖標來表示你必須在編輯之前先得到一個鎖。
5、“已刪除”:紅色叉,表示相應文件或文件夾被計划刪除,或者表示文件缺失。
6、“增加”:藍色加號,表示文件或文件夾已經被計划加入到版本控制之下。通常是新建的文件或文件夾會有這個標識。
7、“忽略”:灰色圈帶白色橫線,表示已經不受版本控制了。
8、“無版本控制”:藍色圈帶白色問號,表示暫時還沒有版本的控制,但沒有被忽略。
9、“鎖定”:一把黃色的鎖,表示文件被鎖定,必須先釋放鎖才能讓別人的修改提交。
更新編輯中.....