100:代码管理平台svn

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

相关文章
相关标签/搜索