1、代碼管理平臺介紹、安裝SVN、客戶端上使用SVN(Linux)、Windows

1、代碼管理平臺介紹html

版本控制,記錄若干文件內容的變化,以便未來查閱特定版本修訂狀況git

版本管理工具發展簡史,CVS→SVN→Gitgithub

CVS:兼容性不太好。web

SVN:太慢。全名:Subversion,是一個開源版本控制系統,始於2000年。數據庫

Git:Linux創始人linus發起的,2005年發佈,最初目的是更好的管理Linux內核代碼。vim

Git和SVN不一樣在於Git不須要依賴服務端就能夠工做,即Git是分佈式的。windows


關於Git和SVN的比較,參考http://blog.lishiming.net/?p=305安全

SVN和Git的最主要的差別——分佈式。bash

SVN優點:服務器

1.存儲

SVN服務器既具備CVS所具備數據儲存的優勢,數據通常不會丟失,同時又擁有本身的特點。SVN是經過關係數據庫及二進制的存儲方式,同時解決了既往不能同時讀寫同一文件等問題,同時增添了本身特有的「零或一」原則。

2.速度

與初始的CVS相比,SVN在速度運行方面有很大提高。由於SVN服務器只支持少許的信息、資源傳輸,與其餘系統相比,更支持的是離線模式,所以避免了網絡擁擠現象的出現。

3.安全性

SVN是一種技術性更加安全的產品,實現了系統和控制兩方面的結合。一方面能夠將系統總體的安全功能有效地分佈在分支系統中,進而保證分支系統能正常運行,從而使各分支系統可以互補,最終在系統總體性的安全性得以保障,經過均衡原則實現最終追求安全的目的。


Git優劣勢:

優勢:

適合分佈式開發,強調個體。

公共服務器壓力和數據量都不會太大。

速度快、靈活。

任意兩個開發者之間能夠很容易的解決衝突。

離線工做。

缺點:

資料少(起碼中文資料不多)。

學習週期相對而言比較長。

不符合常規思惟。

代碼保密性差,一旦開發者把整個庫克隆下來就能夠徹底公開全部代碼和版本信息。


GitHub是基於Git的在線web頁面代碼託管平臺,能夠選擇付費服務。

Gitlab能夠認爲是一個開源的GitHub,二者沒有直接聯繫。

一句話區分,git是管理工具,github是在線的基於git的平臺(或者叫作服務)。gitlab和github同樣,也是一個基於git的提供web界面的代碼管理平臺。


2、安裝SVN

# yum install -y subversion

建立版本庫

# mkdir -p /data/svnroot/myproject   //該目錄路徑可自定義

# svnadmin create /data/svnroot/myproject     //在這個目錄下初始化一些文件

# cd !$/conf   #authz爲權限配置文件,passwd爲密碼文件,svnserve.conf爲SVN倉庫的配置文件。

# vim authz  //配置文件新增內容以下:
[groups]
admins = aming,user1   //加到用戶組的下面

[/]
@admins = rw   //@後面跟組名
* = r   //除了admins組之外的全部人只有只讀的權限。

[myproject:/]
user1 = rw
# myproject指項目名,這種用法適合於/data/svnroot/有多個項目的狀況下,這只是其中一個項目而已。
# 帶冒號指的是一個項目名,這裏只有一個項目,能夠在這下面建立子目錄dir1,dir2。能夠寫成[/dir1]、[/dir2]的形式。
# 兩種不一樣的形式表達而已。一種是[/dir1]、一種是[myproject:/],一個意思。由於這裏只有一個項目。


aliases:別名

groups:用戶組

[/]:指的是/data/svnroot/myproject這個目錄。

倉庫裏面的目錄或者項目裏面的目錄,針對這些項目配置的關於用戶和組的讀寫權限:

[/foo/bar]

[repository:/baz/fuz]

