svn基础入门

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

原文地址:https://www.cnblogs.com/gg128/p/9194742.html