SVN是Subversion的簡稱,是一個開放源代碼的版本控制系統,相較於RCS、CVS,它採用了分支管理系統,它的設計目標就是取代CVS。互聯網上不少版本控制服務已從CVS遷移到Subversion。說得簡單一點SVN就是用於多我的共同開發同一個項目,共用資源的目的。 官網:https://tortoisesvn.net/windows
輸入命令:bash
[root@jin-120 ~]# yum install -y subversion
服務器
建立版本庫:svn
[root@jin-120 ~]# mkdir -p /data/svnroot/myproject [root@jin-120 ~]# svnadmin create /data/svnroot/myproject [root@jin-120 ~]# cd !$ cd /data/svnroot/myproject [root@jin-120 /data/svnroot/myproject]# ls conf db format hooks locks README.txt [root@jin-120 /data/svnroot/myproject]# cd conf [root@jin-120 /data/svnroot/myproject/conf]# ls authz passwd svnserve.conf
其中,authz爲權限配置文件,passwd爲密碼文件。加密
編輯配置文件authz,內容以下:.net
admins = zhangjin,user1 [/] @admins = rw *= r [myproject:/] user1 = rw
而後編輯密碼文件passwd,內容以下:開放源代碼
[users] aming = 123456 user1 = 123456
再編輯svnserve.conf文件,內容以下:設計
[general] anon-access = none auth-access = write password-db = passwd authz-db = authz realm = /data/svnroot/myproject
保存配置文件後,啓動svn服務3d
[root@jin-120 /data/svnroot/myproject/conf]# svnserve -d -r /data/svnroot
查看svn服務是否啓動成功 版本控制
以下圖可見,svn服務監聽的端口爲3690
[root@jin-123 ~]#yum install -y subversion [root@jin-123 ~]# mkdir svntest [root@jin-123 ~]# cd !$ cd svntest [root@jin-123 ~/svntest]# svn checkout svn://192.168.6.120/myproject --username=zhangjin 認證領域: <svn://192.168.6.120:3690> /data/svnroot/myproject 「zhangjin」的密碼: ----------------------------------------------------------------------- 注意! 你的密碼,對於認證域: <svn://192.168.6.120:3690> /data/svnroot/myproject 只能明文保存在磁盤上! 若是可能的話,請考慮配置你的系統,讓 Subversion 能夠保存加密後的密碼。請參閱文檔以得到詳細信息。 你能夠經過在「/root/.subversion/servers」中設置選項「store-plaintext-passwords」爲「yes」或「no」, 來避免再次出現此警告。 ----------------------------------------------------------------------- 保存未加密的密碼(yes/no)?yes 取出版本 0。 [root@jin-123 ~/svntest]# cd myproject/ [root@jin-123 ~/svntest/myproject]# ll -a 總用量 0 drwxr-xr-x. 3 root root 18 4月 4 19:43 . drwxr-xr-x. 3 root root 23 4月 4 19:43 .. drwxr-xr-x. 4 root root 75 4月 4 19:43 .svn
能夠看到,在客戶端上也同步了服務端上的myproject目錄。
那麼,如何在客戶端和服務端上進行文件的同步呢?
咱們首先在客戶端上覆制一份文件/etc/passwd:
[root@jin-123 ~/svntest/myproject]# cp /etc/passwd . [root@jin-123 ~/svntest/myproject]# ls passwd
而後使用命令svn add passwd把文件passwd添加到版本控制中心:
[root@jin-123 ~/svntest/myproject]# svn add passwd A passwd
再用命令svn commit -m "add passwd"把文件上傳到服務器:
[root@jin-123 ~/svntest/myproject]# svn commit -m "add passwd" 正在增長 passwd 傳輸文件數據. 提交後的版本爲 1。
在服務端上使用命令svn up把當前目錄下的文件都更新到最新版:
[root@jin-120 /data/svnroot/myproject]# svn up 正在升級 '.': 已還原「passwd」 版本 1。 [root@jin-120 /data/svnroot/myproject]# ls conf db format hooks locks passwd README.txt
能夠看到,在當前目錄下,也生成了passwd文件。
還能夠在服務端上刪除文件:
[root@jin-120 /data/svnroot/myproject]# svn delete passwd D passwd [root@jin-120 /data/svnroot/myproject]# svn commit -m "del passwd" 正在刪除 passwd 提交後的版本爲 2。
而後在和客戶端上執行svn up命令:
[root@jin-123 ~/svntest/myproject]# ls passwd [root@jin-123 ~/svntest/myproject]# svn up 正在升級 '.': D passwd 更新到版本 2。 [root@jin-123 ~/svntest/myproject]# ls
能夠看到,客戶端上的passwd文件也被同步刪除了。
此外,還能夠用命令svn log查看變動日誌:
[root@jin-123 ~/svntest/myproject]# svn log ------------------------------------------------------------------------ r2 | zhangjin | 2019-04-04 20:17:38 +0800 (四, 2019-04-04) | 1 行 del passwd ------------------------------------------------------------------------ r1 | zhangjin | 2019-04-04 19:53:19 +0800 (四, 2019-04-04) | 1 行 add passwd ------------------------------------------------------------------------
在官網下載安裝包並安裝: 而後在windows下新文件夾myproject,在此文件夾裏用鼠標右鍵選擇SVN Checkout,在彈出的對話框中輸入服務端的倉庫地址:
點「OK」,此時會彈出一個認證窗口,填寫用戶名和密碼後再點擊「OK」:
此時就能夠進行同步了。
在windows此目錄中,新建一個文件test_svn.txt 而後鼠標右鍵,選擇「TortoiseSVN」-->"Add"-->SVN Commit,此時會彈出一個窗口:
而後在Linux服務端上執行命令svn up,便可查看到文件已經同步到服務端上了:
一樣,在Linux服務端上新建文件demo.txt,而後執行如下命令:
[root@jin-120 /data/svnroot/myproject]# echo "hello world" >> demo.txt [root@jin-120 /data/svnroot/myproject]# ls conf db demo.txt format hooks locks README.txt test_svn.txt [root@jin-120 /data/svnroot/myproject]# svn add demo.txt A demo.txt [root@jin-120 /data/svnroot/myproject]# svn commit -m "add demo.txt" 正在增長 demo.txt 傳輸文件數據. 提交後的版本爲 4。
在windows下的myproject文件夾右鍵,選擇Svn Update,此時會彈出一個窗口:
點「OK」按鈕,並進入myproject文件夾下查看是否已同步成功: