SVN服务器和客户端使用说明

更新时间:2024-06-03 18:50:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

备注:本内容经过本人练习和测试

简介

VisualSVN Server是用于Subversion管理的windows程序,它整合了Subversion, Apache和一个命令行管理工具。提供了完全可视化的Subversion版本库创建,管理,人员管理的操作界面。

TortoiseSVN是subversion的客户端工具,可以通过他连接到VisualSVN Server。

细节:VisualSvn Server 已经将 Apache 和 Subversion 集成好了,生成 HTTP 的访问方式 :http://计算机名:端口号/svn/Project_Name。

windows下配置VisualSVN Server服务器(服务端和客户端) 下载安装文件:

服务端安装文件:VisualSVN-Server-1.6.2(下载地址http://tortoisesvn.net) 客户端安装文件:TortoiseSVN-1.5.5.14361-win32-svn-1.5.4

在VisualSVN Server 的官网http://www.visualsvn.com上提供了两个产品。一个是VisualSVN,另一个是VisualSVN Server (下面简称Server)。前者是一个集成到Visual Studio里的插件,功能挺强大,但是需要收费滴

VisualSVN Server(服务器端)

一、VisualSVN Server的配置和使用方法【服务器端】

1,VisualSVN Server的安装

下载安装包,解压后得到.exe文件,双击进行安装

其中的Location和Repositories存放位置可以自由设置,可以两个可以不在同一盘符下。建议复选 Usesecure connection项,这时候只有443和8443两个端口可用(注意自己公司的防火墙问题,如果有

冲突则需要开放该对应端口以使用)。

还有就是建议使用 Subversion身份验证模式。(具体如果处于域里面则已包含了域验证,相对安全了)

一步步Next,安装完毕,默认选择打开操作管理界面(也可以开始->程序->VisualSVN打开操作管理界面)

2,添加一个代码库【Repository】 右击Repository

上图中的CheckBox如果选中,则在代码库StartKit下面会创建trunk、branches、tags三个子目录;不选中,则只创建空的代码库StartKit,点击OK按钮,代码库就创建成功

至此,完成代码库创建。

3,给代码库创建用户及分配权限

下面,我们开始安全性设置,在左侧的Users上点击右键

点击OK,我们就创建一个用户了。按照上面的过程,分别添加用户Developer1、tester1、manager1,然后添加这些用户到我们刚才创建的项目里

右击刚才新建的代码库StartKit

点击上图中的\按钮,在下图中选择我们刚才添加的用户,点击OK按钮

说明:大家可能注意到了下图中的Groups,是的,你也可以先创建组,把用户添加到各个组中,然后对组进行授权

按照下图所示,分别对用户【或组】进行授权:

因为用户starter在团队中是新来者,不希望他向代码库中提交新代码,所以他只能读取代码库中的代码,不能提交代码。tester1是测试人员,不负责代码编写,所以也是只读权限。而Developer1和manager1是开发人员和项目经理,自然具有读、写的权限。

在实际的项目开发过程中,Developer和tester往往不可能只有一个人,这时候使用组来授权更加方便。

权限分配

要真正实现针对整个库的权限分配控制,即指定的用户不但只能访问给其指定的资源而且不能访问并没有设定限制的其它资源,就必须首先在Repositories级别把Everyone用户的权限设为无任何权限(No Access),然后再针对具体的目录或文件设置不同用户的权限。

权限分配时具有父子继承和下级覆盖上级权限的特点:具体就是,如果上级目录给某用户设置了某权限,而下级目录并没有给该用户设置具体权限,则该用户对下级的子目录具有在上级目录所给予的权限。如果上级目录设置了某权限,同时在下级目录再次对该用户设置了其它权限,则该用户对下级目录所拥有的权限就不再是在上级目录所给予的权限。

实际在权限分配时按照目录结构从上到下的顺序,应遵循由严到松的原则,在顶层目录设置大多数用户不具有任何权限(只有把Everyone用户的权限设为无任何权限即可实现,不需要分别把每个用户的权限设为无任何权限),在需要给用户分配一定权限的子目录设置适当的权限,防止其他用户访问和获得不能让其了解的资料。

? 当权限设为No Access,指定用户不能检出和获得任何信息;

? 当权限设为read only,指定用户可以检出和获得信息,但不能对信息修改后提交到服务器; ? 当权限设为read/write,指定用户可以检出和获得信息,同时也可以把自己对信息的修改提交到

服务器。

备份VisualSVN Server中仓库(Repositories)中的代码

一、最好的方法就是使用TotoiseSVN(客户端)工具,把仓库中的代码直接检出(check out)。

二、可以直接把Repositories整个仓库文件拷贝到其它磁盘,在重新安装VisualSVN Server时,可以直接

指定使用此仓库,可以使用仓库中原先的所有东西,不仅包括使用仓库中的资料,还可以使用原先的用户和权限设置。

例如:d:\\Repositories为之前拷贝的仓库,在重新安装另一个VisualSVN Server时可以直接使用。

三、使用recommend命令实现备份。

TotoiseSVN(客户端)

TotoiseSVN的基本使用方法

一、签入源代码到SVN服务器

假如我们使用Visual Studio在文件夹StartKit中创建了一个项目,我们要把这个项目的源代码签入到SVN Server上的代码库中里,首先右键点击StartKit文件夹,这时候的右键菜单如下图所示:

点击Import,弹出下面的窗体,其中http://zt.net.henu.edu.cn 是服务器名,svn是代码仓库的根目录,StartKit是我们在上个教程中添加的一个代码库:

说明:左下角的CheckBox,在第一次签入源代码时没有用,但是,在以后你提交代码的时候是非常有用的。

点击OK按钮,会弹出下面的窗体,要求输入凭据

源代码已经成功签入SVN服务器了。这时候团队成员就可以迁出SVN服务器上的源代码到自己的机器了 二、签出源代码到本机

在本机创建文件夹StartKit,右键点击Checkout,弹出如下图的窗体:

在上图中URL of Repository:下的文本框中输入svn server中的代码库的地址,其他默认,点击OK按钮,就开始签出源代码了。

说明:上图中的Checkout Depth,有4个选项,分别是迁出全部、只签出下一级子目录和文件、只签出文件、只签出空项目,默认的是第一项。上面的例子中,我们也可以使用web的方式访问代码库,在浏览器中输入http://zt.net.henu.edu.cn/svn/StartKit/

这时候也会弹出对话框,要求输入用户名和密码,通过验证后即可浏览代码库中的内容。 源代码已经成功签出到刚才新建的StartKit目录中。 打开StartKit目录,可以看到如下图的文件夹结构:

一旦你对文件或文件夹做了任何修改,那么文件或文件夹的显示图片机会发生变化。下图中我修改了其中的二个文件

(附:不同状态所对应的图片)

现在我们已经知道怎么将源代码签入到SVN服务器,怎么从服务器签出代码到本机,也简单了解了不同状态所对应的图案。

三、提交修改过的文件到SVN服务器

上面的图2-2-7中,我修改了位于Model文件中的二个文件ImageInfo.cs和NewsInfo.cs,下面演示如何提交到SVN服务器。

注意:提交源代码到服务器时,一定确保本机的代码是最新版本,否则可能提交失败,或者造成版本冲突。 在Model文件夹上点击右键或在Model文件下的空白处点击右键,点击SVN Commit?弹出下面的窗体:

点击ok

四、添加新文件到SVN服务器

我们在Model文件下添加一个新的类文件UserInfo.cs,在Model文件下的空白处点击右键,点击SVN Commit?,和上面讲的提交修改过的文件到SVN服务器一样,就可以了。

另外也可以在文件UserInfo.cs上点击右键,点击TortoiseSVN=>>Add,弹出如下图的窗体:

选中UserInfo.cs文件,点击OK按钮,这样并没有将这个文件提交到SVN服务器,只是将这个文件标记为源代码库库中的文件,并将其状态置为修改状态。之后,我们要再SVN Commit这个文件一次,才可以将其真正提交到SVN服务器上的代码库中。

上面讲是添加文件,实际上,添加文件夹的步骤也是一样的,这里就不说了。 五、更新本机代码与SVN服务器上最新的版本一致

这个也很简单,只要在需要更新的文件夹上点击右键或在该文件下的空白处点击右键,点击SVN Update,就可以了。

注意:更新操作可能会因为版本冲突而失败,这是可以使用合并【Merge】或其他方法解决;也可能因为锁定【Get Lock】而失败,这是需要先解锁【Release Lock】。 六、重命名文件或文件夹,并将修改提交到SVN服务器

只要在需要重命名的文件或文件夹上点击右键,点击TortiseSVN=>>Rename?,在弹出的窗体中输入新名称,点击OK按钮,就可以了。此方法也不是直接重命名,而是将该文件或文件夹的名称标记为重命名后名称,也需要我们使用SVN Commit提交到SVN服务器后才真正重命名。 七、删除文件或文件夹,并将修改提交到SVN服务器

最简单就是,你直接删除文件或文件夹,然后使用SVN Commit提交更新到SVN服务器。另外一种方法是在你要删除的文件或文件夹上点击右键=>>TortoiseSVN=>>Delete删除,此方法也不是直接删除,而是将该文件或文件夹的状态置为删除,也需要我们使用SVN Commit提交到SVN服务器后才真正删除。

说明:实际上,从你把源代码迁签入SVN服务器开始,每一个版本的数据和文件,就算是你已经删除了的,也都可以随时迁出。

以上只是TortoiseSVN最简单的几个功能,其实他的功能远不止这些,其他的功能大家可以在使用的过程中慢慢体会,有些功能我会在下面的教程中使用到,到时候会和大家讲清楚用法。

注意:向SVN服务器提交源代码的时候,一定不要提交bin、obj等文件夹,否则会很麻烦。但是web项目的bin目录除外,但是web项目的bin目录中的引用其他项目而生成的dll不需要提交。

一个好习惯:如果项目中引用了其他的第三方的程序集,比如EnterpriseLibrary、FCKEditor等,这时候不要简单从他们的安装位置引用,而是在你的解决方案下,添加一个Library的目录,把需要的程序集复制到这里,然后从Library目录引用,这样有什么好处,自己想一想吧 八、使用TotoiseSVN在本地建立资源库(repository) 1、在本地建立一个空文件夹,(必须是空的文件夹)

2、右键点击此空文件夹,选择create repository here命令,即可成功在本地创建一个仓库。

弹出成功提示

打开该文件可以看到,该空文件夹下自动生成如下的文件。

3、在VisualSvn Server中,右键点击仓库的根目录,选择导入已存在的仓库,选择刚才创建的文件夹,点击确定,此时在本地创建的仓库就导入服务器中了。

如果查看VisualSVN Server在磁盘的Repositories目录,就可以看到,“新建测试的repository”已被从本地放入此根目录下了。此时完全可以删除原先创建的仓库。

九、版本库迁移

假如有两个服务器A和B,版本库原来在A服务器上,现在要移到B服务器,做法如下

1、将A中的版本库更新到MYeclipse(注意要删除掉....\\WebRoot\\WEB-INF\\下的calsses文件夹,因为这里包含Myeclipse自动编译文件,如果不删除就上传至版本库,check出来的项目同步时会报错),右击项目-team-disconntect(断开)-选择第一项-Yes,目的是将原来使用svn或cvs时项目中的.cvs和.svn文件清除掉

2、在B上安装客户端和服务端,再按上面讲的步骤在B的服务端上建版本库,然后把项目拷贝到B中的某个位置,使用svn客户端右击项目,选择import导入到版本库中

VisualSVN Server和TortoiseSVN的使用细节

一、获得资源文件在VisualSVN Server中的路径

右键点击要访问的资源,选择Copy URL to Clipboard命令,直接实现路径的拷贝。

二、浏览svn服务器仓库repositories中的资源

(一)使用客户端工具TortoiseSVN,右键点击Repo-browser,

输入要浏览的资源的URL路径信息,点击OK确定;

输入在svn服务器中为用户设置的用户名和密码,点击OK确定;

出现需要浏览的信息,OK退出;

(二)使用VisualSVN Server,右键点击要浏览的资源,选择Browse;

打开浏览器,弹出提示框,输入在svn服务器中为用户设置的用户名和密码,点击确定;注意此处的用户名和密码不是VisualSVN Server所在的计算机的用户名和密码。

出现需要浏览的信息

三、删除svn服务器仓库repositories中的指定资源

(一)在 VisualSVN Server中,只能直接删除文件夹,不能删除文件,要删除文件只能通过删除文件所在的文件夹来实现删除文件。可以看到,没有针对文件的删除命令。

(二)在客户端,直接删除受版本控制的某个文件,再通过TortoiseSVN工具的SVN Commit命令提交修改后的项目,间接实现删除svn服务器仓库repositories中的指定文件。

四、直接在VisualSVN Server中只能建文件夹而不能创建文件。 五、SVN使用图标说明

表示Subversion状态正常。

当我们开始编辑一个文件后,图标将变成红色感叹号。通过这种方式,可以很容易地看出我们对哪些文件进行了修改操作,但是还没有提交到版本库中。 如果在提交的过程中出现了冲突,图标将变成黄色感叹号。

如果我们拥有了一个文件的锁,并且Subversion状态是正常,这个重载图标将提醒我们:如果不使用该文件的话,请进行释放锁操作,允许其他成员提交对该文件的修改。

表示当前文件夹下的某些文件或文件夹已经被计划从版本控制中删除,或是该文件夹下某个受控的文件丢失了。

加号告诉我们有一个文件或是目录已经被计划加入版本控制。 问号表示新建的文件或目录,还没有被加入版本控制

解决冲突(conflict)

一、冲突产生的原因:当两个或两个以上的用户对同一文件进行操作时,如果A对该文件修改操作完成后,将该文件提交到SVN上。此时,其他成员的本地文件与SVN上的文件版本不一致。当成员B对该文件修改操作完成并对文件进行更新或提交操作时,就会产生冲突。 二、面对文件冲突,我们可以选择以下两种方式解决冲突:

? 使用工具解决冲突

? 用revert放弃所做的修改

(一)使用TortoiseSVN自带工具编辑冲突

右键点击产生冲突的文件,选择“编辑冲突”(Edit conflicts);

红色标注的部分为不一致产生冲突的部分,编辑冲突时需选中冲突的文本;

编辑完冲突后,点击

图标,表示冲突已解决;

冲突解决之后,及时提交(commit)该文件。

(二)、用revert放弃所做的修改

右键点击产生冲突的文件,选择“还原”(revert),放弃本地对该文件的修改,完成冲突解决。

(三)、避免冲突的建议

(1) 修改文件之前,先进行一次update操作;

(2) 修改完成后,及时commit,不要在本地停留过长时间;

(3) 在多位团队成员协作时,分工要分明,尽量修改自己撰写的部分,不要修改不属于自己撰写的部分; (4) 出现冲突很正常,可以通过前面介绍的方法解决,不要相互覆盖。

在Myeclipse中使用SVN

一、在Eclipse下使用的图标

受SVN控制的文件被标记为小黄桶; 修改过的文件都被标记上一个黑色星号; 未受版本控制的文件被标记为问号; 报错的文件被标记为叉号;

二、在myeclipse中安装svn插件的方法: 方法一、如果可以上网可在线安装

1. 打开Myeclipse,在菜单栏中选择Help→Software Updates→Find and Install; 2. 选择Search for new features to install,点击Next进入下一步; 3. 点击\按钮,在弹出的对话框中输入: name:SVN

url:http://subclipse.tigris.org/update_1.4.x

点击OK,关闭对话框,并点击Finish按钮,Myeclipse自动下载插件安装程序; 4. 下载完插件之后,进入安装画面。

5. 选择所要安装的SVN插件内容,这里去掉第二个选项Subclipse Integrations,点击下一步;

6. 选择 \accept the terms in the license agreements\并点击Next,直到点击Finish即可,进入下一步。

7. 开始安装SVN插件,安装完成之后,重启Myeclipse。

方法二、无法连接网络的情况 1、下载SVN插件

下载地址:http://subclipse.tigris.org/files/documents/906/46495/site-1.6.5.zip 2. 在MyEclipse 6.5的安装路径下的plug_in(C:\\Program Files\\MyEclipse 6.5\\eclipse\\plugins)下新建文件夹:site-1.6.5;

3. 打开MyEclipse 6.5,在菜单栏中选择 Help → Software Updates → Find and Install;

2. 选择Search for new features to install,点击Next进入下一步;

3. 点击\按钮,找到解压出来的文件夹(site-1.6.5) → 点击OK,并点击Finish按钮,Myeclipse自动加载插件;

4. 在弹出的菜单中,select the features to insteall:在刚加进去的路径Subclipse-site-1.6.5这一项前打钩,此时会报错,然后展开Subclipse前的加号,去掉Subclipse Integration for Mylyn 3.x(Optional)3.0.0前的钩,错误消失 → next → 选 I accept the terms in the license agreements → next → next → 选中所有的8项,然后Change Location??,在弹出的菜单中选Add Location??选择在第3步中建的文件夹的路径(C:\\Program Files\\MyEclipse 6.5\\eclipse\\plugins\\site-1.6.5) → Finish → 再弹出的菜单中选 Install All → Yes

5. 开始安装SVN插件,安装完成之后,重启Myeclipse。

方法三、无法连接网络的情况(link链接) 1、从官网下载 Site-1.6.5.zip

2、解压Site-1.6.5.zip至${eclipse}\\Plugins\\Subclipse-1.6.5.zip,并删除 site.xml(很重要)(即把Site-1.6.5.zip解压出来的features和plugins文件夹里所有的jar包和两个XML文件artifacts.xml、content.xml添加并替换到plugins文件夹下。例如:我应添加在C:\\Program Files\\MyEclipse 6.5\\eclipse\\plugins\\目录下)

3、创建link文件 ${eclipse}\\linksSubclipse-1.6.5.zip.link (即在link文件夹下添加linksSubclipse-1.6.5.link文件)其内容为: path=C:\\Program Files\\MyEclipse 6.5\\eclipse\\

4、重启Eclipse就是把subclipse集成完毕

二、从svn服务器中检出项目

1. 在MyEclipse 6.5 菜单栏中选择Window→Open Perspective→Other打开Myeclipse试图列表。这个时候Myeclipse的视图列表中,就出现了\一项。 2. 打开\Repository Exploring\视图。在左边空白区域,单击右键 → New → Repository Location。

3. 在Url一栏中输入svn://IP,点击Finish按钮。

4. 选择要下载的项目右键选择checkout 就把项目下载到本地了 三、基本操作 1.提交工程

右击工程->小组->共享项目->选择SVN->选择svn://127.0.0.1(如果没有,则创建一个新的资源库)->下一步->完成 2.下载工程

在SVN资源库透视图下,点开svn://127.0.0.1,会显示出现在本机SVN上的所有工程,右击你想下载的工程->检出为->下一步->完成 3.操作工程 3.1同步 在MyEclipse J2EE透视图下,右击你要同步的工程->小组->与资源库同步->这时会进入同步透视图,会显示出本机与SVN上内容有不同的文件,双击文件名,会显示出两个文件中哪里不同;

3.2提交

在同步透视图下有\灰色向右的箭头,表示你本机修改过\右击该文件,可以选择提交操作;

3.3覆盖/更新

在同步透视图下有\蓝色向左的箭头,表示你本机修改过\右击该文件,可以选择覆盖/更新操作;

4.图标说明

4.1灰色向右箭头:本地修改过 4.2蓝色向左箭头:SVN上修改过

4.3灰色向右且中间有个加号的箭头:本地比SVN上多出的文件 4.4蓝色向左且中间有个加号的箭头:SVN上比本地多出的文件

4.5灰色向右且中间有个减号的箭头:本地删除了,而SVN上未删除的文件 4.6蓝色向左且中间有个减号的箭头:SVN上删除了,而本地未删除的文件 4.7红色双向箭头:SVN上修改过,本地也修改过的文件 5.一些我遇到的出错信息

5.1在上面讲的3.2步输入URL(svn://127.0.0.1)点下一步出现\Option expected\错误

你打开svnserve.conf文件中的第12行,该错误是由于该行的前面有空格引起的,把左边多出的空格删除掉即可;

5.2在上面讲的3.2步输入URL(svn://127.0.0.1/SVN_PRJ)点下一步出现\错误 URL错了,应该输入svn://127.0.0.1即可 本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/chenhu900101/archive/2009/12/11/4987011.aspx

删除SVN版本控制

一、创建一个删除svn控制的文件

新建建立一个文本文件,取名为Del-svn.reg(名字可随便取,扩展名由txt改为reg),文件内容如下:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\\SOFTWARE\\Classes\\Folder\\shell\\DeleteSVN] @=\

[HKEY_LOCAL_MACHINE\\SOFTWARE\\Classes\\Folder\\shell\\DeleteSVN\\command]

@=\IN (.svn) DO RD /s /q \\\

保存之后,双击这个reg文件。成功后,在每一个文件夹上点击右键都会有一个“Delete SVNFolders”的选项,点击之后,既可以删除这个文件下下面所有的.svn文件了。

本文来源:https://www.bwwdw.com/article/pg46.html

Top