svn

簡介html

  svn是集中式的版本控制系統,版本庫集中存放在中央服務器,由於工做時都是用本身的電腦,因此要先從中央服務器取得最新的版本,而後工做完後再將本身的代碼推送給中央服務器api

  svn開源、免費。修正了CVS的一些穩定性問題,是目前用得最多的集中式版本庫控制系統bash

 

  •  Xcode中文件標記
  •  SmartSVN界面上部分按鈕的功能
  •  解決衝突問題
  •  Xcode不顯示文件標記?

 

標記服務器

  A    文件、目錄或符號鏈預約加入到版本庫。符號連接又叫軟連接,是一類包含了另外一個文件的(絕對或者相對)路徑名的特殊的文件app

  C  文件發生衝突(Conflict)(服務器更新時與本地版本發生交迭,多人修改同一處),必須解決衝突後提交到版本庫less

  D  文件、目錄或符號連接預約從版本庫中刪除svn

  M  文件的內容已被修改(Modified) 工具

  R  文件、目錄或符號連接預約將要替換版本庫中的文件、目錄或符號連接,先刪除後添加,全部的操做發生在一個修訂版本ui

  X  目錄沒有版本化,可是與Subversion外部定義關聯url

  ?  文件、目錄或符號連接不在版本控制之下,能夠用ignore忽略 

  !  文件、目錄或符號連接在版本控制之下,可是已經丟失或者不完整,這可能由於使用非Subversion命令刪除形成的,若是是一個目錄,那麼有多是檢出或是更新時中斷致使,使用update能夠從新從版本庫得到文件或目錄,也能夠revert恢復原來的文件   

  ~  文件、目錄或符號連接在版本庫已經存在,但你的工做拷貝中的是另外一個。例:你刪除了一個版本庫的文件,新建了一個在原來的位置,並且整個過程當中沒有使用svn deletesvn add

  I  文件、目錄或符號連接不在版本控制下,Subversion已經配置好了會在addimportstatus命令忽略這個文件

 

SmartSVN

     同步更新服務端的源碼,即把本地的代碼更新到最新的版本,保證與服務端的源碼一致。注意:每次commit以前務必先update,否則可能致使同事提交的代碼被覆蓋

     本地代碼作了修改、刪除、新增等操做後同步上傳到服務端

    添加新的文件或目錄,若是目錄下面還有其餘的子目錄能夠一塊兒提交

     從版本庫中移除文件或目錄,點擊後出現單選擇框:刪除svn和本地/僅刪除svn  勾選框:強制刪除,忽略本地的修改  

    移動並重命名文件或目錄,新的文件和文件夾會被添加,舊的會被移除可是會保留移除紀錄

    撤銷本地文件或目錄的修改

      刪除本地文件或未受版本控制的/被忽略的文件夾,沒法還原未受版本控制的文件。

    肯定或修復選擇的文件或目錄。這個選項是不多用的

    顯示文件的修改,本地與服務端源碼的不一樣之處

    顯示工程或某個文件的修改歷史,以列表的形式展現,包含:做者、描述、時間等信息

    顯示修改歷史圖表,和上面沒太大區別

    本地狀態          服務端狀態

  工具在實際操做後才能熟悉與熟練。

 

衝突修改

  • .h.m文件衝突:若是可以區分出其餘人修改的代碼與本身的代碼,能夠手動刪除、保留合適的代碼,而後合併,svn會用'<<'、'mine'、'=='標識出本身的代碼;

 

  • xib衝突:共同操做xib文件致使衝突,在SmartSVNxib文件是以xml文件顯示的,若是本地是較明顯的改動,例如:按鈕約束值的調整、顯隱等,這些值在xml文件中能夠分辨的,因此就容易手動刪除、保留代碼,而後合併就能夠;複雜狀況能夠先複製一份本地代碼,再svn update更新,最後再將修改添加上去;
  • stroyboard衝突:同上。

  可行方案:.h.m文件因爲辨識性比較好,因此容易解決,xibstroyboardxml文件有不少十六進制數據,不容易手動解決,因此能夠在修改以前在開發羣組裏面通知一聲,讓他人先提交,在修改。記住修改前先update一次,避免由於沒有及時更新致使衝突。

不顯示標記?

  日前對SmartSVN進行了升級,原來的版本較低爲5.x,升級爲8.6,升級到來的好處是updatecommit等操做的耗時顯著減小,卻也出現了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客戶端

    •  查找自帶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  ...

    •  刪除舊版本的svn客戶端(執行操做後/usr/bin/目錄下內容爲空,出現-bash: svn: command not found)

        D:~ D$ sudo rm -rf /usr/bin/svn*  

    •  建立新下載的svn客戶端與系統自帶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/

    •  複製到Xcode目錄下

        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

相關文章
相關標籤/搜索