100:代碼管理平臺svn 原

1:代碼管理平臺:代碼版本管理工具,工作中用於代碼更新,代碼發佈統計,代碼版本控制;(頻繁更新代碼的版本記錄),方便查閱歷史變更,協同開發及合併;

版本管理工具發展:   cvs(編碼兼容不太好)   ---->   svn    ----->   git  

svn(subversion),是一個開源版本控制系統,始於2000年;  C/S架構,要依賴於網絡;

git是有linux創始人linus發起,目的用於更好的管理linux內核的代碼;

git和svn的區別是:git是分佈式,不需要依賴服務端就可以工作,

github是基於git的在線web頁面的代碼管理平臺,可以選擇付費服務;

gitlab可以認爲是一個開源的github,兩者沒有直接關係

1:安裝svn:yum    install   -y   subversion:

2:創建版本庫;  創建一個目錄----創建配置文件

[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/

[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

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章