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 tool
为will 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本身用起来也比较简单。
更多资料参考: