svn基本操作

懷竹發表於2020-10-24
SVN教程:
 
全稱為Apache Subversion 通常被縮寫成svn,是一個開源版本控制系統。
在subversion管理系統中,檔案目錄可以超越時空,subversion將檔案存放在中心版本管理庫中,這個版本庫很像一個普通的檔案伺服器,不同的是,它可以記錄每一次檔案和目錄的修改情況,這樣就可以藉此將資料恢復到之前的版本了,並可以檢視資料的更改細節,正因為如此,許多人將版本控制系統當做一臺的時間機器;
 
SVN的作用
使用SVN的目的有兩個:
實現專案組中的資源共享;(別人可以獲取到你寫的程式碼,同樣自己也可以獲得到別人的程式碼)
實現資原始檔的版本控制;
 
為什麼要學svn,傳統的工作有什麼不足?
傳統工作有什麼不足:
無法及時獲取到更新。
傳送和接受檔案工作量巨大。
對於之前版本的恢復較難,即使可以恢復,也會消耗大量時間。
一個檔案由多人修改則會出現內容衝突問題,且難以確定具體時間和修改人。
 
檔案服務方式和伺服器有什麼缺點?
空間大量浪費;
資源無法設定訪問許可權;
資源安全性很低;
發生衝突的資源無法自動合用;
 
SVN 和Git有什麼區別?
 
SVN 的主要功能
  SVN屬於集中化的版本控制系統,有個不太精確的比喻:SVN = 版本控制+ 備份伺服器
     SVN使用起來有點像是檔案倉庫的感覺,支援並行讀寫檔案,支援程式碼的版本化管理,功能包括取出、匯入、更新、分支、改名、還原、合併等。
     功能有許多我就不一一列了,SVN大都採用圖形介面操作,直觀,上手快。
SVN 的優缺點
      SVN對中文支援好,操作簡單,使用沒有難度,美工人員,產品人員,測試人員,實施人員都可輕鬆上手。使用介面統一,功能完善,操作方便。
 
Git的主要功能
      Git是一個分散式版本控制系統,操作命令包括:clone,pull,push,branch ,merge ,push,rebase,Git擅長的是程式程式碼的版本化管理。但是現在好像也支援SVN了,之前下載HBuilder外掛是看到的。
Git的優缺點
      對程式原始碼進行差異化的版本管理,程式碼庫佔極少的空間。易於程式碼的分支化管理。不支援中文,圖形介面支援差,使用難度大。不易推廣。
 
SVN 和 Git 哪個更適用於專案管理?
      認為SVN更適用於專案管理, Git僅適用於程式碼管理。
     一個研發隊伍的成員正常包括:需求分析、設計、美工、程式設計師、測試、實施、運維,每個成員在工作中都有產出物,  包括了文件、設計程式碼、程式程式碼,這些都需要按專案集中進行管理的。SVN能清楚的按目錄進行分類管理, 使專案組的管理處於有序高效的狀態。
 
SVN的體系結構:
SVN的三層結構:
客戶層:提供兩種方式圖形介面和命令列,通過服務層提供api訪問倉庫層,通過DAV,SVN,LOCAL協議。
 
服務層:
DAV:通過網際網路直接訪問倉庫層,通過Apache伺服器進行訪問;http://
SVN:通過svnserve訪問svn://
local:通過檔案操作訪問file://
倉庫層:
資料倉儲可以由一個檔案伺服器充當,也可以有資料庫進行充當;
 
教程筆記:
SVN的概述:
為什麼使用subversion版本控制軟體?
在多人協作開發的基礎下,一個系統會受到多個人聯合開發,而每個人都是單獨工作的。
還有就是在遠端開發的基礎上,需要進行整合開發的時候。
另外遇到更新的版本不如之前的好,需要使用版本回退。
 
解決之道:
svn:軟體配置管理
所謂的軟體配置管理,實際就是對軟體原始碼進行控制和管理的。
cvs:元老級的產品
vss:入門級產品
ClearCase被IBM收購了,由它提供技術支援(就是得付費了)
SVN:主流產品
 
3.什麼是SVN
SVN全稱subversion.
SVN是近年覺醒的版本管理工具,是cvs的接班人,目前大多數公司都在使用SVN
 
特點:
操作簡單,入門容易
可以跨平臺操作(windows,linux,macOS);
支援版本回退功能。
 
