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
第二步:建立svn庫和項目
sudo mkdir /home/svn //建立svn庫
sudo svnadmin create /home/svn/project //建立項目
第三步:建立組并添加成員
sudo addgroup subversion //建立一個叫subversion的組為擁有倉庫所在的目錄
系統提示:正在添加組"subversion" (gid 1001)...
完成。
sudo usermod -g subversion -a www-data //将自己和“www-data”(apache 使用者)加入組成員中
檢視:more /etc/group | grep subversion
系統提示: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
系統提示:-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:///,三個斜杠
系統提示:取出版本 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] //第一次添加使用者使用參數“-c”以後再添加就不用了
通路檔案倉庫
svn co http://hostname/svn/project project --username [username]
ok!這次通過web頁面通路到版本庫了,下面試一下導入版本庫
導入版本庫
把/var/www/下的内容導入版本号中:
sudo svn import -m "第一次導入" /var/www http://192.168.0.5/svn/project
========================================
系統提示:
認證領域: <http://192.168.0.5:80> myproject subversion repository
“root”的密碼:
使用者名: test
“test”的密碼:
增加 /var/www/index.html
-----------------------------------------------------------------------
注意! 你的密碼,對于認證域:
<http://192.168.0.5:80> myproject subversion repository
隻能明文儲存在磁盤上! 如果可能的話,請考慮配置你的系統,讓 subversion
可以儲存加密後的密碼。請參閱文檔以獲得詳細資訊。
你可以通過在“/home/icedot/.subversion/servers”中設定選項“store-plaintext-passwords”為“yes”或“no”,
來避免再次出現此警告。
儲存未加密的密碼(yes/no)?
請輸入 'yes' 或 'no': yes
送出後的版本為 1。
==========================================
最後在windows下通過tortoisesvn及web頁面通路,成功。
試驗過程中曾經出現過的錯誤
檢出版本庫報錯:
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)
這個報錯在網上查了很久,沒什麼可借鑒的資料,模糊的覺的可能是說使用者名和權限不對,以待後面确認
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). 建立倉庫astar:svnadmin create /home/.svn/astar,執行完畢後astar目錄有svnadmin建立的目錄和檔案
5). mkdir test
6). 建立倉庫test:svnadmin create /home/.svn/test,執行完畢後test目錄有svnadmin建立的目錄和檔案
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:密碼資料庫的路徑,去掉前邊的#
authz-db:認證規則庫的路徑,去掉前邊的#。
注意:這些配置項的行都要頂格,否則會報錯。修改配置後需要重新開機svn才能生效。
2). 配置passwd檔案
這是每個使用者的密碼檔案,比較簡單,就是“使用者名=密碼”,采用的是明碼。如allen=111111
3). 配置authz檔案
1. [groups] section:為了便于管理,可以将一些使用者放到一個組裡邊,比如:owner=allen,ellen
2. groups下邊的sections表示對一個目錄的認證規則,比如對根目錄的認證規則的section為[/]。設定單使用者的認證規則時一個使用者一行,如:
[/]
allen=rw#allen對根目錄的權限為rw
ellen=r #ellen對根目錄的權限為r
如果使用group,需要在group名字前加@,如
@owner=rw#group owner中的使用者均為rw,等價于上邊的兩句話
啟動時如果從/home/.svn/astar啟動,/就是astar目錄,用如上方式以astar目錄為根設定權限。
如果從/home/.svn/啟動,每個倉庫根還是自己的起始目錄。可以采用如上方式設定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中規則的配置使用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伺服器是否已經啟動(svn預設使用3690端口):netstat -an | grep 3690
3). 停止:killall svnserve
5. svn client
推薦使用tortoisesvn, http://tortoisesvn.tigris.org/
eclipse插件,http://subclipse.tigris.org/