微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

代码管理平台SVN

22.1 代码管理平台


代码管理平台,也可以称为代码管理工具,顾名思义,就是管理代码的平台,代码可以是公司开发的网站,或者是开发的项目,我们需要把这些代码放到一个平台上面进行管理。

说到这可能有人会想,不就是代码吗?我把它放在服务器上的某个目录不就行了吗?开发完新的项目再把代码传上去替换掉旧的代码不就可以了吗?

当然,对于网站来说,这样做是没什么问题的。但是,如果代码每天有很多的地方在更新,当有一天,你想看到最近一段时间代码变化的地方,你怎么看?很不方便,而且你和同事都在开发的时候想看到对方开发的内容。而代码管理平台就能很容易实现目的。

代码管理工具的作用:

1. 能追踪一个项目从诞生一直到定案的过程
2. 记录一个项目的所有内容变化,无限制返回
3. 查看特定版本的修订情况

常用的代码管理工具:

CVS
    开启版本控制之门
    1990年诞生,“远古时代”的主流源代码管理工具
SVN
    全称是Subversion,C/S架构,集中式版本控制之王者
    是CVS的接班人,速度比CVS快,功能比CVS多且强大
    在国内软件企业中使用最为普遍(70%-90%)
GIT
    一款伟大的分布式源代码管理工具
    目前被越来越多的开源项目使用
    SVN正在被GIT慢慢取代

GIT与SVN的不同在于GIT是分布式的,GIT不需要依赖服务端就可以工作,而SVN是集中式的,所以不行。

分布式与集中式比较

另外,github是基于git的在线web页面代码托管平台,可以选择付费服务。而gitlab可以认为是一个开源的github,两者没有直接关系。


22.2 SVN


SVN使用(Linux)

因为是C/S架构,所以需要安装服务端和客户端。

准备两台机器,一台作为服务端,IP:192.168.100.150,一台作为客户端,IP:192.168.100.160。


服务端操作

  • 安装svn:
# yum install -y subversion

  • 创建版本库:
# mkdir -p /data/svnroot/myproject# svnadmin create /data/svnroot/myproject				#初始化文件# ls /data/svnroot/myproject/conf  db  format  hooks  locks  README.txt# ls  /data/svnroot/myproject/conf/authz  passwd  svnserve.conf          

# vim /data/svnroot/myproject/conf/authz				#authz是权限控制文件添加下面内容lzxs = lzx,user1				#定义lzxs组,组下面有两个用户lzx、user1[/]				#这里的 / 指的是/data/svnroot/myproject/目录@lzxs = rw				#@指定组,rw可读可写* = r				#*指所有也可以下面这样写,在项目很多的时候可以使用下面方式[myproject:/]user1 = rw

# vim /data/svnroot/myproject/conf/passwd				#passwd是账号密码文件;在[users]添加以下内容lzx = lzx_!(123
user1 = user1_^^^				#左边是用户,右边是密码# vim /data/svnroot/myproject/conf/svnserve.conf				#svnserve是服务配置文件;在[general]下面添加以下内容anon-access = none				#指匿名用户,无任何权限auth-access = write				#指被授权用户,可写权限password-db = passwd				#指定用户密码存放的目录是passwd(相对路径)authz-db = authz				#指定权限控制目录存放的目录是authz(相对路径)realm = /data/svnroot/myproject				#指定项目,对之生效(这里是绝对路径

  • 启动服务:
# svnserve -d -r /data/svnroot/				#-d表示以daemon形式,后台启动;-r 指定svn所在路径# ps aux |grep svnserveroot       1330  0.0  0.0 162240   652 ?        Ss   09:26   0:00 svnserve -d -r /data/svnroot/# netstat -lntp |grep svnservetcp        0      0 0.0.0.0:3690            0.0.0.0:*               LISTEN      1330/svnserve             //监听3690端口

# cd /home/# svn checkout svn://192.168.100.150/myproject --username=user1#		svn checkout 检出代码,后面指定服务器地址和项目坐在目录,指定用户名Authentication realm: <svn://192.168.100.150:3690> /data/svnroot/myproject
Password for 'user1':				#输入之前定义的user1的密码-----------------------------------------------------------------------
ATTENTION!  Your password for authentication realm:   <svn://192.168.100.150:3690> /data/svnroot/myproject

can only be stored to disk unencrypted!  You are advised to configure
your system so that Subversion can store passwords encrypted, ifpossible.  See the documentation for details.

You can avoid future appearances of this warning by setting the value
of the 'store-plaintext-passwords' option to either 'yes' or 'no' in'/root/.subversion/servers'.-----------------------------------------------------------------------
Store password unencrypted (yes/no)? yes				#提示是否保存未加密的密码,输入yesChecked out revision 0.				#取出版本为0# lsadmin  myproject				#出现myproject的新目录# ls -la myproject/total 0
drwxr-xr-x  3 root root 18 Aug 30 09:53 .drwxr-xr-x. 4 root root 36 Aug 30 09:53 ..drwxr-xr-x  4 root root 75 Aug 30 09:53 .svn


客户端操作

  • 安装svn:
# yum install -y subversion