4.如何獲取SVN
它是C/S結構的軟體,(分為客戶端和服務端)
兩者有不同的下載地址:
伺服器端:名Visual SVN
 
客戶端軟體:tortoisesvn
 
SVN軟體的安裝:
1.svn工作流程:
一般是專案經理使用checkout 檢出 svn伺服器建立相關專案;
一般程式設計師第一次進入svn伺服器都是使用checkout。
 
之後便是update對專案的更新。
commit(提交)對svn伺服器進行管理;
 
新來的員工會得到伺服器的地址,svn://伺服器地址/專案名稱,建立連線指令。
第一次連線需要使用checkout指令,更新指令到指令,之後便是使用update更新資料到本地,然後使用commit提交程式碼到svn。
 
2.伺服器端的軟體進行安裝:
點選安裝-》下一步-》下一步-》安裝環境配置(第一個visualsvn具有視覺化管理介面,第二個只有命令列操作,最後一個勾選,新增svn指令到系統環境變數中)
-》企業版需要購買授權,一般選用標準版-》設定location設定安裝路徑,第二個位置為repositories預設倉庫,server port 設定八千以上的預設是443或8443。安裝位置不能出現中文特殊字元,空格否則會使svn指令失去功效。
一般使用8443埠,443埠會被佔用,選擇使用安全連結。
 
3.svn客戶端軟體安裝和使用:
1.獲取軟體安裝包。(客戶端分作業系統的位數)
執行軟體安裝包-》選擇預設安裝即可-》安裝完畢重啟計算機才會出現svn圖示。-》右鍵可以看到安裝的svn就發現軟體已經安裝成功了。
如需安裝漢化包,需要先安裝tortoisesvn再點選漢化包執行,安裝之後,直接選擇右鍵tortoisesvn選擇setting選擇常規(genaral)對應的語言即可。
 
使用客戶端軟體連線客戶端伺服器。
選擇啟動tortoisesvn-》版本瀏覽器-》輸入svn伺服器地址-》由於監管操作自動連線上-》檢出;
 
SVN:使用詳解:
1.檢出checkout
連結到伺服器端,更新伺服器端的資料。checkout只在第一次連結是進行相關操作;之後使用update更新資料。
 
2.commit提交本地指令到伺服器端。
提交的時候會彈出提交視窗歐,這裡需要填寫一些上傳備註資訊,這裡是給自己看的,說明此次修改了那些內容。
下方會顯示上傳目錄,就會顯示提交目錄。
 
3.新使用者可以通過檢出伺服器端的資料到本地資料夾中(update更新)。commit提交(被修改過的檔案)
 
4.專案經理只需要使用svn更新就能檢視到更新的內容了。
 
svn圖示集:
可以通過設定,圖示集中檢視圖示的含義。
 
常規圖示:
當客戶端檔案和伺服器端的檔案都是綠色√就說明檔案同步。
 
當伺服器檔案出現衝突時會出現!
 
當伺服器檔案被刪除時會出現紅色×
 
當我們編寫的檔案已新增到提交佇列,系統將顯示提交藍色+圖示。
 
當我們編寫的檔案沒有新增到上傳佇列時,系統將自動提示白色?圖示。
 
當客戶端檔案有修改但有提交此時會提示!修改圖示
 
當客戶端檔案設定只讀是就會顯示沒有顏色的√
 
當伺服器端資料鎖定,客戶端資料就會自動顯示鎖定圖示。
 
客戶端檔案已忽略不需要自動上傳,會自動顯示忽略圖示。
 
當有些檔案不希望上傳到svn伺服器,應該將檔案或該型別的檔案新增至忽略列表。
有兩種模式UML忽略此檔案,UMLrepositories遞迴忽略;
 
SVN使用詳解:
版本回退:
 
傳統的版本更新:是將每一個版本單獨的儲存一個資料夾。
而在SVN中:它只會記錄新增的內容,不會記錄之前系統已經有了的。這是一種優勢。
 
在SVN中實現回退功能:
 
選擇tortoisesvn-》更新至版本。
可以根據日誌回退,通過檢視之前的備註資訊回到相應的版本。
 
SVN中的版本衝突的問題:
後修改的內容會將前一個修改的內容覆蓋。
解決辦法:
合理分配專案開發時間,在修改同一個檔案。
合理分配專案開發模組。
 
通過svn解決版本衝突問題:更新伺服器資料到本地,
會在本地出現的多個衝突檔案,刪除多餘的幾個檔案(進行整合),進行整合後再重新提交,即可重新解決版本衝突問題。
 
