大家好,今天小编来为大家解答基于windows平台的SVN教程这个问题,很多人还不知道,现在让我们一起来看看吧!
SVN(SubVersion)的基本工作思路是这样的:在服务器上建立源代码库。库可以存放很多不同项目的源程序,源代码库管理员对这些源程序进行统一管理。
每个用户在使用源码库之前,必须先将源码库中的项目文件下载到本地(Checkout),然后用户可以在本地进行修改,最后使用svn命令提交(Commit), svn源代码库统一管理修改。如下图:
SVN服务器:运行SubVersion服务的计算机。 SubVersion支持Linux和Windows,Linux下安装更多。 SVN以两种方式(运行方式)提供服务:独立服务器和借助Apache服务器,分别使用SVN协议和HTTP协议。 SVN客户端:用户通过SVN客户端与SVN服务器交互。 SVN客户端分为命令行工具和图形工具。最受欢迎的客户端是TortoiseSVN。也可以在Eclipse 中使用SVN 插件。
2.SubVersion的使用
服务器组件(针对管理员): svnadmin、svnserve 客户端组件(针对程序员): svn 这些组件命令位于SubVersion 安装目录下的bin 目录中。
友情提示:安装SVN后,通过“svnadmin version”验证安装是否成功。如果出现“svnadmin不是内部或外部命令”的错误,需要手动将SVN bin目录添加到path环境变量中。
1.创建SVN仓库
1)首先创建一个目录:E:\svnrepo\repoDemo1。该目录稍后将用作SVN存储库。
2)创建仓库:svnadmin create E:\svnrepo\repoDemo1。创建仓库后的目录结构如下:
3)启动SVN服务:svnserve -d -r E:\svnrepo\repoDemo1,如下图:
这样就会启动repoDemo1仓库(单仓库)的服务。如果svnrepo目录下还有其他仓库,想要同时启动多个仓库,执行svnserve -d -r E:\svnrepo(多个仓库)。
正常情况下,访问SVN仓库的URL格式为:svn://192.168.1.6/repoDemo1。但如果启动单个仓库,则URL直接表示为:svn://192.168.1.6。 svn协议的默认端口号是3690。
提示:如果需要经常使用这个仓库,可以将SVN服务注册为windows服务,这样开机就可以启动该服务。如下图:
删除windows服务:sc delete svnService。
2.SVN客户端操作(命令行)
要点:签出、提交、更新
1)在E盘下创建两个目录user1和user2,模拟两个用户一起工作的工作空间。
2)Checkout:第一次与SVN服务器交互时,需要使用checkout在本地查看仓库。
注意:签出一次后,就建立了与SVN 存储库的连接。
3)提交:提交
在user1目录下新建Demo1.java文件,并将该文件提交到SVN仓库。下图展示了三种典型的错误提交。
4)更新:更新
切换到user2的工作空间(在user2目录下)。 User2第一次使用SVN仓库,需要签出。 user2修改Demo1.java并提交。切换到user1目录并更新。
5)删除与恢复:删除、恢复
注意:如果删除后提交到服务器(commit),服务器上的数据也会被删除(谨慎使用)。
3. SVN目录约定
/trunk:开发主线/branches:分支副本/tags:标签副本(一旦创建,不允许修改) 1)使用trunk作为主开发目录
一般我们所有的开发都是基于trunk的。当一个版本(release)的开发结束时(经过开发、测试、文档、制作安装程序、打包等),代码处于冻结状态(人为规定可以通过钩子来管理)。此时,应该基于当前冻结的代码库来创建标签。
当下一版本/阶段的开发任务开始时,开发将在主干上继续进行。这时,如果你发现之前发布的版本(Released Version)有一些bug或者有些紧急的功能需求,而正在开发的版本(Developing Version)无法满足时间要求,那么你就需要在之前的版本上进行构建。已进行修改。解决办法是根据release版本对应的tag来开发对应的分支。
2)下图为struts2的SVN仓库目录:
Struts2的代码现在使用git管理,所以Struts2的SVN存储库现在是空的。
4.TortoiseSVN的使用
TortoiseSVN是目前最流行的SVN客户端工具,使用图形界面与SVN存储库交互(作为命令行的替代)。关于TortoiseSVN的安装省略。
安装完成后,在任意位置右键即可看到TortoiseSVN选项。
1. 基本操作
1)创建仓库
创建目录:E:\svnrepo\repoDemo2,进入该目录,右键-TortoiseSVN-在此处创建存储库,创建默认的SVN目录结构,如下图所示:
2)结帐:结帐
在E盘下创建两个目录user3和user4,模拟两个用户一起工作的工作空间。
进入user3目录,右键-SVN Checkout,输入repository的URL:file:///E:/svnrepo/repoDemo2。 【此时仓库中还没有启动SVN服务,所以使用file://】
3)提交:提交
在user3/trunk目录下新建Demo1.java,右键该文件——TortoiseSVN——添加,将Demo1.java纳入版本控制。然后右键-SVN Commit提交到代码仓库。
4)更新:更新
在user4上执行上述结帐操作。并修改user4目录下的Demo1.java(如添加字段),并commit。
返回user3/trunk,右键-SVN更新。
5)启动SVN服务。这一步需要在命令行中输入:svnserve -d -r E:\svnrepo
6) 访问SVN存储库。右键任意空白位置-TortoiseSVN-Repo浏览器,输入URL:svn://192.168.1.6/repoDemo2,浏览SVN仓库内容,如下。
2、其他操作
以下操作位于TortoiseSVN的右键菜单中。
1)删除:删除
要删除文件或目录,不能直接使用Windows删除命令,否则不会显示但并没有真正删除。更新后,删除的文件将再次更新。要从库中删除,必须选择要删除的内容,TortoiseSVN — 删除,这样该文件就会被标记为删除。确认需要删除后,使用上面提到的commit命令,将其真正从库中删除。
2)重命名:重命名
无法直接使用Windows rename 命令执行重命名。您必须选择要重命名的文件,TortoiseSVN — 重命名。修改提交后即可更新到仓库。
重命名过程相当于添加一个新名称的文件并删除原名称的文件。
3)恢复:恢复
在提交之前,如果对之前的操作感到后悔,可以使用revert来恢复。
4)检查更新:检查修改
该功能可以显示您已经做了哪些尚未提交的修改。 还可以看到存储库中的更改,即哪些文件更改已被其他人提交,但您本地尚未更新。
5)出口:出口
使用SVN的工作空间的每个目录下都有一个.svn隐藏目录。您可以使用SVN 导出命令轻松导出没有.svn 目录的工作区。
3. 冲突问题的解决()
什么时候发生:按照4.1节的操作,假设user3和user4目录下的Demo1.java都更新到最新版本。 user3修改Demo1.java并提交到仓库。如果user4也修改了Demo1.java并提交,那么user4的TortoiseSVN会报错,提交的版本已经过时,并提醒user4需要更新,更新时会出现冲突。如下图:
对于每个更新的冲突文件,Subversion 会在冲突文件所在的目录中放置三个文件:
Demo1.java.mine:本地版本,以防冲突。 Demo1.java.r3:上次更新后的本地版本。 Demo1.java.r4:仓库中最新版本。解决方案一:
编辑完成后保存,直接选择Mark assolved,即将冲突标记为已解决。退出编辑冲突窗口,发现冲突时生成的三个文件被自动删除,Demo1.java变成了未提交。
提交,确定。
解决方案2:
直接修改Demo1.java,删除部分标签即可(前提是服务器和本地内容都需要保存)。
4.TortoiseSVN图标
部分图标说明:
正常:状态正常。已修改:本地副本已修改,需要提交到服务器。冲突:有冲突。 readonly:该文件是只读的。要修改它,必须先获得锁。 Locked:获得锁。已删除:计划将其从存储库中删除。 added: 已计划纳入版本控制non-versioned: 不纳入版本控制5. 认证与授权
所谓认证,就是给使用仓库的用户分配一个用户名和密码。用户连接仓库时需要输入用户名/密码。授权就是给指定的用户分配特定的权限,比如只读、读写等。认证和授权设置需要修改仓库conf目录下的文件,如下:
authz:认证文件,分配用户名和密码。 passwd:授权文件,为现有用户分配组,并为组分配权限。 svnserve.conf:指定身份验证和授权文件的位置。 1)修改conf/svnserve.conf
2)修改conf/passwd
3)修改conf/authz
这样,当用户再次执行checkout、commit、update时,就会需要进行身份验证。
5.subclipse插件的使用
以下操作使用4.1节中的资源库(repoDemo2)。
1)关联资源库
进入SVN存储库研究视角,右键单击SVN存储库面板-新建-存储库位置,输入URL:svn: //192.168.1.6/repoDemo2。
2)共享项目:共享项目
新建一个Java项目,命名为svnProject,并在项目中新建Demo1.java。
共享项目:右键项目-Team-Share Project.将项目导入到repoDemo2中。输入文件夹名称时,一般选择使用项目名称作为文件夹名称。
3)提交:提交
共享后,项目尚未提交至仓库。这时右键项目-Team-Commit即可将当前项目提交到仓库。
4)结账:结账
创建一个新的工作区并模拟另一个用户(user2)。首先关联资源库,右键svnProject – 签出as。
在Demo1.java 中添加一个新字段并提交(在user2 的工作区中完成)。
5)更新:
切换到user1 的工作区并更新项目。话不多说,团队— 更新
6)冲突处理
冲突的发生参见4.3节。原则:先更新再提交。
4.3节中的两种解决方案也适用于subclipse。方案1对应的是subclipse中的Synchronize视图(View),方案2类似。
6、SVN与Apache的集成(使用后见下文)
业务场景:上面的demo中,SVN仓库通过SVN协议对外提供服务。最直观的体现就是URL全部以svn://开头。开源项目中使用的SVN仓库在对外提供服务时使用的是http协议。这种情况下就需要和Apache服务器结合起来。
1)安装Apache服务器(假设安装在C:\Apache2.2)
2)修改C:\Apache2.2\conf\httpd.conf 放开注释,添加红色边框的两行(需顺序)
3)从SVN安装目录的bin目录下,将mod_authz_svn.so和mod_dav_svn.so复制到C:\Apache2.2\modules目录下
4)使用Apache服务器的htpasswd创建密码文件
5)复制project1_password到E:\repository\svn\project1\conf目录
6)将以下内容复制到Apache\conf\httpd.conf末尾
原创文章,作者:小su,如若转载,请注明出处:https://www.sudun.com/ask/128751.html
用户评论
陌颜
刚开始学软件开发,看到这篇文章真是太惊喜了!之前一直对SVN很不了解,有了详细的教程,学习起来轻松多了,以后可以好好练习一下了。
有12位网友表示赞同!
淡抹烟熏妆丶
Windows下用SVN确实容易遇到一些问题,这篇文章解释得很清楚,尤其是关于配置路径的部分,很有针对性。比网上其他 tutorials 要好得多!
有16位网友表示赞同!
玩味
这篇教程虽然很详细,但我还是觉得操作有些复杂,我比较菜鸟,感觉步骤太多,希望能有更简单的入门指南。
有17位网友表示赞同!
暖瞳
终于找到了一个基于Windows平台的完善SVN教程!之前一直用Linux系统,现在学习Windows开发环境,这篇文章真是帮到我大忙了。感谢作者!
有15位网友表示赞同!
抚笙
我之前也遇到过在 Windows 平台下配置 SVN 的问题,总是卡在安装和本地路径设置,还好看到了你的这篇详细教程,解决了我的痛点!
有18位网友表示赞同!
你与清晨阳光
我更喜欢使用 Git 管理代码版本,我觉得它比SVN更灵活方便。不过,看到这篇文章后还是对 SVN 有了一些了解,毕竟要接触不同的 version control software.
有14位网友表示赞同!
别留遗憾
学习效率很高,这个图文并茂的教程讲解很流畅,特别是关于命令行操作的部分,让我理解得更加清晰。
有17位网友表示赞同!
怀念·最初
我一直用 SVN, 但这次更新系统变成 Windows后一直报错!看了这篇文章才知道原来是版本问题,赶紧更新一下了,现在终于又能用 svn 了!
有6位网友表示赞同!
有恃无恐
我觉得这个教程比较适合初学者,对每个步骤都做了详细的解释,不过需要更深入了解SVN的学习者可能可以跳过一些基本的内容。
有20位网友表示赞同!
心安i
文章写得确实很好,通俗易懂,但是建议再加入一些常见的 SVN 操作场景示例,这样对理解更加有帮助!
有11位网友表示赞同!
哭花了素颜
终于找到适合我的 Windows SVN 教程了!之前一直都在用 Linux 平台,现在转到 Windows 学习开发,这个教程真是太值了!
有19位网友表示赞同!
你身上有刺,别扎我
这篇文章介绍了许多关键的概念和技巧,对于初学者来说非常有用。我强烈建议所有想学习SVN的开发者阅读一下。
有20位网友表示赞同!
冷风谷离殇
感谢作者分享这么实用的教程!之前一直对 SVN 感兴趣但找不到合适的资源学习,这下终于能上手了,期待继续深入学习!
有20位网友表示赞同!
毒舌妖后
对于已经比较熟悉 SVN 的朋友来说,这篇教程可能有点重复性,可以尝试添加一些更高级的内容,比如冲突解决技巧等。
有5位网友表示赞同!
爱到伤肺i
我建议作者可以考虑添加视频讲解,这样更加直观,更容易理解。毕竟很多时候图解比文字描述更有说服力。
有7位网友表示赞同!
别悲哀
这篇文章让我对 SVN 很有兴趣,决定自己多学习一下,感觉掌握 SVN 会帮助我更好的管理代码和协同开发!
有19位网友表示赞同!
青衫故人
文章介绍的非常详细,我按照步骤操作后顺利安装了 SVN 和配置本地路径,感谢作者分享这份宝贵经验!
有5位网友表示赞同!
此生一诺
Windows平台下使用SVN确实有了一些特性的限制,这本书讲解的很到位,希望以后能有更多关于SVN在不同平台下的使用技巧和案例分享。
有7位网友表示赞同!