Linux學習閒談(二) ——SVN版本控制拾遺

 

Linux學習閒談(二)服務器

——SVN版本控制拾遺微信

 

(轉載請附上本文連接——linhxx)ssh

 

1、概念機器學習

倉庫(repository)是代碼總的存放的地方,工做副本(working copy)的每一個開發者用於開發的地方。版本控制方法以下圖:svn

 

兩個開發者一塊兒檢出,其中一個開發完提交,另外一個後提交的,必須先update最新的倉庫,不然沒法提交。檢出後,後者能夠提交。該解決方案稱爲「複製-修改-合併」。學習

可是,對於圖片等二進制文件,用加鎖-修改-解鎖模型更好。所以還要根據實際狀況。加密

 

2、版本控制方法spa

svn採用全局的版本號的方式,任意倉庫的工做副本的提交,都會改變整個版本號。即版本號是全局的,不是給每一個文件一個版本號。版本控制

 

 

 

3、倉庫尋址blog

能夠採用http、file、svn等方式進行尋址,以下:

模式

訪問方式

file:///

直接倉庫訪問 (倉庫在本地磁盤上)

http://

經過 WebDAV 協議訪問可識別 Subversion 的 Apache 服務器

https://

和 http:// 相同, 可是增長了 SSL 封裝 (加密和受權)

svn://

經過傳統的協議訪問 svnserve 服務器

svn+ssh://

和 svn:// 相同, 可是增長了 SSH 隧道

其中,能夠用^表示倉庫的根目錄,在工做副本中可使用。另外,^/表示根路徑。

 

4、工做副本

工做副本是用戶的本地系統的目錄,是用戶的私有空間。對svn倉庫的修改,並不是從一個工做副本直接傳遞到另外一個工做副本,而是要用戶將工做副本提交到倉庫,其餘用戶再從倉庫中更新代碼。

在1.7版之前,Svn在工做副本的每個子目錄內都維護了一個.svn目錄。svn1.7在存放和維護工做副本元數據上提出了一種全新的方法,從外面看最顯著的變化是每一個工做副本只建立了一個.svn目錄,存放在工做副本的根目錄下。

一、工做原理

svn爲工做副本中的每個文件記錄兩項信息:文件的版本號和時間戳,時間戳用於記錄該文件最後一次在版本庫更新的時間。

當用戶執行svn ci或者svn up時,會對文件的這兩項進行判斷:

1)若是本地和倉庫都沒更新,則沒反應。

2)若是本地更新,倉庫是舊的,則up沒反應,ci會提交。

3)若是本地沒更新,倉庫更新,則up會更新本地,ci沒反應。

4)若是本地和倉庫都更新,直接ci會報衝突,須要先up,但若是該的是同一行,svn up會失敗,則須要人工處理衝突,再ci提交。

二、版本號混合

倉庫中當前兩個文件a和b,當前版本號是1。如今在工做副本中,修改a,並提交。則工做副本中a版本號是2,b版本號仍是1;倉庫中a、b版本號都是2(對於b來講,版本號1和版本號2的內容是徹底同樣的)。只有再工做副本中,再次執行svn up,纔會使工做副本的a、b版本號也都是2。

即,更新和提交是分開的。執行提交,不會自動更新代碼;執行更新,也不會自動提交代碼。

 

 

——written by linhxx

 

更多最新文章,歡迎關注微信公衆號「決勝機器學習」,或掃描右邊二維碼。

相關文章
相關標籤/搜索