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
来源:oschina
链接:https://my.oschina.net/u/3711371/blog/2878934