1.什么是svn
svn是一种用于版本管理的工具,类似于cvs与git,但较git有一些的不足,现在逐渐被git取代。
2.svn的安装
下载地址:https://sourceforge.net/projects/win32svn/files/latest/download
安装教程:http://www.runoob.com/svn/svn-install.html
3.版本库的访问方式
file:///直接访问版本库
http://通过配置svnapache服务器的webdav协议
https:// 与http://类似,但是在http上添加了协议
svn+ssh://与svn://相似 但通过ssh封装
4.拷贝-修改-合并-方案与锁定-修改-解锁方案
4.1锁定-修改-解锁方案:在一个时间段内同一个文件不能被多个人修改,只允许一个人修改。
4.2拷贝-修改-合并-方案:svn采用的方案,合并的正确和错误需要人工去判断正确与错误,对于一些二进制文件仍需要采用锁机制,从服务仓库拷贝到私有地址后的文件属于私有空间,不会对公有空间产生任何影响。
5.svn操作中的一些命令
创建:在第一次提交的时候,需要采用创建的方式提交到一个仓库已经存在的仓库与之关联。
提交:提交的前提是该项目已经与服务仓库中存在这个项目已经产生关联(需要已经存在.svn文件),提交时都是以本次版本中最高的版本为基准进行版本升级,文件夹内没有被提交的文件不会升级,仅仅是对于修改后的版本进行升级,提交是一个原子性的操作,成功就都成功,失败就都失败。
检出:从公有空间复制到私有空间的过程。
更新:更新可以分为几种情况,假设我没有对私有空间内的文件进行修改直接更新,那么对应更新后的版本,假如我已经修改了,但是修改的地方和需要更新修改的地方不是同一行,那么会相应的采取合并的方式更新,假如是同一行,那么会产生相应的冲突,需要相应的解决冲突。
冲突:当发生冲突的时候会相应的产生3个文件,一个表示原来的版本,一个表示现在自己的版本,一个表示需要更新的版本,编辑完冲突以后,需要使用解决冲突后才可以提交,当使用解决冲突后3个文件也会相应的消失。
分支和标签:标签功能是某个时刻的快照,标签是给某个特定的历史版本取一个友好的名字,以便于使用和维护,分支是创建多个并行的工作线程,在没有被修改之前不会产生一个新的副本,产生新的副本是在修改之后产生的,这也被叫做缓式拷贝
6.svn记录是否被修改的原理
通过一个隐藏的.svn文件来跟进。
7.在windows的命令窗口中使用
svnadmin create 路径 :创建服务仓库
svnserve –r –d 路径(同上): -d表示后台运行 –r指定服务器的相对路径 含义是在后台运行服务
svn import svn://localhost/import (svn://localhost 表示create 路径的路径,import表示在create 路径的路径下添加import文件),在这之前需要允许匿名登录(在svn指定的create 路径下conf中senserve.conf进行修改,去掉anon-access=read前面的注释,添加anon-access=write),或者svn指定的create 路径下conf中senserve.conf进行修改,添加anon-access=none,然后去掉password-db = passwd前面的#,在passwd文件中按照文件中的例子添加账号和密码,在一次登录之后,svn会将相应的登录信息保存起来存放在c:documents and settings 登录系统的用户名application data subversion 如果想要删除该信息,只需要将该目录中的auth文件夹删除即可,passwd以键值对的形式表达 ,键表示账号,值表示密码,配置文件都需要顶格书写。在运行这个命令之前(写入),需要添加变量名:SVN_EDITOR 变量值:notepad,或者指定的方式 例如svn import svn://localhost/import -F G:SVNeclipseclient2log.txt, -f表示指定文件中读取日志文件。
svn mkdir svn://localhost/project 创建一个空的文件夹。
svn commit 文件路径 ,提交(需要已经存在.svn文件)
其它的命令请查看 svn help 例如检出(svn checkout svn://localhost/import,检出到当前文件夹)
8.整合apache
Apache的下载:http://down.admin5.com/fuwuqi/Apache_Windows.html
Apache的安装:https://jingyan.baidu.com/article/0eb457e53c019f03f1a905c7.html
进入svn的bin目录下复制mod_authz_svn.so与mod_dav_svn.so两个文件,拷贝到Apache的安装目录下的modules下,打开apache的安装目录下httpd.conf文件,去掉LoadModule dav_module modules/mod_dav.so以及LoadModule dav_fs_module modules/mod_dav_fs.so前面的#号注释。然后在其下添加LoadModule dav_svn_module modules/mod_dav_svn.so
假如出现错误请将svn的bin下的libsvn_repos-1.dll,libsvn_subr-1.dll,libsvn_delta-1.dll,libsvn_fs-1.dll添加到apache的bin目录下
然后在httpd.conf文件下添加
<Location /svn>
DAV svn
SVNPath G:SVNrepositoryserve
</Location>
备注:G:SVNrepositoryserve已经存在的服务仓库 访问localhost:端口(配置中的listen,默认为 80,建议更改为1024以上的端口,防止已被占用)/svn(这里的svn来自<Location /svn>)。
还可以配置访问权限以及MD5加密
9.在eclipse中使用
安装:http://subclipse.tigris.org/servlets/ProjectDocumentList?folderID=2240 将这个插件复制粘贴到eclipse安装目录下的dropins文件中。
创建服务仓库
打开open perspective 选择svn资源库研究,切换到svn视图,然后建立相应的资源Create SVN Repository选择创建一个资源库
常用图标的意义
小瓶表示与svn库一致,*号表示已经修改还未保存,?表示版本不在控制之下 C表示更新得到的数据冲突
常用命令
提交,检出,更新,分支与标签,冲突上面已经说明
10.tortoisesvn的使用
下载地址:https://sourceforge.net/projects/tortoisesvn/files/
安装:https://jingyan.baidu.com/article/0eb457e537f9a403f1a905bf.html
使用跟上述类似
11.svn迁移到git上
https://blog.csdn.net/xueshanhaizi/article/details/54929365