SVN
版本管理工具管理着隨時間改變的各種數據
像普通文件服務器或者ftp服務器,但是,SVN會備份並記錄每個文件每一次的修改記錄
Subversion官網:
http://subversion.tigris.org/
svn客戶端: http://tortoisesvn.net/
svn中文網站: http://www.iusesvn.com/
中文常見問題解答FAQ:http://subversion.apache.org/faq.zh.html
官方手冊:http://svnbook.red-bean.com/ 中英都有
常見的版本管理軟件工具:
Vss cvs SVN git
Git斷網時可以本地管理,當網絡好時再自動同步,git是linuse開發的,和linux系統親密度更好
SVN斷網時則不能管理
Svn訪問方式:
1,獨立服務器訪問
訪問地址如:svn://svn.etiantian.org/sadoc <===通過tcp/ip自定義協議訪問svnserve服務器
2,藉助apache等http服務
訪問地址如:http://svn.etiantian.org/sadoc <===通過WebDAV協議訪問支持Subversion的Apache服務器
a.單獨安裝apache+svn(不要用,配置麻煩,不易維護)
b.CSVN(apache+svn)是一個單獨的整合的軟件,帶web界面管理的svn軟件(網上資料很多)
3.本地直接訪問
訪問地址如:file:///application/svndata/sadoc <===直接通過本地磁盤或者網絡磁盤訪問版本庫
SVN工作原理
Snv相當於一個特殊的數據庫,因爲它要管理數據,所以它上面的數據是不能直觀看到的
svn存儲版本數據有2種方式:BDB(一種事務安全型表類型)和FSFS(一種不需要數據庫的存儲系統,是SVN默認安裝格式)。因爲BDB方式在服務器中斷時,有可能鎖住數據,所以還是FSFS方式更安全一點
SVN的服務器端安裝(單獨服務器形式):
[root@db02 ~]# yum -y install subversion
[root@db02 ~]# rpm -qa subversion
subversion-1.6.11-15.el6_7.x86_64
[root@db02 ~]# mkdir -p /application/svndata <===總的svn數據目錄
[root@db02 ~]# mkdir -p /application/svnpasswd <===總的用戶,密碼,權限管理目錄
[root@db02 ~]# svnserve -d -r /application/svndata/ <===後臺指定服務的根目錄
[root@db02 ~]# lsof -i :3690
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
svnserve 27495 root 3u IPv4 914026 0t0 TCP *:svn (LISTEN)
SVN參數:
[root@linux ~]# svnserve --help
用法: svnserve [-d | -i | -t | -X] [options]
有效選項:
-d [--daemon] : 後臺模式
-i [--inetd] : inetd 模式
-t [--tunnel] : 隧道模式
-X [--listen-once] : 監聽一次方式(調試用)
-r [--root] ARG : 服務的根目錄
-R [--read-only] : 強制只讀;覆蓋版本庫配置文件
--config-file ARG : 從文件 ARG 讀取配置
--listen-port ARG : 監聽端口
[方式: daemon, listen-once]
--listen-host ARG : 監聽主機名稱或IP地址
[方式: daemon, listen-once]
-T [--threads] : 使用線程代替進程 [方式: daemon]
--foreground : 在前臺運行(調試用)
[方式: daemon]
--log-file ARG : svnserve 日誌文件
--pid-file ARG : 寫進程 PID 到文件 ARG
[方式: daemon, listen-once]
--tunnel-user ARG : 隧道用戶名(默認是當前UID對應的用戶名)
[方式: tunnel]
-h [--help] : 顯示本幫助
--version : 顯示程序版本信息
建立項目版本庫:
svnadmin create /application/svndata/sadoc
(默認是FSFS格式)
修改配置:
[root@linux ~]# cd /application/svndata/sadoc/conf/
[root@linux conf]# ls
authz passwd svnserve.conf
[root@linux conf]# cp svnserve.conf svnserve_old.conf
[root@linux conf]# vim svnserve.conf
12 anon-access = none
13 auth-access = write
20 password-db = /application/svnpasswd/passwd
27 authz-db = /application/svnpasswd/authz
[root@linux conf]# cp authz passwd /application/svnpasswd/ <===方便統一管理用戶和權限
[root@linux conf]# cd /application/svnpasswd/
[root@linux svnpasswd]# ls
authz passwd
添加用戶:
[root@linux svnpasswd]# vim passwd
[users]
# harry = harryssecret
# sally = sallyssecret
test01 = 123456
stu01 = 123
stu02 = 456
更改密碼文件權限:
因爲是明文,不能讓非root用戶隨便看賬號密碼文件
[root@linux svnpasswd]# chmod 600 passwd
[root@linux svnpasswd]# ll passwd
-rw-------. 1 root root 372 2月 24 18:04 passwd
設置用戶權限:
[root@linux svnpasswd]# vim authz
[groups]
# harry_and_sally = harry,sally
# harry_sally_and_joe = harry,sally,&joe
test = stu01,stu02
# [/foo/bar]
# harry = rw
# &joe = r
# * =
# [repository:/baz/fuz]
# @harry_and_sally = rw
# * = r
[sadoc:/]
test01 = rw
@test = r
設置用戶子項目管理和權限:
[root@linux svnpasswd]# vim authz
[sadoc:/]
oldboy = rw
gongli = r
@oldboy23 = r
[sadoc:/]
test01 = rw
@test = r
[sadoc:/stu01]
test01 = rw
stu01 = rw
@test = r
[sadoc:/stu02]
test01 = rw
stu02 = rw
@test = r
這樣stu01和stu02兩個用戶之間都可以相互查看對方文件內容,但卻只能更改自己項目目錄的內容,並由test01管理員統一管理
(注:管理員在“/”的基礎上創建管理員
普通用戶在“/”下面的目錄上創建用戶
所以管理員能管理所有用戶的文檔,用戶只能管理自己的文檔)
SVN的客戶端安裝和配置:
windows系統爲客戶端用法:
下載Windows 端程序:http://tortoisesvn.net/downloads.html
下載後安裝軟件,再建一個文件夾,右擊update即可,客戶端配置很簡單,不會配時網上教程一大堆
linux系統爲客戶端用法:
[root@linux sadoc]# svn co svn://192.168.222.102/sadoc/ /sadoc/ --username=oldboy --password=oldboy123
A /sadoc/stu01
A /sadoc/stu01/Hydrangeas.jpg
A /sadoc/stu01/13122301_980x1200_0.jpg
A /sadoc/stu01/Jellyfish.jpg
A /sadoc/stu02
A /sadoc/stu02/12.png
取出版本 15。
[root@linux sadoc]# ls
01 22.doc clipboard.png stu01 stu02
詳細參數用法:
[root@linux svnpasswd]# svn --help <===查看參數意思和用法