SVN使用詳解


SVN
svn = 版本控制 + 備份服務器。
(一)SVN
每上傳一個服務器檔案內容,它會自動的賦予每次的變更一個版本,我們用來存放上傳檔案的地方叫做Repository,第一次有一個新增檔案的動作,將想要備份的檔案放到Repository上面,日后我們有任何修改是都可以上傳到Repository上面,上傳已經存在且修改過的檔案叫做commit,每次上傳都賦予它一個新的版本,同時,也會把它上傳的時間記錄下來,日后需要從Repository下載曾經提交的檔案,可以提取最新版本和之前的任何一個版本,還可以根據日期來提取需要的版本。
(二)SVN工作原理
SVN是一種集中的分享信息的系統,它的核心是版本庫,儲存所有的數據,版本庫按照文件樹的形式儲存數據(包括文件和目錄),任意數量的客戶端可以連接到版本庫,讀寫這些文件,修改這些文件。
文件樹結構如下
| 2014.12.3
| |aa.txt
| |xx.txt
| 2014.12.4
| |aa.txt
| |xx.txt
| 2014.12.5
| *
| *
(三)SVN功能簡介
1.Repo-Browser:版本庫瀏覽:
2.ShowLog:顯示日志:顯示之前提交過的項目。
3.CheckOut:點擊彈出提示框,在URL of repository輸入框中輸入服務器倉庫地址,
在Checkout Directory輸入框中輸入本地工作拷貝的路徑,點擊確定,即可提取出服務器上的配置庫
4.Check for Modifications:檢查更新
5.Revision Graph:版本分支圖
6.Resolved:解決沖突:如果當前工作拷貝和版本庫上的有沖突,不能自動合並到一起,那么當你提交修改的時候,tortoisesvn就會提示你存在沖突,這時候你就可以通過這個菜單項來解決沖突。沖突的解決有兩種,一種是保留某一份拷貝,例如使用配置庫覆蓋當前工作拷貝,或者反過來。還有一種是手動解決沖突,對於文本文件,可以使用tortoiseSVN自帶的工具,它會列出存在沖突的地方,然后你就可以和提交者討論怎么解決這個沖突。同時它也對Word有很好的支持。
7.Update to Revision:更新至版本:從版本庫中獲取某一個歷史版本。這個功能主要是方便查看歷史版本用,而不是回滾版本。注意:獲取下來之后,對這個文件不建議進行任何操作。如果你做了修改,那么當你提交的時候SVN會提示你,當前版本已失效(即不是最新版本),無法提交,需要先update一下。這樣你所做的修改也就白費了。
8.Revert:回滾:如果你對工作拷貝做了一些修改,但是你又不想要了,那么你可以使用這個選項把所做的修改撤銷
9.Cleanup:清除狀態:如果當前工作拷貝有任何問題的話,可以使用這個選項進行修正。例如,有些文件原來是版本控制的,但是你沒有通過tortoiseSVN就直接刪除了,但是tortoiseSVN還是保留着原來的信息(每個文件夾下都有一個.svn的隱藏文件夾,存放着當前文件夾下所有文件夾的版本信息)所以這就會產生一些沖突。可以使用cleanup來清理一下。
10.GetLock/ReleaseLock:加鎖/解鎖:果你不想別人修改某個文件的話,那么你就可以把這個文件進行加鎖,這樣可以保證只有你對這個文件有修改權。除非你釋放了鎖,否則別人不可能提交任何修改到配置庫中。
11.Branch/tag:分支/標簽: Branch是分支的意思。例如當在設計一個東西的時候,不同的人有不同的實現,但是沒有經過實踐檢驗,誰也不想直接覆蓋掉其他人的設計,所以可以引出不同的分支。將來如果需要,可以將這些分支進行合並。
tag是打標簽的意思。通常當項目開發到一定程度,已經可以穩定運行的時候,可以對其打上一個標簽,作為穩定版。將來可以方便的找到某個特定的版本(當然我們也可以使用版本號來查找,但是數字畢竟不方便)SVN對於分支和標簽都是采用類似Linux下硬鏈接的方式(同一個文件可以存在兩個地方,刪除一個不會影響另一個,所做修改會影響另一個),來管理文件的,而不是簡單的復制一份文件的拷貝,所以不會有浪費存儲空間的問題存在。
12.Switch:切換: 文件創建分支后,你可以選擇在主干工作,還是在分支工作,這時候你可以通過Switch來切換。
13.Merge:合並:主干和分支的版本進行合並,在源和目的各輸入文件的路徑,版本號,點擊確定。系統即對文件進行合並,如果存在沖突,請參考沖突解決。
14.Export:導出:把整個工作拷貝導出到本地目錄下,導出的文件將不帶svn文件標志,文件及文件夾沒有綠色的”√”符號標志。
15.Relocate:重新定位: 當服務器上的文件庫目錄已經改變,我們可以把工作拷貝重新定位,在To URL輸入框中輸入新的地址
16.Add to Ignore List:添加到忽略列表: 大多數項目會有一些文件(夾)不需要版本控制,如編譯產生的*.obj, *.lst,等。每次送交,TortoiseSVN提示那些文件不需要控制,挺煩的。這時候可以把這些文件加入忽略列表。
17.Relocate:版本庫轉移:當我們版本庫發生轉移的時候就需要用到這個功能了。例如我原先的版本庫是建在U盤上的,現在轉移到(復制整個配置庫文件夾)開發服務器上,使用https代替文件系統的訪問。因此就需要將原來的工作拷貝的目標版本庫重新定位到開發服務器上。
18.Create patch:創建補丁:創建補丁。如果管理員不想讓任何人都隨便提交修改,而是都要經過審核才能做出修改,那么其他人就可以通過創建補丁的方式,把修改信息(補丁文件)發送給管理員,管理員審核通過之后就可以使用apply patch提交這次修改了。
19.Apply patch:提交補丁。
20.Properties:屬性允許用戶在文件或目錄上發明任意名稱的版本化屬性和非版本化屬性,唯一的限制就是“svn:”是Subversion本身的保留前綴,用戶可以設置這些屬性來改變Subversion的行為方式,用戶不能發明新的“svn:”屬性
21.Setting:SVN設置
22.about:關於SVN版本的信息
23.help:關於SVN使用的幫助。
24.Add:添加未受版本控制的文件到版本控制中。
25.Delete:刪除服務器上的文件。
26.Rename:重新命名文件
28.Import:將未版本化的文件導入版本庫和Add差不多。
29.ShowLog->Compare with working copy:工作副本與指定文件版本區別。
30.ShowLog->Show changes as unified diff:將所選中的版本作為單一差異文件查看。
31.ShowLog->Compare with previous revision:比較選中的版本和以前版本,對於文件夾,這個選項首先會顯示已修改的文件對話框讓你選擇要比較的文件。
32.ShowLog->Browse repository:打開版本瀏覽器,基於選中的版本,在版本庫中檢查選中的文件或目錄
33.ShowLog->Create branch/tag from revison:從選中的版本建立一個分支/標記。
34.ShowLog->Update item to revision:將你的工作副本更新到選中的版本。
35.ShowLog->Revert changes from this revision:還原選中版本所做的修改。還原內容只在你的工作副本中,提交前不會影響版本庫。
36.ShowLog->Revert to this revision:還原到選中版本,還原內容只在你的工作副本中,提交前不會影響版本庫。
37.ShowLog->merge revison to :選中合並版本到指定路徑。
38.ShowLog->Checkout:提取指定版本內容確認URL和版本到指定路徑保存。
39.ShowLog->Export導出指定版本內容確認URL和版本到指定路徑保存。
40.ShowLog->Edit author/log message:編輯之前提交時的日志信息或者是作者
41.ShowLog->Show revision properties:查看和編輯任何版本屬性,不僅僅是日志信息和作者。
42.ShowLog->Copy to clipboard :指定版本復制到剪切板
43.ShowLog->Search log messages:在指定版本中查找內容。
(四)沖突產生的原因:
兩個開放人員同時提取某文件,並且同時修改了同一地方。后提交的一方在拷貝副本中產生沖突。(提交版本前最好先更新版本)
(五)當產生沖突時,SVN會生成三個臨時的文件
1.filename.mine儲存本地修改過的文件
2.filename.rOLDREV儲存上次update的基礎版本文件
3.filename.rNEWREV儲存客戶端剛從服務器上接收來的版本
(六)解決沖突的3種方法
1.手動合並代碼,解決沖突
2.選擇一個沖突出現時產生的臨時文件夾來覆蓋當前文件。
3.運行SVN resolved filename命令來放棄當前文件的本地的所有修改。
解決完沖突問題后你要告訴SVN你已經解決了沖突,SVN會去刪除這3個臨時文件。


免責聲明!

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



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