首页
JAVA笔记
数据库笔记
混乱记忆
小站记
您现在的位置
svn安装、配置、绑定域名
简介: window环境下安装svn详细过程,一步一个脚印。

有时候想写个东西,在没有版本管理的环境下太累了,修改错了就不能恢复,为了解决这个问题我在本地安装一个svn server,据说现在都用git了,没用过表示不解。

window环境下安装svn详细过程,linux和window下基本差别不大。

一、首先下载所需的软件:

Subversion: http://subversion.tigris.org/

Windows下的客户端TortoiseSVN: http://tortoisesvn.tigris.org/

二、安装软件

直接双击运行安装,先装Subversion官方文件,安装完成后会自动添加%Subversion%\bin到Path环境变量中。也就是说你现在已经可以在命令行中使用Subversion了。进入CMD,输入svn --version,看一下运行效果。

接着安装TortoiseSVN客户端,这是一个非常方便,易于使用的客户端。一路Next下去安装完成,然后会问你是否重启,重启是为了让TortoiseSVN的工作目录样式生效,选择重启就可以了。

三、创建Repository,也就是版本库,我选择的路径是E:\svnRoot

svnadmin create E:\svnRoot

这样就在E:\svnRoot创建了版本库,SVN在该目录下创建了许多文件,我们最好不要手动编辑或里面的数据文件,当然conf目录下的配置文件除外。关于版本库以及我们的项目组织,后面我还会讲到。

四、选择Subversion的网络协议

Subversion服务器支持多种网络协议。最直接的file:///可以在本机以及网络驱动器上使用,然后还提供了svn, svn + ssh以及http访问方式。到底选择哪一个要根据情况进行选择,功能越强大的协议,你需要付出的管理也越多。所以对于我们来说,Subversion自已的svn协议就够了。当然,你可以在任何时候改变Subversion服务器使用的协议,甚至你可以同时使用不同的协议。

五、配置用户和权限

Subversion使用文件来配置用户以及权限,在E:/svnRoot/conf/目录下打开svnserve.conf和passwd文件

svnserve.conf,删除下面行前面的#号注释

[general]

anon-access = read

auth-access = write

password-db = passwd

passwd中配置用户和密码

[users]

jkzqw = 123456

六、启动Subversion服务器

我们选择的是svn访问协议,使用下面命令即可启动SVN服务器

svnserver -d -r E:\svnRoot

七、初始导入项目

假设我们有一个HelloWorld项目,在E:\work\HelloWorld目录下,在CMD中进入到E:\work\HelloWorld,输入下面命令导入项目到版本库中:

E:\work\HelloWorld > svn import -m "initial import project HelloWorld" svn://localhost/HelloWorld/trunk

svn会首先尝试使用系统用户名,如果你配置的用户名不一样,就直接忽略回车,然后输入你的用户名和密码

注意这里我们把HelloWorld目录下的所以文件以及子目录(不包括HelloWorld目录本身)导入到svn://localhost/HelloWorld/trunk路径下,这里我们遵循的是Subversion推荐的项目路径,trunk作为项目开发的主线,以后会相继创建branches和tags作为分支和标签记录。现在你可以删除HelloWorld目录了,因为SVN已经给我们保存了项目。

八、使用Subversion管理项目

创建目录
svn mkdir -m "android代码和文档" svn://localhost/android

项目导入以后,我们的开发步骤就变成了:首先签出项目,对项目进行修改,(运行测试通过),最后提交修改。

首先checkout项目

E:\work > svn checkout svn://localhost/HelloWorld/trunk HelloWorld

这样就把项目所有文件都签出到了HelloWorld目录下,接下来你就需要对项目进行开发修改

最后提交修改

E:\work\HelloWorld > svn commit -m "fix bug 3012"

这样你的修改就提交到了版本库中,SVN对自动对修订版本号进行修改。注意如果你在项目中新增或者删除了文件或目录,则需要相应使用svn add或者svn delete命令进行操作,最后再使用svn commit一次提交上去

九、配置svnserver作为系统服务

你可能想将svnserver配置为系统服务,以便开机便可以自动启动svnserver服务,不用每次都这么麻烦手动启动。最新的Subversion可以使用简单的命令来创建Windows服务了,CMD输入下面命令:

sc create svnserver binpath= "E:\Subversion\bin\svnserve.exe --service -r E:\svnRoot" start= auto displayname= "Subversion Server" depend= Tcpip

sc delete svnserver
注意上面命令需要一次输入,中间不要回车,而且" = "号后面必须有一个空格,另外请根据你自己的安装路径以及版本库修改命令。

好了,基本的Subversion就是这些,不过Subversion的命令以及各种概念也挺多的,我希望你还是去找一本书,系统地学习一下Subversion。个人推荐《pragmatic Version Control Using Subversion》,另外Subversion自带的参考文档也相当的好,遇到不明白的地方,就打开来参考。

直接使用svn命令操作Subversion很麻烦,所以就有了易于使用TortoiseSVN客户端,在Windows下使用相当方便。只需要鼠标点击几下就可以完成很多操作,具体的使用也请参考TortoiseSVN的参考文档。

十、svn 集成 apache 支持 http 协议
Subversion 配置http协议要使其可通过http://www.xiaoyunduo.org/filename 的方式访问必须要把域名A地址指向服务器IP哦。


配置

在C:\Program Files\Subversion\bin\目录下复制下面两个文件
mod_authz_svn.so
mod_dav_svn.so
粘帖到C:\Program Files\Apache Software Foundation\Apache2.2\modules,

然后我们再打开C:\Program Files\Apache Software Foundation\Apache2.2\conf\httpd.conf文件.

找到

#LoadModule dav_module modules/mod_dav.so
#LoadModule dav_fs_module modules/mod_dav_fs.so

