linux SVN使用

來源:互聯網
上載者:User

轉自:http://blog.csdn.net/cb_121/archive/2008/10/28/3167901.aspx

基本使用

SVN是CVS的下一個版本,主要用來進資料列版本設定,可以對程式碼,音頻,視頻以及影像檔等,做版本控制。

目錄以及檔案是Subversion中可以記錄版本的對象。其主要工作原理如:
                   _ _ _ _ _ _ _ _ _ _
                  /                              /
                  |                               |
                  |      項目倉庫            |
                  |                               |
                  /_ _ _ _ _ _ _ _ _ _/
                        /                  |
                       /     check in |
     check out /                     |
_ _ _ _ _ _ /_ _               _|_ _ _ _ _ _ _                   
/                         /             /                        /
|                          |            |                         |
|      工作拷貝       |            |        工作拷貝    |
|                          |            |                         |
/_ _ _ _ _ _ _   _/             /_ _ _ _ _ _ _ _/
分支,主幹,合并,標籤
建立一個分支或者標籤時,採用一種"延遲拷貝"的技術,即只建立指向同一版本的連結,當其中某個檔案有所改動時,再去複製那個檔案或者目錄。
一般地來講,分支是用來做準備發布的,而不是並行開發。

1、建立一個項目倉庫
svnadmin create /home/huzza/test_svn

2、import初始檔案到項目倉庫中
svn import -m source_file_path URL
本例 URL:file:///home/huzza/test_svn/sesame/trunk
file:// ------> 告訴svn是本地目錄

3、checkout檔案到本地目錄
svn checkout(co) file:///home/huzza/test_svn/sesame/trunk

4、檢查檔案狀態或者日誌
svn status [檔案/目錄]
svn log [檔案/目錄]
svn log -r6:8 [檔案/目錄]     查看版本6到版本8之間的日誌

5、檔案/目錄比較(工作拷貝與項目創庫中的比較)
svn diff [檔案/目錄]     或者      svn diff --rHEAD [檔案/目錄]     --rHEAD:表示最新版本

6、更新本地工作拷貝,提交工作修改
svn update(up) [檔案/目錄]      

svn checkin(in) -m"comments" [檔案/目錄]
update時的一些檔案標誌:
     U ------ 表示檔案被更新
     G ------ 表示項目創庫中的檔案和本地工作拷貝的檔案合并到了一起
     C ------ 表示合并時,有衝突產生
     A ------ 新加入了一個檔案
     D ------ 刪除了一個檔案
     ? ------ 表示該檔案或者目錄沒有被svn管理
     M ------ 該檔案被修改

7、衝突。當svn update時,如果存在某個檔案存在衝突,開啟衝突的檔案,<<<<<<<< 和 >>>>>>>> 表明了衝突發生的地方。
當衝突發生時,如果想使用項目倉庫中的版本,而放棄本地拷貝的修改,可以使用以下命令:
a、svn revert [衝突的檔案/目錄]
b、svn update [衝突的檔案/目錄]
(svn resolved [檔案/目錄] && svn updata [檔案/目錄],似乎也是ok的,需要confirm一下)
如果想保留本地工作拷貝的修改,而放棄項目倉庫中版本的修改,可以如下:
a、cp 檔案/目錄.mine 檔案/目錄
b、svn resolved 檔案/目錄
c、svn ci -m "use my version please" 檔案/目錄
(在上面的三個步驟中,似乎不用做步驟a也可以達到目的)

8、使svn項目倉庫連網
啟動svn伺服器:svnserve --daemon --root /home/huzza/test_svn
列伺服器資源:svn list svn://192.168.0.4/sesame/trunk
出來後面的URL不同,其他動作的各部分均相同
svn+ssh 訪問:svn list svn+ssh://192.168.0.4/sesame/trunk        (需要在伺服器上支援ssh訪問)

9、得到特定版本的工作拷貝
svn checkout -rVersionNum list svn://192.168.0.4/sesame/trunk butterfly
svn info butterfly     (查看目前的版本拷貝的狀態)

10、拷貝/移動檔案
svn copy filename newfile
svn move oldfile newfile
svn ci -m "add or move some files" [修改檔案所在的目錄]      (這裡確保伺服器上也作跟本地拷貝相同的動作)

11、版本的符號
HEAD --------- 項目倉庫中的最新版本
BASE --------- 工作拷貝的基準版本(也就是checkout出來時的版本)
COMMITTED ---- 最後一次checkin的版本
PREV --------- COMMITTED之前的一個版本

12、尋找版本之間的差異
svn diff -r2:4 [檔案/目錄]
svn diff > diffname.patch (產生patch檔案)
使用patch檔案: patch -p0 -i diffname.patch

13、刪除後一個版本對前一個版本的修改
svn merge -r27:26 [檔案/目錄] && svn ci -m "undo the work of version 27"
撤銷版本27所做的修改

14、建立分支/標籤
svn mkdir -m "Create branches" svn://192.168.0.4/sesame/branches
svn copy -m "Create release branches for version 1.0" svn://192.168.0.4/sesame/trunk /
                                                         svn://192.168.0.4/sesame/branches/release-1.0

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.