1. 程式人生 > >細說SVN集中式版本控制器

細說SVN集中式版本控制器

阿裏 detail 好的 repo apache .com 行編輯 管理 內部

svn全稱Subversion,實現多人開發同一個項目時,對源代碼進行管理的工具。在公司裏邊,一個項目是由多人同時在開發,大家在本地自己電腦開發php代碼,完畢後就commit上傳給服務器運行。

技術分享 如圖:多人開發同一個php程序文件(重疊部分代碼),在做commit提交給服務器的時候,要造成文件彼此覆蓋的問題。

svn作用之一:解決文件覆蓋,協作多人開發同一個項目的同一個文件問題。

一、什麽是SVN

那麽什麽是SVN呢,下面就由我為大家細說,SVN是代碼版本管理軟件,管理著隨時間改變的數據。這些數據放置在一個中央資料檔案庫 (repository) 中。 這個檔案庫很像一個普通的文件服務器, 不過它會記住每一次文件的變動。這樣你就可以把檔案恢復到舊的版本, 或是瀏覽文件的變動歷史。 許多人會把版本控制系統想像成某種 “時光機器”。

成形於2001年8月31日

2010年1月成為apache軟件基金會的頂級項目

使用svn的作用

① 協作多人開發同一個項目同一個文件,並且不會出現文件覆蓋問題。

② 針對一個文件可以創建許多不同版本,並且可以隨時查看不同版本的內容。

③ 公司領導可以通過svn查看每個人的工作情況

二、SVN的安裝

1、服務器端安裝

SVN服務器端軟件下載地址:

https://sliksvn.com/download/

①創建文件目錄,用於安裝svn服務器端:D:\svn\server

2、客戶端安裝

tortoiseSVN客戶端軟件下載:

https://tortoisesvn.net/downloads.html

註意:該客戶端安裝完成後,重啟電腦

該軟件直接像其他軟件一樣,直接安裝即可,沒有註意事項

①創建多個svn倉庫(存儲代碼)

svn是用於管理代碼文件的,創建倉庫用於存儲php代碼文件,因為公司在同期要開發維護多個項目的代碼文件,因此要給svn創建多個不同倉庫:比如

d:/svn/app/shop

d:/svn/app/book

d:/svn/app/car

svnadmin create d:/svn/app/shop[book/car] //創建實實在在的創庫

②執行指令,使得shop目錄變為真實的SVN倉庫效果

技術分享

3. 啟動倉庫服務

svn要設置服務才可以使用,該服務走svn協議,端口為3690

啟動服務指令:

> svnserve -d[獨立端口運行] -r[具體倉庫目錄] 倉庫地址目錄

通過“超級管理員”權限打開dos命令行,掛起狀態,不關閉

d:\svn\server\bin\svnserve.exe -d -r d:/svn/app

(註意:倉庫地址目錄為所有倉庫的上級目錄app,這樣可以任意選取被操作的倉庫)

4. 與倉庫取得聯系

開發者要把代碼文件提交到svn倉庫裏邊進行保管,提交之前先讓開發者與svn倉庫取得聯系

①創建tom用戶的工作目錄:www\tom

工作目錄:開發各種php代碼文件的地方

tom工作目錄與svn倉庫取得聯系:

執行鼠標右鍵--->checkout指令

此時在tom的工作目錄裏邊生成一個.svn的隱藏文件,說明聯系成功

三.使用svn服務

①在commit文件時出現commit failed(details follow)認證失敗

原因是:該shop倉庫沒有設置賬號權限

解決:打開倉庫匿名賬號權限,然後再進行commit

D:\svn\app\shop\conf\svnserve.conf

anon-access = write //開啟匿名賬號權限設置

1. 文件顏色標誌

① 藍色加號:本地的.svn對該文件有形成管理(遠程倉庫 還沒有該文件記錄)

② 綠色對號:正常文件,本地文件、.svn管理的版本文件、倉庫文件 三者內部內容一致

③ 紅色嘆號:表示 本地文件 與 .svn管理的文件內容不一致(用戶自己修改了該文件)

④ 黃色嘆號:表示該文件正處於沖突狀態

⑤ 藍色問號:新建的一個文件,本地.svn 和 遠程倉庫 對該文件都沒有記錄

2. svn的常見操作

① checkout: 檢出動作,執行同時會把倉庫全部文件更新到本地

② update: 把倉庫最新的程序文件更新到本地

③ commit: 把本地文件提交給svn倉庫

3. 目錄和文件的提交

一個新目錄創建好了,該目錄內部還有新的程序文件

那麽,只有該新目錄提交完畢了,內部的新程序文件才允許提交

規律:一個文件只有上級目錄已經被commit操作後,該文件本身才可以被commit操作

四.沖突Conflicted(重點)

1. 什麽是沖突

沖突(conflicted)

多人在同一時間對同一個程序文件進行編輯後提交的時候,後提交的文件要覆蓋先提交文件的現象稱為“沖突”

tom在9:00對register.php文件進行開發

10:00對開發好的文件進行提交