# cd /home/# svn checkout svn://192.168.100.150/myproject --username=user1#		svn checkout 检出代码,后面指定服务器地址和项目坐在目录,指定用户名Authentication realm: <svn://192.168.100.150:3690> /data/svnroot/myproject
Password for 'user1':				#输入之前服务端定义的user1的密码-----------------------------------------------------------------------
ATTENTION!  Your password for authentication realm:   <svn://192.168.100.150:3690> /data/svnroot/myproject

can only be stored to disk unencrypted!  You are advised to configure
your system so that Subversion can store passwords encrypted, ifpossible.  See the documentation for details.

You can avoid future appearances of this warning by setting the value
of the 'store-plaintext-passwords' option to either 'yes' or 'no' in'/root/.subversion/servers'.-----------------------------------------------------------------------
Store password unencrypted (yes/no)? yes				#提示是否保存未加密的密码,输入yesChecked out revision 0.				#取出版本为0# lsadmin  myproject				#出现myproject/目录# ls -la myproject/total 0
drwxr-xr-x 3 root root 18 Aug 29 08:43 .drwxr-xr-x 3 root root 23 Aug 29 08:43 ..drwxr-xr-x 4 root root 75 Aug 29 08:43 .svn

# cd myproject/# cp /etc/fstab .# lsfstab# svn add ./fstab				#先增加add,打上标记,存到版本库里A         fstab# svn commit -m "add fstab"				#再传到服务端上Adding         fstab
Transmitting file data .Committed revision 1.


服务端操作

  • 再到服务端查看:
# cd myproject/# svn up#		svn update 升级版本库(同步),这里不需要输入密码是因为之前checkout的时候就已经保存密码到/root/.subversion/serversUpdating '.':A    fstab           
Updated to revision 1.# lsfstab				#出现fstab这个文件

上面整个过程,可以理解为,一台客户端代码做了修改,传到服务端,这是另外一台客户端及时升级版本库,就能够将做修改代码同步到自己客户端上。

# svn delete fstab				#本地删除D         fstab# svn commit -m "delete fstab"				#服务端删除Deleting       fstab

Committed revision 2.


客户端操作

  • 客户端查看:
# svn up				#升级版本库Updating '.':D    fstab
Updated to revision 2.# ls				#已经没有fstab了

  • 查看变更日志:
# svn log				#从下到上,上面为最新变化------------------------------------------------------------------------
r2 | user1 | 2018-08-30 10:09:04 -0400 (Thu, 30 Aug 2018) | 1 line

delete fstab
------------------------------------------------------------------------
r1 | user1 | 2018-08-30 09:58:05 -0400 (Thu, 30 Aug 2018) | 1 line

add fstab
------------------------------------------------------------------------


SVN使用(Windows)

在Windows下,也可以使用SVN。

Windows下有一个很好的svn软件:TortoiseSVN,官网 , 最新版本是1.10.1。


下载安装

在官网下载下来安装,根据自己系统位数选择。

这里写图片描述

如果你喜欢用命令行操作,请务必记得勾选command line client toolwill be install on local hard driver,不用命令行的可以跳过这一步。

这里写图片描述

然后一路Next即可安装。安装完毕后,在任意地方右键查看快捷菜单。发现TortoiseSVN即表示安装成功。

这里写图片描述

如果勾选了安装命令行工具,那么输入命令SVN,有如下提示也表示安装成功。

这里写图片描述

但是此时菜单全是英文的,如果你不习惯英文,可以去下载语言包,注意系统位数。

这里写图片描述

安装完语言包之后,可以右键进入setting设置。

这里写图片描述

选择你喜欢的语言(比如中文),然后确定,不出意外,现在的语言已经切换到中文了。

这里写图片描述

安装步骤到此结束。


使用SVN

在电脑上随便创建一个目录,然后右键点击 SVN 检出

这里写图片描述

然后输入linux上的IP地址和目录

这里写图片描述

点击确定,输入之前服务器上定义的用户名和密码

这里写图片描述

然后点击确定即可。打开myproject目录,发现有变化

这里写图片描述

新建一个123.txt文件,并随便写点内容

这里写图片描述

现在把123.txt传到服务端上,先add(加入到版本库)

这里写图片描述

然后点击SVN 提交,说明是必须要写的

这里写图片描述

点击确定即可

这里写图片描述

再回到linux机器上,可以认为是另外一台客户端,升级版本库:

# svn upUpdating '.':A    123.txt.txt
Updated to revision 2.# ls123.txt.txt  fstab				#可以看到,刚刚在Windows上创建的123.txt在这可以看到# cat 123.txt.txt 111
222
333333

再在linux机器上创建一个文件

# vim 111.sh				#随便写点内容niwqfdhweiuofhweiu        

# svn add 111.shA         111.sh# svn commit -m "add 111.sh"Adding         111.sh
Transmitting file data .Committed revision 3.

回到Windows上,点击SVN 更新

这里写图片描述


这里写图片描述

点击确定即可,再查看myproject文件

这里写图片描述

可以看到多出了111.sh文件

这就是SVN在Windows上的简单使用,和linux上没有很大差别,SVN本身用起来也比较简单。


更多资料参考:

TortoiseSVN新人使用指南

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