SVN: subversion 子級版本 (子級源代碼版本控制管理軟件)php
svn:全稱Subversion,是代碼版本管理軟件,管理着隨時間改變的數據。這些數據放置在一箇中央資料檔案庫 (repository) 中。 這個檔案庫很像一個普通的文件服務器, 不過它會記住每一次文件的變更。這樣你就能夠把檔案恢復到舊的版本, 或是瀏覽文件的變更歷史。 許多人會把版本控制系統想像成某種 「時光機器」。程序員
使用svn能夠很好地協調一個團隊共同開發同一個項目,而不會出現代碼衝突、覆蓋的狀況服務器
上圖是多人共同開發同一個項目,內部最大的問題是,在比較短的時間內若是有多人同時開發同一個文件,會形成彼此代碼覆蓋的狀況發生。A的代碼在最後會把B的代碼給覆蓋掉,10點之後就只體現A程序員的功能效果。app
SVN其中的做用一個就是避免上述狀況發生。svn
① 多人開發同一個項目不會出現代碼覆蓋狀況。spa
② 針對一個文件能夠建立許多不一樣版本,而且能夠隨時查看不一樣版本的內容。3d
③ 公司領導能夠經過svn查看每一個人的工做狀況版本控制
1. 給svn倉庫提交第一個程序文件server
步驟:blog
① 右鍵------> SVN---->Add
(本地的.svn對該文件造成管理)
② 右鍵------> Commit
(本次的文件提交給svn倉庫)
① 藍色加號:本地的.svn對該文件有造成管理
② 綠色對號:本地文件、.svn管理的版本文件、倉庫文件 三者一致
③ 紅色歎號:本地文件 與 .svn和倉庫文件 不一致(用戶本身修改了該文件)
④ 黃色歎號:表示該文件正處於衝突狀態
把全部倉庫的上級目錄當成服務給啓動起來。
主機名:svn://localhost ---------------->app目錄
svn://localhost/student---------->與student倉庫取得聯繫
svn://localhost/book------------->與book倉庫取得聯繫
svn://localhost/shop-------------->與shop倉庫取得聯繫
刪除.svn文件,斷開與倉庫的聯繫
從新checkout經過svn新主機名創建與倉庫的聯繫
一個程序文件能夠在svn倉庫裏邊造成許多不一樣版本,並能夠隨時查看。
總結:
> svnadmin create 倉庫地址
> svnserve -d -r 倉庫地址
衝突解決(重點)
上圖兩個程序員在短期以內共同開發同一個程序文件(goods.php)
10點之後系統只會體現linken開發的功能(mary開發的功能被linken給覆蓋了)
文件覆蓋的解決:
① 給每一個文件分配一個「令牌」,誰拿到令牌誰就有權利開發該文件
(同一個程序文件同一個時間點只容許有一我的開發)
② 給每一個文件設置一個版本號碼,提交的時候若是服務器的版本等於本地版本號碼就容許提交,不然不容許提交(本地號碼 小於 服務器版本)
衝突:
廣義角度的衝突,提交程序文件 本地版本號碼 小於 服務器版本號碼
狹義角度的衝突,多個程序員對同一個文件同一處代碼的修改再共同提交文件的時候回產生衝突。
解決:
執行update操做,把倉庫最新的文件更新到本地,並和本地文件作Merge融合操做。
繼續提交文件便可。
不管什麼樣子的衝突:解決就是經過update把最新的版本更新到本地,文件稍做修改後繼續提交。
1. 設置帳號
步驟:
① 管理員先把該目錄給建立出來並提交給svn倉庫
② 外包團隊給該 目錄提交文件
③ 管理員刪除自己建立的目錄,執行update更新操做,便可查看外包團隊的工做狀況
sc create svnd binPath= "E:\svnService\server\bin\svnserve.exe -r E:\svnService\app --service" start= auto