jim在9:20對register.php文件進行開發

9:40對開發的文件進行提交

那麽,在10:00以後服務器只給體現tom開發的功能,後上傳的文件會把先上傳的同名文件給覆蓋了

沖突解決方案:

① 令牌方式解決

vss軟件就采取這樣的思路,給每個程序文件都分配一個令牌,只有拿到令牌的開發者才可以對這個文件進行修改,修改完畢再還令牌。

令牌的原理:同一個文件同一個時間點只能有一個人開發

② 版本解決:

svn的解決方案

只有本地的版本 與 服務器版本號碼一致,才允許提交

本地版本 小於 服務器版本 則禁止提交

沖突具體形式與解決

①大家修改的代碼不在同一處

沖突解決:執行update指令,使得服務器新版本與本地舊版本做融合操作,之後再繼續commit提交即可

開啟(超級管理員權限打開dos窗口)服務:

regsiter.php.mine: tom本地文件在update之前的效果

regsiter.php.r14: 是文件14版本的效果

regsiter.php.r15: 是文件15版本的效果

以上3個文件理解後直接刪除,否則影響本文件commit提交

五.賬號和權限

①關閉匿名賬號:anon-access = none

去掉前面的#:password-db = passwd

       authz-db = authz

②設置賬號

例如:tom = tom123

③給賬號設置權限

#給shop倉庫設置操作權限:[shop:/]

#給用戶設置具體操作權限  r(read)讀權限 w(write)寫權限

例:tom = rw

#除了tom外,其他用戶都沒有操作權限

* =

r: 讀權限,代表可以從svn倉庫update更新文件

w:寫權限,代表本地可以給svn倉庫commit提交文件

svn與apache不同,配置文件修改了無需重啟服務,svn每次運行的時候都會重新加載配置文件

此時,再進行svn操作的時候,提示我們輸入用戶名和密碼

④給一個組別設置權限

有的時候一個項目組裏邊有多個開發人員(例如20個),這些人的操作權限都一致

為了分配權限比較方便、快捷,就給這些開發人員設置到一個組別裏邊,直接給組別設置操作svn的權限,組別的權限就等於開發人員的權限

有一個操作權限都一致的團隊賬號:

php = php1,php2,php3 //把團隊成員設置到組裏邊

@php = rw //直接給組別設置操作權限

六.設置開機啟動項服務

超級管理員權限打開dos命令行: 創建服務器

sc create svnd binPath="D:\svn\server\bin\svnserve.exe -r d:/svn/app --service" start= auto

sc delete svnd:刪除服務器

七.svn使用細節

1. 查看工作情況

領導可以通過svn查看大家的工作情況

操作:右鍵-->svn-->show log

2. 清除緩存

登錄使用svn的時候,如果系統記住用戶名、密碼了,就不能更換其他賬號

可以通過: 右鍵-->svn-->settings-->saved data 清除各種(賬號)緩存

3. 關閉匿名賬號

使用#號方式關閉匿名賬號會影響 show log 文件維護日誌的查看

4. 零bug開發

svn可以保證大家開發的代碼都必須遵守嚴格的標準,如果哪個人把代碼寫錯了,通過svn可以追查出來,包括一個.點或空格的微小錯誤

查看文件當前內容 與 之前版本內容的差異:TortoiseSVN->Diff with previous version

八.hooks鉤子

通過svn開發的項目代碼文件,最終需要上傳給web服務器才可以運行,其中hooks鉤子技術可以幫組我們把文件從svn倉庫自動同步給web服務器

本地工作目錄:E:/www/tom

svn倉庫:D:/svn/app/shop

web服務器:D:/web/shop

九. svn擴展功能

1. 什麽是BAE

百度應用引擎(Baidu App Engine,簡稱BAE)是國內商業運營時間最久、用戶群體最為龐大的平臺之一,提供彈性、便捷、一站式的應用部署服務,支持PHP/Java/Node.js/Python等各種應用。您只需上傳應用代碼,BAE自動為您完成運行環境配置、應用部署、均衡負載、資源監控、日誌收集等各項工作,大大簡化部署運維工作

除了BAE,還有aliyun(阿裏應用引擎)、SAE(sina app engine新浪引用引擎)

在許多應用程序裏邊,svn已經作為一個不可缺少的組件構成應用的一部分,其中BAE(Baidu App Engine)裏邊就可以通過svn實現代碼的上傳和更新。

2. svn應用到bae裏邊

① 到bae裏邊創建應用

bae網址:https://cloud.baidu.com

先登錄到bae應用裏邊

通過svn對bae代碼進行維護

獲取到的svn主機名地址:

https://svn.duapp.com/appidfr7dk8qylo

用戶名:baidu賬號

密碼:baidu賬號密碼

創建本地svn工作目錄

之後工作目錄與svn倉庫取得聯系

在bae操作界面,如果有新文件被commit提交,其會有提示,之後我們還有點擊“快捷發布”,以便文件可以同步到web服務器供訪問:

細說SVN集中式版本控制器