svn版本管理系統的配置與使用


1、SVN簡介
    SVN是一種版本管理系統,前身是CVS,是開源軟件的基石。即便在溝通充分的狀況下,多人維護同一份源代碼的必定也會出現混亂的狀況,版本管理系統就是爲了解決這些問題。
mysql


SVN中的一些概念
       repository(源代碼庫)
            源代碼統一存放的地方
       Checkout (提取)
            當你手上沒有源代碼的時候,你須要從repository checkout一份
       Commit (提交)
            當你已經修改了代碼,你就須要Commitrepository      
       Update (更新
            當你已經Checkout了一份源代碼, Update一下你就能夠和Repository上的源代碼同步,程序員

            你手上的代碼就會有最新的變動

    平常開發過程其實就是這樣的(假設你已經Checkout而且已經工做了幾天):Update(得到最新的代碼);做出本身的修改並調試成功; Commit(你們就能夠看到你的修改了)      
    若是兩個程序員同時修改了同一個文件呢?SVN能夠Merge這兩個程序員的改動,對,合併,實際上SVN管理源代碼是以行爲單位的,就是說兩個程序員只要不是修改了同一行程序,SVN都會自動合併兩種修改。若是是同一行呢,SVN會提示文件Conflict, 衝突,須要手動確認。sql


TortoiseSVN簡介
數據庫

    TortoiseSVN  Subversion 版本控制系統的一個免費開源客戶端,能夠超越時間的管理文件和目錄。文件保存在中央版本庫,除了能記住文件和目錄的每次修改之外,版本庫很是像普通的文件服務器。你能夠將文件恢復到過去的版本,而且能夠經過檢查歷史知道數據作了哪些修改,誰作的修改。這就是爲何許多人將 Subversion 和版本控制系統看做一種時間機器瀏覽器



2、SVN的配置緩存



服務器端的配置
服務器


一、配置好yum,檢查subversion安裝包tcp

   #檢查是否安裝了低版本的SVN#卸載舊版本SVNide

    [root@svn /]# rpm -qa | grep subversion
    [root@svn /]# yum remove subversion
   #安裝SVN
    [root@svn /]# yum install httpd httpd-devel subversion mod_dav_svn mod_auth_mysql
   #確認已安裝了svn模塊
    [root@svn /]# cd /etc/httpd/modules
    [root@svn modules]# ls | grep svn
        mod_authz_svn.so
        mod_dav_svn.sosvn

#測試安裝是否成功,顯示版本說明安裝成功

    [root@svn ~]#svnserve --version



二、建立svn版本庫

    [root@svn /]# mkdir -p /data/svndata

    [root@svn /]# svnadmin create /data/svndata/winne    //winne爲版本庫名稱

    執行上面的命令後,自動創建winne庫,查看/data/svndata/winne 文件夾發現包含了conf, db,format,hooks, locks, README.txt等文件,說明一個SVN庫已經創建。


三、svnserve配置文件概述
    svnserve.conf --svn服務配置文件,該文件版本庫目錄的conf目錄下。
    passwd -- 用戶名口令文件,該文件名在文件svnserve.conf中指定。
    authz -- 權限配置文件,該文件名也在文件svnserve.conf中指定。


(1)conf/svnserve.conf 文件

        配置項分爲如下5項:
            anon-access 控制非鑑權用戶訪問版本庫的權限。
            auth-access 控制鑑權用戶訪問版本庫的權限。
            password-db 指定用戶名口令文件名。
            authz-db 指定權限配置文件名,經過該文件能夠實現以路徑爲基礎的訪問控制。
            realm 指定版本庫的認證域,即在登陸時提示的認證域名稱。

                    若兩個版本庫的認證域相同,建議使用相同的用戶名口令數據文件

[root@svn /]# vi /data/svndata/winne/conf/svnserve.conf


[general]

#匿名訪問的權限,能夠是read,write,none,默認爲read
anon-access=none
#使受權用戶有寫權限
auth-access=write
#密碼數據庫的路徑
password-db=passwd
#訪問控制文件
authz-db=authz
#認證命名空間,subversion會在認證提示裏顯示,而且做爲憑證緩存的關鍵字
realm=/data/svndata/

(2)conf /Passwd 文件

[root@svn /]# vi /data/svndata/winne/conf/passwd


[users]

# harry = harryssecret
# sally = sallyssecret

user1=123456

user2=123456

(3)conf /authz  文件

[root@svn /]# vi /data/svndata/winne/conf/authz


[groups]       設置組

admin = user1

[/]              根目錄權限設置(就是「svndata」這個文件夾)

user1 = rw      用戶1權限是:可讀寫

user2 = r       用戶2權限是:可讀,不可寫

@admin = rw    設置組權限

[svndata:/winne]     設置根目錄下「winne」文件夾的權限

user1 = rw

user2 = r

以此類推


四、配置防火牆

[root@svn /]# vi /etc/sysconfig/iptables
添加如下內容:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3690 -j ACCEPT
保存後重啓防火牆
[root@svn /]# service iptables restart


五、啓動和中止SVN服務

  啓動SVN服務:

    [root@svn ~]# svnserve -d -r /data/svndata/

        -d表示後臺運行

        -r 指定根目錄是/data/svndata/


  中止SVN服務:

    [root@svn ~]# killall svnserve



3、SVN的使用

客戶端使用


Windows客戶端TortoiseSVN的使用

一、TortoiseSVN 客戶端的安裝

clip_p_w_picpath002

測試選擇的是TortoiseSVN 1.6.5客戶端付中文漢化包.


二、客戶端的文件更新至服務器(user1操做)

新建一個空目錄,右鍵Checkout (提取)

svn://192.168.103.26/winne

輸入passwd文件中的受權用戶賬號就能夠了

clip_p_w_picpath004

在目錄中加入一些文件測試而後在空白地方右鍵點TortoiseSVN; ADD 添加列表到服務器端.此時並無真正拷貝到服務器上,需再在Commit(提交)操做纔會拷貝

clip_p_w_picpath006


clip_p_w_picpath008


clip_p_w_picpath010

在版本庫瀏覽器中就能夠看到剛纔提交的文件了,此時提交的版本爲1.

clip_p_w_picpath012


三、客戶端在服務器上拉讀取數據(user2操做)

User2 在機器上新建一個空目錄user2 , 右鍵Checkout (提取)

填入地址: svn://192.168.103.26/winne 輸出至G:\user2肯定

增長一個new.txt的文件,而後Commit (提交)以後提示權限出錯,user2沒有寫的權限,換成user1 的身份才能夠提交成功.

clip_p_w_picpath016


Linux客戶端的使用

    客戶端操做流程通常是:

    用戶A:checkout (提取); add (添加新文件); commit (提交)

    用戶B:SVN log(查看更新); update(更新版本)

一、SVN的安裝

    [root@TEST ~]#yum -y install subversion

二、Linuxsvn的經常使用命令

()內爲命令簡寫.

    checkout (co) 提取

    commit (ci)提交

    update (up) 更新

    list (ls)列表


三、checkout (co) 提取 svn服務器上的文件

    (user1)操做流程

    [root@TEST ~]#svn co svn://192.168.103.26/winne

        Authentication realm: <svn://192.168.103.26:3690> My First Repository

        Password for 'root':  

        Authentication realm: <svn://192.168.103.26:3690> My First Repository

        Username: user1            //輸入用戶名

        Password for 'user1':     //輸入密碼

        A    winne/Cosmic Ride - BeFour.lrc

        A    winne/20070716171657126.pdf

        A    winne/svnbook.pdf

        revision 1./ checkout (co) 提取成功,看到Checked out版本爲1

        注:可使用帶用戶名和密碼的訪問:

        svn co --username user1 --password user1 svn://192.168.103.26/winne

    [root@TEST ~]# ll

    drwxr-xr-x 3 root root4096 Sep 23 09:02 winne    //winne目錄是SVN自動生成的

    drwxr-xr-x 2 root root4096 Jul 30 02:06 tasks

    [root@TEST ~]# cd winne

    [root@TEST winne]# ll

        total 2868

        -rw-r--r-- 1 root root 1566968 Sep 23 08:53 20070716171657126.pdf

        -rw-r--r-- 1 root root2397 Sep 23 08:53 Cosmic Ride - BeFour.lrc

        -rw-r--r-- 1 root root 1354300 Sep 23 08:53 svnbook.pdf


四、user1修改文件並提交

    [root@TEST winne]# vi testsvn.txt

    [root@TEST winne]# svn add testsvn.txt              //將testsvn.txt添加到庫中

Atestsvn.txt

[root@TEST winne]# svn commit -m "test" testsvn.txt     //註釋爲test

Adding testsvn.txt

Transmitting file data .

Committed revision 2.           //版本更新爲2


五、user2window客戶端更新版本

回到Windows的客戶端看日誌版本已經更新爲2,註釋test,客戶端update就能夠更新到新的版本了.

clip_p_w_picpath018

clip_p_w_picpath020


六、Windows客戶端的版本回滾

選中菜單中的update to verisiom ,選擇版本1便可.

clip_p_w_picpath022

clip_p_w_picpath024

七、Linux版本回滾操做:

[root@TEST winne]# svn up -r 1



結束.


subversion 中文手冊:http://svndoc.iusesvn.com/

相關文章
相關標籤/搜索