簡介html
svn是集中式的版本控制系統,版本庫集中存放在中央服務器,由於工做時都是用本身的電腦,因此要先從中央服務器取得最新的版本,而後工做完後再將本身的代碼推送給中央服務器。api
svn:開源、免費。修正了CVS的一些穩定性問題,是目前用得最多的集中式版本庫控制系統。bash
標記服務器
A 文件、目錄或符號鏈預約加入到版本庫。符號連接又叫軟連接,是一類包含了另外一個文件的(絕對或者相對)路徑名的特殊的文件app
C 文件發生衝突(Conflict)(服務器更新時與本地版本發生交迭,多人修改同一處),必須解決衝突後提交到版本庫less
D 文件、目錄或符號連接預約從版本庫中刪除svn
M 文件的內容已被修改(Modified) 工具
R 文件、目錄或符號連接預約將要替換版本庫中的文件、目錄或符號連接,先刪除後添加,全部的操做發生在一個修訂版本ui
X 目錄沒有版本化,可是與Subversion的外部定義關聯url
? 文件、目錄或符號連接不在版本控制之下,能夠用ignore忽略
! 文件、目錄或符號連接在版本控制之下,可是已經丟失或者不完整,這可能由於使用非Subversion命令刪除形成的,若是是一個目錄,那麼有多是檢出或是更新時中斷致使,使用update能夠從新從版本庫得到文件或目錄,也能夠revert恢復原來的文件
~ 文件、目錄或符號連接在版本庫已經存在,但你的工做拷貝中的是另外一個。例:你刪除了一個版本庫的文件,新建了一個在原來的位置,並且整個過程當中沒有使用svn delete或svn add
I 文件、目錄或符號連接不在版本控制下,Subversion已經配置好了會在add、import和status命令忽略這個文件
SmartSVN
同步更新服務端的源碼,即把本地的代碼更新到最新的版本,保證與服務端的源碼一致。注意:每次commit以前務必先update,否則可能致使同事提交的代碼被覆蓋
本地代碼作了修改、刪除、新增等操做後同步上傳到服務端
添加新的文件或目錄,若是目錄下面還有其餘的子目錄能夠一塊兒提交
從版本庫中移除文件或目錄,點擊後出現單選擇框:刪除svn和本地/僅刪除svn 勾選框:強制刪除,忽略本地的修改
移動並重命名文件或目錄,新的文件和文件夾會被添加,舊的會被移除可是會保留移除紀錄
撤銷本地文件或目錄的修改
刪除本地文件或未受版本控制的/被忽略的文件夾,沒法還原未受版本控制的文件。
肯定或修復選擇的文件或目錄。這個選項是不多用的
顯示文件的修改,本地與服務端源碼的不一樣之處
顯示工程或某個文件的修改歷史,以列表的形式展現,包含:做者、描述、時間等信息
顯示修改歷史圖表,和上面沒太大區別
本地狀態 服務端狀態
工具在實際操做後才能熟悉與熟練。
衝突修改
可行方案:.h和.m文件因爲辨識性比較好,因此容易解決,xib和stroyboard是xml文件有不少十六進制數據,不容易手動解決,因此能夠在修改以前在開發羣組裏面通知一聲,讓他人先提交,在修改。記住修改前先update一次,避免由於沒有及時更新致使衝突。
不顯示標記?
日前對SmartSVN進行了升級,原來的版本較低爲5.x,升級爲8.6,升級到來的好處是update、commit等操做的耗時顯著減小,卻也出現了Xcode不顯示'A'、'M'、'D'、'?'等標記的問題,因而去百度查找,因爲關鍵字沒有找好花費了一些時間,後詢問同事知道了緣由:Xcode和高版本SmartSVN使用的系統內置svn版本過低。
知道緣由後想着去升級系統內置svn,找到如下升級步驟,經測有效。
1、根據本身Mac系統下載最新版的SVN客戶端 http://www.wandisco.com/subversion/download/;
2、安裝最新版SVN客戶端。點擊剛下載的.pkg文件,程序會默認安裝到/opt/subversion目錄。
3、替換Mac OS X自帶的SVN客戶端
D:~ D$ which svn
/usr/bin/svn
D:~ D$ ls /usr/bin/svn*
/usr/bin/svn /usr/bin/svnfsfs /usr/bin/svnserve
/usr/bin/svnadmin /usr/bin/svnlook /usr/bin/svnsync ...
D:~ D$ sudo rm -rf /usr/bin/svn*
D:~ D$ sudo ln -s /opt/subversion/bin/svn* /usr/bin/
D:~ D$ sudo --version
svn, version 1.9.4 (r1740329)
...
4、替換Xcode自帶的SVN客戶端
Xcode不是直接調用操做系統自帶的SVN客戶端,上面更新系統自帶的SVN客戶端後,Xcode依然是使用舊版本,因此須要升級。SVN客戶端位於"/Applications/Xcode.app/Contents/Developer/usr/bin"目錄下。
D:~ D$ ls /Applications/Xcode.app/Contents/Developer/usr/bin/svn*
/Applications/Xcode.app/Contents/Developer/usr/bin/svn
/Applications/Xcode.app/Contents/Developer/usr/bin/svnadmin
/Applications/Xcode.app/Contents/Developer/usr/bin/svnbench
...
D:~ D$ sudo rm -rf /Applications/Xcode.app/Contents/Developer/usr/bin/svn*
D:~ D$ sudo ln -s /opt/subversion/bin/svn* /Applications/Xcode.app/Contents/Developer/usr/bin/
D:~ D$ sudo cp /opt/subversion/bin/svn* /Applications/Xcode.app/Contents/Developer/usr/bin/
5、出現問題?
若是在對/usr/bin/進行操做(如:rm 移除操做)時提示"xx:/usr/bin/svn:Operation not permitted",這是權限問題。El Capitan加入了Rootless機制,有些路徑不能隨意讀寫了,設置root權限也不行。因而嘗試關閉Rootless。
操做步驟:重啓時按住Command+R,進入恢復模式,打開Terminal,輸入命令
csrutil disable
重啓即生效。若是要啓動,輸入命令
csrutil enable
附錄
csrutil命令參數格式:
csrutil enable [--without kext | fs | debug | dtrace | nvram][--no-internal]
csrutil disable 等同於 kext --without fs ...
其中各個開關,意義以下:
B0: [kext] 容許加載不受信任的kext(與已被廢除的kext-dev-mode=1等效)
B1: [fs] 解鎖文件系統限制
B2: [debug] 容許task_for_pid()調用
B3: [n/a] 容許內核調試(官方的csrutil工具沒法設置此位)
B4: [internal] Apple內部保留位(csrutil默認會設置此位,實際不會起做用。設置與否都可)
B5: [dtrace] 解鎖dtrace限制
B6: [nvram] 解鎖NVRAM限制
B7: [n/a] 容許設備配置(新增,具體做用暫時未肯定)
參考文章
阿笨貓 http://www.cnblogs.com/xuxm2007/archive/2010/12/16/1908398.html
刺月舞星 http://blog.sina.com.cn/s/blog_a0f3ea980101c0y0.html
midmirror(簡書做者) http://www.jianshu.com/p/22b89f19afd6