SVN就是这么简单
什么是SVN
SVN全称:Subversion,是一个开放源代码的版本控制系统
Svn是一种集中式文件版本管理系统。集中式代码管理的核心是服务器,所有开发者在开始新一天的工作之前必须从服务器获取代码,然后开发,最后解决冲突,提交。
集中式文件版本控制器:将所有的文件都交由服务器来进行统一的管理。既然是有服务器的,那么就需要联网进行操作了。
为什么要使用SVN
我们写一个项目一般都是一个团队来写,如果我们没有用SVN的话,那么我们只能在团队中互相拷贝对方的代码来完成我们的项目。
SVN还有如下的好处:
- 轻松比较不同版本间的细微差别【修改了代码,就有版本号,还能知道修改前后的数据】
- 及时了解团队中其他成员的进度【如果没有把代码提交到服务器中,就是做得比较慢了】
- 广域网共享【连上局域网就可以代码共享了】
- 协同工作,大大提高团队工作效率
快速了解SVN
配置库
在SVN中有配置库这么一个概念,那它是什么东东呢??
它储存所有的数据,配置库按照文件树形式储存数据
- 包括目录和文件
任意数量的客户端可以连接到配置库,读写这些文件.并且可以添加读写日志,有权限的用户很方便的看到这些修改
工作副本
我们从上面已经知道了,我们可以从配置库中得到想要的文件。那么我们要把文件从配置库下载下来。这个下载下来的区域就是工作副本。
这个工作副本其实就是我们工作的区域,我们对那些文件修改完,就能够再次提交到配置库中了。
SVN命令
我们简单来学习几条SVN的命令,SVN有图形界面的功能,因此命令学习也不是必须的。了解一下....
---创建服务器端版本库
svnadmin create 版本库路径
---启动SVN服务器端
svnserve -d -r 版本库路径
---在系统服务中注册svn服务器
sc create svn binPath= "C:\Program Files\TortoiseSVN\bin\svnserve.exe --service -r D:\itcast\svnserver\20150118svn" DisplayName= "svn服务"
---删除系统服务中的 服务
sc delete 服务ID
如果启动SVN服务器的时候,不会报错就是正常开启了。
分配权限
在我们配置库中找到conf文件夹下的svnserve.conf配置文件。将下面的三行的注释去掉
分配用户
找到conf文件下的passwd,配置用户
常见的子命令
- import:将未纳入版本控制器的文件或目录提交到版本库中(仅执行一次)
- checkout: 从版本库标签中出工作副本
- revert: 将工作副本文件恢复到指定版本
- update: 将版本库的修改合并到工作副本中
- commit:把工作副本的修改提交到版本库。
使用SVN
添加数据到SVN
创建配置库,我们可以使用命令行方式,也可以使用UI点击的方式。这里我就直接使用UI的方式了。
随后,开启我们的SVN服务
把一个文件夹放置到配置库中,交由SVN管理
在SVN中查看我们添加的内容:
查看具体的日志
标识得非常清晰:
从SVN导出数据
把SVN的数据导出到用户中。
导出后:这个local文件夹其实就是我们的工作副本!
修改SVN导出后的数据、再添加回SVN
我在工作副本中添加了一个文件
添加到SVN中:
随后,变成了一个蓝色的图标+号,我们提交。
解决冲突
我们可能会出现这样的一个问题:我们的SVN是一个团队正在开发。但是在commit之前,有人就把我正在编辑的文件给修改了。于是当我在提交的时候就出现了冲突【当前的数据不一致,冲突了】
localhost2用户导出了SVN的数据,并且修改了文件:
另一个用户localhost也在修改该文件,但是它没有做updata操作。并不知道该文件已经被修改了。
当他修改完,想要更新到SVN中的时候,发现冲突了。
面对冲突,我们有两种方案:
- 放弃本次的修改
- 查看冲突的内容是什么,当查看完再决定要哪个的数据,或者是合并起来。
我们进去冲突修改的页面,决定要的是哪一行的数据
最后修改完,点击保存操作就行了。
关于冲突的建议
- 修改文件之前,先进行一次update操作
- 修改完成后,及时commit,不要在本地停留过长时间
- 在多位团队成员协作时,尽量修改自己撰写的部分,尽量不要修改不属于自己撰写的部分
- 出现冲突很正常,可以通过前面的方法解决,不要相互覆盖
工作流程图
如果文章有错的地方欢迎指正,大家互相交流。习惯在微信看技术文章,想要获取更多的Java资源的同学,可以关注微信公众号:Java3y
SVN就是这么简单的更多相关文章
- SVN部署与简单使用
原文发表于cu:2016-05-24 参考文档: http://www.tuicool.com/articles/Yv2iyu7 http://www.centoscn.com/CentosServe ...
- 【Tool】---SVN的超级简单并具体得使用介绍
又一次被打脸,笔者表示再也不相信自己的记性了.简单的SVN隔了一段时间后,由于项目的需要要重新简历代码库,竟然一下子又忘了.天那,这就好比战士上了战场发现没带枪,这能行吗?因此,趁着今天又简短的复习了 ...
- SVN+码云 简单使用流程
1.登录码云网站...
- SVN 使用的简单整理
1. 在SVN服务器上创建存储Dir,并和个人主机建立联系. 现在SVN服务器上创建一个存储文件夹svn_storeDir.然后在个人电脑上建立一个本地文件夹local_Dir. 进入 ...
- SVN的详细简单操作
SVN服务器搭建和使用(一) http://www.cnblogs.com/xiaobaihome/archive/2012/03/20/2407610.html SVN服务器搭建和使用(二) ht ...
- SVN四部曲之SVN简单使用教程入门
1. 签出源代码到本机 在本机创建文件夹StartKit,右键点击Checkout,弹出如下图的窗体: 2. 2 在上图中URL of Repository:下的文本框中输 ...
- [No000092]SVN学习笔记3-Import/Checkout(迁入/迁出),GetLock(加锁)
一.TortoiseSVN Client 获取服务器端的文件到新的本地文件夹 1.在本地新文件夹上右键菜单: 2.打开Repo-browser(可能需要输入你的用户名&密码) 3.输入服务器端 ...
- Android Studio关于SVN的相关配置及从SVN检出项目
一.安装配置: 如图,安装时必须自定义选择 command line 否则不会安装的 安装完成后,打开 IDE 的 setting 配置面板: 如上图路径 Version Control 下的 Sub ...
- CentOS 创建SVN 服务器,并且自动同步到WEB 目录
CentOS 创建SVN 服务器,并且自动同步到WEB 目录 标签: centossvnsubversion服务器 2013-12-06 10:09 5492人阅读 评论(0) 收藏 举报 分类: ...
随机推荐
- Windows本地代码仓库使用连接教程
目录 软件安装 修改语言为中文 克隆远程仓库 文件上传教程 软件安装 安装Git(软件下载链接) 根据自己的系统选择对应版本下载安装 安装TortoiseGit(软件下载链接) 1.下载完毕解压文件夹 ...
- U-Boot内存管理
如<Linux内核内存管理架构>一文中提到,linux内核中的内存管理支持内存地址映射.内存分配.内存回收.内存碎片管理.页面缓存等众多功能.但U-Boot做为启动引导程序,其核心功能就是 ...
- TCP(控制传输协议)详解
1.传输层概述 在OSI参考模型中,网络层是面向通信的最高层但同时也是面向用户程序的最底层. 传输层的主要作用: 复用:在发送端,多个应用程序公用一个传输层: 分用:在接收端,传输层把从网络层接收到的 ...
- 打包java程序生成exe
打包java程序生成exe 目标 我们知道c++的控制台程序编译运行以后就会生成一个exe可执行文件,在电脑上可以直接双击运行,但是java是跨平台的语言,编译运行以后的字节码文件.class是和平台 ...
- 3.jmeter接口测试---脚本录制
安装好jmeter后,就要进入主题了,进行接口测试,接口测试的脚本获取方式 ①手动填写 ②badboy录制后,导入jmeter使用 ③jmeter录制 不会安装的可以进入这里:https://www. ...
- json格式 (JavaScipt Object Notation)
json格式 json语法规则: 01.对象表现形式 key:value 键值对 02.如果有多个数据,之间使用逗号隔开 k1:v1,k2:v2 03.把对象写在大括号中 var student={a ...
- 【RL-TCPnet网络教程】第18章 BSD Sockets基础知识
第18章 BSD Sockets基础知识 本章节为大家讲解BSD Sockets,需要大家对BSD Sockets有个基础的认识,方便后面章节Socket实战操作. (本章的知识点主要整理自 ...
- Node.js(day4)
一.一些小问题 1.文件操作路径和模块读取路径的问题 我们使用fs核心模块系统进行文件操作时一般这样书写路径 fs.readFile('./views/index.html');//读取views目录 ...
- [Swift]LeetCode811. 子域名访问计数 | Subdomain Visit Count
A website domain like "discuss.leetcode.com" consists of various subdomains. At the top le ...
- [Swift]LeetCode962. 最大宽度坡 | Maximum Width Ramp
Given an array A of integers, a ramp is a tuple (i, j) for which i < j and A[i] <= A[j]. The ...