ubuntu安裝和配置SVN
第一步:安裝apache2 libapache2-svn subversion
sudo apt-get install apache2
sudo apt-get install subversion
sudo apt-get install libapache2-svn
安裝完后按照提示
Run '/etc/init.d/apache2 restart' to activate new configuration!
重啟apache2
第二步:創(chuàng)建SVN庫和項目
sudo mkdir /home/svn //創(chuàng)建SVN庫
sudo svnadmin create /home/svn/project //創(chuàng)建項目
第三步:創(chuàng)建組并添加成員
sudo addgroup subversion //創(chuàng)建一個叫subversion的組為擁有倉庫所在的目錄
系統(tǒng)提示:正在添加組"subversion" (GID 1001)...
完成。
sudo usermod -G subversion -a www-data //將自己和“www-data”(Apache 用戶)加入組成員中
查看:more /etc/group | grep subversion
系統(tǒng)提示:subversion:x:1001:www-data
第四步:修改項目權限
sudo chown -R root:subversion /home/svn/project
sudo chmod -R g+rws /home/svn/project //賦予組成員對所有新加入文件倉庫的文件擁有相應的權限
查看txn-current-lock文件的權限和用戶以及組信息
ls -l /home/svn/myproject/db/txn-current-lock
系統(tǒng)提示:-rw-rwSr-- 1 root subversion 0 2011-01-25 17:47 /home/svn/project/db/txn-current-lock
第五步:通過命令訪問庫
sudo svn co file://lodalhost/home/svn/project //第一種方法,知道主機名時用
sudo svn co file:///home/svn/project //第二種方法,當不確定主機命時用,這用的是file:///,三個斜杠
系統(tǒng)提示:取出版本 0。
己可以取出版本,說明SVN服務器己正常運行,下面試從webdav訪問
第六步:配置apache2
修改 /etc/apache2/mods-available/dav_svn.conf
sudo vim /etc/apache2/mods-available/dav_svn.conf
加入以下代碼:
================================
Location /svn/project>
DAV svn
SVNPath /home/svn/myproject
AuthType Basic
AuthName "project subversion repository"
AuthUserFile /etc/subversion/passwd
LimitExcept GET PROPFIND OPTIONS REPORT>
Require valid-user
/LimitExcept>
/Location>
如果需要用戶每次登錄時都進行用戶密碼驗證,就將LimitExcept GET PROPFIND OPTIONS REPORT>與/LimitExcept>兩行注釋掉
加入代碼后重啟apache2
第七步:建立/etc/subversion/passwd文件,這個文件里包含了用戶授權的詳細信息
添加用戶
sudo htpasswd -c /etc/subversion/passwd [user_name] //第一次添加用戶使用參數(shù)“-c”以后再添加就不用了
訪問文件倉庫
svn co http://hostname/svn/project project --username [username]
OK!這次通過web頁面訪問到版本庫了,下面試一下導入版本庫
導入版本庫
把/var/www/下的內(nèi)容導入版本號中:
sudo svn import -m "第一次導入" /var/www http://192.168.0.5/svn/project
========================================
系統(tǒng)提示:
認證領域: http://192.168.0.5:80> myproject subversion repository
“root”的密碼:
認證領域: http://192.168.0.5:80> myproject subversion repository
用戶名: test
“test”的密碼:
增加 /var/www/index.html
-----------------------------------------------------------------------
注意! 你的密碼,對于認證域:
http://192.168.0.5:80> myproject subversion repository
只能明文保存在磁盤上! 如果可能的話,請考慮配置你的系統(tǒng),讓 Subversion
可以保存加密后的密碼。請參閱文檔以獲得詳細信息。
你可以通過在“/home/icedot/.subversion/servers”中設置選項“store-plaintext-passwords”為“yes”或“no”,
來避免再次出現(xiàn)此警告。
-----------------------------------------------------------------------
保存未加密的密碼(yes/no)?
請輸入 'yes' 或 'no': yes
提交后的版本為 1。
==========================================
最后在windows下通過TortoiseSVN及web頁面訪問,成功。
==========================================
試驗過程中曾經(jīng)出現(xiàn)過的錯誤
檢出版本庫報錯:
sudo svn co http://192.168.0.5/home/svn/project
svn: 方法 OPTIONS 失敗于 “http://192.168.0.5/home/svn/myproject”: 200 OK (http://192.168.0.5)
這個報錯在網(wǎng)上查了很久,沒什么可借鑒的資料,模糊的覺的可能是說用戶名和權限不對,以待后面確認
sudo svn co file://localhost/home/svn/project
svn: 無法為URL打開ra_local會話
svn: 無法打開版本庫“file://localhost/home/svn/projcet”
1. 安裝SVN
apt-get install subversion
2. 建立svn倉庫
1). 建立svn目錄:mkdir /home/.svn(使用隱藏目錄)
2). cd /home/.svn
3). mkdir astar
4). 創(chuàng)建倉庫astar:svnadmin create /home/.svn/astar,執(zhí)行完畢后astar目錄有svnadmin創(chuàng)建的目錄和文件
5). mkdir test
6). 創(chuàng)建倉庫test:svnadmin create /home/.svn/test,執(zhí)行完畢后test目錄有svnadmin創(chuàng)建的目錄和文件
3. 配置和管理svn
1). 每個倉庫的配置文件在$repos/conf/下,vi svnserve.conf,配置項在[general]下:
anon-access:匿名用戶的權限,可以為read,write和none,默認值read。不允許匿名用戶訪問:anon-access = none
auth-access:認證用戶的權限,可以為read,write和none,默認值write。
password-db:密碼數(shù)據(jù)庫的路徑,去掉前邊的#
authz-db:認證規(guī)則庫的路徑,去掉前邊的#。
注意:這些配置項的行都要頂格,否則會報錯。修改配置后需要重啟svn才能生效。
2). 配置passwd文件
這是每個用戶的密碼文件,比較簡單,就是“用戶名=密碼”,采用的是明碼。如allen=111111
3). 配置authz文件
1. [groups] section:為了便于管理,可以將一些用戶放到一個組里邊,比如:owner=allen,ellen
2. groups下邊的sections表示對一個目錄的認證規(guī)則,比如對根目錄的認證規(guī)則的section為[/]。設置單用戶的認證規(guī)則時一個用戶一行,如:
[/]
allen=rw #allen對根目錄的權限為rw
ellen=r #ellen對根目錄的權限為r
如果使用group,需要在group名字前加@,如
@owner=rw #group owner中的用戶均為rw,等價于上邊的兩句話
啟動時如果從/home/.svn/astar啟動,/就是astar目錄,用如上方式以astar目錄為根設置權限。
如果從/home/.svn/啟動,每個倉庫根還是自己的起始目錄??梢圆捎萌缟戏绞皆O置astar的權限,也可以采用如下方式:
[astar:/]
@owner=rw
設置test的權限如下:
[test:/]
@harry_and_sally = rw
簡言之,每個倉庫的根目錄(/)就是自己的起始目錄;[repos:/]這種方式只適用于多倉庫的情況;[/]適合于單倉庫和單倉庫的方式。
3. 不能跨越倉庫設置權限。
4. 啟動和停止svn
1). 啟動:
1. 從astar目錄啟動,svnserve -d -r /home/.svn/astar,根目錄(/)是astar,authz中規(guī)則的配置使用section[/]。訪問方式為:
svn://192.168.0.87/
2. 從.svn目錄啟動,svnserve -d -r /home/.svn,根目錄(/)是.svn,authz中對astar的配置使用section[astar:/] ,對test的配置使用section[test:/]。訪問方式為:
svn://192.18.0.87/astar
svn://192.18.0.87/test
如果需要svn自啟動,把命令加入/etc/rc.local中
2). 檢查svn服務器是否已經(jīng)啟動(svn默認使用3690端口):netstat -an | grep 3690
3). 停止:killall svnserve
5. svn client
推薦使用TortoiseSVN, http://tortoisesvn.tigris.org/
Eclipse插件,http://subclipse.tigris.org/
作者 t80t90s