【SVN版本管理】

第1章 SVN

但願你們能夠一塊兒學習,能夠加筆者QQ86416192python

1.1 SVN簡介

SVNSubversion的簡稱,是一個開放源代碼的版本控制系統。linux

Subversion管理着隨時間改變的數據。這些數據放置在一箇中央資料檔案庫ios

(repository)中。這個檔案庫很像一個普通的文件服務器,不過它會記住每一次文web

件的變更。這樣就能夠把檔案恢復到舊的版本,或是瀏覽文件的變更歷史。數據庫

SVN是一個通用的軟件系統,他不但能夠用來管理程序源碼,也能夠管理任何類型apache

的文件,如文本、視頻、圖片等等。vim

 

 

1.2常見版本管理工具

SVNwindows

集中式的版本控制系統,只有一箇中央數據倉庫,若是中央數據倉庫掛了或者不可訪問,全部的使用者沒法使用SVN,沒法進行提交或備份文件。安全

Git服務器

分佈式的版本控制系統,在每一個使用者電腦上就有一個完整的數據倉庫,沒有網絡依然可使用Git。固然爲了習慣及團隊協做,會將本地數據同步到Git服務器或者GitHub等代碼倉庫。

 

 

1.3SVN的運行及訪問模式

獨立服務訪問 ===>svn://svn.etiantian.org/sadoc 簡單,高效

藉助Apachehttp服務===>http://svn.etiantian.org/sadoc

a、單獨安裝Apache+SVN(不要用,麻煩)

bcsvn(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. 環境檢查

[root@oldboyedu ~]# cat /etc/redhat-release

CentOS Linux release 7.2.1511 (Core)

[root@oldboyedu ~]# getenforce

Disabled

[root@oldboyedu ~]# 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

[root@oldboyedu ~]# 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}

 

 

 

[root@python ~]# cp/application/{svndata/oldboyedu/conf/{authz,passwd},svnpasswd}

vnpasswd/passwd\nauthz-db =/application/svnpasswd/authz' svnserve.conf

diff svnserve.conf{,.ori}

[root@python ~]# chmod 600 /application/svnpasswd/*

[root@python ~]# 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

[root@python ~]# cd/application/svndata/oldboyedu/conf/

[root@python conf]# sed -i.ori '8a anon-access =none\nauth-access = write\npassword-db =/application/svnpasswd/passwd\nauthz-db = /application/svnpasswd/authz'svnserve.conf

[root@python 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

[root@oldboyedu conf]# svnserve -r /application/svndata/ -d

[root@oldboyedu 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

[root@oldboyedu 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客戶端

 

導入新建的文件夾

   [root@oldboyedu ~]# mkdir test

   [root@oldboyedu ~]# cd test/

   [root@oldboyedu test]# mkdir pc ios

   [root@oldboyedu test]# ls

   ios  pc

   [root@oldboyedu test]# svn import svn://10.0.0.201/oldboyedu/ -m "initdir"  --username root --password123456 --no-auth-cache

    正在增長       ios

    正在增長       pc

 

    提交後的版本爲 3

 

 

SVNcheckout 檢出目錄

[root@oldboyedu test]# cd

[root@oldboyedu ~]# mkdir oldboy_data

[root@oldboyedu ~]# svn checkoutsvn://10.0.0.201/oldboyedu/oldboy /root/oldboy_data --username oldboy--password 654321 --no-auth-cache

   A    oldboy_data/新建文本文檔.txt

    取出版本 3

[root@oldboyedu ~]# ls oldboy_data/

    新建文本文檔.txt

 

SVN 更新

[root@oldboyedu ~]# svn update /root/oldboy_data--username oldboy --password 654321 --no-auth-cache

    正在升級 'oldboy_data':

   A    oldboy_data/111111111.txt

    更新到版本 4

 

 

SVN提交(記得-m 添加註釋信息)

   [root@oldboyedu ~]# cd oldboy_data/

   [root@oldboyedu oldboy_data]# touch linux.txt

   [root@oldboyedu oldboy_data]# svn add linux.txt

   A         linux.txt

   [root@oldboyedu oldboy_data]# svn commit /root/oldboy_data --username oldboy--password 654321 --no-auth-cache -m "haha"

    正在增長       linux.txt

    傳輸文件數據.

    提交後的版本爲 5

   

   

SVN查看數據

[root@oldboyedu oldboy_data]# svn listsvn://10.0.0.201/oldboyedu/oldboy --username oldboy --password 654321 --no-auth-cache

   111111111.txt

   linux.txt

    新建文本文檔.txt

 

   

查看幫助

[root@oldboyedu oldboy_data]# svn help

用法: svn<subcommand> [options] [args]

Subversion 命令行客戶端,版本 1.7.14

 

 

[root@oldboyedu oldboy_data]# svn help co

checkout(co): 從版本庫簽出工做副本。

使用: checkoutURL[@REV]... [PATH]

 

  若是指定 REV,那麼它肯定了從 URL 首先查找的版本。

 

  若是省略路徑參數,則 URL 最末尾的目錄名做爲目標目錄名。若是指定多個 URL

  則依次將其簽出到 PATH 的子目錄中,子目錄名就是 URL 最末尾的目錄名。

 

  若是使用了 --force 選項,在工做副本中未版本控制的障礙路徑,不會自動導

  致簽出失敗。 若是障礙路徑與版本庫中的對應路徑類型相同(文件或目錄),它將成

  爲受版本控制的路徑,可是內容不改變。它意味着障礙路徑的孩子,若是也是障礙路

  徑,那麼也會受版本控制。對於障礙路徑中的文件,若是與版本庫內的不一樣,將視爲工

  做副本發生本地修改。版本庫中的全部屬性都應用於障礙路徑。

 

  參見 svn help update 以獲取報告執行動做的字符列表。

 

有效選項

相關文章
相關標籤/搜索