問題:① 團隊開發 ② 異地協做 ③ 版本回退php
SCM(Software Configuration Management):軟件配置管理html
在軟件開發中,軟件的配置管理主要是指對軟件源代碼的管理…git
cvs版本控制軟件:最先期比較成熟的產品,開源奇葩產品程序員
vss版本控制軟件:Visual Source Safe,入門級產品,操做簡單,具備可視化界面apache
clearcase版本控制軟件:IBM負責管理與維護,中堅級產品,可是其並非開源免費的,而是收費軟件,價格昂貴,可是其有良好的技術支持服務器
git版本控制軟件(主流):基於分佈式進行架構的,主要應用於Linux平臺架構
svn版本控制軟件(主流):基於服務器端進行架構的,主要應用於Windows或Linux平臺框架
svn是近年來崛起的版本管理工具,是cvs的接班人。目前,絕大多數開源軟件都使用svn做爲代碼版本管理軟件。(bae、淘寶code、開源社區oschina)分佈式
SVN軟件屬於C/S結構軟件,因此在使用時必須安裝服務器端與客戶端。svn
1)在服務器端安裝SVN服務器端軟件,配置中心服務器
2)配置中心服務器,搭建項目倉庫(在SVN中,一個項目就是一個倉庫)
3)項目經理開發項目的核心框架,而後經過SVN客戶端軟件,使用Checkout(檢出)指令鏈接服務器,並經過Commit(提交)指令上傳核心代碼到SVN中的相應版本倉庫。
4)程序員在我的計算機中安裝SVN客戶端軟件,而後經過SVN地址使用Checkout(檢出)指令連接服務器並更新源代碼到本地。
5)項目經理若是想校檢程序猿完成了哪些內容,可使用Update(更新)指令,下載服務器端代碼到本地
Checkout指令:第一次與服務器連接使用一次,主要是實現服務器的鏈接與下載服務器端代碼到本地。
Commit指令:把本地的源代碼經過SVN客戶端軟件提交到服務器端
Update指令:把服務器端代碼下載更新到本地
下載地址:http://www.visualsvn.com/
下載完成後,以下圖所示:
1)雙擊安裝VisualSVN服務器端
2)單擊Next下一步繼續
3)單擊Next下一步繼續
4)選中標準版,繼續,選擇安裝路徑(重要)
使用SVN軟件有一個基本要求,其軟件的安裝路徑:必定不能出現中文、空格或特殊字符,不然會致使SVN指令沒法使用!
5)單擊Next下一步,單擊Install…直到軟件安裝完畢便可。
特別注意:服務器端軟件安裝完畢後,必須重啓服務器,不然可能會致使SVN指令沒法生效,也可使用在任務管理器中強制停止explorer.exe進程並再次建立模擬重啓過程。
停止進程:
重建進程:
點擊桌面開始按鈕à選擇運行à輸出cmd,打開DOS窗口後,輸入以下指令,若是能夠正常顯示,表明安裝成功。
下載地址:http://tortoisesvn.net/downloads
下載後以下圖所示:
說明:SVN客戶端軟件是分位數的,因此在安裝前必須查看操做系統的位數。如何查看呢?
答:在桌面計算機圖標上鼠標右鍵à選擇屬性,查看如下選項:
客戶端軟件安裝其路徑沒有任何要求,能夠安裝在計算機的任一位置,安裝過程請首先安裝軟件包,而後安裝語言包便可。
特別說明:客戶端軟件安裝完畢後,必須重啓電腦,不然會致使SVN圖標沒法顯示。
在計算機的任何位置鼠標右鍵,若是出現如下兩個圖標,表明安裝成功
① 在SVN服務器上的任一位置,建立一個項目文件夾如Web
② 在Web目錄下建立一個Shop文件夾做爲項目目錄(中級項目——Shop商城)
③ 使用SVN指令建立版本倉庫,基本格式:
svnadmin create 項目目錄路徑
示例代碼:
④ 使用SVN指令監管項目倉庫,基本格式:
svnserve -d(後臺運行) -r(監管倉庫路徑) 倉庫路徑
示例代碼:
運行後發現,光標一直停留在下一行,不停的閃爍,其表明正在運行,請不要關閉當前DOS窗口,不然服務也會隨之關閉。
DOS窗口與Linux終端使用小技巧:Tab自動補全
若是在實際應用中,咱們不記得項目或文件的名稱,能夠只輸入前幾個字母+Tab鍵,系統會自動幫助咱們進行補全。
① 首先在客戶端計算機安裝客戶端SVN軟件,安裝完畢後必定要重啓計算機
② 在虛擬主機目錄建立一個空文件夾,用於創建與服務器端的連接操做(如jingli)
③ 使用SVN客戶端軟件鏈接服務器
輸入要鏈接的SVN服務器地址
單擊服務器文件夾,鼠標右鍵進行檢出操做
檢出時必定要清楚的查看路徑是否正確:
若是顯示如下界面,表明檢出成功
① 項目經理開發項目的核心框架
② 開發完畢後,使用Commit指令提交本地代碼到服務器端
第一次提交時,提示以下信息:
以上提示表明受權失敗,爲何呢?
答:由於服務器端默認不容許匿名用戶上傳權限,能夠在服務器端中的配置文件中進行更改,以下圖所示:
找到以下代碼,更改以下所示:
去除anon-access前面的#號,並把此行代碼頂格(必須頂格,不然報語法錯誤),更改read爲write,表明匿名用戶具備可讀寫權限,設置完成後,再次提交代碼,以下圖所示:
在實際項目開發中,若是服務器端的代碼有更新,咱們就須要使用Update指令進行更新操做,以下圖所示:
當本地文件與服務器端文件徹底同步時,系統會自動顯示常規圖標zz
當咱們本地要提交的文件與服務器端已存在的文件有衝突時,系統會自動顯示衝突圖標
當服務器端的文件已刪除,那系統就會自動顯示已刪除圖標
在無版本控制圖標的基礎上此文件加入了上傳隊列,那麼其系統會自動顯示增長圖標
當本地新建了某個文件時,系統會自動顯示此文件圖標爲無版本控制圖標
當本地文件有修改時,那系統會自動顯示修改圖標
當服務器端文件設置爲只讀時,那麼本地文件將顯示只讀圖標
當本地文件已鎖定時,那麼系統會自動顯示鎖定圖標
當某個或某類文件被忽略時,那麼系統會自動顯示忽略圖標
有些文件不但願上傳至svn服務器,應該將該文件或該類型的文件添加至忽略列表
以上程序表明忽略流程圖.xlsx文件,當下次提交時會自動忽略此文件。
以上程序表明忽略全部以.docx爲後綴的文件。
有些時候,軟件的運行可能使開發者或使用者不滿意,這時咱們須要把當前版本退回到之前的某個版本。
① 在項目目錄中的空白位置鼠標右鍵,以下圖所示:
② 根據項目日誌選擇要回退的版本
③ 查看要回退的版本,以下圖所示:
④ 在要回退的版本位置鼠標右鍵à選擇復原此版本做出的修改
⑤ 回退成功後,從新Commit提交目前版本到服務器端已達到更新服務器版本操做(重要)
若是兩我的對同一個文件進行修改,會引發更新衝突,如何解決,模擬版本衝突:
說明:在實際項目開發中,常常會遇到版本衝突問題,是沒法避免的,那開發中如何儘可能減小版本衝突呢?
答:① 合理分配項目開發時間
旺財 上午開發
小強 下午開發
② 合理分配項目項目開發模塊
旺財 產品模塊
小強 文章模塊
③ 使用SVN軟件解決版本衝突問題
① 先更新服務器端最新代碼到本地
index.php :整合後的衝突文件
index.php.mine :小強要提交的文件
index.php.r5 :最初的index.php文件
index.php.r6 :目前服務器端最新的index.php文件
② 刪除除index.php文件之外其餘三個文件
③ 修改與整合index.php衝突文件
④ 調整完成後,從新提交數據到服務器便可
在SVN中,一個項目就是一個倉庫,可是若是按照上午所學知識對服務器進行配置則系統只能兼顧某個項目,沒法同時開發多個項目。
1)Apache 監管 http://localhost:80/端口自動指向Apache目錄下的htdocs文件夾
2)SVN 監管 svn://ip地址自動指向到其DOS指令監管的目錄,如Shop目錄
可是svn監管指令默認狀況下只能監管一個目錄,那若是同時開發多個項目,那麼要如何配置多倉庫呢?
答:能夠監管倉庫的上一級總目錄(如Web文件夾便可)
以上程序設置成功後,咱們的svn://服務器ip地址就會自動轉向到Web目錄,可是Web目錄並非一個倉庫,因此這樣是沒有意義的,若是要實現監管必需要鏈接到數據倉庫:
鏈接Shop倉庫:svn://服務器的ip地址/Shop,如svn://127.0.0.1/Shop
鏈接Wechat倉庫:svn://服務器的ip地址/Wechat,如svn://127.0.0.1/Wechat
例1:以Shop倉庫爲例,只要在檢出時填寫以下地址便可
例2:若是以前已經鏈接了其餘倉庫,可是如今倉庫已更換了鏈接地址,怎麼辦?
答:可使用從新定位,以下圖所示:
答:在實際項目開發中,咱們須要同時管理多個項目,如配置多倉庫案例。若是不對項目設置相關權限,其SVN服務器端代碼將很難維護。
在SVN中,若是對一個項目配置權限必需要通過三個文件的支持,
第一個文件:項目主配置文件,項目目錄/conf/svnserve.conf文件
第二個文件:passwd文件,認證文件,保存了項目中的的用戶名和密碼
第三個文件:authz文件,受權文件,保存授予某些用戶某些權限的功能
① 首先在項目的主配置文件svnserve.conf文件中,開啓權限控制功能
1)註釋掉anon-access代碼
2)開啓passwd和authz文件
開啓passwd文件
開啓authz文件
② 設置認證文件(passwd),添加相關的用戶名和密碼
③ 設置受權文件,授予某些用戶某些權限
在SVN軟件中其運行環境和Linux都是一致的,就是每一個用戶必須屬於某個用戶組,設置組信息
設置完成後,爲每一個組設置相關的管理權限
④ 驗證權限功能是否生效
在實際項目應用開發中,若是咱們使用DOS窗口來實現對SVN服務的開啓會形成不少不便。因此咱們能夠把監管指令設置爲系統服務。
sc create指令基本語法:
基本要求:必須使用超級管理員運行此命令
sc create 服務名稱 binpath=(空格)"D:\svn\bin\svnserve.exe --service -r D:/svn/Web" start=(空格)auto(此設置服務級別爲自動:開機時自動啓動)
示例代碼:
添加成功後,咱們能夠在控制面板à管理工具à服務à找到svn服務,以下圖所示:
單擊啓動,若是能成功啓動,表明已經配置成功了。
以上指令爲了操做方便,咱們還能夠專門封裝成批處理指令
在使用SVN軟件管理軟件源代碼時咱們發現,SVN只能完成對代碼的整合,可是沒法直接查看或測試軟件的源代碼。
在SVN新版本中新增長了鉤子程序,就能夠完成上圖中的管理員功能。
所謂鉤子就是與一些版本庫事件觸發的程序,例如新修訂版本的建立,或是未版本化屬性的修改。
默認狀況下,鉤子的子目錄(版本倉庫/hooks/)中包含各類版本庫鉤子模板。
以上程序中,咱們只須要掌握post-commit鉤子程序便可(數據同步更新)
① 在svn服務器端也安裝一個svn客戶端軟件(TortoiseSVN)
② 在服務器端的虛擬主機目錄建立一個文件夾,用於接收同步數據
③ 在服務端使用客戶端svn軟件,檢出服務器端的最新數據到本地文件夾中
注意:這個時候必定要保持客戶端與服務器端的同步數據必須是一致的
④ 在svn服務器端,打開Shop目錄下的hooks鉤子文件夾,找到post-commit模板,更改其後綴爲.bat
⑤ 刪除批處理文件中的全部數據
⑥ 寫入以下相關指令
1)設置服務器端SVN路徑
SET SVN="D:\svn\bin\svn.exe"
2)設置服務器端項目運行目錄
SET DIR="D:\server\apache\htdocs\MyShop"
3)使用update指令同步更新數據
SVN update %DIR%
等號後面不能帶空格
⑦ 測試以下圖所示: