基于windows平台的SVN教程

一、SVN工作原理SVN(SubVersion)的基本工作思路是这样的:在一台服务器上建立一个源代码库,库里可以存放许多不同项目的源程序,由源代码库管理员统一管

大家好,今天小编来为大家解答基于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选项。

基于windows平台的SVN教程

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,删除部分标签即可(前提是服务器和本地内容都需要保存)。

基于windows平台的SVN教程

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末尾

用户评论

基于windows平台的SVN教程
陌颜

刚开始学软件开发,看到这篇文章真是太惊喜了!之前一直对SVN很不了解,有了详细的教程,学习起来轻松多了,以后可以好好练习一下了。

    有12位网友表示赞同!

基于windows平台的SVN教程
淡抹烟熏妆丶

Windows下用SVN确实容易遇到一些问题,这篇文章解释得很清楚,尤其是关于配置路径的部分,很有针对性。比网上其他 tutorials 要好得多!

    有16位网友表示赞同!

基于windows平台的SVN教程
玩味

这篇教程虽然很详细,但我还是觉得操作有些复杂,我比较菜鸟,感觉步骤太多,希望能有更简单的入门指南。

    有17位网友表示赞同!

基于windows平台的SVN教程
暖瞳

终于找到了一个基于Windows平台的完善SVN教程!之前一直用Linux系统,现在学习Windows开发环境,这篇文章真是帮到我大忙了。感谢作者!

    有15位网友表示赞同!

基于windows平台的SVN教程
抚笙

我之前也遇到过在 Windows 平台下配置 SVN 的问题,总是卡在安装和本地路径设置,还好看到了你的这篇详细教程,解决了我的痛点!

    有18位网友表示赞同!

基于windows平台的SVN教程
你与清晨阳光

我更喜欢使用 Git 管理代码版本,我觉得它比SVN更灵活方便。不过,看到这篇文章后还是对 SVN 有了一些了解,毕竟要接触不同的 version control software.

    有14位网友表示赞同!

基于windows平台的SVN教程
别留遗憾

学习效率很高,这个图文并茂的教程讲解很流畅,特别是关于命令行操作的部分,让我理解得更加清晰。

    有17位网友表示赞同!

基于windows平台的SVN教程
怀念·最初

我一直用 SVN, 但这次更新系统变成 Windows后一直报错!看了这篇文章才知道原来是版本问题,赶紧更新一下了,现在终于又能用 svn 了!

    有6位网友表示赞同!

基于windows平台的SVN教程
有恃无恐

我觉得这个教程比较适合初学者,对每个步骤都做了详细的解释,不过需要更深入了解SVN的学习者可能可以跳过一些基本的内容。

    有20位网友表示赞同!

基于windows平台的SVN教程
心安i

文章写得确实很好,通俗易懂,但是建议再加入一些常见的 SVN 操作场景示例,这样对理解更加有帮助!

    有11位网友表示赞同!

基于windows平台的SVN教程
哭花了素颜

终于找到适合我的 Windows SVN 教程了!之前一直都在用 Linux 平台,现在转到 Windows 学习开发,这个教程真是太值了!

    有19位网友表示赞同!

基于windows平台的SVN教程
你身上有刺,别扎我

这篇文章介绍了许多关键的概念和技巧,对于初学者来说非常有用。我强烈建议所有想学习SVN的开发者阅读一下。

    有20位网友表示赞同!

基于windows平台的SVN教程
冷风谷离殇

感谢作者分享这么实用的教程!之前一直对 SVN 感兴趣但找不到合适的资源学习,这下终于能上手了,期待继续深入学习!

    有20位网友表示赞同!

基于windows平台的SVN教程
毒舌妖后

对于已经比较熟悉 SVN 的朋友来说,这篇教程可能有点重复性,可以尝试添加一些更高级的内容,比如冲突解决技巧等。

    有5位网友表示赞同!

基于windows平台的SVN教程
爱到伤肺i

我建议作者可以考虑添加视频讲解,这样更加直观,更容易理解。毕竟很多时候图解比文字描述更有说服力。

    有7位网友表示赞同!

基于windows平台的SVN教程
别悲哀

这篇文章让我对 SVN 很有兴趣,决定自己多学习一下,感觉掌握 SVN 会帮助我更好的管理代码和协同开发!

    有19位网友表示赞同!

基于windows平台的SVN教程
青衫故人

文章介绍的非常详细,我按照步骤操作后顺利安装了 SVN 和配置本地路径,感谢作者分享这份宝贵经验!

    有5位网友表示赞同!

基于windows平台的SVN教程
此生一诺

Windows平台下使用SVN确实有了一些特性的限制,这本书讲解的很到位,希望以后能有更多关于SVN在不同平台下的使用技巧和案例分享。

    有7位网友表示赞同!

原创文章,作者:小su,如若转载,请注明出处:https://www.sudun.com/ask/128751.html

Like (0)
小su的头像小su
Previous 2024年9月2日 上午1:11
Next 2024年9月2日 上午1:14

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注