去掉前面的注释符号#

然后再下面添加
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
注意不要随意改变顺序。可能出现其它错误。



模块的加载设置完成,下面我们要设置SVN的版本库目录,以使我们的apache能知道访问不同的URL的时候,它去哪里寻找这个URL所对应的SVN目录.
在httpd.conf文件中,增加如下内容:
<Location /svn/myproject>
DAV svn
SVNPath E:/svnroot/myproject

AuthzSVNAccessFile E:/svnroot/myproject/conf/access.auth
Satisfy Any
Require valid-user

AuthType Basic
AuthName "Subversion repositories"
AuthUserFile E:/svnroot/myproject/conf/users.auth
Require valid-user
</Location>

上面使用了access.auth,和users.auth两个文件,我们后面创建。


在e:\创建svnroot 文件夹,然后通过svn的svnadmin命令创建数据仓库

注意:E:\svnroot\myproject 这个路径是区分大小写的,如果建议都小心。否则你就等着重新操作吧!

svnadmin create E:\svnroot\myproject

如果运行成功的话,什么也没有输出,

也可以按如下操作来创建数据仓库

在e盘下新建E:\svnroot\下创建myproject文件夹,通过TortiseSVN来创建。

选中myProject 右键选择TortiseSVN ,选择二级菜单 create repository here 在这个目录创建数据仓库

在创建的myProject文件夹下面我们会发现多了几个文件夹和文件,打开conf文件夹,然后使用editplus(如果没有安装editplus,可以用记事本或者写字板打开)再打开svnserve.conf文件,找到如下行# password-db = passwd,然后把它前面的#去掉,表示myProject是需要密码验证的.再打开conf文件夹下面的passwd文件,用文本编辑器打开,在[users]下面加上我们需要的用户和密码,比如

[users]
admin=admin
tom=123456

我们就启动了两个用户,一个叫admin,密码是admin,一个叫tom,密码是123456.

然后保存为passwd文件.

我们再建一个文件,叫access.auth,这个文件是设置访问权限的,里面内容如下:
[myproject:/]
admin = rw
[myproject:/module1]
tom=rw
admin=rw

rm表示可读可写,这表示,myproject下面的所有子目录admin都是有权限读写的,但是tom只有权限读写此项目下面的module1目录,这个各自的访问权限就分的更细致了.


命令行模式下,到apache安装目录下的bin目录下 操作如下



C:\Program Files\Apache Software Foundation\Apache2.2\bin>htpasswd -cb users.auth admin admin

Automatically using MD5 format.
Adding password for user jam

C:\Program Files\Apache Software Foundation\Apache2.2\bin>


为admin用户设置好密码,创建第一个用户时创建文件,添加第二个用户则不用创建,具体命令参数有细微区别,请注意-cb


C:\Program Files\Apache Software Foundation\Apache2.2\bin>htpasswd -b users.auth tom 123456

Automatically using MD5 format.
Adding password for user tom

C:\Program Files\Apache Software Foundation\Apache2.2\bin>


此时把C:\Program Files\Apache Software Foundation\Apache2.2\bin 目录下的 users.auth 复制粘贴到

E:\svnroot\myproject\conf 目录下


重新启动apache服务,通过http://localhost/svn/myproject/

注:没改端口号的访问 (http://localhost/svn/myproject/)

访问出现

myproject - Revision 0: /



表示配置成功,客户端TortiseSVN 配合使用。


好了,部署第一个项目:

在cmd命令行里输入: svn import E:\test\ file:///E:/svnroot/myproject/ -m "test import"

注意:
1.(E:\test\ ) 是你要部署的项目
2.(file:///E:/svnroot/myproject/)这是你建立版本控制的仓库路径
--- 里面的 / 千万注意别写成 \ ,否则会操作失败。---


服务配置文件 svnserve.conf
……
### 匿名方式不允许访问
anon-access = none
……
### Uncomment the line below to use the default password file.
### 表示访问仓库的认证有文件 passwd 提供的账户确定
password-db = passwd
……
### Uncomment the line below to use the default authorization file.
### 表示认证后的账户访问权限由文件 authz 定义
authz-db = authz
### This option specifies the authentication realm of the repository.
……
认证配置文件 passwd
passwd 文件实际提供访问本仓库的账户管理,文件格式就是 ini 方式的格式
[users]
harry = harryssecret
sally = sallyssecret
user=usersecret
这表示本仓库配置了二个用户及:其中一个用户 harry, 他的访问密码是 harryssecret 。访问密码可以使用明文,也可以使用 htpasswd.exe ( apache 服务器提供的工具方法,安装 apache 服务器后,在其 bin 目录中有该程序文件)进行加密处理。
授权配置文件 authz
该文件负责认证后的用户的权限控制,配置稍微复杂,但其实也就是个 ini 配置文件而已。
典型配置:
# groups 段提供配置组的功能 , 但组成员必须是 passwd 文件中定义的用户才有效。可以对组
# 进行权限控制,所有组成员具有组对应的访问权限。
[groups]
# 表示定义了一个管理组叫 admin_group, 包括 harry 和 sally , admin_group 前千万不能有空格
admin_group= harry, sally
# 下面就是定义具体仓库下目录的访问权限
# 一般对管理员来说都具有整个仓库的读写权限,一般人员对整个敞开具有读取权限,下面
# 就是这样的配置 ,[/] 表示整个仓库的根,组的引用使用 @ ,对应的权限可以是 r,w,rw 或空
[/]
@admin_group = rw
* = r

apache 启动出错时可以使用命令行命令启动来查看错误内容
Apache安装目录(具体为你自己的安装目录)\bin> httpd.exe -w -n "Apache2.2" -k start
"Apache2.2"为服务名称,在服务中去找。