1. 程式人生 > >Subversion的簽出、更新、新增檔案目錄、拷貝移動檔案和處理合並衝突

Subversion的簽出、更新、新增檔案目錄、拷貝移動檔案和處理合並衝突

本文總結Subversion常用的功能,以備索引。

1. 簽出

a)       使用svn checkout(co)命令從專案目錄中取出東西並且新建一個工作拷貝。

b)       不指定名稱則使用原檔案目錄名。Svn checkout svn://192.168.195.54/simple將svn目錄的simple專案拷貝到當前目錄下的simple下。

c)        指定新目錄名為svn checkout svn://192.168.195.54/simple simpleNewName。

d)       可以在checkout後加上版本名稱如:svn checkout –r 7 svn://192.168.195.54/simple simpleNewName為拷貝第7版程式到simpleNewName下。

e)       使用svn info simpleNewName可以瞭解拷貝資訊。

2. 保持更新

a)       保持一小時更新一次的頻率。

b)       Svn update命令來更新,如果再子目錄,則只更新子目錄。

c)        可以指定多個檔案或者目錄,如svn update build.xml scr/ test/

d)       Svn的update返回狀態為A新增,U更新,D刪除,G修改合併,C衝突。

3. 新增檔案和目錄

a)       Svn add dir 只是記住了新增到倉庫中的檔案的名字,並沒有實際把改動提交,必須在使用commit命令。

4. 拷貝、移動檔案和目錄

a)       對檔案的拷貝和移動,都最好通過svn命令進行。

b)       Svn copy from.txt to.txt;from.txt拷貝一份為to.txt。再svn commit –m‘xxxx’;提交,使用svn log to.txt檢視檔案狀態。

c)        重新命名檔案svn move a.java renew.java將a.java重新命名為renew.java,再提交svncommit –m “xxx”。這樣做的好處是保留了檔案的拷貝記錄。

d)       重新命名目錄svn move a b將目錄重新命名,最後提交。

e)       以上命令在本地工作目錄操作,也可以在客戶端使用URL操作:svn move –m “xxx” \ svn://192.168.195.54/simple

5. 檢視修改內容

a)       Svn diff a.txt檢視上次在專案倉庫更新了工作拷貝後修改了什麼。可在不連線伺服器的情況下,藉由以往歷史版本推出什麼修改了。

b)       比較版本之間的差異svn diff –r19:20 clock.java,時間之間的差異svn diff -r{"22:10"},最新版本svn diff – r HEAD,基準版本svn diff –r BASE,最後改動版本svn diff –r COMMITTED,前一個版本svn diff –r PREV。eg.svn diff –r PREV:BASE a.java

c)        生成補丁檔案svn diff > mychangs.patch;補丁的應用patch –p0 –I mychanges.patch。這個功能可以把修改程式碼臨時性匯入系統中,不過要注意倉庫的同步。

6. 處理合並衝突

a)       AB程式設計師更新最新程式碼,A程式設計師修改程式碼上傳後,B使用者繼續修改同一檔案後上傳戳先錯誤。使用svn update 命令來檢查,發現衝突,解決衝突的方法有三種:

i. 扔掉自己的改動:svn revert a.txt,svn update a.txt

ii.扔掉倉庫中的改動cp a.txt.mine a.txt本地檔案拷貝到倉庫,svn resolved a.txt說明解決完成。

iii.手工修改<<<>>>部分程式碼,最後提交svn resolveda.txt。

以上修改完成後,就可以update,確認無誤後commit程式碼。