【SVN版本管理】
第1章 SVN
希望大家可以一起學習,可以加筆者QQ86416192
1.1 SVN簡介
SVN是Subversion的簡稱,是一個開放源代碼的版本控制系統。
Subversion管理著隨時間改變的數據。這些數據放置在一個中央資料檔案庫
(repository)中。這個檔案庫很像一個普通的文件服務器,不過它會記住每一次文
件的變動。這樣就可以把檔案恢復到舊的版本,或是瀏覽文件的變動歷史。
SVN是一個通用的軟件系統,他不但可以用來管理程序源碼,也可以管理任何類型
的文件,如文本、視頻、圖片等等。
1.2常見版本管理工具
SVN
集中式的版本控制系統,只有一個中央數據倉庫,如果中央數據倉庫掛了或者不可訪問,所有的使用者無法使用
Git
分布式的版本控制系統,在每個使用者電腦上就有一個完整的數據倉庫,沒有網絡依然可以使用Git。當然為了習慣及團隊協作,會將本地數據同步到Git服務器或者GitHub等代碼倉庫。
1.3SVN的運行及訪問模式
獨立服務訪問 ===>svn://svn.etiantian.org/sadoc 簡單,高效
借助Apache等http服務===>http://svn.etiantian.org/sadoc
a、單獨安裝Apache+SVN(不要用,麻煩)
b、csvn(apache+svn)是一個單獨的整合的軟件,帶web界面管理
本地直接訪問 file:///application/svndata/sadoc
1.4SVN數據格式
SVN存儲數據有2種方式:BDB(BerkleyDB,事務安全型)和FSFS(不需要數據庫的存
儲系統,一系列二進制文件)。一方面解決了許多問題 (例如,並行讀寫共享文件)
以及添加了許多新功能(例如運行時的事務特性。)。然而另一方面,數據存儲由此
變得不透明。
由於BDB格式會出現鎖住數據庫的情況,所以現在使用FSFS方式更安全一點。在SVN
1.2版本以前用BDB,以後默認使用FSFS。
1.5SVN安裝
環境要求
CentOS7.2
Selinux和防火墻關閉
安裝SVN
rpm -qasubversion
yum -yinstall subversion
1. 環境檢查
[[email protected]
CentOS Linux release 7.2.1511 (Core)
[[email protected] ~]# getenforce
Disabled
[[email protected] ~]# systemctl statusfirewalld.service
● firewalld.service - firewalld - dynamic firewalldaemon
Loaded:loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset:enabled)
Active:inactive (dead)
2.安裝svn
[[email protected] ~]# rpm -qa subversion
subversion-1.7.14-10.el7.x86_64
3.初始化工作目錄
# 建立SVN版本庫根目錄(svndata)及密碼權限目錄(svnpasswd)
mkdir -p /application/{svndata,svnpasswd}
# 初始化工作目錄
svnadmin create/application/svndata/oldboyedu
4.配置文件
# 賬號權限密碼集中管理,就復制一次,以後創建的版本庫只需要在已有配置文件修改即可,否則覆蓋丟失以前的密碼與權限。
cp/application/{svndata/oldboyedu/conf/{authz,passwd},svnpasswd}
chmod 600 /application/svnpasswd/*
ll -h /application/svnpasswd/*
cd /application/svndata/oldboyedu/conf/
sed -i.ori ‘8a anon-access =none\nauth-access = write\npassword-db = /application/svnpasswd/passwd\nauthz-db= /application/svnpasswd/authz‘ svnserve.conf
diff svnserve.conf{,.ori}
[[email protected] ~]# cp/application/{svndata/oldboyedu/conf/{authz,passwd},svnpasswd}
vnpasswd/passwd\nauthz-db =/application/svnpasswd/authz‘ svnserve.conf
diff svnserve.conf{,.ori}
[[email protected] ~]# chmod 600 /application/svnpasswd/*
[[email protected] ~]# ll -h /application/svnpasswd/*
-rw------- 1 root root 1.1K Jul 18 06:21/application/svnpasswd/authz
-rw------- 1 root root 309 Jul 18 06:21 /application/svnpasswd/passwd
[[email protected] ~]# cd/application/svndata/oldboyedu/conf/
[[email protected] conf]# sed -i.ori ‘8a anon-access =none\nauth-access = write\npassword-db =/application/svnpasswd/passwd\nauthz-db = /application/svnpasswd/authz‘svnserve.conf
[[email protected] conf]# diff svnserve.conf{,.ori}
9,12d8
< anon-access = none
< auth-access = write
< password-db = /application/svnpasswd/passwd
< authz-db = /application/svnpasswd/authz
5.添加賬號密碼
vim /application/svnpasswd/passwd
[users]
# harry = harryssecret
# sally = sallyssecret
root = 123456
oldboy = 654321
vim /application/svnpasswd/authz
[groups]
# harry_and_sally = harry,sally
# harry_sally_and_joe =harry,sally,&joe
35team = root,oldboy
[oldboyedu:/]
root = rw
[oldboyedu:/oldboy]
oldboy = rw
6. 啟動SVN
[[email protected] conf]# svnserve -r /application/svndata/ -d
[[email protected] conf]# ps -ef|grep svn
root 3128 1 0 09:16 ? 00:00:00 svnserve -r/application/svndata/ -d
root 3130 1413 0 09:16 pts/0 00:00:00 grep --color=auto svn
[[email protected] conf]# netstat -tunlp|grep svn
tcp 0 0 0.0.0.0:3690 0.0.0.0:* LISTEN 3128/svnserve
7.SVNwindows客戶端
安裝TortoiseSVN-1.9.4.27285-x64-svn-1.9.4.msi
在安裝LanguagePack_1.9.4.27285-x64-zh_CN.msi
在桌面新建一個文件夾svn_data,單擊右鍵,點SVN更新,輸入地址為你自己機器的IP
svn://10.0.0.201/oldboyedu
點確定,賬號就是你設置的root密碼是123456
在F盤或者隨便哪裏在建立一個新的文件夾test,單擊右鍵,點擊提交或者更新,輸入的地址為
svn://10.0.0.201/oldboyedu/oldboy 輸入的用戶為 oldboy 密碼是654321,然後在文件夾裏面新建文本文檔,寫完保存,點擊提交或者更新。
在桌面點svn_data文件夾,單擊右鍵,點SVN更新,然後在輸入root賬號密碼,就會發現test文件夾和他裏面的文本文檔也順利的更新成功,說明的你windowsSVN成功運行。
新添加賬號步驟
1. 添加賬號密碼到passwd
oldgirl = 111111
2. 添加目錄權限到authz
[oldboyedu:/oldgirl]
oldgirl = rw
3. 使用最高權限用戶(本例為root)在根目錄創建一個oldgirl目錄並提交到SVN服務器
發給員工的賬號:
svn://10.0.0.201/oldboyedu/oldgirl
賬號:oldgirl
密碼:111111
8.Linux客戶端
導入新建的文件夾
[[email protected] ~]# mkdir test
[[email protected] ~]# cd test/
[[email protected] test]# mkdir pc ios
[[email protected] test]# ls
ios pc
[[email protected] test]# svn import svn://10.0.0.201/oldboyedu/ -m "initdir" --username root --password123456 --no-auth-cache
正在增加 ios
正在增加 pc
提交後的版本為 3。
SVNcheckout 檢出目錄
[[email protected] test]# cd
[[email protected] ~]# mkdir oldboy_data
[[email protected] ~]# svn checkoutsvn://10.0.0.201/oldboyedu/oldboy /root/oldboy_data --username oldboy--password 654321 --no-auth-cache
A oldboy_data/新建文本文檔.txt
取出版本 3。
[[email protected] ~]# ls oldboy_data/
新建文本文檔.txt
SVN 更新
[[email protected] ~]# svn update /root/oldboy_data--username oldboy --password 654321 --no-auth-cache
正在升級 ‘oldboy_data‘:
A oldboy_data/111111111.txt
更新到版本 4。
SVN提交(記得-m 添加註釋信息)
[[email protected] ~]# cd oldboy_data/
[[email protected] oldboy_data]# touch linux.txt
[[email protected] oldboy_data]# svn add linux.txt
A linux.txt
[[email protected] oldboy_data]# svn commit /root/oldboy_data --username oldboy--password 654321 --no-auth-cache -m "haha"
正在增加 linux.txt
傳輸文件數據.
提交後的版本為 5。
SVN查看數據
[[email protected] oldboy_data]# svn listsvn://10.0.0.201/oldboyedu/oldboy --username oldboy --password 654321 --no-auth-cache
111111111.txt
linux.txt
新建文本文檔.txt
查看幫助
[[email protected] oldboy_data]# svn help
用法: svn<subcommand> [options] [args]
Subversion 命令行客戶端,版本 1.7.14。
[[email protected] oldboy_data]# svn help co
checkout(co): 從版本庫簽出工作副本。
使用: checkoutURL[@REV]... [PATH]
如果指定 REV,那麽它確定了從 URL 首先查找的版本。
如果省略路徑參數,則 URL 最末尾的目錄名作為目標目錄名。如果指定多個 URL,
則依次將其簽出到 PATH 的子目錄中,子目錄名就是 URL 最末尾的目錄名。
如果使用了 “--force” 選項,在工作副本中未版本控制的障礙路徑,不會自動導
致簽出失敗。 如果障礙路徑與版本庫中的對應路徑類型相同(文件或目錄),它將成
為受版本控制的路徑,但是內容不改變。它意味著障礙路徑的孩子,如果也是障礙路
徑,那麽也會受版本控制。對於障礙路徑中的文件,如果與版本庫內的不同,將視為工
作副本發生本地修改。版本庫中的所有屬性都應用於障礙路徑。
參見 “svn help update” 以獲取報告執行動作的字符列表。
有效選項:
本文出自 “李松陽” 博客,請務必保留此出處http://lsy666.blog.51cto.com/11729318/1948997
【SVN版本管理】