教你搭建一套自己的SVN服务器

教你搭建一套自己的SVN服务器想不想自己搭建一套SVN服务器?来吧!Followme!

大家好,又见面了,我是你们的朋友全栈君。

在这里插入图片描述→****在这里恭祝大家1024程序员节日快乐!

服务端安装及配置

安装SVN服务端

在这里插入图片描述

创建svn服务工程总目录

  • 创建一个根目录,这个根目录用来存储所有的svn的工厂信息(每一个工厂等于一个项目)

  • 启动svn: svnserver -d -r F:/SVN/ROOT

      对于wndows而言不支持后台模式,要添加到服务里,由手动改为自动!
      解释:我们再打开一个cmd敲入netstat -an可以看到出现了端口为3690的服务,这就是svn的
    端口,但是当我们关闭命令启动窗口的时候,3690端口服务又不不见了。
     所以要想保持服务不被关闭,我们最好加入到window启动服务里来进行启动,linux支持后台启动:

 sc create SVNserver binPath= "F:\SVN\Subversion\bin\svnserve --service -r F:/SVN/ROOT"

异常问题- [sc] openSCManager 失败 5 拒绝 访问拒绝
  安装svnserver服务win下安装subversion 的svnserver作为服务时遇到了这个问题。
解决方案
  建立一个新文件svnSetup.bat.输入并保存:

sc create SVNserver binPath= "F:\SVN\Subversion\bin\svnserve --service -r F:/SVN/ROOT"  
displayname= "Subversion" depend= tcpip start= auto 
sc start svnserve

右键单击svnSetup.bat,选择以“管理员方式运行”即可
总结:主要原因仍是没有权限,在命令行时执行这个操作总是提示没有权限,而以管理员方式运行则避免了这个问题,相当迂回了一下吧。

客户端安装及开发流程

配置管理人员

创建工厂

 svnadmin create F:\SVN\ROOT\student

在windows也可可以:
在这里插入图片描述

配置权限

在这里插入图片描述
在这里插入图片描述

创建用户

在这里插入图片描述
在这里插入图片描述

配置权限

在这里插入图片描述

PM创建并提交项目

  • 项目经理创建项目并提交到svn工厂中(一般是客户端TortoiseSVN,而不是命令行)
    • 安装客户端或者eclipse插件,安装成功后右键会出现两个svn菜单(有checkout)
    • 点击student文件夹
      在这里插入图片描述
      填写项目地址,点击提交
      在这里插入图片描述
      我们发现认证失败
      在这里插入图片描述
      因为匿名用户是禁止访问的,我们可以修改F:\SVN\ROOT\student\conf下的svnserve.conf文件,如图
      在这里插入图片描述
      在这里插入图片描述
      修改Anonymous权限为可读也可写。当然匿名用户肯定不可让他访问,这里为了方便演示。注意空格。以上就完成项目经理的导入。

开发人员checkout检出项目

我们新建开发人员文件夹来模仿开发端如下:
在这里插入图片描述
在这里插入图片描述
点击OK会发现开发人员01下已经有了所有的项目信息。
在这里插入图片描述
开发人员02也一样。Commit与update很简单就不说了。

冲突问题

01修改了jsp,添加了第三行,然后提交到svn
在这里插入图片描述
02修改了jsp,添加了第二行,也提交,此时
在这里插入图片描述
02提交时,提示已经过时,要先更新。
在这里插入图片描述
点击OK,更新
在这里插入图片描述
提示冲突。并且发现多了三个文件
在这里插入图片描述
打开看下:
第一个index.jsp.mine: 这是我的(当前提交人02)
在这里插入图片描述
Index.jsp.r2:这是我的(当前提交人02)原始版本
在这里插入图片描述
Index.jsp.r3:我们发现这个和01的一样,其实这就是01的。
在这里插入图片描述
最后我们打开index.jsp,带有感叹号的冲突文件。
在这里插入图片描述
上边清楚的爆出我和r3的冲突,即02和01我们修改冲突:然后删除掉多出的三个文件,然后发现index.jsp变成了红色的图标。
在这里插入图片描述
在这里插入图片描述
提交即可
在这里插入图片描述
然后用01去更新一下看。

在这里插入图片描述
01也变成了刚刚02修改合并后的

总结

  • 冲突产生的条件:两个或多个开发人员共同修改了一个文件之后并且提交会产生冲突。
  • 如何避免冲突:
    1 修改代码之前先进行更新。(不能保证不冲突,但是前提)
    2 项目经理分配任务的时候需要独立考虑,为不同的人分配不同的模块,这样尽可能避免冲突。

Showlog

在这里插入图片描述
查看日志:这是我们对这个文件的修改记录。
在这里插入图片描述

