22.1 代碼管理平臺介紹html
22.2 安裝svnlinux
22.3 客戶端上使用svn(linux)git
22.4 客戶端上使用svn(windows)github
擴展內容web
同窗分享的svn文檔 數據庫
http://note.youdao.com/noteshare?id=1bb87a28a2973ae5722bf765882c2d8fvim
svn 多倉庫管理 windows
http://elim.iteye.com/blog/1171108服務器
svn+ssh 網絡
http://www.linuxfly.org/post/450/
svn清除保存的用戶名和密碼
http://holy2010.blog.51cto.com/1086044/645944
svn命令詳解
http://blog.sina.com.cn/s/blog_963453200101eiuq.html
22.1 代碼管理平臺介紹
你要了解的常識
好比咱們公司開發的項目,咱們須要把這個代碼放到平臺裏去管理
1.版本控制,記錄若干文件內容變化,以便未來查閱特定版本修訂狀況
#好比一個項目(代碼)咱們作了屢次變動,改善或更新。可以很方便的來查看
#好比,我變動了一些代碼,別人也變動一些代碼,若是有變動的話,你們都要知道,那變動了。這就設計到了協同開發,也就是說這一個文檔咱們兩我的一些在寫,最後合併成一個文檔
2.版本管理工具發展簡史,cvs→svn→git 參考http://luckypoem14.github.io/test/2012/04/24/scm-history/
#早期流行cvs,可是兼容性不太好。後來就有人開發了svn,可是又有人發現svn也很差使,太慢。而後又開發出了git
#svn是cs架構,依賴於網絡(客戶端、服務端模式),沒網的狀況下開發就會遇到困難,沒辦法把代碼推到服務器上去
#git在本地電腦裏搞一個版本庫,就在我本地電腦裏去控制。當有了網絡以後,在統一的傳到網絡上的那臺核心服務器上去
3.svn全稱subversion,是一個開源版本控制系統,始於2000年
4.git是linux創始人linus發起的,2005年發佈,最初目的是更好管理linux內核代碼
5.git和svn不一樣在於git不須要依賴服務端就能夠工做,即git是分佈式的
6.關於git和svn的比較你們參考http://blog.lishiming.net/?p=305
7.github是基於git的在線web頁面代碼託管平臺,能夠選擇付費服務
8.gitlab能夠認爲是一個開源的github,二者沒有直接關係
能夠認爲gitlab與github是一個東西,可是本質上仍是有區別的
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
22.2 安裝svn
由於是cs架構,因此必需要有服務端,咱們才能正常的使用它。因此先安裝一個服務端
1.yum install -y subversion
2.建立版本庫
#什麼叫版本庫,咱們拿版本控制版本管理工具。那咱們要作的就是建立版本,建立一些項目,咱們把代碼放到這個項目裏(也就是倉庫裏)
mkdir -p /data/svnroot/myproject
#版本庫的目錄自定義
svnadmin create /data/svnroot/myproject
#由於咱們建立的版本庫是空的,因此要用svnadmin create初始化一下,生成一些文件
3.cd /data/svnroot/myproject/conf
#authz爲權限配置文件,passwd爲密碼文件,svnserver.conf是倉庫的配置文件,也經過這個配置文件來啓動這個服務
4.vim authz//配置文件改成以下
[groups]
admins = aming,user1
[/] #指的是myproject這個目錄(也就是咱們的項目名了)
@admins = rw
*= r
[myproject:/] #指的是svnroot這個目錄下myproject項目。這種方式適合用在svn下有多個目錄(項目)的狀況下。此時的myproject只是其中一個項目而已
user1 = rw
5.vim passwd//加入以下內容,定義用戶與密碼
[users]
aming = aming_!(*$123
user1 = user1_^^^123
user2 = user2-***123
6.vim svnserver.conf//更改或增長以下內容
[general]
anon-access = none #匿名用戶爲沒有任何權限
auth-access = write #被受權的用戶(使用用戶及密碼登陸的)爲寫權限
password-db = passwd #用戶的密碼存在哪裏。指的是文件,當前目錄下
authz-db = authz #權限控制的文件在哪裏(或是哪個)。指的是文件,當前目錄下
realm = /data/svnroot/myproject #對那個項目生效。絕對路徑
7.svnserve -d -r /data/svnroot //這樣就啓動了
#-d後臺啓動
#-r指定svn所在的路徑在哪裏,路徑也能夠寫svnserve -d -r /data/svnroot/myproject
實例:
[root@axinlinux-01 ~]# yum install -y subversion #先安裝
[root@axinlinux-01 ~]# mkdir -p /data/svnroot/myproject #建立版本庫
[root@axinlinux-01 ~]# svnadmin create /data/svnroot/myproject #初始化文件
[root@axinlinux-01 ~]# ls -la /data/svnroot/myproject #看一下有哪些文件
總用量 8
drwxr-xr-x 6 root root 86 11月 21 19:57 .
drwxr-xr-x 3 root root 23 11月 21 19:55 ..
drwxr-xr-x 2 root root 54 11月 21 19:57 conf #咱們須要修改的是這個conf目錄裏的文件
drwxr-sr-x 6 root root 233 11月 21 19:57 db
-r--r--r-- 1 root root 2 11月 21 19:57 format
drwxr-xr-x 2 root root 231 11月 21 19:57 hooks
drwxr-xr-x 2 root root 41 11月 21 19:57 locks
-rw-r--r-- 1 root root 229 11月 21 19:57 README.txt
[root@axinlinux-01 ~]# cd !$/conf
cd /data/svnroot/myproject/conf
[root@axinlinux-01 conf]# ls #這三個文件都很重要
authz passwd svnserve.conf #authz是用來控制權限的。passwd是密碼文件。svnserver.conf是倉庫的配置文件,也經過這個配置文件來啓動這個服務
[root@axinlinux-01 conf]# vim authz #編輯權限文件
[aliases] #別名相關的
# joe = /C=XZ/ST=Dessert/L=Snake City/O=Snake Oil, Ltd./OU=Research Institute/CN=Joe Average
[groups] #用戶組。下面是對應倉庫裏面的目錄,或者說是你的項目對應下面的目錄。針對這些目錄、用戶或是組有是樣的權限,讀寫或是讀?
# harry_and_sally = harry,sally
# harry_sally_and_joe = harry,sally,&joe
admins = aming,user1 #組名叫admins,組下面包含aming和user1
[/] #目錄。只得就是咱們上面建立的 /data/svnroot/myproject目錄(也就是咱們的項目)。這裏寫根(/),只得就是 /data/svnroot/myproject這個目錄下的
@admins = rw #admins組的權限是rw
*= r #除了admins組以外剩餘的人是r的權限
[myproject:/] #mypreject指的是項目的名字,也能夠寫其餘的。適合用在/data/svnroot/myproject這個路徑裏,avnroot目錄下有多個項目的狀況下
user1 = rw
[root@axinlinux-01 conf]# vim passwd #編輯密碼
aming = aming_!(*$123
user1 = user1_^^^123
user2 = user2-***123
[root@axinlinux-01 conf]# vim svnserve.conf #編輯幾項配置
[general]
anon-access = none #匿名用戶爲沒有任何權限
auth-access = write #被受權的用戶(使用用戶及密碼登陸的)爲寫權限
password-db = passwd #用戶的密碼存在哪裏。指的是文件,當前目錄下
authz-db = authz #權限控制的文件在哪裏(或是哪個)。指的是文件,當前目錄下
realm = /data/svnroot/myproject #對那個項目生效。絕對路徑
[root@axinlinux-01 conf]# svnserve -d -r /data/svnroot/ #啓動
[root@axinlinux-01 conf]# ps aux |grep svn
root 2740 0.0 0.0 182800 812 ? Ss 20:37 0:00 svnserve -d -r /data/svnroot/
[root@axinlinux-01 conf]# netstat -lntp
tcp 0 0 0.0.0.0:3690 0.0.0.0:* LISTEN 2740/svnserve
[root@axinlinux-01 conf]# iptables -nvL #無規則
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
22.3 客戶端上使用svn(linux)
1.yum install -y subversion
客戶端是須要安裝的
2.svn checkout svn://192.168.208.128/myproject --username=aming
#checkout是檢出代碼。ip爲服務端ip。myproject爲要檢出的哪一個項目。--username爲指定哪一個用戶登陸
若是一臺機器歷來沒用過這個,執行這一步就會在本機上保存一個,曾經鏈接過的svnserver的用戶名和密碼
3.cd myproject ; ls -la
如下,將客戶端的數據同步上傳到服務端 :
4.cp /etc/fstab .
#將一個文件拷貝到myproject目錄(項目)下來。至關於在客戶端增長了數據
5.svn add . //添加到版本控制中心
#僅僅只是添加到了版本控制中心
6.svn commit -m 「add file」 //把文件上傳到服務器
#再執行這一步才能將數據同步上傳到服務端。服務端還須要執行svn up
7.svn delete filename //在本地刪除
8.svn commit -m 「delete filename」 //在服務器上刪除
9.svn update //把當前目錄下的文件都更新到最新版
#可簡寫爲svn up。曾經登錄過就後保存用戶和密碼,svn up的時候就不會再次輸入
10.svn log //查看變動日誌
實例:
[root@axinlinux-01 ~]# cd /home/
[root@axinlinux-01 home]# mkdir svntest #先進入到這個目錄下,讓他檢出到這裏
[root@axinlinux-01 svntest]# svn checkout svn://192.168.208.128/myproject --username=aming #輸入密碼登陸(以前設置的)
[root@axinlinux-01 svntest]# ls #能夠看到就有了這個目錄
myproject
[root@axinlinux-01 svntest]# ls -la myproject/
總用量 0
drwxr-xr-x 3 root root 18 11月 21 21:28 .
drwxr-xr-x 3 root root 23 11月 21 21:28 ..
drwxr-xr-x 4 root root 75 11月 21 21:28 .svn #這個就是svn的配置文件
好比咱們在服務端更新了一些文件
咱們登陸另外一臺機器
[root@axinlinux-03 home]# svn checkout svn://192.168.208.128/myproject --username=user1
[root@axinlinux-03 home]# ls #能夠看到這個目錄(項目)
myproject
[root@axinlinux-03 myproject]# cp /etc/fstab . #咱們把這個文件拷貝過來
[root@axinlinux-03 myproject]# ls
fstab
咱們已經跟本地的項目裏面建立了一些文件(fstab),那麼咱們須要把變動搞到服務端上去
[root@axinlinux-03 myproject]# svn add ./fstab #使用svn add來搞到服務端。但僅僅只是增長了打了個標記,只存在版本工具的數據庫裏。咱們還須要提交上傳的動做
A fstab
[root@axinlinux-03 myproject]# svn commit -m "add fatab" #使用svn commit來上傳到服務端
正在增長 fstab
傳輸文件數據.
提交後的版本爲 1。
[root@axinlinux-01 myproject]# ls #回到本機看一下,並無顯示
[root@axinlinux-01 myproject]# svn up #須要用svn up來升級一下。沒有輸入密碼,下面爲解釋
正在升級 '.':
A fstab
更新到版本 1。
[root@axinlinux-01 myproject]# ls #而後就有了
fstab
咱們在服務端上再次svn up的時候並無提示輸入密碼,是由於已經登陸過了,被保存了。保存在了:
[root@axinlinux-01]# cd /root/.subversion/auth/svn.simple #根據登陸時的提示能夠找到
[root@axinlinux-01 svn.simple]# ls
9c376e8a0ecd3f9b80d250b03ce2e3de
[root@axinlinux-01 svn.simple]# cat 9c376e8a0ecd3f9b80d250b03ce2e3de #用戶和密碼都是明文存儲到了這
K 8
passtype
V 6
simple
K 8
password
V 12
user1_^^^123
K 15
svn:realmstring
V 52
<svn://192.168.208.128:3690> /data/svnroot/myproject
K 8
username
V 5
user1
END
[root@axinlinux-01 svn.simple]# rm -rf 9c376e8a0ecd3f9b80d250b03ce2e3de #若是不想存儲能夠把它刪掉
而後咱們再去客戶端作一個變動
[root@axinlinux-03 myproject]# ls
fstab
[root@axinlinux-03 myproject]# vim fstab #把剛纔那個文件隨便加一行
[root@axinlinux-03 myproject]# svn add ./fstab #會有警告
svn: 警告: W150002: 「/home/myproject/fstab」已歸入版本控制
svn: E200009: 由於一些目標已經版本化,因此不能增長所有目標
svn: E200009: 此請求操做的目標非法
[root@axinlinux-03 myproject]# svn commit -m "ch fstab" #這時候咱們把變動的推送到了服務端
正在發送 fstab
傳輸文件數據.
提交後的版本爲 2。
[root@axinlinux-01 svntest]# cd myproject/ #再回到服務端來,作同步
[root@axinlinux-01 myproject]# ls
fstab
[root@axinlinux-01 myproject]# svn up #svn up以後,會讓咱們輸入root的密碼。直接回車就好
正在升級 '.':
認證領域: <svn://192.168.208.128:3690> /data/svnroot/myproject
「root」的密碼:
認證領域: <svn://192.168.208.128:3690> /data/svnroot/myproject #回車以後就會讓咱們輸入用戶和密碼了
用戶名:
[root@axinlinux-01 myproject]# cat fstab #能夠cat一下,就能夠看到咱們增長的那一行
[root@axinlinux-01 myproject]# svn delete fstab #刪除變動文件
D fstab
[root@axinlinux-01 myproject]# svn commit -m "delete fatab"
正在刪除 fstab
提交後的版本爲 3。
[root@axinlinux-03 myproject]# svn up #在另外一臺上要svn up
正在升級 '.':
D fstab
更新到版本 3。
[root@axinlinux-03 myproject]# ls #再次查看就沒有了
[root@axinlinux-03 myproject]# svn log
------------------------------------------------------------------------
r3 | user1 | 2018-11-21 22:56:40 +0800 (三, 2018-11-21) | 1 行
delete fatab
------------------------------------------------------------------------
r2 | user1 | 2018-11-21 22:45:42 +0800 (三, 2018-11-21) | 1 行
ch fstab
------------------------------------------------------------------------
r1 | user1 | 2018-11-21 22:25:58 +0800 (三, 2018-11-21) | 1 行
add fatab
------------------------------------------------------------------------
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
22.4 客戶端上使用svn(windows)
1.官網 https://tortoisesvn.net/index.zh.html
小烏龜svn
2.下載TortoiseSVN 並安裝
3.簡明教程 http://www.jianshu.com/p/6b3b7b915332
實例:
點進去就直接下載了,安裝就好了
實際操做中,官方下載的安裝不了。最後從金山軟件裏找到下載的
下載完成後,重啓一下電腦。右鍵會有小烏龜的圖標就表明能夠了
在windows上新建一個文件夾就叫myproject,做爲咱們的項目目錄。鼠標放在myproject目錄上,點擊右鍵,選擇svn checkout。
在myproject目錄裏,新建一個txt。隨便寫點東西,保存。而後右鍵這個txt文件,選擇add。此時該文件圖標就多了個加號
而後再,右鍵,點擊commit
此時,該文件的圖標就變成了一個綠色的對號
而後,咱們再到linux服務端上,或者是另外一個客戶端上
[root@axinlinux-03 myproject]# pwd
/home/myproject
[root@axinlinux-03 myproject]# svn up
正在升級 '.':
A 1.txt
更新到版本 4。
[root@axinlinux-03 myproject]# cat 1.txt
aaaaaaaaaaaa
bbbbbbbbbbbb
cccccccccccc
咱們在測試將linux上變動,在windows上查看
[root@axinlinux-03 myproject]# vim 121.txt
[root@axinlinux-03 myproject]# ls
121.txt 1.txt
[root@axinlinux-03 myproject]# svn add 121.txt
A 121.txt
[root@axinlinux-03 myproject]# svn commit -m "add 121.txt"
正在增長 121.txt
傳輸文件數據.
提交後的版本爲 5。
在windows上,右鍵myproject目錄,選擇svn update