代码管理平台,也能够称为代码管理工具,顾名思义,就是管理代码的平台,代码能够是公司开发的网站,或者是开发的项目,咱们须要把这些代码放到一个平台上面进行管理。html
说到这可能有人会想,不就是代码吗?我把它放在服务器上的某个目录不就好了吗?开发完新的项目再把代码传上去替换掉旧的代码不就能够了吗?linux
固然,对于网站来讲,这样作是没什么问题的。可是,若是代码天天有不少的地方在更新,当有一天,你想看到最近一段时间代码变化的地方,你怎么看?很不方便,并且你和同事都在开发的时候想看到对方开发的内容。而代码管理平台就能很容易实现目的。git
代码管理工具的做用:github
1. 能追踪一个项目从诞生一直到定案的过程 2. 记录一个项目的全部内容变化,无限制返回 3. 查看特定版本的修订状况
经常使用的代码管理工具:web
CVS 开启版本控制之门 1990年诞生,“远古时代”的主流源代码管理工具 SVN 全称是Subversion,C/S架构,集中式版本控制之王者 是CVS的接班人,速度比CVS快,功能比CVS多且强大 在国内软件企业中使用最为广泛(70%-90%) GIT 一款伟大的分布式源代码管理工具 目前被愈来愈多的开源项目使用 SVN正在被GIT慢慢取代
GIT与SVN的不一样在于GIT是分布式的,GIT不须要依赖服务端就能够工做,而SVN是集中式的,因此不行。vim
分布式与集中式比较服务器
另外,github是基于git的在线web页面代码托管平台,能够选择付费服务。而gitlab能够认为是一个开源的github,二者没有直接关系。架构
由于是C/S架构,因此须要安装服务端和客户端。app
准备两台机器,一台做为服务端,IP:192.168.100.150,一台做为客户端,IP:192.168.100.160。tcp
# 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
# 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 ------------------------------------------------------------------------
在Windows下,也可使用SVN。
Windows下有一个很好的svn软件:TortoiseSVN,官网 , 最新版本是1.10.1。
在官网下载下来安装,根据本身系统位数选择。
若是你喜欢用命令行操做,请务必记得勾选command line client tool
为will be install on local hard driver
,不用命令行的能够跳过这一步。
而后一路Next
便可安装。安装完毕后,在任意地方右键查看快捷菜单。发现TortoiseSVN即表示安装成功。
若是勾选了安装命令行工具,那么输入命令SVN,有以下提示也表示安装成功。
可是此时菜单全是英文的,若是你不习惯英文,能够去下载语言包,注意系统位数。
安装完语言包以后,能够右键进入setting
设置。
选择你喜欢的语言(好比中文),而后肯定,不出意外,如今的语言已经切换到中文了。
安装步骤到此结束。
在电脑上随便建立一个目录,而后右键点击 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自己用起来也比较简单。
更多资料参考: