Ubuntu下配置SVN方法詳解(1/2)

SVN是一款集中式代碼管理的核心是伺服器,所有開發者在開始新一天的工作之前必須從伺服器獲取代碼,然後開發,最後解決沖突,提交。所有的版本信息都放在伺服器上。如果脫離了伺服器,開發者基本上可以說是無法工作的

安裝svn

  大部分的發行版都已經提供svn套件,Ubuntu可以通過下面的命令進行安裝:

apt-get install svn

  svn套件提供下列一些常用工具:

  svn 一個命令行式的客戶端程序;
  svnversion 報告本地工作副本狀態(即當前文檔的修訂版本號)的程序
  svnadmin 用來創建、調整或修複倉庫的工具;
  svndumpfilter 用于過濾倉庫中的數據
  snvserve 一個定制的、獨立的svn服務程序,可以作爲一個駐留進程或通過ssh調用,以便他人可以通過其訪問倉庫。

  三、使用svn

  svn一般使用兩種後台服務模式:一種是其自己實現的svnserve,可以通過svn協定訪問,另一種是借助mod_dav_svn模塊,由Apache http伺服器來實現,然後通過HTTP或HTTPS協定來訪問。

  1、通過svn協定訪問

  svn協定

  客戶端若要通過svn協定訪問倉庫,必須在存放倉庫的機器上運行svnserve服務程序。啓動該程序後,會監聽在3690端口,以回應客戶端的訪問工作。

代碼如下

mkdir /var/local/svndata
svnserve -d -r /var/local/svndata

  注:-d 表示以後台模式運行,-r用于指定服務的根目錄。其余參數,請用svnserve -h查看。

  創建倉庫

  開始必須先用svnadmin在存放倉庫的目錄中創建必須的文件,以形成倉庫。

代碼如下

svnadmin create /var/local/svndata/dev1

  設置授權

  通過svn協定訪問遠端的倉庫,必須建立授權關系。svnserve對于每個倉庫,都有一個獨立的配置文件和獨立的用戶、權限管理。權限文件存放在:repository-path/conf/svnserve.conf

  我這裏的位置就是/var/local/svndata/dev1/conf/svnserve.conf,缺省的示例配置文件中和選項都是被注釋的。

  以下是一個簡單的例子:

代碼如下

vi /var/local/svndata/dev1/conf/svnserve.conf

[general]
anon-access = read # 允許匿名用戶唯讀訪問,若設置爲none表示不允許匿名訪問
auth-access = write # 通過驗證的用戶可以讀和寫
password-db = passwd # 用戶保存文件,也可以使用絕對路徑來指定位置
authz-db = authz # 權限管理文件
realm = My First Repository # 倉庫名稱

  注:配置項前面不能有前置空格,否則後續執行svn命令時,會報Option expected錯誤。

  配置用戶和權限

  在svnserve.conf文件中定義的用戶和權限配置文件的中加入相關信息:

  配置用戶

代碼如下

vi /var/local/svndata/dev1/conf/passwd

#定義用戶
[users]
#以用戶名=密碼對方式進行定義
mike = 000000
easylife = 000000

  配置用戶權限

代碼如下

vi /var/local/svndata/dev1/conf/authz

#定義組
[groups]
#定義屬于組的用戶
group1 = mike,easylife

#可定義倉庫中的某個相對路徑,如[/],或[/project1]
#若是多個倉庫共享一個權限文件,可以用倉庫名加“:”開頭來定義,如:[project2:/]
#這個project2必須是已經由svnadmin create /path/project2創建好的倉庫

[/]
#定義某個用戶的權限,r是唯讀、w是可寫、留空是不允許訪問
mike = rw
#定義某個組的權限
@group1 = rw
#用“*”號表示其他用戶
* = r

  注:用戶和權限配置文件必須與svnserve.conf中設置的路徑相同。若把這兩個配置文件放在倉庫外,例如:/var/local/svndata/目錄,則允許多個倉庫共享同樣的配置文件。用戶和權限配置文件保存後即可生效,不需重啓svnserve服務。

  訪問倉庫

  使用SVN客戶端

  進行首次導入

svn import /data0/software/memadmin svn://192.168.1.109/dev1 -m "initialization"

認證領域: <svn://192.168.1.109:3690> My First Repository
“root”的密碼:
認證領域: <svn://192.168.1.109:3690> My First Repository
用戶名: mike
“mike”的密碼:

-----------------------------------------------------------------------
注意! 你的密碼,對于認證域:

<svn://192.168.1.109:3690> My First Repository

只能明文保存在磁盤上! 如果可能的話,請考慮配置你的系統,讓 svn
可以保存加密後的密碼。請參閱文檔以獲得詳細信息。

