SVN:客戶端與伺服器端安裝、配置與使用
SVN(SUBVERSION)
前言:
SVN是Subversion的簡稱,是一個開放原始碼的版本控制系統,說得簡單一點SVN就是用於多個人共同開發同一個專案,共用資源的目的。類似的工具號有git(github是其應用)。
環境:ubuntu 16.4 客戶端:windows
一、伺服器端下載地址
http://subversion.apache.org/packages.html#ubuntu
二、伺服器端安裝
sudo apt-get install subversion
sudo apt-get install libapache2-svn
三、SVN的一些基本概念
參考材料:
術語
什麼是儲存庫(Repository)?
版本庫(repositiry)是一個版本控制資料庫,通常駐留在伺服器上,通常由Apache HTTP Server(通過mod_dav_svn模組)或svnserve伺服器公開。儲存庫作為一個單一的源,作為一箇中央儲存,它包含版本資料修改的完整歷史記錄。
儲存庫URL示例:
· Apache HTTP伺服器:https: //svn.example.com/repos/MyRepo/MyProject/trunk
· svnserve的: SVN://svn.example.com/repos/MyRepo/MyProject/branches/MyBranch
· 直接訪問(Unix風格): file://var/svn/repos/MyRepo/MyProject/tags/1.1.0
· 直接訪問(Windows風格): file:/// C:/ Repositories / MyRepo / trunk / MyProject
什麼是工作副本(Working Copy)?
工作副本是您用來與中央Subversion(SVN)儲存庫互動的本地和私有工作區。您可以使用工作副本來修改您的專案的內容並獲取其他人提交的更改。
工作副本包含專案的資料,外觀和行為就像本地檔案系統上的常規目錄,但有一個主要區別 - 工作副本將跟蹤其中的檔案和目錄的狀態和更改。您可以將工作副本視為具有版本控制功能的常規目錄。工作副本的根目錄中有一個名為.svn的管理目錄。管理目錄包含
根據您的需要,可以從同一個儲存庫或專案中獲得儘可能多的工作副本,並可以使用任何本地修改組合。
什麼是工作副本(Working Copy)?
Trunk(主幹):是用來做主方向開發的,一個新模組的開發,這個時候就放在trunk, 當模組開發完成後,需要修改,就用branch。
Branch(分支):是用來做並行開發的,這裡的並行是指和trunk進行比較。
tag(標記):是用來做一個milestone的,不管是不是釋出版本,但都是一個可用的版本。 這裡,應該是隻讀的。更多的是一個顯示用的,給人一個可讀的標記。
比如,3.0開發完成,這個時候要做一個tag,tag_release_3_0,然後基於這個tag做釋出,比如安裝程式等。trunk進入 3.1的開發,但是3.0發現了bug,那麼就需要基於tag_release_3_0做一個分支(branch),branch_bugfix_3_0,基於這
個branch進行bug修改,等到bugfix結束,做一個tag,tag_release_3_0_1,然後,根據需要決定 branch_bugfix_3_0是否併入主幹(trunk)。
基本任務
將資料匯入儲存庫
如果你想將現有的非版本化(就是不會被svn跟蹤版本變更,相當於無視)資料匯入SVN倉庫,你應該執行 svn import命令。這裡是一個例子:
$ svn import https://svn.example.com/repos/MyRepo/MyProject/trunk -m“Initial project import”
Checking out(建立)一個工作副本
要開始修改專案的資料,您必須建立版本化專案的本地副本。您可以使用命令列svn客戶端或任何您喜歡的基於GUI的客戶端。您的本地專案副本稱為工作副本,您可以通過發出svn checkout命令來建立它 。這裡是一個例子:
$ svn checkout https://svn.example.com/repos/MyRepo/MyProject/trunk MyWorkingCopy
因此,您將獲得駐留在MyRepo儲存庫中的名為MyProject的專案主幹(trunk)的工作副本。工作副本將位於計算機上的MyWorkingCopy目錄中。請注意,不是check out主幹,而是check out一些分支或標記(假設它們已經存在於儲存庫中)。
您也可以獲取整個儲存庫MyRepo的工作副本。但是你應該避免這樣做。一般來說,你不需要為你的工作有一個工作副本,因為你的工作副本可以立即切換到另一個開發分支。而且,Subversion版本庫可以包含許多不相關的專案,最好為每個專案提供一個專門的工作副本,而不是所有專案的一個工作副本。
更新工作副本
你不是唯一在這個專案上工作的人,對吧?這意味著你的同事也正在修改專案的資料。要保持最新狀態並獲取其他人提交的修改,您應該在工作副本中執行 svn update命令。因此,您的工作副本將與儲存庫同步並下載您的同事所做的更改。
在將本地修改提交到儲存庫之前,更新您的工作副本是一個好習慣。
在本地工作副本(local working copy)中進行更改
大多數情況下,您將通過修改工作副本的內容來修改專案的資料。只要您對修改感到滿意,並且已經徹底查看了這些修改,就可以將其提交到中央儲存庫。
修改現有的檔案
像平時一樣使用您最喜愛的文字處理器,圖形編輯器,音訊編輯軟體,IDE等來修改檔案。只要將更改儲存到磁碟,Subversion就會自動識別它們。
將您的更改提交到儲存庫
為了釋出您在工作副本中所做的更改,您應該執行 svn commit命令。
這是一個提交命令的例子:
$ svn commit -m“My Descriptive Log Message”
請注意-m(--message)選項。你應該總是包含一個描述性的提交日誌訊息。它應該幫助包括你自己在內的其他人理解你為什麼要這樣做。在日誌訊息中包含變更的摘要資訊也是一個好主意。
執行檔案和目錄操作
您可以在工作副本中對專案資料執行任何操作,但涉及複製,移動,重新命名和刪除的操作必須使用相應的svn 命令執行。
Subversion不會在工作副本中使用啟發式搜尋(heurisic-tracking)來更改路徑樹。Subversion需要明確路徑樹的變化。如果你執行一個樹路徑變更如移動或複製常規檔案系統命令,Subversion不會知道這個操作。跟蹤樹的變化應該讓Subversion知道它們。
新增新的檔案和目錄
把新的檔案或目錄放在工作副本上,Subversion會將它們視為“未版本化”。除非執行svn add命令,否則不會自動開始跟蹤新檔案 :
$ svn add foo.cs
移動和重新命名檔案和目錄
使用svn move或svn rename命令移動和重新命名檔案和目錄 :
$ svn move foo.cs bar.cs
命令svn rename是svn移動的別名。
複製檔案和目錄
使用svn copy命令複製檔案和目錄 :
$ svn copy foo.cs bar.cs
刪除檔案和目錄
使用svn delete svn delete命令刪除檔案和目錄 :
$ svn delete foo.cs
恢復或丟棄本地更改
使用svn revert命令放棄本地未提交的更改 :
$ svn revert foo.cs
丟棄的未提交的更改將永遠丟失。您將無法恢復已還原的更改。謹慎使用svn revert!
分支和標記
你應該使用svn copy命令來建立分支(branches)和標籤(tags)。當您希望它們與歷史相關時,這是與用於複製工作副本中的專案和儲存庫中的專案相同的命令。
命令svn copy用於分支,因為分支在技術上是複製的源的副本。但是,這與您在本地檔案系統上的檔案複製並不相同。Subversion版本庫中的分支就是所謂的 “Cheap Copies”,類似於符號連結(symlinks)。因此,建立一個新的分支需要最少的時間來完成,並且在Subversion版本庫中幾乎沒有空間。您可以建立分支並將其用於任何需要的更改,而不管更改的大小和範圍如何。
使用direct URL to URL copy建立分支
在Subversion中分支很簡單。最簡單的形式是,建立一個新的分支需要您針對遠端儲存庫的URL執行該命令。例如,讓我們從主幹線中建立一個新的分支:
$ svn copy https://example.com/MyRepo/trunk https://example.com/MyRepo/branches/MyNewBranch -m "Creating a new branch"
四、svn客戶端工具
安裝:
https://tortoisesvn.net/downloads.html,windows版圖形化介面。
下載安裝即可。(有其他工具可以自行選擇)。
提示:官網上有中文語言包,安裝完TortoiseSVN安裝包後再次安裝中文語言包即可(安裝之後在設定-常規-語言選擇中文)。
安裝後開啟TortoiseSVN Repository Browser
填入URL,即可連結成功。
成功後:
詳細使用說明:參見TortoiseSVN手冊
五、伺服器端建立Repository、啟動serve
參考文件:http://svnbook.red-bean.com/nightly/zh/index.html
(此步驟僅作為搭建svn伺服器的操作,如果伺服器已經搭建好,就可以忽略這部分,直接使用客戶端連線即可)
建立儲存庫
建立Subversion版本庫是一項非常簡單的任務。Subversion附帶的svnadmin實用程式提供了一個子命令(svnadmin create)
eg:
$ # Create a repository
$ svnadmin create /var/svn/repos
假設父目錄 /var/svn存在,並且您有足夠的許可權修改該目錄(如果沒有許可權就把db資料夾的許可權修改),則以前的命令會在目錄/var/svn/repos中以及預設的檔案系統資料儲存(FSFS)中建立一個新的儲存庫 。你可以明確地選擇使用的檔案系統型別--fs-type的引數,它接受作為引數要麼fsfs或 bdb。
eg:
$ # Create an FSFS-backed repository
$ svnadmin create --fs-type fsfs /var/svn/repos
$
# Create a legacy Berkeley-DB-backed repository
$ svnadmin create --fs-type bdb /var/svn/repos
$
執行這個簡單的命令後,你有一個Subversion版本庫。根據使用者如何訪問這個新的儲存庫,您可能需要設定它的檔案系統許可權。
所以執行命令:
$ svnadmin create NLP_Repository
得到NLP_Repository資料夾,包括內容:
conf db format hooks locks README.txt
每個部分的含義:
conf / :該目錄是配置檔案的容器。
db/ :該目錄包含所有版本化資料的資料儲存。
format/ :這個檔案描述了儲存庫的內部組織方案。(事實證明,db/子目錄有時也包含一個format檔案,只描述該子目錄的內容,而不會與該檔案混淆。)
hook/ :該目錄包含鉤子指令碼模板和鉤子指令碼(如果已經安裝的話)。
lock/ :Subversion使用這個目錄來安置庫鎖定檔案,用於管理對版本庫的併發訪問。
.README.txt :這是一個簡短的文字檔案,其中只包含一個通知給讀者,他們正在查詢的目錄是一個Subversio版本庫
啟動服務
目前只有兩個Subversion伺服器被廣泛使用。
Apache HTTP Server(也稱為httpd)是一個非常流行的Web伺服器; 使用mod_dav_svn模組,Apache可以訪問儲存庫,並通過WebDAV / DeltaV協議(它是HTTP的擴充套件)將其提供給客戶端。因為Apache是最可擴充套件的伺服器,它提供了許多功能“ 免費, ”比如加密的SSL通訊,記錄,與多家第三方認證系統的整合,以及有限的內建儲存庫的網頁瀏覽。
在另一個角落是svnserve:一個輕量級的小型伺服器程式,與客戶端通訊。因為它的協議是明確為Subversion設計的,並且是有狀態的(與HTTP不同),所以它提供了顯著更快的網路操作,但也是以某些功能為代價的。雖然它可以使用SASL來提供各種身份驗證和加密選項,但它沒有日誌記錄功能或內建的網頁瀏覽功能。然而,建立起來非常容易,對於剛剛開始使用Subversion的小團隊來說,這往往是最好的選擇。
有幾種不同的方式來執行 svnserve程式:
1執行svnserve作為一個獨立的守護程序,監聽請求。
2每當請求進入某個埠時,Unix inetd守護程序暫時產生svnserve。
3讓SSH 通過加密隧道呼叫臨時svnserve。
4執行svnserve作為Microsoft Windows服務。
5執行svnserve作為啟動的工作。
這裡使用最簡單的第一種方式。
svnserve作為守護程序
最簡單的選擇是將svnserve 作為獨立的“ 守護程序 ”程序執行。使用這個 -d選項:
$ svnserve -d
$#svnserve現在正在執行,監聽埠3690
在守護程序模式下執行svnserve時,可以使用--listen-port和 --listen-host選項來自定義確切的埠和主機名來“ 繫結 ”到。
一旦我們 如前所述成功啟動svnserve,它就會使系統中的每個儲存庫都可用於網路。客戶端需要在儲存庫URL中指定絕對路徑。例如,如果儲存庫位於/var/svn/project1,客戶端將通過svn://host.example.com/var/svn/project1。為了提高安全性,可以將-r 選項傳遞給svnserve,從而限制它僅匯出該路徑下的儲存庫。例如:
$ svnserve -d -r / var / svn
使用該-r選項可以有效地修改程式作為遠端檔案系統空間根目錄的位置。然後,客戶使用從其中移除了該路徑部分的URL,從而留下更短(且更少洩露)的URL:
$ svn checkout svn://host.example.com/project1
這裡我們是這樣操作的:
修改訪問許可權:修改未驗證使用者與驗證使用者的許可權(我圖省事就都設成了可讀寫,最小面有修改方法)
$ sudo vim conf/svnserve.conf
啟動服務:
$ svnserve -d -r /home/vm-server01/SVN/
關於伺服器新增賬號密碼:
我們首先需要編輯下svnserve.conf,將下面四項的前面註釋去掉,並且去掉這一行前面的空格,將配置頂行寫:(一定要頂行去掉空格,否則報錯:svn: E200002: line 19: Option expected)
anon-access = none
auth-access = write
password-db = passwd
authz-db = authz
這邊字面上也能明白 anon是匿名訪問時的許可權,auth是授權訪問時的許可權。
然後我們配置下passwd:
[users] # harry = harryssecret # sally = sallyssecret
MyAccount=MyPS
這裡新增的是使用者名稱=密碼,我這裡依照上面的例子新增就可以了。
然後我們去authz中配置組和組許可權:
[groups] # harry_and_sally = harry,sally # harry_sally_and_joe = harry,sally,&joe
Myteam=MyAccount
# [/foo/bar] # harry = rw # &joe = r # * =
# [repository:/baz/fuz] # @harry_and_sally = rw # * = r
[/]
@Myteam=rw
這裡其實也很簡單,先在groups中新增一個組,並且後面新增組員。
然後下面是設定每個組在相應目錄下的許可權,這裡設定的是[/]的意思,就是在根目錄下,然後西面組名前 面加@,意思是andy組在根目錄下的許可權為rw,即讀和寫都有。
svn裡authz檔案(許可權檔案)、passwd檔案(存放密碼檔案)、.conf檔案(配置檔案)裡的註釋寫的很清楚,可以詳細讀一下。
完成!
備註:如果有不清楚的地方,每一部分都有參考資料,可以自行查閱一下。
相關推薦
SVN:客戶端與伺服器端安裝、配置與使用
SVN(SUBVERSION) 前言: SVN是Subversion的簡稱,是一個開放原始碼的版本控制系統,說得簡單一點SVN就是用於多個人共同開發同一個專案,共用資源的目的。類似的工具號有git(github是其應用)。 環境:ubuntu 16.4 客戶端:w
Java開發利器:IntelliJ IDEA的安裝、配置與使用 視訊教程 百度雲盤
IntelliJ IDEA是一款功能強大的開發工具,在程式碼自動提示、重構、J2EE支援、各類版本工具(如git、svn、github)、maven等方面都有很好的應用。IntelliJ IDEA有免費的社群版和付費的旗艦版。免費版只支援Java等為數不多的語言和基本的IDE特性,旗艦版還支
資料庫:簡介、安裝、配置與基本操作
目錄 一、資料和資料庫 1.什麼是資料? 客觀事物的符號表示。 2.資料的分類? 結構化資料:可以通過統一的格式進行管理的資料。 非結構化資料:
更多免費初級中級高階大資料java視訊教程下載 加(微***信((號keepper,請備註java或掃下面2二3維4碼尚矽谷Java開發利器:IntelliJ IDEA的安裝、配置與使用
更多免費初級中級高階大資料java視訊教程下載 加(微***信((號keepper,請備註java或掃下面2二3維4碼尚矽谷Java開發利器:IntelliJ IDEA的安裝、配置與使用java視訊教程1-課件java視訊教程1-課件java視訊教程~$谷_宋紅康_IntelliJIDEA的安裝、配置與使用.
RabbitMQ實踐--伺服器安裝、配置與命令
ubuntu安裝rabbitmq-server 按照官網的APT repositories方法安裝 #新增以下地址到/etc/apt/sources.list echo 'deb http://www.rabbitmq.com/debian/ testi
【SonarQube】安裝、配置與使用 01
ges 工具 順序 64位系統 runner lba 問題 分析 clas SonarQube是管理代碼質量一個開放平臺,可以快速的定位代碼中潛在的或者明顯的錯誤,下面將會介紹一下這個工具的安裝、配置以及使用。 準備工作; 1、jdk(不再介紹) 2、sonarqube:h
轉:MySQL下載安裝、配置與使用(win7x64)
服務端 oot 路徑 source password ade cto 麻煩 全部 1 第一大步:下載。 a.俗話說:“巧婦難為無米之炊”嘛!我這裏用的是 ZIP Archive 版的,win7 64位的機器支持這個,所以我建議都用這個。因為這個簡
SonarQube的安裝、配置與使用
modules 登錄 初始 distrib 初始化 html 開放 mage bin SonarQube的安裝、配置與使用 SonarQube是管理代碼質量一個開放平臺,可以快速的定位代碼中潛在的或者明顯的錯誤,下面將會介紹一下這個工具的安裝、配置以及使用。 準
Mongodb下載、安裝、配置與使用
調試 端口號 log文件 生成 IV journal 輸出 cmd TP 感謝:https://blog.csdn.net/heshushun/article/details/77776706 一、下載: 官網地址:https://www.mongodb.com/dow
[轉] mongodb下載、安裝、配置與使用
win7 spa 追加 簡單的 clip 進入 沒有 出現 端口 記得在管理員模式下運行CMD,否則服務將啟動失敗。 詳細圖解,記錄 win7 64 安裝mongo數據庫的過程。安裝的版本是 MongoDB-win32-x86_64-2008plus-ssl-3.4.1-
代碼質量管理平臺SonarQube的安裝、配置與使用
sonarqube 代碼質量管理平臺 tle title 使用 href 質量 log www 代碼質量管理平臺SonarQube的安裝、配置與使用 學習了:https://www.cnblogs.com/qiumingcheng/p/7253917.html代碼質量管理平
eclipse的git插件安裝、配置與使用
直接 upload net som 賬號密碼 圖1 blank cli sdn 轉載 : https://blog.csdn.net/u012052268/article/details/79160478 eclipse的git插件安裝與配置 1 git插件安
Windows10下Anaconda和Pycharm的安裝、配置與激活
容易 nlb 常用 targe mfile windows10 tsp ive gii 一、Anaconda的下載安裝 1.1 Anaconda介紹 Anaconda 是一個基於 Python 的數據處理和科學計算平臺,內置了許多非常有用的
Windows下MySQL下載安裝、配置與使用
一、下載 下載頁面http://dev.mysql.com/downloads/mysql/ 選擇系統平臺後,點選download(根據系統選擇64或32位) 二、配置 1、下載成功後,解壓安裝包到要安裝的位置,我是安裝在”D:\Progra
tomcat安裝、配置與使用
tomcat安裝、配置與使用 Tomcat安裝程式包apache-tomcat-7.0.40.zip,解壓到一個非中文目錄下即可完成安裝 Tomcat啟動:預設已經安裝好java環境,如果未安裝java會報錯。 方法1、雙擊bat檔案啟動: 進入到tomcat安裝目錄的bin目
Weblogic的安裝、配置與應用部署
Weblogic安裝 Linux下安裝過程 安裝環境: 作業系統: redhat-release-5Server-5.4.0.3 Weblogic版本: Weblogic 9.24 部署前準備: 建立webl
eclipse的git外掛安裝、配置與使用
1. eclipse的git外掛安裝與配置 1.1 git外掛安裝 新版本的eclipse已經自帶了GIt了,就不用安裝了。 老版本的eclipse安裝Git,和安裝一般外掛過程一樣: 點選help——Install new software
開發環境配置-eclipse中git的安裝、配置與使用-4
1、eclipse自帶git,如果需要替換可先刪除,然後通過以下兩種操作方式中的一種進項安裝: Help->Eclipse MarketPlace->輸入egit進行查詢和安裝 Help->Install New SoftWare->
Nginx 教程一:在windows環境下的安裝、配置、使用以及設定為windows服務自啟動
目前國內各大入口網站已經部署了Nginx,如新浪、網易、騰訊等;國內幾個重要的視訊分享網站也部署了Nginx,如六房間、酷6等。新近發現Nginx 技術在國內日趨火熱,越來越多的網站開始部署Nginx。 相比apeach、iis,nginx以輕量級、高效能、穩定
Ubuntu 中sendmail 的安裝、配置與傳送郵件的具體實現
一、安裝 ubuntu中sendmail函式可以很方便的傳送郵件,ubuntu sendmail先要安裝兩個包。 必需安裝的兩個包: 程式碼 sudo apt-get install sendmail sudo apt-get install sendmail-