一、SVN的工作原理
SVN()的基本工作思路是:在服务器上建立源代码库。 库可以存放很多不同项目的源程序,源代码库管理员对这些源程序进行统一管理。
每个用户在使用源码库之前,必须先将源码库中的项目文件下载到本地(),然后用户可以在本地进行修改,最后用svn命令提交(),由svn源代码库。 修订。 如下所示:
2. 使用
可以下载SVN并安装(本文使用的版本不再详细说明)。 SVN 中集成的服务器端和客户端组件:
这些组件命令位于安装目录下的bin目录中。
友情提示:安装SVN后,用“-”验证是否安装成功。 如果出现“不是内部或外部命令”错误,则需要手动将SVN bin目录添加到path环境变量中。
1.创建SVN仓库
1)首先创建一个目录:E:\\。 该目录稍后将用作SVN存储库。
2)创建仓库:E:\\。 创建仓库后的目录结构如下:
3)启动SVN服务:-d -r E:\\,如下图:
这样就会启动这个仓库(单一仓库)的服务。 如果目录下还有其他仓库,想同时启动多个仓库,只需执行-d -r E:\(多个仓库)即可。
一般情况下,访问SVN仓库的URL格式为:svn://192.168.1.6/,但如果启动单个仓库,则URL直接表示为:svn://192.168.1.6。 svn协议的默认端口号是3690。
提示:如果需要经常使用这个仓库,可以将SVN服务注册为服务,这样开机就可以启动该服务。 如下所示:
删除服务:sc。
2.SVN客户端操作(命令行)
要点:(结账)、(提交)、(更新)
1)在E盘下创建两个目录user1和user2,模拟两个用户一起工作。
2)签出:第一次与SVN服务器交互时,需要在本地签出仓库。
注意:签出一次后,就建立了与 SVN 存储库的连接。
3)提交:
在user1目录下新建Demo1.java文件,并将该文件提交到SVN仓库。 下图展示了三种典型的错误提交。
4)更新:
切换到user2的工作空间(在user2目录下)。 User2第一次使用SVN仓库,需要签出。 user2修改Demo1.java并提交。 切换到user1目录并()。
5)删除和恢复:,
注意:如果提交到服务器(),服务器上的数据也会被删除(谨慎使用)。
3. SVN目录约定
1)使用trunk作为主要开发目录
一般我们所有的开发都是基于trunk的。 当一个版本()的开发结束时(经过开发、测试、文档、制作安装程序、打包等),代码处于冻结状态(人为规定可以通过hook进行管理)。 此时,应该基于当前冻结的代码库来创建标签。
当下一版本/阶段的开发任务开始时,开发将在主干上继续进行。 这时,如果发现之前发布的版本( )有一些bug或者有一些紧急的功能需求,而正在开发的版本( )无法满足时间要求,那么就需要对之前的版本进行修改。 解决办法是根据版本对应的tag来开发对应的()。
2)下图为SVN仓库目录:
当前代码是使用git管理的,所以当前查看的SVN仓库是空的。
4. 使用
它是现在最流行的SVN客户端工具,使用图形界面与SVN存储库交互(作为命令行方法的替代)。 关于安装省略。
安装完成后,您可以右键单击任意位置来查看选项。
1. 基本操作
1)创建仓库
创建目录:E:\\,进入该目录,右键--此处,创建默认的SVN目录结构,如下图:
2)检查:
在E盘下创建两个目录user3和user4,模拟两个用户一起工作。
进入user3目录,右键-SVN,在URL中输入file:///E://。 【此时仓库中还没有启动SVN服务,所以使用file://】
3)提交:
在user3/trunk目录下新建Demo1.java,右键该文件-添加,将Demo1.java纳入版本控制。 然后右键-SVN,提交到代码仓库。
4)更新:
在user4上执行上述结账操作。 并修改user4目录下的Demo1.java(如添加一个字段),以及。
返回user3/trunk,右键-SVN。
5)启动SVN服务。 这一步需要在命令行输入:-d -r E:\
6) 访问SVN存储库。 右键任意空白位置-Repo,输入URL:svn://192.168.1.6/,浏览SVN仓库内容,如下。
2、其他操作
以下操作均位于右键菜单中。
1)删除:
删除文件或目录不能直接使用命令,否则不会显示但并没有真正删除。 更新后,删除的文件会再次更新。 要从库中删除,您必须选择要删除的内容 - ,以便该文件被标记为删除。 确认需要删除后,使用上面提到的命令,将其真正从库中删除。
2)重命名:
不能直接使用命令进行重命名。 您必须选择要重命名的文件 - 。 修改提交后即可更新到仓库。
重命名过程相当于添加一个新名称的文件并删除原名称的文件。
3)恢复:
提交之前,如果您对之前的操作感到后悔,可以用它来恢复。
4)检查更新:检查
① 该功能可以显示您已经做了哪些尚未提交的修改。 ② 还可以看到存储库中的更改,即哪些文件更改已被其他人提交,但您本地尚未更新。
5)出口:
使用SVN的工作空间的每个目录下都有一个.svn隐藏目录。 您可以使用 SVN 命令轻松导出工作区,而无需 .svn 目录。
3、冲突问题的解决(☆)
什么时候发生:按照4.1节的操作,假设user3和user4目录下的Demo1.java都更新到最新版本。 user3修改Demo1.java并提交到仓库。 如果user4也修改了Demo1.java并提交,则user4会报版本过时的错误,并提醒user4需要更新。 更新过程中会发生冲突。 如下所示:
对于每个更新的冲突文件,冲突文件所在目录中会放置三个文件:
解决方案一:
① 右键单击Demo1.java - 编辑。 这时你需要确定需要哪些代码,进行一些必要的更改并保存。 提示:编辑冲突时,可以直接将所需代码复制到窗口中。
② 编辑完成后保存,直接选择标记为,将冲突标记为已解决。 退出编辑冲突窗口,发现冲突时生成的三个文件被自动删除,Demo1.java变成了未提交。
③、好的。
解决方案2:
直接修改Demo1.java,删除部分标签即可(前提是服务器和本地内容都需要保存)。
4. 图标
部分图标说明:
5. 认证与授权
所谓()就是给使用仓库的用户分配一个用户名和密码。 用户连接仓库时需要输入用户名/密码。 ()是给指定用户分配特定的权限,比如只读、读写等,认证和授权设置需要修改仓库conf目录下的文件,如下:
1)修改conf/.conf
2)修改conf/
3)修改conf/authz
这样,当用户再次执行 、 、 时,就会需要进行身份验证。
5.插件的使用
提供了一个集成SVN的插件——本文重点介绍其使用。 插件的安装不是这里的重点。 安装成功后,可以看到如下视图( — Show View )和透视图( — Open ):
以下操作使用 4.1 节中的资源库()。
1)关联资源库
进入SVN资源库研究视角,右键单击SVN资源库面板-新建-资源库位置,在URL中输入:svn://192.168.1.6/。
2)共享项目:共享
在项目中创建一个名为 Demo1.java 的新 Java。
共享项目:右键单击项目-团队-共享...并将项目导入到。 输入文件夹名称时,一般选择使用项目名称作为文件夹名称。
3)提交:
共享后,项目尚未提交仓库。 这时右键项目-Team-将当前项目提交到仓库。
4)检查:
创建一个新用户来模拟另一用户(user2)。 首先关联资源库,右键-签出为。
在 Demo1.java 中添加一个新字段并提交(在 user2 中完成)。
5)更新:
切换到 user1 的工作区并更新项目。 话不多说,团队——
6)冲突处理
冲突的发生参见4.3节。 原则:先更新再提交。
4.3节中的两种解决方案也适用。 方案1对应4.3节中的视图,方案2类似。
6.SVN及集成(使用后见)
业务场景:上面的demo中,SVN仓库通过SVN协议对外提供服务。 最直观的体现就是URL都是以svn://开头。 开源项目中使用的SVN仓库在对外提供服务时使用http协议,需要与服务器结合。
1)安装服务器(假设安装在C:\.2)
2)修改C:\.2\conf\httpd.conf,放出有注释和红色边框的两行(需顺序)
3)从SVN安装目录的bin目录中,将.so和.so复制到C:\.2\目录下
4)使用服务器创建密码文件
5)复制到E:\\svn\\conf目录下
6)将以下内容复制到\conf\httpd.conf末尾
7) 访问SVN存储库。