每天分享技术栈,开发工具等
SVN: subversion,是一个开源的版本控制系统。
SVN把文件存储在中心仓库中,这个中心仓库就像文件系统一样,不同的是,它可以记录每次修改的情况,借助于此就能够非常清楚的知道文件的变更情况。
SVN之前的CVS(已经过时),Git(Android开发流行之后才慢慢流行的)。
版本的概念由何而来?
A提交了一次代码,给一个版本号1
B提交了一次代码,给一个版本号2
….
每提交一次代码版本号 1,这样每次提交的文件都会有一个版本号对应,便于管理,通过版本号来控制就叫做版本控制软件。
提交文件内容的同时,把文件的元数据(描述数据的数据)比如,文件的修改日期、修改人、修改原因(备注或者注释)等,有了这些元数据信息,我们才能够更好的去恢复版本,追责等。
SVN和版本控制软件SVN和版本控制软件的关系好比Mysql和数据库软件的关系,SVN只是版本控制软件的一种,还有其他的。git
SVN基本情况
SVN服务端软件:VisualSVN
SVN客户端软件:TortoiseSVN(外号:小乌龟)
SVN: subversion,是一个开源的版本控制系统。
SVN把文件存储在中心仓库中,这个中心仓库就像文件系统一样,不同的是,它可以记录每次修改的情况,借助于此就能够非常清楚的知道文件的变更情况。
SVN之前的CVS(已经过时),Git(Android开发流行之后才慢慢流行的)。
来张图帮你更好的理解SVN的工作套路!
开始上安装教程
SVN服务器端软件在实际企业环境下往往会安装在linux下,我们学习使用安装在Windows下。
VisualSVN安装及创建仓库
双击安装文件(根据实际情况选择32bit/64bit)
安装服务端软件 管理工具 命令行客户端模式
在服务管理中查看“VisualSVN Server”服务是开启状态
VisualSVN创建工程目录
VisualSVN创建项目工程目录(一般一个项目会创建一个工程目录,方便授权,不同项目组的人有不同项目目录的访问权限)
VisualSVN创建用户
注意:用户名和密码是大小写敏感的
VisualSVN创建用户组
创建用户组是为了便于授权,比如一个项目中,某几个人是测试人员,某几个人是开发人员,那么开发人员的权限是读写,测试人员权限可能只是读没有写权限。
VisualSVN分配权限
分配权限可以按照用户分配,也可以按照用户组分配。
TortoiseSVN安装与使用
安装路径中不要出现中文和空格。
注意:安装之后重启电脑。
验证TortoiseSVN安装是否成功
在任意目录下右键,右键菜单出现如下选项即为安装成功
TortoiseSVN常用操作
实际企业环境下,我们往往不能直接操作服务器端,只能通过客户端操作。
svn图标
浏览仓库
清理客户端用户名/密码缓存
检出Checkout
检出之后有一个隐藏文件夹,本地文件夹和远程文件夹维护关系的元数据
添加Add
在目录下新建一个HelloWorld.java,这样的图标代表该文件尚未交给SVN管理
Add之后,这样的图标代表已经和SVN建立联系,但尚未提交。
提交Commit
注意:这里的版本号和软件开发的给软件定义的版本号不是一个意思。
更新Update
将SVN服务器上的最新内容更新到本地
更新到历史某一版本
查看提交日志
更新到历史某一版本
也可以通过另外一种方式来更新
删除Delete
我们把本地文件删除,必须要提交,才能真正从服务器上删除
这样删除如果没有提交,还是可以恢复的
因此,要提交删除操作,在被删除文件所在的文件夹内右键执行提交
导入导出
导入
导出
检出(内容 svn关系)
导出(仅内容)
冲突问题与解决
多个用户同时操作同一个文件时,就可能产生冲突情况。
冲突产生后,可以手动Merge,解决冲突后,重新commit
HelloWord.java:服务器上文件和本地文件的合并
HelloWord.java.mine:本地修改后的文件
HelloWord.java.r6:修改前的文件
HelloWord.java.r7:对方修改后的文件
避免冲突注意:
写东西之前再更新
勤更新勤提交
别对同一个文件进行操作(所以拆分)类似于@Import注解
为什么分布式开发,为什么配置文件分那么细啊是吧,避免冲突的几种方式
分布式可以避免冲突
Servlet详解(一)之基本概念
2020-10-22
专攻知识小点——回顾JavaWeb中的servlet(二)
2020-10-24
专攻知识小点——回顾JavaWeb中的servlet(三)
2020-10-25
温故知新之javaweb中的servlet(四)
2020-10-27
HttpServletRequest详解 外加请求转发和重定向口述讲解(五)
2020-10-28
2020-IT咸鱼挑灯夜战整理的java学习资料奉上(推荐收藏)
2020-10-26
END