SVN笔记

来源:互联网 发布:淘宝拍照识别不能用 编辑:程序博客网 时间:2024/05/22 15:51

服务端安装Subversion:

1.到www.apache.org上下载apache http server,注意要下载2.0.X以上的版,否则不能和当前最新的Subversion工作。

2.到http://subversion.tigris.org/servlets/ProjectDocumentList?folderID=91 上下载Subversion当前1.1.3版本的二进制安装文件exe,一般tigris.org并不提供二进制包,这些二进制包是有一些志愿者维护的,所以可能不是当前最新的版本。如果你想尝鲜使用Subversion的最新版,请下载源码自己编译。

3.安装apache http server

4.安装Subversion

5.检查$/apache group/apache2/modules下是不是已经有了mod_dav_svn.so和mod_authz_svn.so

6.检查$/apache group/apache2/modules下是不是已经有了libdb42.dll(实际为libdb44.dll)复制这些文件到Apache的模块目录(通常是c:/program files/apache group/apache2/modules),还可以复制下intl3_svn.dll文件到此目录。及把两个文件拷到c:/program files/apache group/apache2/bin下。

7.搜索$/apache group/apache2/conf/httpd.conf配置文件中的#LoadModule dav_fs_module modules/mod_dav_fs.so,把前面的注释#去掉 #LoadModule dav_module modules/mod_dav.so把前面的注释#去掉;并检查LoadModule配置节的末尾是不是有了LoadModule dav_svn_module modules/mod_dav_svn.so和LoadModule authz_svn_module modules/mod_authz_svn.so加上

配置Subversion: 1.在硬盘上建立源码库的根目录,例如D:/SVN

2.在D:/SVN之下建立一个新的目录,例如TestRepository作为我们的测试源码库

3.建立Subversion数据库,当前版本Subversion支持两种格式数据库,一种是FSFS,另外一种是BDB( Berkeley Database)。在命令行下输入svnadmin create --fs-type bdb TestRepository建立BDB格式的数据库(确保当前目录已经切换到D:/SVN/),在命令行下输入svnadmin create --fs-type fsfs TestRepository建立FSFS格式的数据库(确保当前目录已经切换到D:/SVN/)一般用fsfs数据库。建好数据库以后,到D:/SVN/TestRepository下看看是不是多了很多目录和文件,可以研究一下这些文件,对理解Subversion有帮助,但是不要试图直接修改这些文件!

 4.打开$/apache group/apache2/conf/httpd.conf配置文件,在文件的末尾加入以下语句,

<Location /svn>

DAV svn

SVNParentPath D:/SVN

AuthType Basic

AuthName "Subversion repositories"

AuthUserFile passwd

#AuthzSVNAccessFile svnaccessfile

Require valid-user

</Location>

这里建立了一个虚拟目录http://yourServer/svn/,所有的Subversion源码仓库都在这个虚拟目录中,并且使用“passwd”文件中username/password(用户名/密码)列表访问http://yourServer/svn/。关于Subversion的安全配置是一个比较重要的部分

<Location /svn>

DAV svn

SVNParentPath D:/SVN

</Location>为匿名访问

5.在命令行下切换到$/apache group/apache2,执行bin/htpasswd -c passwd <username>,这里<username>是你想要加入的用户名,比如doudou。执行这个命令成功以后就会在bin目录下建立一个passwd文件,之后如果再加入新的用户和更改已有用户的密码,执行bin/htpasswd passwd <username>即可。注意一定要在$/apache group/apache2下执行,这样生成的passwd文件$/apache group/apache2根目录下,而不是在bin目录下,apache默认是在$/apache group/apache2根目录下寻找passwd文件,如果你在bin目录下执行了这个命令请把生成的passwd文件剪切到$/apache group/apache2根目录下。这一点也可以从Apache的log日志中看得出来。

6.重启Apache服务

7.在浏览器地址栏中输入 http://YourServer/svn/TestRepository,输入用户名密码,ok。Subversion现在已经可以正常工作了。

下面我来解释一下这些配置信息用途:

<Location /svn>  说明我们所有的代码仓库在/svn这个虚拟目录下 Subversion版本库的URL是http://MyServer/svn/  

DAV svn  说明Apache会使用svn这个module来解析这个虚拟目录

SVNParentPath D:/SVN  说明所有的代码仓库都在本地硬盘的D:/SVN下  

AuthType Basic  使用最基本的认证校验,用户名/密码  

AuthName "Subversion repositories"  说明在认证对话框弹出的时候,对话框的标题显示,你可以把它修改成你想要的任何提示信息,比如:AuthName "Warning"等等  

AuthUserFile passwd  说明我们使用的access list文件的名字,在上面中我们建立的文件名字是passwd,所以这里是passwd。如果你建立的文件名字是其他的,这里要作相应的改动 指定使用的认证密码文件

AuthzSVNAccessFile  说明svn自己控制的access list文件,这个文件很重要,可以丰富svn的安全配置,在下面会讲到  

Require valid-user  说明只有输入正确的用户名/密码才能访问URL  

 

客户端配置:

1. 没安装TortoiseSVN的计算机先安装它并重启计算机.

2. 创建一个准备用来存放版本控制工程的目录, 例如d:/project, 然后在"我的电脑"中右击这个目录, 选择"SVN取出...", 设置"文件库url"为svn://svn服务器的IP地址, 接下来会问你用户名和帐号, 你就填写前面搭建服务器端所设置的用户名和密码 

点确定后就会提示文件正在取出到d:/project 

至此, SVN客户端配置完成, 你会看到d:/project及其下面的文件都被标记了绿色对勾 

客户端的简单日常使用: 

1. 要取得工程的当前的最新版本, 右击d:/project, 选择"SVN更新" 

2. 你更改工程后, 要将你的修改更新到SVN, 右击d:/project, 选择"SVN提交" (谨慎的话请先更新到SVN最新版本后再提交)

 

主要操作

TortoiseSVN使用起来很简单,所有操作都通过右键菜单来完成。命令内容也很直观,而且有非常详细的帮助手册,这里只简单的介绍一下。

a) 导入项目(Import)

首先要把需要进行版本管理的工程(目录)整理好,去掉不必要的文件,比如编译器生成的临时文件。然后在最上层文件夹上单击右键,选择“TortoiseSVN -> Import...”,输入要存放的SVN服务器路径,确认即可。这样就将本地的项目导入到了服务器上。

命令行:svn import [PATH] URL

b) 检出项目(Checkout)

项目初次导入成功后,刚才本地的内容就没有用了,我们需要建立一个新的工作区,重新从SVN服务器下载受控的项目文件,执行“TortoiseSVN -> Checkout...”,选择或者输入项目的URL,确认即可,以后的工作都应在这个工作区里进行。

默认是获取项目的最新版本(HEAD),如果要获取历史版本,指定相应的修订号(Revision)即可。

命令行:svn checkout URL[@REV]... [PATH]

c) 更新与提交(Update and Commit)

他人修改了项目,我们需要从服务器下载最新版本,这通过“SVN Update”右键菜单实现。

命令行:svn update [PATH...]

如果是自己本地作了修改,则应及时将修改更新到服务器上去,这通过“SVN Commit...”实现。一个好的习惯是每次提交都应注明修改内容,以方便日后查证。

命令行:svn commit [PATH...]

d) 增加和删除文件(Add and Delete)

如果我们要向一个受控项目中添加新文件或文件夹,只需在目标上执行“TortoiseSVN -> Add”操作。注意,这里只是本地添加,要提交到服务器,还必须执行Commit才行。

命令行:svn add PATH...

同样,要删除受控文件或文件夹只需执行“TortoiseSVN -> Delete”操作。

命令行:svn delete PATH/URL...

TortoiseSVN还提供了一个重命名操作“TortoiseSVN -> Rename”,这其实是添加和删除的组合。

e) 撤销操作(Revert)

有时候,我们可能进行了错误的修改或者增加和删除,只要未进行提交,我们都可以通过“TortoiseSVN -> Revert”命令来撤销本地的所有更改。

命令行:svn revert PATH...

f) 查看信息

SVN提供了几种信息查看方式,其中Show log用于显示每次版本变更的日志信息,Repo-brower是仓库浏览器,类似于资源管理器,Revision graph则以图形化的方式让我们很直观的看到版本的变更情况,尤其是对于分支和标签管理很有帮助。

3) 其它操作

a) 冲突解决(Resolved)

如果我们本地进行了修改,而别人又把他的修改提交到了服务器上,这时我们执行Update就可能出现冲突(Conflict)。Resolved的作用不是解决冲突,它不进行任何合并,而是忽略掉他人的修改,允许我们将自己的版本提交到服务器上。

简单的说,Revent是撤销本地修改,而Resolved是保留本地修改。

b) 清除异常状态(Cleanup)

如果在执行某个命令的时候出现异常,比如服务器突然挂了,本地的工作区就会处于一种异常状态,通过Cleanup能够清除这种状态,使工作区不受到影响。

c) 锁定(Get lock)和解锁(Release lock)

冲突都是由于不同的开发人员同时修改了同一份文件造成的,因此,为了避免这种情况,我们可以强行锁定自己要修改的内容,这样其他人在我们解锁前就无法提交其修改。

d) 分支和标签(Branch/tag)

本文最开始就有说明,分支的目的是为了创建并行的工作线,标签的作用是为了保存项目某个版本的快照。二者在实现上却是一样的,都是通过Branch/tag命令执行。

e) 导出(Export)

为了实现版本管理,SVN会在工作区的每个目录下都生成一个隐藏的.svn文件夹,而我们有时却希望得到一个干净的没有.svn文件夹的项目结构,比如发布软件时,这种情况下就可以使用Export功能。

f) 重定向(Relocate)

有时候,SVN服务器的IP地址可能会发生变动,如果遇到这种情况,我们每个人的本地工作区都要重新下载吗?不用,只需通过Relocate重新配置一下本地工作区所对应的服务器地址就可以。

g) 补丁管理(patch)

不要被patch的名称迷惑,实际上它不属于SVN版本管理的范畴。这里所谓的patch是指那些对项目没有写权限(Commit)的人所作的修改,通过“TortoiseSVN -> Create Patch”生成,然后他们采用电子邮件等方式将patch发给项目管理员,由管理员执行“TortoiseSVN -> Apply Patch”并确认修改内容后再进行提交。该功能主要用于开源项目的管理。

使用apache_2.2.8-win32-x86-no_ssl.msi加svn-1.4.6-setup.exe加TortoiseSVN-1.4.8.12137-win32-svn-1.4.6.msi配置成功。

后来遇到apache localhost可以访问,svn服务端可以建立仓库,客户端不能checkout和用浏览器浏览,服务端也不能用浏览器浏览。网上查了通过将subversion/bin目录下的intl3_svn.dll及libdb44.dll、libeay32.dll及ssleay32.dll文件拷贝至apache2/modules目录下解决问题。经试验,intl3_svn.dll为必需。

后来一想原来是把虚拟目录改为了E:/sh_team但在httpd.conf文件中还是<Location /svn>改为<Location /sh_team>就可以了。

 

 

原创粉丝点击