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