配置多倉庫與許可權控制:
1.配置多倉庫:
在實際開發中,我們可能會同時開發多個專案,那麼我們怎麼能夠進行過個專案管理監察呢?
通過svnserve監管倉庫,但是監管命令只能監管某一個資料夾,而不能同時監管多個倉庫。
 
可以通過監管webapp總目錄監管所有倉庫的目的;
svnserve -d(後臺執行) -r(監管目錄) webapp
 
如果訪問不同的目錄,可以通過直接svn://lovalhost/子目錄
 
2.許可權控制功能:
使用許可權控制功能必須先開啟許可權功能。
在每一個倉庫中,都會有一個conf資料夾,裡面有三個檔案
authz檔案:授權檔案
告訴哪些使用者具有哪些許可權
 
passwd檔案:認證檔案
標識當前svn系統中某個,具有哪些使用者以及相應的密碼;
 
預設情況下,以上兩個檔案都是禁用的,如需要使用,首先要開啟以上兩個檔案
svnseve.conf配置檔案
 
開啟步驟如下:
第一步:註釋匿名使用者的可讀寫許可權。
#anon-access=write
第二步開啟認證檔案與授權檔案;
passwd-db=passwd;
 
authz-db=authz
 
第三步:首先編寫認證檔案定義相關使用者名稱和密碼;
 
[user]
定義:
使用者名稱=密碼;
 
第四步:編寫授權檔案:
[groups]
組名=使用者列表,使用逗號隔開
 
配置檔案許可權:
[專案名:/]
@組名:許可權(rw)
*匿名使用者=r;
 
svn服務的配置和管理:
1.配置自啟動服務(之前需要在window dos中使用命令執行svn)
 
sc create SVNService binpath="D:\svn\bin\svnserve.exe--service -r D:/svnroot"vstart=suto
sc create 服務名稱 binpath="svnserve.exe-service -r D:/svn/webapp" start=空格 auto;
建立系統服務,服務名SVNservice
 
開啟執行使用管理員執行cmd
輸入
sc create SVNService binpath="D:\svn\bin\svnserve.exe-service -r D:/svn/webapp" start= auto;
然後開啟服務:啟動該服務即可開啟監管服務;
 
建立批處理檔案:
net start SVNService
net stop SVNService
net delete SVNService
 
建立字尾名為.bat的檔案在其中輸入的命令會自動輸入到cmd視窗;就可以啟動停止刪除服務了。
 
模擬真實開發環境:
 
一般開發人員將資料提交給倉庫,而真正顯示在web伺服器上,所以需要媒介(溝子程式)完成將資料從倉庫提交給web伺服器
 
鉤子程式
所謂鉤子程式就是與一些版本庫事件觸發的程式,列如新修訂版本的建立,或是未版本化屬性的修改。
預設情況下,鉤子的子目錄(版本倉庫/hooks)中包含各種版本庫的鉤子模板
 
post-commit.tmpl:事務完成時所觸發的鉤子程式。
鉤子程式預設情況下可以採用批處理指令或shell指令來進行編寫
 
3.通過批處理指令編寫鉤子程式時,需要做的操作。
1.設定svn伺服器工作目錄
設定伺服器的svn路徑:
SET SVN="D:\svn\bin\svn,exe"
2.指定web伺服器的工作目錄
SET DIR=“D:\server\apache\hedocs\shop”
3.通過update屬性更新指令到DIR目錄中
SVN update %DIR%
 
複製修改post-commit.tmpl字尾名為bat將上面的內容覆蓋進去。
 
SVN擴充套件程式:
1.BAE雲引擎;
BAE雲引擎:百度推出的網路應用開發平臺。基於BAE架構,使開發者不需要維護任何的伺服器,只需要簡單的上傳應用程式,就可以為使用者提供服務了。
 
2.如何使用BAE雲引擎。
BAE地址:
通過百度賬號申請bce的雲引擎;
建立一個空間,點選複製在本地進行檢出操作。
將賦值的內容放入版本庫中,就可以完成檢出操作,這個過程中需要接受服務驗證(百度的使用者名稱和管理密碼)
使用提交會自動的進行提交到管理控制中心,去控制中心就能看到自己的內容發生更改需要手動釋出。
 
這個版本有點老舊了,在bilibili上黑馬程式設計師講解。