你可以通過在“/root/.svn/servers”中設置選項“store-plaintext-passwords”爲“yes”或“no”,
來避免再次出現此警告。
-----------------------------------------------------------------------
保存未加密的密碼(yes/no)? yes
增加 /data0/software/memadmin/LICENSE.txt
增加 /data0/software/memadmin/apps
增加 /data0/software/memadmin/apps/SaveList.php
......
增加 /data0/software/memadmin/views/memadmin.php
增加 /data0/software/memadmin/index.php

提交後的版本爲 1。

  注意:Linux下,默認會先以當前用戶去驗證,若用戶名不匹配,可在後續的提示中輸入指定的用戶名。輸入一次用戶名後,svn會把驗證結果保留在本地的~/.svn/auth/svn.simple目錄中,下次使用svn時,就不需要再做驗證工作了。(除非修改了遠端的驗證用戶名和密碼)

  從SVN倉庫簽出

代碼如下
svn co svn://192.168.1.109/dev1/

A dev1/LICENSE.txt
A dev1/apps
A dev1/apps/GetListTime.php
......
A dev1/views/mem_count.php
A dev1/views/memadmin.php

取出版本 1。

  2、通過HTTP協定訪問版本庫

  通過HTTP協定訪問版本庫是svn的亮點之一,這種方式具備許多svnserve伺服器所沒有的特性,使用上更加靈活。

  關于mod_dav_svn模塊

  由于svn需要版本化的控制,因此標准的HTTP協定不能滿足需求。要讓Apache與svn協同工作,就要使用WebDAV(Web-based Distributed Authoring and Versiong)Web分布式創作和版本控制協定。WebDAV是HTTP 1.1的擴展,關于WebDAV的規範和工作原理,可以參考IETF RFC 2518。

  mod_dav_svn是Apache伺服器的一個插件模塊,作爲svn與Apache之間的接口,通過它Apache就可以訪問版本庫,並且可以讓客戶端也使用HTTP的擴展協定WebDAV/DeltaV進行訪問。

  安裝和配置

  與使用SVN協定的svnserve不同,要通過Apache訪問svn,除了必須已經部署好Apache和svn的基本環境外,當然不可缺少的是Apache的mod_dav_svn模塊。

代碼如下

#安裝mod_dav_svn
apt-get install libapache2-svn libsvn1

#啓用mod_dav_svn模塊
a2enmod dav_svn

  注:Ubuntu缺省是啓用mod_dav_svn模塊的。

  創建版本倉庫

  這與使用SVN協定方式的工作是基本相同的。不同點在于需要讓運行Apache的用戶擁有SVN倉庫根路徑的所有權,這樣做可以在SVN倉庫根路徑下創建多個版本庫,並且所有版本庫都使用同一個用戶信息文件和訪問權限文件來管理。

代碼如下

cd /var/local/svndata
svnadmin create dev2
chown -R www-data.www-data /var/local/svndata/

  配置mod_dav_svn
vi /etc/apache2/mods-enabled/dav_svn.conf

#指定SVN倉庫根路徑
SVNParentPath /var/local/svndata

  訪問SVN

代碼如下

#重啓Apache
/etc/init.d/apache2 restart

  通過浏覽器訪問http://ip/svn/repos,即可在浏覽中浏覽SVN庫中的內容。

  加入認證信息

  上面定義的版本倉庫,默認是任何人都可以匿名訪問,並且擁有完全的寫入、讀取、修改、提交、刪除版本庫中信息的權限。因此,我們需要加入認證信息以做權限的管理。HTTP協定版本就提供了簡單的客戶端認證方式,這可通過Apache配置完成。

  Apache提供了一個htpasswd工具來管理,使用該工具可以創建一個文件,其中存放著用戶名和加密後的密碼信息。而這些就是svn可以引用的用戶了,根據這些用戶信息,配合mod_authz_svn模塊即可進行目錄的訪問控制。

  創建存放用戶名信息的文件

代碼如下

htpasswd -c /var/local/svndata/passwdfile mike
New password: <==輸入密碼
Re-type new password:  <==再次輸入密碼
Adding password for user mike
htpasswd其它用法

#新增用戶
htpasswd -m /var/local/svndata/passwdfile NewUserName
#修改用戶密碼
htpasswd -m /var/local/svndata/passwdfile oldUserName
#刪除用戶
htpasswd -D /var/local/svndata/passwdfile oldUserName

  -m是可選的參數,表示強制使用MD5算法加密,當用-c創建用戶名信息文件後,即可修改或添加用戶信息。

