Mac自帶了SVN功能,不但可以作爲SVN的服務器使用,還可以作爲SVN的客戶端使用
一.先來搭建SVN的服務器功能
注意低點,就是我們用命令行操作系統文件讀寫的時候,要隨時注意我們是否有權限去讀寫操作文件,文件夾等情況。這也就是在MAC電腦上,我們去操作自己的用戶目錄的時候,讀寫權限都有,但是涉及到一些系統級別的目錄的時候,我們去創建文件夾等就需要輸入用戶管理員的密碼纔可以進行某些操作。
話說回來,我們去創建SVN服務端
1. 在自己的用戶目錄下創建一個文件夾,前提是Svn文件夾已經創建,而且我們擁有這個文件的讀寫權限
svnadmin create /Users/shange/Svn/MyProjects
在這個SVN文件夾下,我們來創建一個子目錄MyProjects
創建好之後,我們可以看見默認的一些文件已經存在了
2.配置SVN的用戶權限
我們需要某些權限的話,就去修改這三個文件,來配置服務器
先來看看svnserve.conf文件吧,翻譯文件名---》svn服務的配置文件,其實這個文件的內容很少,主要就是下面幾句
就這些,文件中都有相應的解釋,詳情自己去看吧!
那我們要做的就是把
# anon-access = read 匿名訪問的時候的權限
# auth-access = write 用戶名登錄後的訪問權限
# password-db = passwd 密碼配置數據打開
# authz-db = authz 權限配置打開
這幾項前邊的註釋去掉 #和後邊的一個空格,去掉
3.然後打開passwd配置文件,看了內容就明白了,就是去設置可以使用這個svn的用戶名稱和密碼
4.打開authz配置文件,然後我們在這個文件中去設置分組或者個別用戶的權限
很簡單,xxx = yy,zz 就是將yy,zz兩個用戶表示爲一個組xxx,然後@xxx = rw表示,這個xxx分組的權限是可讀可寫
[/]表示svn服務器中的所有資源庫
5.啓動SVN服務器
svnserve -d -r /Users/shange/Svn/MyProjects
輸入這句命令,後邊的文件路徑就是自己之前設置的SVN的服務器文件夾路徑.回車沒有任何提示表示成功.
6.關閉SVN,
命令終端直接輸入下面命令,第一個數字爲進程號。
ps aux | grep svn
然後
sudo kill -9 進程號
服務器端就到這裏。
二.SVN的客戶端操作
1.從本地導入代碼到服務器(第一次初始化導入)
svn import /Users/shange/Desktop/pro1 svn://localhost/ProjectsManager --username=tianshanshan --password=123456 -m "測試項目"
2.從服務器端下載代碼到客戶端
svn checkout svn://localhost/ProjectsManager/ios_demo --username=tianshanshan --password=123456 /Users/shange/Desktop/ios_demo2
3.提交更改過的代碼到服務器
cmd下,先進入我們的客戶端svn代碼路徑中
cd /Users/shangge/Desktop/ios_demo2
4.更新服務器端的代碼到客戶端
cmd下,先進入我們的客戶端svn代碼路徑中
cd /Users/shangge/Desktop/ios_demo2
然後再輸入指令:svn update
svn常見標識含義:
常用命令:
svn add xxx.a手動添加文件,先讓svn能夠控制xxx.a文件,這個過程叫受控,然後svn ci -m '' 提交受控文件到svn服務器
svn status 用來查看當前項目路徑下受控的文件。
svn ci -m '' 完成受控文件的提交
svn list svn://localhost/ProjectsManager 查看當前svn服務器管理的項目列表
svn list svn://localhost/ProjectsManager/svnLearn 查看svn服務器下的svnLearn項目下的文件列表
svn list -v svn://localhost/ProjectsManager/svnLearn #查看詳細的目錄的信息(修訂人,版本號,文件大小等)。
svn mkdir -m 'ios會員客戶端' svn://192.168.139.2/projectE/ios-member 用來在svn://192.168.139.2/projectE目錄下創建ios-member的svn目錄
svn cat -r r11 pro1.rtf 查看 r11這個版本中的pro1.rtf的內容
svn diff #什麼都不加,會堅持本地代碼和緩存在本地.svn目錄下的信息的不同;信息太多,沒啥用處。
svn diff -r 3 #比較你的本地代碼和版本號爲3的所有文件的不同。
svn diff -r 3 text.c #比較你的本地代碼和版本號爲3的text.c文件的不同。
svn diff -r 5:6 #比較版本5和版本6之間所有文件的不同。
svn diff -r 5:6 text.c #比較版本5和版本6之間的text.c文件的變化。
svn diff -c 6 test.c #比較版本5和版本6之間的text.c文件的變化。
svn log #什麼都不加會顯示所有版本commit的日誌信息:版本、作者、日期、comment。
svn log -r 4:20 #只看版本4到版本20的日誌信息,順序顯示。
svn log -r 20:5 #顯示版本20到4之間的日誌信息,逆序顯示。
svn log test.c #查看文件test.c的日誌修改信息。
svn log -r 8 -v #顯示版本8的詳細修改日誌,包括修改的所有文件列表信息。
svn log -r 8 -v -q #顯示版本8的詳細提交日誌,不包括comment。
svn log -v -r 88:866 #顯示從版本88到版本866之間,當前代碼目錄下所有變更的詳細信息 。
svn log -v dir #查看目錄的日誌修改信息,需要加v。
svn log http://foo.com/svn/trunk/code/ #顯示代碼目錄的日誌信息。
svn diff -r 版本1:版本2 這個命令用來比對兩個版本的差異,但是出現了中文亂碼問題,中文系統上svn默認是中文編碼ANSI,而代碼是UTF-8編碼。diff文件中由svn生成的部分用ANSI編碼,代碼部分被從UTF-8強轉爲ANSI,亂碼由此產生。
兩種解決方案:方法1:把比對的內容(我們的代碼)改爲GBK等中文編碼;
方法2:把svn的編碼改爲UTF-8;
第一種不太合理,我們要的就是代碼UTF-8編碼,故用方法2。
修改命令行的代碼頁編碼,使輸出內容以UTF-8編碼。
svn revert 某個文件名 只能把未提交的本地修改撤銷,對於已經提交的代碼就無能爲力了, 取消所有的本地編輯
svn revert -R . 撤銷當前文件下的修改,注意-R都變的.表示當前路徑
svn revert --depth=infinity . 恢復整個文件的修改,注意最後的 .
回退版本方法一:
svn up; 該命令保證更新到最新的版本
svn log; 該命令查看歷史修改,找到要恢復的版本
svn diff -r 版本1:版本2 [文件或目錄]; 瞭解詳情,兩個版本的不同之處
svn merge -r 版本2:版本1 [文件或目錄];注意版本之間的順序,這個叫反向合併
svn diff -r r4329 SbaterBaseFrame/HomeViewController.m; 查看r4329這個版本與當前的文件中的SbaterBaseFrame目錄下的HomeViewController.m的更改情況
svn ci -m ''; 提交會生成新的版本
回退版本方法二:
svn up -r r4329; 執行這條命令,當前工作版本就是r4329版本了,但是注意,這是時候svn並不會生成新的版本,下次svn up的時候還是會回到當前版本.
回滾詳解步驟: