.NET SVN 的使用,配合VS2010使用SVN,汇总帖子,便于以后查阅

(所有都为转载,有的没注明出处,还请原谅,如有冒犯,请及时联系,并删帖)


 给大家介绍一些SVN的入门知识!希望对大家的学习起到作用!

     关于SVNCVS的相关知识,大家可以自己去google一下。

     一、准备

        SVN是一个开源的版本控制系统,它可以记录所有的文件修改版本。CVS也是一个版本控制系统,可是现在大家更多的是用SVN,因为SVN不但继承了CVS的优点,而且还有许多的功能是CVS所不具备的。可以肯定,SVN会成为CVS的替代系统。

         我们还需要安装一个客户端软件——TortoiseSVNtortoiseSVN 只是svn 的一个图形化的操作界面有了这两个,就可以建立起强大的svn 服务器了。但是如果想通过http 的方式访问,则需要使用apache2.2.x,并将svn 的一些模块集成进去。ankhSVN 则可以实现SVN+Visual Studio 的远 程代码管理。 

          TortoiseSVN官网下载地址:http://tortoisesvn.net/downloads.html

           Subversion官网下载地址(现在的最新版本是到了1.7.4了):http://subversion.apache.org/

           大家也可以留言,我会把setup发给大家。

    二、使用ankhSVN

          在大家安装好了SVN的服务器端和客户端之后(也可以只安装客户端,通过远程访问服务器端)。首先是要在服务器端建立一个仓库,用来存在我们要开发的项目。

          具体步骤:

           1、建立仓库,比如说,我们在D盘里新建一个文件夹叫做share,然后在share里再新建一个文件夹叫做svnrepo(用来做项目库)

           

          这是最简单的方法了,还有一种方法是在控制台中通过命令来创建。运行——cmd。输入:svn help,可以查看相关的命令,这一步骤用到的命令是create大家感兴趣可以尝试一下。

         2、设置权限

          打开我们刚才的目录,我们可以看到有一些文件夹,conf文件夹保存的是一些配置的信息,打开svnserve

         

           3、添加用户,并设置密码

           打开在同一层目录下的passwd

            

           我们这里只是做了一个示范,大家可以根据自己的实际项目,添加相应的用户。

         到这基本工作就完成了。

 

注意: 建立好库之后,则要启用svn 的服务,可以运行cmd 在命令提示符中键入 svnserve –daemon –root D:\share\svnrepo(我们设置的仓库) 回车,命令作用是启用svn 服务器,这样就运行起了svn 服务,特别要注意这个窗口不能关闭,一旦关闭也就停止了svn 服务。 

 

         4、测试

          

           

          4、安装ankhsvn

            下载地址:http://ankhsvn.open.collab.net/

            安装好ankhsvn后,可以在VS2010中的文件中看到一个subversion的选项,可以通过这个选项打开远程的文件,然后copy到本地等等操作,提供一个文档,供大家学习参考

            http://download.csdn.net/detail/yjjm1990/4197334

 

 

 好长时间没写生东西了,就等svn搞定以后再写了,搞之前觉得挺复杂,其实搞完以后倒觉得没什么难的。 

Subversion(SVN)是一个开源的版本控制系统,它可以记录文件的所有修订版本,但没有图形化的操作界面,所以需要安装TortoiseSVN,tortoiseSVN只是svn的一个图形化的操作界面,有了这两个,就可以建立起强大的svn服务器了。但是如果想通过http的方式访问,则需要使用apache2.2.x,并将svn的一些模块集成进去。ankhSVN则可以实现SVN+Visual Studio的远程代码管理。 

Subversion,TortoiseSVN,ankhSVN,apache这些都是开源软件,建议大家在使用前都去下载其最新的版本,注意SVN要下载for apache的版本,不然会没有挂载到apache上的一些相关配置文件。 

1.使用SVN+TortoiseSVN构建SVN服务器. 

这两个程序安装起来都比较容易,TortoiseSVN安装需要重启一次机器,安装好后,在D盘建立起svn服务的根目录,D:\svn,然后在下面建立repos1作为一个项目的库,选中该文件夹,右击鼠标,选择TortoiseSVN>Create Repository here…然后是选择版本库的模式,默认选择FSFS即可,这是一种比较新的文件版本模式。 

建立好库之后,则要启用svn的服务,可以运行cmd在命令提示符中键入 svnserve –daemon –root D:\svn 回车,命令作用是启用svn服务器,并设置svn服务器根目录为D:\svn,这样就运行起了svn服务,特别要注意这个窗口不能关闭,一旦关闭也就停止了svn服务。 

然后鼠标右击打开TortoiseSVN>Repo-browser来查看刚才建立的版本库,在URL对话框中输入svn://Localhost/repos1,如果可以查看到repos1这个空库则说明svnserve已经正常工作了。 

然后我们为它配置用户权限,如果所有来访者都能对版本库进行修改,那就乱套了。 

用文本编辑器打开D:\svn\repos1\conf\svnserve.conf,将 

# password-db = passwd 

改为: 

password-db =passwd 

注意前面不要有空格,然后修改同目录下的passwd文件,增加一个test帐号,在[users]这个节下面添加test=test即可,即用户名,密码都是test。 

2.将项目导入版本库 项目导入版本库后,一切项目数据改动都将由该版本库进行管理和记录。选中项目所在文件夹,右击>tortoiseSVN>Import… ,在弹出的对话框”URL of repository”中输入”svn://localhost/repos1/项目名”,在”Import message”中可以加入注释,点OK后要输入帐号密码,输入上面所添加的test用户即可,完成后,项目就导入成功了。tortoiseSVN的取出,提交等功能在这里就不一一介绍了.导入后再用TortoiseSVN>Repo-browser察看就能看到添加的项目了。 

3.用Apache架设svn服务 

用Apache架设有什么好处呢?我觉得吧,可以使用http意味着可以使用固定的域名,开发的时候IP发生改变也无所谓,而且apache不会有那个不能关掉的窗口,虽然svnserve也可以加到系统的服务里面.另外apache配置十分灵活,且具有了许多svnserve所没有的特性,当然灵活也造成了一定的复杂性。 

首先安装好Apache 2.2.x,这个不用多说,然后把subversion安装目录下的bin目录中的intl3_svn.dll,libdb44.dll,mod_authz_svn.so,mod_dav_svn.so这几个文件复制到apache的模块目录modules下。然后修改apache的配置文件httpd.conf来使apache加载mod_dav_svn模块。 

将 #LoadModule dav_module modules/mod_dav.so 前面的”#”号去掉,然后在后面添加: LoadModule dav_svn_module modules/mod_dav_svn.so 注意它一定要加在mod_dav的后面。 

现在已经设置好了Apache和Subversion,但是Apache不知道如何处理Subversion的客户端Tortoisesvn,为了让apache知道哪个目录是用来作为subversion的版本库,需要在配置文件httpd.conf后面添加以下代码: <Location /repository/> DAV svn SVNPath D:/svn/repos1 </Location> 

这个配置告诉apache首先要启动dav_module,然后加载dav_svn_module,版本库对外的URL是http://服务器IP/repository/,Subversion版本库物理位置在D:/svn/repos1下。配置好重启apache,就可以正常使用了。并且subversion的各种客户端也可以通过http协议访问版本库。 

如果要指定多个版本库可以使用多个Location标签,也可以用SVNParentPath代替SVNPath来指定版本库的父级目录,如D:\svn下有多个版本库,repos1,repos2等,就可以使用以下代码: <Location /repository/> DAV svn SVNParentPath D:/svn </Location> 

“SVNParentPath D:/svn”表示D:\svn下的每个子目录都是一个版本库,访问可以通过”http://服务器IP/repository/repos1″,”http://服务器IP/repository/repos2/”等来访问。 

现在版本库对于任何来访者都是具有完全的权限的我们需要对其进行权限设置,这里只介绍基本的http认证。apache提供了一个htpasswd工具来管理一个用户文件,这个文件包含用户名和加密后的密码,htpasswd在Apache的bin目录下,具体使用方法如下: 

htpasswd -c E:\user\apache\passwd.conf user 其作用是创建passwd.conf文件,并建立用户user,输入命令回车后会要求输入密码。 

htpasswd [-m] E:\user\apache\passwd.conf Newuser 这个用于添加新用户,-m表示密码用MD5加密。 

htpasswd [-m] E:\user\apache\passwd.conf user 末尾参数为已有用户则可以用于修改用户密码。 

htpasswd -D E:\user\apache\passwd.conf user 删除用户,注意参数D要大写。 

然后修改apache的httpd.conf,在Location标签中加入以下内容: 

AuthType Basic AuthName “KeyPark Studio” AuthUserFile E:\user\apache\passwd.conf Require valid-user 

AuthType Basic表示启用基本验证。 AuthName “KeyPark Studio”表示认证对话框中显示的服务器信息,这里不要用中文,因为Tortoisesvn不支持中文。 AuthUserFile E:\user\apache\passwd.conf 指示了E:\user\apache\passwd.conf作为用户文件进行验证。 Require valid-user表示只有输入了正确的用户名密码才可以访问相关路径。 

验证就讲这些了,在网上还可以找到使用svn的模块进行更为细致的访问控制的设置方法,在这里就不再介绍了。 

3.VS2008中使用用ANKHSVN插件 插件安装很简单,在经过以上步骤后,并且确认你已经在vs中安装好了ankhsvn插件,那么恭喜你,你已经可以在VS中使用svn的强大代码管理功能了。首先打开Visual Studio,点击 File(文件)你将会看到多出了Subversion选项,点击Open from subversion…URL中输入http://服务器IP/repository/repos1,然后会提示输入http认证的用户名和密码,输入确定后就可以看到已经创建好的项目了选中要打开的项目.sln文件打开,然后需要制定一个本地存放路径,设定好后点击OK,就可以看到程序从服务器传到了本地。 

在程序修改时一般操作流程及方法 

打开项目,首选点update,更新为最新版本: 

然后对需要修改的程序文件,进行锁定: 

并且可以加入提示信息: 修改后更新程序: 注意两个提交,用下面的提交后,仍然锁定程序,上面的提交,在提交后自动解除锁定。 

另外,在提交前最好加上注释,在上面的界面中点击如下按钮可以在message中输入备注信息。 手动解锁: 

查看修改编码者信息: 

查看版本历史: 比较版本点击diff: 撤消未提交的更改: 查看待提交信息: 

Change列的不同状态,代表不同的含义,具体如下: New 表示新增加的文件,还没有增加到版本库中。 Added 表示已经使用ADD功能,但是还没提交. Edited 表示已经修改但还没保存. Modified Edited状态保存之后的状态. Conflicted 有冲突时的状态 Deleted, Copied 改名之后,列示的状态。Deleted也表示删除文件的状态。 

SVN权限设置说明

原文:http://blog.csdn.net/kobi521/article/details/8732049

 SVN的权限设置信息记录在authz这个文件中。如果对含有中文名称的文件夹进行权限管理,需要把authz保存为UTF-8格式。不推荐使用Windows的记事本保存为UTF-8格式,可以用UltraEdit或者EditPlus等文本编辑工具。

        权限分配时,应遵守从根目录到子目录、从最宽泛权限到最精细权限、从只读权限到读写权限的设置原则。即从根目录开始设置最宽泛的访问权限,然后逐步设置子目录的具体访问权限。

SVN下载地址:

服务端 http://subversion.tigris.org

客户端 http://tortoisesvn.net/

现举例说明SVN权限分配:

单资源库的配置

        假设repos1是SVN的一个资源库,其路径是D:\svnrepos\repos1(创建资源库的命令行是D:\svnrepos>svnadmin create repos1)在库中有2个资源项目:project1_1和project1_2

在repos1\conf中,有三个文件:svnserve.conf、authz、passwd 下面分别对各文件的配置进行说明:

svnserve.conf

说明:文件中每一行最前面都不能有空格,而以#开头的是注释。

找到以下几行:

# anon-access = read

# auth-access = write

# password-db = passwd

# authz-db = authz

1.把#和#后面的空格去掉。

2.把anon-access = read改为anon-access = none 这样配置表示不让匿名用户访问资源。

3.auth-access = write表示通过验证的用户拥有写权限;password-db = passwd表示用户名和密码放在passwd文件;authz-db = authz表示项目权限设置放在authz文件。

passwd

假设该文件已做了如下设置:

[users]

harry = harry

sally = sally

john = john

scott = abc123

说明:在[users]之下,就是所有设置的用户名和密码,每一行设置一个用户。等号左边是用户名,右边是密码。例如scott = abc123表示设置了一个用户名scott,密码abc123。如果想取消用户可以删除该行或者在该行的前面加#将其注释掉。

本文重点关注的是authz这个文件

authz

假设该文件已做了如下设置:

[groups]

admin = scott

user1 = harry,john

user2 = sally

说明:这一节点表示对用户组进行配置,等号左边是组名,右边是用户名。一个组中如有多个用户可使用逗号(,)分隔。用户名必须是passwd中有效的用户名。

[/]

@admin = rw

@user1 = r

@user2 = r

说明:这一节点表示对资源库repos的访问权限进行设置,用/来表示。

权限分为三种:r--只读,w--可写,留空不写--没有任何权限,每行权限设置不分先后顺序

使用组名时必须有@符号。@admin = rw表示admin组的用户对资源库所有的资源拥有读写权限

[/project1_1]

@user1 = rw

@user2 =

说明:该节点是对资源项目project1_1进行权限配置。可以看到user1组对资源项目project1_1拥有读写权限,而user2组没有任何权限。而对于admin组来说,也有读写权限。虽然这里没有明确写出。这涉及到了权限的继承性问题。因为在[/]节点的设置中,admin组的权限是rw,所以在这里也是rw

[/project1_2]

@user2 = rw

@admin = rw

john = r

* =

说明:该节点是对资源项目project1_2进行权限配置。可以为单个用户分配权限,而不一定要引用组名,比如john = r。看到这个节点的配置,你可能会有个疑问:这里为什么明确写出admin组的权限,不是可以继承吗?这是因为使用了星号(*)通配符。星号在这里代表除了已经明确写出权限的用户组和用户外,其他的用户组和用户,即代表user1组和用户harry。如果不明确写出admin组的权限,则admin组的权限将由星号的权限来决定。所以在使用星号时要小心,因为它会切断权限的继承性。

多资源库的配置

        在之前单资源库的基础上,我们假设还有一个资源库repos2,其路径是D:\svnrepos\repos2,在库中也有2个资源项目:project2_1和project2_2。此时的配置我们需要考虑两种情况:

        第一种:每个资源库使用不同的用户和用户组

        此种情况,只需按照之前单资源库的配置说明,对资源库repos2进行相应的配置即可。只是启动服务的命令行不同:

        单资源库是 D:\svnrepos>svnserve -d -r repos1

        多资源库是 D:\>svnserve -d -r svnrepos

        启动多资源库的服务时,不再指向某个库文件夹,而是库文件夹的上级文件夹。

        访问资源项目的url也不同,比如:

        单资源库是 svn://192.168.0.10

        多资源库是 svn://192.168.0.10/repos1

        访问多资源库时需要指明资源库名。

        第二种:多个资源库使用相同的用户和用户组

        假设资源库repos2的用户和用户组与repos1是一样的,对于这种情况,我们需要做以下配置:

        1.把repos1的passwd和authz复制到D:\svnrepos下

        2.修改repos1和repos2的svnserve.conf文件:

        password-db = passwd改为password-db = /svnrepos/passwd

        authz-db = authz改为authz-db = /svnrepos/authz

        3.配置D:\svnrepos下的authz文件,假设配置如下,可以看出和单资源库的配置最大的不同就是每个资源项目节点名中都以资源库名作为前缀

[groups]

admin = scott

user1 = harry,john

user2 = sally

[repos1:/]

@admin = rw

@user1 = r

@user2 = r

[repos1:/project1_1]

@user1 = rw

@admin = rw

* =

[repos1:/project1_2]

@user2 = rw

@user1 =

[repos2:/]

@admin = rw

@user1 = r

@user2 = r

[repos2:/project2_1]

@user1 = rw

@admin = rw

* =

[repos2:/project2_2]

@user2 = rw

@admin = rw

* =

关于SVN服务

如果要把SVN服务设置成Windows系统服务,使用如下命令行:(假设SVN服务端安装在D:\Subversion)

注意等号后面的空格是必须的。

单资源库:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值