更多相關文章
  • 本文章來給各位同學詳細介紹關于Drupal7中配置Memcache方法詳解,希望此方法對各位同學會有所幫助哦.Memcache的配置就不多說,drupal由于模塊較多,數據庫調用頻繁,因此memcache是drupal站點中必備的配置,本文大概列一下Drupal7中關于memcache的配置情況,以
  • 本文章來給各位同學介紹關于在mac中配置memcached方法詳解,有需要配置的朋友可嘗試參考.用homebrew安裝的話,是很簡單的,不過由于自己不懂,走了很多彎路...簡單點說1. 先安裝memcached服務,用 brew install memcached 安裝2. 安裝memcached
  • Linode是一個主機商專業提供XEN虛擬vps了,有不少國內朋友使用都覺得非常的不錯,下文我們來看看Linode XEN虛擬vps安裝配置Ghost方法.我的 vps 情況:操作系統 – CentOS 7 64 位web 伺服器軟件 – ApacheGhost1 基于 Node.js,它本身自帶 ...
  • 今天我們介紹不包括apache環境的配置,只介紹在php中把mysql配置好,讓你的php支持mysql就可以了,如果你沒有配置好我們連接數據庫時會提示Fatal error: Call to undefined function mysql_connect()錯誤的哦,下面我來給各位同學介紹介紹. ...
  • 本文章來給大家介紹ubuntu安裝phpmyadmin方法詳解,phpmyadmin是一款很不錯的mysql數據庫管理軟件,這款軟件兼容性好無需學習,一看就知道如何使用了.在ubuntu下,運行: 代碼如下 sudo
  • 本文章來給各位同學介紹VPS配置安裝nginx和vsftpd方法詳解,有需李解的同學不防參考.linux用的是默認的debian,老而穩定,主機商提供的簡化版本實在簡化,很多不必要的功能都沒有,有些有必要的功能也是需要自己安裝的,這個風格我很喜歡.考慮到資源限制和繼續保持簡單,用的是nginx.爲了
  • 本文章來給各位同學介紹一下nginx啓用SPDY配置方法詳解,希望對各位同學會有所幫助.要openssl 1.0.1版本以上支持的,低于這個版本SPDY是無法啓動的 代碼如下 wget http://nginx.org/download/nginx-1.4.0.tar.gzwget http://w ...
  • 本文章來給各位同學詳細介紹關于Redhat/CentOS通過yum安裝與配置方法詳解,有需要了解學習的同學不防進入參考.1 檢查當前Linux系統是否安裝了vsftp 代碼如下 [[email protected] ~]#rpm -qa|grep vsftpd //若沒有任何輸出內容,則表示當前linux ...
一周排行
  • substr.substring和slice方法區別的文章,網上搜到了許多,文章內容也基本一致.而後,我將其中一篇文章中的代碼挪到本地進行了測試,發現測試結果和原文中的有些出入.我更相信自己親自驗證過後的代碼,隨後小
  • 在php中array_map,array_filter,array_walk三個函數都是對數據操作的,下面我來介紹這三個函數的用法與區別.array_walk:array_walk()返回布爾值,如果回調函數需要直接 ...
  • <books> <book> <author>jack herrington</author> <title>php教程 hacks</title&g ...
  • 網站優化8大誤區經驗總結 ,總結了現在換友情連接與網站優化通用的毛病了,有需要的朋友可參考一下本文章.所以大家在SEO的運用中還存在很多誤區,正南簡單列舉:誤區一.經常喜歡修改標題 修改標題是我們SEO優化中應該盡量
  • 本文我們來看看在windows phone 8的手機,如何開發一個應用程序利用手機上攝像頭的閃光打做手電筒.或許很多人都想到,可以利用手機上攝像頭的閃光燈做手電筒,當然,有利必有害,每次使用的時間不要過長,幾分鍾一般
  • iOS8.1.1怎麽樣iPad2/iphone4s升級iOS8.1.1卡不卡
    iPad2/iphone4s升級iOS8.1.1卡不卡呢,這個問題是所有蘋果4s朋友在升級
  • iphone4s升級ios8.1.1怎麽樣升級ios8.1.1卡不卡
    ios8.1.1今天推出了,這款ios8.1.1出來主要是針對iPhone 4S和iPad
  • 蘋果iphone6s/6c手機app store怎麽充值
    ios設備現在集成了很多的充值方法,我們只需要在ios系統中進入到相關界面就可以進行充值了
  • 在Ubuntu14配置了一個apache環境但發現在目錄顯示時爲403 Forbidden了,這種問題根據我的經驗不是權限問題就是沒有索引或apache中的目錄配置問題,下面一起來看看.剛剛安裝上apache作爲本地
  • windows32位下安裝Redis+連接PHP
    下面我們來看看兩個在windows系統中快速安裝Redis的例子,希望此例子對各位同學會有 ...