误删文件后如何处理

问题:但01不小心删除了index.jsp后,又不小心提交了。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
但是02此时还有index.jsp,
在这里插入图片描述
当他执行update后发现index.jsp不见了。
在这里插入图片描述
可是这个index.jsp是有用的,02很生气,01交代了是自己不小心做了删除后提交的操作,导致02的文件丢失。幸好02是个有经验的人,于是他做了一下操作,找回了index.jsp。
在这里插入图片描述
点击showlog
在这里插入图片描述
选择版本,OK。
在这里插入图片描述
02的index.jsp又回来了。但是当02进行update后发现index.jsp又不见了。于是他很郁闷。不得不重复上边的步骤找了回来。他想我提交这个文件到版本库不就OK了,于是想要提交
在这里插入图片描述
他惊奇的发现提交按钮变成灰色了,无法提交。
不能更新,又不能提交,这怎么办?

  • 不要进行删除后的提交操作。避免此种情况发生。
  • 添加到忽略列表中。Svn不对index.jsp进行版本管理。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    然后再-Add-Commit:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

完毕

至此,如何搭建自己的svn服务器已经讲解完毕!怎么样,是不是挺好玩的!
欢迎有问题跟我一起交流~

个人公众号-offer驿站
在这里插入图片描述

其他优质文章
《成就一亿技术人,我在CSDN的这九年》
《计算机如何做减法?10个程序员9个不知道!!!》
《高级编程语言学习概论》
《互联网三高架构之高并发和高性能的理解》
《《跟任何人都能聊得来》读书笔记》
《这十年里的迷茫路口》
《一个码农的那五年》
《搞技术的总要做点高逼格的事情,那些lowB操作留给新人练手吧!》
在这里插入图片描述

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

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/161772.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • Java开发框架!高级java工程师简历模板[通俗易懂]

    第一部分必读系列:01.学习算法和刷题的思路指南02.学习数据结构和算法读什么书03.动态规划解题套路框架04.动态规划答疑篇05.动态规划答疑篇06.回溯算法解题套路框架07.二分查找解题套路框架08.滑动窗口解题套路框架09.双指针技巧总结10.BFS算法套路框架11.Linux的进程、线程、文件描述符是什么12.Git/SQL/正则表达式的在线练习平台第二部分动态规划系列:01.动态规划设计:最长递增子序列02.经典动态规划:0-1背包问题03.经典动态规划:完

  • 我的校园服务小程序_有创意校园的微信小程序

    我的校园服务小程序_有创意校园的微信小程序微信小程序——校园服务小程序(四)校园论坛加预约理发服务上一篇介绍了如何用户如何将帖子的内容发送到数据库中。这次我们来介绍一下如何将库中数据渲染出来,通过get得到对应表的数据,在wxml上通过for循环渲染数据表中的值。这里以我们的主页面为例,首先思考一下,一个展示帖子的主页面要有什么功能,1.帖子在添加时会将新的帖子放在最后,再渲染时也会被渲染在后面,这样是不可以的,每一次进入界面都是第一个用户上传的帖子。这里我们需要对帖子进行一次排序,这里我使用了orderBy(‘timeone’,‘d

  • Python 练习 —— 2048

    Python 练习 —— 2048

  • math.pow()函数用法[通俗易懂]

    Math.pow(底数,几次方)如:inta=3;intb=3;intc=Math.pow(a,b);就是3的三次方是多少;c最终为27;基础用法:用math.pow()实现数组的交错求和intant=0;a+=b[i]*math.pow(-1,ant);//实…

  • Unity安装VScode「建议收藏」

    Unity安装VScode「建议收藏」https://code.visualstudio.com/下载好之后,打开unity edit-  preferenceexternaltools openbyfileextension,点开,Browse,然后选你VSCode.exe的位置。  之后双击打开会有我这个是安装好扩展的界面,大概就是要 左边这个几个安装好之后可能打出不来提示,重…

  • 剖析RT-Thread中console与finsh组件实现(2)[通俗易懂]

    剖析RT-Thread中console与finsh组件实现(2)[通俗易懂]接上一章剖析RT-Thread中finsh组件实现(1),rt_device具体定义如下:其中内核基类定义如下:所以刚才串口1初始化后名称被初始化为了“usart1”,与刚才设置终端时入参刚好可以匹配。而这个标志是类型标志,串口类型即为RT_Object_Class_Device,同时也是一个静态类,所以会或上0x80其实rt_device中最重要的是传入了设备回调与操作函数指针,这些指针此时指向的是串口1的一系列操作函数。这些函数被初始化在串口1初始化的rt_hw_serial

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号