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