1:代碼管理平臺:代碼版本管理工具,工做中用於代碼更新,代碼發佈統計,代碼版本控制;(頻繁更新代碼的版本記錄),方便查閱歷史變動,協同開發及合併;html
版本管理工具發展: cvs(編碼兼容不太好) ----> svn -----> git linux
svn(subversion),是一個開源版本控制系統,始於2000年; C/S架構,要依賴於網絡;nginx
git是有linux創始人linus發起,目的用於更好的管理linux內核的代碼;git
git和svn的區別是:git是分佈式,不須要依賴服務端就能夠工做,github
github是基於git的在線web頁面的代碼管理平臺,能夠選擇付費服務;web
gitlab能夠認爲是一個開源的github,二者沒有直接關係;數據庫
1:安裝svn:yum install -y subversion:vim
2:建立版本庫; 建立一個目錄----建立配置文件windows
[root@localhost_001 ~]# mkdir -p /data/svnroot/myproject [root@localhost_001 ~]# svnadmin create /data/svnroot/myproject/ [root@localhost_001 ~]# ls /data/svnroot/myproject/ conf db format hooks locks README.txt
3:進入到conf目錄下; 有三個文件: /data/svnroot/myprojict/bash
[root@localhost_001 ~]# cd !$conf cd /data/svnroot/myproject/conf [root@localhost_001 conf]# ls authz passwd svnserve.conf
authz:權限配置文件;
passwd:密碼文件;
svnserve.conf: 倉庫的配置文件;
4:編輯authz文件,修改其權限:
[root@localhost_001 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 #定義組: [/] #根目錄表示上面建立的/data/svnroot/myproject @admins = rw *= r [myproject:/] #表示myproject這個項目 user1 = rw
註釋: [/] 和 [myproject:/]這是兩種不一樣的方式:
[/] 是隻一個目錄下全部項目表示是以前建立的svn的目錄(/data/svnroot/myproject)
[myproject:/] 表示的是一個項目,只表示myproject這個項目;
5:編輯passwd,定義用戶名和密碼: 格式: 用戶名 密碼
[root@localhost_001 conf]# cat passwd [users] # harry = harryssecret # sally = sallyssecret fenye = nihao123! user1 = nihao123@ user2 = nihao123#
6:編輯倉庫配置文件:svnserver.conf
[root@localhost_001 conf]# cat svnserve.conf [general] anon-access = none #匿名用戶沒有權限; auth-access = write #受權用戶能夠寫的;(用戶名和密碼登陸) password-db = passwd #用戶名和密碼的文件存在在哪裏; authz-db = authz #權限的文件存放在哪裏; realm = /data/svnroot/myproject #對哪個項目生效; 絕對路徑;
7:svn啓動; svnroot -d -r /data/svnroot
[root@localhost_001 conf]# svnserve -d -r /data/svnroot/
8:svnserver監聽端口是3690,
[root@localhost_001 conf]# ps aux |grep svn root 2048 0.0 0.0 162240 656 ? Ss 00:29 0:00 svnserve -d -r /data/svnroot/ root 2050 0.0 0.0 112720 972 pts/0 S+ 00:29 0:00 grep --color=auto svn [root@localhost_001 conf]# netstat -npt [root@localhost_001 conf]# netstat -lnpt Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 854/nginx: master p tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 819/sshd tcp 0 0 0.0.0.0:56888 0.0.0.0:* LISTEN 819/sshd tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1044/master tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 854/nginx: master p tcp 0 0 0.0.0.0:3690 0.0.0.0:* LISTEN 2048/svnserve
9:在客戶端測試:須要安裝 yum install -y subversion
而後在客戶端鏈接遠程svn服務器; 以下:
svn checkout svn://192.168.149.129/myproject --username=fenye
輸入密碼後進入; 密碼保存在服務器的passwd文件裏喲;
[root@localhost_002 ~]# svn checkout svn://192.168.149.129/myproject --username=fenye 認證領域: <svn://192.168.149.129:3690> /data/svnroot/myproject 「fenye」的密碼: ----------------------------------------------------------------------- 注意! 你的密碼,對於認證域: <svn://192.168.149.129:3690> /data/svnroot/myproject 只能明文保存在磁盤上! 若是可能的話,請考慮配置你的系統,讓 Subversion 能夠保存加密後的密碼。請參閱文檔以得到詳細信息。 你能夠經過在「/root/.subversion/servers」中設置選項「store-plaintext-passwords」爲「yes」或「no」, 來避免再次出現此警告。 ----------------------------------------------------------------------- 保存未加密的密碼(yes/no)?yes 取出版本 0。
2:用ls查看是有project這個目錄的,而後進入這個目錄,查看目錄下的隱藏文件.svn(svn的配置文件在這個目錄);
[root@localhost_002 ~]# ls #用ls查看有project目錄; myproject [root@localhost_002 ~]# cd myproject/ [root@localhost_002 myproject]# ls -la drwxr-xr-x 3 root root 18 11月 20 17:37 . dr-xr-x---. 12 root root 4096 11月 20 17:37 .. drwxr-xr-x 4 root root 75 11月 20 17:37 .svn
3:客戶端的文件變動了以後,須要和服務端同步一下;那麼如何同步了,以下:
本地建立一個fenye.txt的文件,而後使用svn add ./fenye.txt 打標記,添加到版本管理數據庫裏;
而後使用svn commit -m "add fenye.txt" 把文件上傳到服務器;
客戶端: [root@localhost_002 myproject]# touch fenye.txt [root@localhost_002 myproject]# svn add ./fenye.txt #添加版本控制中心; A fenye.txt [root@localhost_002 myproject]# svn commit -m "add fenye.txt" #上傳至服務器; 正在增長 fenye.txt 傳輸文件數據. 提交後的版本爲 1。
4:已經上傳到了服務端,而在其餘的客戶端仍是沒法顯示,那麼怎麼辦;在另外一個臺客戶端上查看:
使用 svn up 同步其餘客戶端代碼過來;
[root@localhost_04 ~]# svn checkout svn://192.168.149.129/myproject --username=fenye 認證領域: <svn://192.168.149.129:3690> /data/svnroot/myproject 「fenye」的密碼: ----------------------------------------------------------------------- 注意! 你的密碼,對於認證域: <svn://192.168.149.129:3690> /data/svnroot/myproject 只能明文保存在磁盤上! 若是可能的話,請考慮配置你的系統,讓 Subversion 能夠保存加密後的密碼。請參閱文檔以得到詳細信息。 你能夠經過在「/root/.subversion/servers」中設置選項「store-plaintext-passwords」爲「yes」或「no」, 來避免再次出現此警告。 ----------------------------------------------------------------------- 保存未加密的密碼(yes/no)?yes A myproject/fenye.txt 取出版本 1。 [root@localhost_04 ~]# ls anaconda-ks.cfg myproject [root@localhost_04 ~]# cd myproject/ [root@localhost_04 myproject]# svn up 正在升級 '.': 版本 1。 [root@localhost_04 myproject]# ls fenye.txt
如上就但是在幾個客戶端之間同步了;
把當前目錄下svn更新到最新版; svn update = svn up
本地刪除svn文件fenye.txt
[root@localhost_04 myproject]# ls fenye.txt [root@localhost_04 myproject]# svn delete fenye.txt D fenye.txt
刪除遠端服務器的svn文件fenye.txt
[root@localhost_04 myproject]# svn commit -m "delete fenye.txt" 正在刪除 fenye.txt 提交後的版本爲 2。
更新當前svn目錄爲最新版,服務端已經刪除,本地尚未,更新下則刪除本地的文件;
[root@localhost_002 myproject]# ls fenye.txt [root@localhost_002 myproject]# svn update 正在升級 '.': D fenye.txt 更新到版本 2。 [root@localhost_002 myproject]# ls
註釋:svn客戶端輸入一次後就會記住密碼; 位置:/root/.subversion/auth/svn.simple/
[root@localhost_002 ~]# cd /root/.subversion/auth/svn.simple/ [root@localhost_002 svn.simple]# ls fe73cf291c2ec6f05f9a8b54789036fe [root@localhost_002 svn.simple]# cat fe73cf291c2ec6f05f9a8b54789036fe K 8 passtype V 6 simple K 8 password V 9 nihao123! K 15 svn:realmstring V 52 <svn://192.168.149.129:3690> /data/svnroot/myproject K 8 username V 5 fenye END
若是不想記住,能夠刪除這個文件; rm -fr
註釋:系統裏默認會記錄曾經受權過的用戶名和密碼,不須要每次都輸入;
如在02這個客戶端刪除/root/.subversion/auth/svn.simple/下文件,而後在02這臺機器上在更新一個文件,而後在02在同步時則發現須要輸入root的密碼和密碼,回車後輸入用戶名和密碼,而後能夠正常同步,以下;
客戶端03: [root@localhost_04 myproject]# touch yy.txt root@localhost_04 myproject]# svn add ./yy.txt A yy.txt [root@localhost_04 myproject]# svn commit -m "ch yy.txt" 正在增長 yy.txt 傳輸文件數據. 提交後的版本爲 3。 客戶端02: [root@localhost_002 myproject]# svn up 正在升級 '.': 認證領域: <svn://192.168.149.129:3690> /data/svnroot/myproject 「root」的密碼: 認證領域: <svn://192.168.149.129:3690> /data/svnroot/myproject 用戶名: fenye 「fenye」的密碼: ----------------------------------------------------------------------- 注意! 你的密碼,對於認證域: <svn://192.168.149.129:3690> /data/svnroot/myproject 只能明文保存在磁盤上! 若是可能的話,請考慮配置你的系統,讓 Subversion 能夠保存加密後的密碼。請參閱文檔以得到詳細信息。 你能夠經過在「/root/.subversion/servers」中設置選項「store-plaintext-passwords」爲「yes」或「no」, 來避免再次出現此警告。 ----------------------------------------------------------------------- 保存未加密的密碼(yes/no)?yes 版本 2。 [root@localhost_002 myproject]# ls yy.txt
這樣既能夠了;
也能夠查看變動歷史: svn log
[root@localhost_002 myproject]# svn log ------------------------------------------------------------------------ r3 | fenye | 2018-11-18 01:28:19 +0800 (日, 2018-11-18) | 1 行 ch yy.txt ------------------------------------------------------------------------ r2 | fenye | 2018-11-18 01:16:17 +0800 (日, 2018-11-18) | 1 行 delete fenye.txt ------------------------------------------------------------------------ r1 | fenye | 2018-11-18 01:02:17 +0800 (日, 2018-11-18) | 1 行 add fenye.txt ------------------------------------------------------------------------
7:在windows如何使用svn客戶端; tortoisesvn小烏龜
首先在https://tortoisesvn.net官網下載軟件,對應電腦32位和64位來下載;
而後在D盤的123目錄下建立一個文件夾myproject;
右擊目錄--->svn checkout
url of repository 設置svn服務的地址: svn://192.168.149.129/myproject
checkout directory D:/123/myproject
點擊保存,添加用戶名和密碼;
在windows客戶端建立了一個文件後,點擊文件右鍵---->tortoisesvn---> add(帶了一個小加號) 也須要使用commit提交才能夠;
註釋:擋在linux客戶端更新後,須要在windows客戶端也要修改使用svn up, 也是右擊才能夠;
擴展:
svn的鉤子 http://coolnull.com/1716.html
gitlab修改端口 http://blog.csdn.net/arybd/article/details/54635295
修改主機名 http://www.mamicode.com/info-detail-1316828.html
第三方郵件 http://blog.csdn.net/liuruiqun/article/details/50000213
應該修改 /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml
# If you use non-standard ssh port you need to specify it
ssh_port: xxxxx
gitlab的鉤子相關配置 http://fighter.blog.51cto.com/1318618/1670667