# vim passwd  //[users]下新增
[users]
aming = aming_!(*$123     ##左邊是用戶,右邊是密碼。
user1 = user1_^^^123
user2 = user2-***123

# vim svnserve.conf
[general]  ##在下面增長這5行內容
anon-access = none  ##匿名用戶,沒有權限
auth-access = write  ##被受權的用戶,有寫權限
password-db = passwd  ##用戶密碼存儲位置
authz-db = authz  ##權限控制文件位置,這裏只寫一個字符串,表示這個字符串就是一個文件名,位置在當前目錄下,針對svnserve.conf的相對路徑。
realm = /data/svnroot/myproject  ##表示對哪個項目生效,絕對路徑。

# svnserve -d -r /data/svnroot/   //啓動SVN,-d:deamon的形式,後臺啓動;-r:指定SVN所在路徑;後面也能夠跟到項目名。
# ps aux |grep svn
root       1621  0.0  0.0 162200   656 ?        Ss   19:53   0:00 svnserve -d -r /data/svnroot/
root       1623  0.0  0.0 112676   984 pts/0    S+   19:53   0:00 grep --color=auto svn
# netstat -lntp |grep svn
tcp        0      0 0.0.0.0:3690            0.0.0.0:*               LISTEN      1621/svnserve
# iptables -nvL  //檢查一下有沒有防火牆規則,有的話後續操做不會太順利。


3、客戶端上使用SVN(Linux)

# yum install -y subversion  //另外一臺機器上安裝,安裝好後就可使用svn命令了。
# mkdir svntest
# cd !$
# svn checkout svn://192.168.93.130/myproject --username=aming  //checkout,檢出代碼。若是你到一臺機器上,歷來沒有鏈接過svn服務器的狀況下,執行這一步之後,它就能夠在本機上保存一個曾經你鏈接過的svnserve的用戶名和密碼。上面這條命令能夠把遠程服務端的myproject項目搞到本地來。
認證領域:  /data/svnroot/myproject
「aming」的密碼: aming_!(*$123          //此處的密碼就是配置文件中設置的密碼
-----------------------------------------------------------------------
注意!  你的密碼,對於認證域:

    /data/svnroot/myproject

只能明文保存在磁盤上!  若是可能的話,請考慮配置你的系統,讓 Subversion
能夠保存加密後的密碼。請參閱文檔以得到詳細信息。

你能夠經過在「/root/.subversion/servers」中設置選項「store-plaintext-passwords」爲「yes」或「no」,
來避免再次出現此警告。
-----------------------------------------------------------------------
保存未加密的密碼(yes/no)?yes   //將密碼存在了/root/.subversion/servers下
取出版本 0。
[root@MRX svntest]# ls
myproject
# cd project ; ls -la
總用量 0
drwxr-xr-x 3 root root 18 8月  29 18:43 .
drwxr-xr-x 3 root root 23 8月  29 18:43 ..
drwxr-xr-x 4 root root 75 8月  29 18:43 .svn

[root@MRX myproject]# cp /etc/fstab .
# svn add ./fstab  //添加到版本控制中心,把變動的想要搞到服務器上去的東西作個標記
A         fstab
# svn commit -m "add file"   //把文件上傳到服務器。先增長,再上傳。
# svn commit -m "add fstab"
正在增長       fstab
傳輸文件數據.
提交後的版本爲 1。
# svn delete filename  //在本地刪除
# svn commit -m "delete filename"  //在服務器上刪除
[root@MRX myproject]# svn delete fstab 
D         fstab
[root@MRX myproject]# svn commit -m "delete fstab"
正在刪除       fstab

提交後的版本爲 2。
# svn update  //把當前目錄下的文件都更新到最新版,把本地的和服務端的同步。
# svn log  //查看變動日誌
/root/.subversion/auth/svn.simple下的密碼文件,若是某個用戶不想存儲了,能夠刪除這個文件。


4、客戶端上使用SVN(windows)

官網 https://tortoisesvn.net/index.zh.html

下載TortoiseSVN 並安裝

簡明教程 http://www.jianshu.com/p/6b3b7b915332

下載好後隨便選擇一個文件夾,好比新建一個myproject,右鍵文件夾能夠看到SVN Checkout和TortoiseSVN。

第一次使用時,也要先SVN checkout,點擊以後,會彈出來一個窗口,在最上面的URL of repository裏定義一下服務地址和項目地址就能夠點OK了:svn://192.168.93.130/myproject。


點OK後再定義用戶名和密碼:

aming , aming_!(*$123

再點OK


試驗:

在Windows的myproject目錄下建立一個txt文檔,內容隨便寫一點。再右鍵該文檔,和在Linux上一樣的操做,TortoiseSVN→add,再右鍵SVN commit,在上方空白框內輸入add 123.txt,再點OK就能夠了。


再到服務端或者另外一臺客戶端上svn update同步一下,就能夠看到123.txt了。

在Linux上寫了文檔,一樣的操做,再到Windows上右鍵SVN update一下,一樣能夠看到這個111.txt。

# svn add 111.txt
A         111.txt
[root@MRX myproject]# svn commit -m "add 111.txt"
正在增長       111.txt
傳輸文件數據.
提交後的版本爲 4。
相關文章
相關標籤/搜索