Svn
概述:
svn是版本控制工具,簡單來說它的功能就是通過差異算法來記錄你每次提交的文件差異來存儲的,版本控制工具的好處是你可以代碼出問題時回退到某個時間點的代碼,或對比最新和本機代碼看有哪些變化等,對排除程序bug,代碼審查,保存穩定版本程序是作用很大的。
1. Svn主要有幾個操作需要會用,客戶端
Windows: TortoiseSVN
MacOSX: SvnX
命令行: svn(通用)
創建資源庫(Create respository)
1.資源庫是存放源代碼的地方,svn有自己的一套壓縮存儲機制放提交的文件.所以要使用svn,必須有一個資源庫,並提供給外部使用。通常使用的地址svn://這種協議,本機使用就用file:///
創建資源庫步驟:
1. 在某個磁盤創建一個文件夾,如E:\repos
2. 鼠標選中這個目錄,右鍵TortioiseSVN->Create repository here,創建成功會彈出提示.
圖1:
3. 到目前爲止已經創建一個資源庫,可以通過選中E:\repos之後右鍵TortoiseSVN->Repo-browser來測試資源庫是否創建成功; 在出現的界面裏在右邊的窗口右鍵選擇create folder, 起了名字之後彈出以下的窗口是要你輸入日誌,svn提交代碼或相關操作都是可以回退的,寫日誌就是爲了看日誌知道那個版本是做什麼的.創建好的目錄會出現右邊。TortoiseSVN的界面操作可以說就是windows的資源管理器的操作方式,左邊目錄,右邊子目錄和文件.
4. 圖2:
圖3:
瀏覽項目(Repo-browser)
瀏覽項目文件
右鍵 TortoiseSVN -》Repo-browser-》彈出來窗口輸入項目地址,如本地地址:
圖4:
檢出(checkout)
1. checkout代碼意思就是訪問授權的svn地址把源代碼,包括它當前的版本信息從服務器複製下來。
2. 比如你想checkout某個項目A到本地.
-- 選擇你想checkout到本地的目錄,比如E:\A
-- 在資源管理器E盤空白處,右鍵選 SVN Checkout,彈出的對話框,
URL of repository: 填A項目的地址。本機項目可以填剛創建的目錄file:///E:/test/123123
Checkout directory: 填E:\A
其他是設置具體到某個版本號的,每次提交svn都會分配一個全局版本號,可以根據SVN的LOG看到對應的版本號,這裏用不着暫時不管了.
-- OK
圖5:
-- checkout出來的目錄會有一個勾的圖標.
圖6:
備註: 因爲checkout出來svn會保留一份文件的備份,所以項目的大小會比較大。如果顯式通過查看文件選項裏的顯示隱藏文件,會發現A目錄下有一個.svn隱藏目錄,這就是.svn保留版本信息的地方,不熟悉的不能刪除.
導出(export)
svn的導出和checkout操作一樣的,不同就是export不需要檢出版本信息,對應比較大的不常改變的庫最好用export,不然checkout會超級慢,比如boost庫,目錄層級太多(svn在每個目錄下都有文件).
步驟:
右鍵 TortoiseSVN-> Export,之後操作和checkout一樣.
更新(update)
更新意思是別人修改了某個文件,你需要從資源庫同步過來的。這裏涉及到一個如果別人和你修改了一個同一個文件怎麼處理的問題(merge),暫時不管.
選中文件或目錄:
右鍵 SVN Update.
提交(commit)
1. 當有文件提交時,就需要commit文件,如果是新文件,需要先add再commit, 如果是修改的文件提交可以直接commit.
2. 你也可以commit某個目錄,因爲svn默認有些後綴的文件不提交,所以要檢查下提交後出現的日誌窗口。
步驟:
選中文件-》右鍵TortoiseSVN->add
圖7:
3. 選中文件右鍵,SVN Commit,也是要填版本日誌信息,svn每次提交都會需要填日誌信息.
設置忽略屬性(svn:ignore)
項目有些生成的輸出文件是不能提交到代碼裏,不然會造成資源庫增大幾倍,所以設立需要設置忽略到某些文件或文件夾.比如輸出目錄Debug,Release
-- 選中文件夾 右鍵-》TortoiseSVN->Properties.
-- New... 彈出來的選擇下拉條Property name: svn:igore
-- Property value裏填一行填一個過濾文本
Debug
Release
-- 之後選中A文件夾commit設置.
注意: 如果之前不小心提交了Debug和Release的話,需要先在版本庫裏Delete掉這兩個目錄再commit svn:ignore.
已經提交的設置ignore是過濾不了的.
圖8:
轉自:http://blog.csdn.net/infoworld/article/details/41149001