windows下安装SVN

本文详细介绍了在Windows操作系统上安装Subversion和TortoiseSVN的步骤,包括如何建立SVN服务器、设置权限及启动服务。通过设置svnserve.conf和passwd文件创建用户并控制访问权限,同时讲解了如何利用Windows Service方式启动svnserve,确保服务自动运行。此外,还探讨了Subversion的权限控制,包括中文目录权限设置,并分享了如何使用‘锁定-编辑-解锁’模型来管理二进制文件的编辑权。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1安装

Subversion的主页是http://subversion.tigris.org/ 或者你也可以直接点击这里下载Setup-Subversion-1.6.5.msi
TortoiseSVN 的主页是 http://tortoisesvn.tigris.org/ 你也可以直接点击这里下载TortoiseSVN-1.6.5.16974-win32-svn-1.6.5.msi

首先我们安装运行Setup-Subversion-1.6.5.msi 安装界面比较简单,我们主要关注安装位置,假定我

安装在默认位置C:/Program Files/Subversion

接下来安装TortoiseSVN-1.6.5.16974-win32-svn-1.6.5.msi,默认即可。

2建立svn服务器

2.1.首先通过图形界面在C盘建立一个名为svn目录

2.2.在cmd运行svnadmin create C:/svn/fcrepos.此步骤也可以单击右键的Createrepository here生成

2.3.则此时在svn目录下会出现fcrepos目录,修改conf文件夹里面的svnserve.conf

 
 

[general]
  ### These options control access to the repository for unauthenticated
  ### and authenticated users. Valid values are "write",  "read",
  ### and "none". The sample settings below are the defaults.
  anon-access = none //改为=none,去掉#
  auth-access = write //去掉#
  ### The password-db option controls the location of the password
  ### database file. Unless you specify a path starting with a /,
  ### the file’s location is relative to the directory  containing
  ### this configuration file.
  ### If SASL is enabled (see below), this file will NOT be used.
  ### Uncomment the line below to use the default password file.
  password-db = passwd //去掉#
  ### The authz-db option controls the location of the authorization
  ### rules for path-based access control. Unless you specify a path
  ### starting with a /, the file’s location is  relative to the the
  ### directory containing this file. If you don’t  specify an
  ### authz-db, no path-based access control is done.
  ### Uncomment the line below to use the default authorization file.
  # authz-db = authz
  ### This option specifies the authentication realm of the repository.
  ### If two repositories have the same authentication realm, they should
  ### have the same password database, and vice versa. The default realm
  ### is repository’s uuid.
  # realm = My First Repository

 
 
 

 

 

2.4.修改passwd,创建用户名和密码

修改好svnserve.conf后,我们再修改 passwd文件。加入我们需要的用户名fc和口令123。passwd内容如下:

 
 

###  This file is an example password file for svnserve.
  ### Its format is similar to that of svnserve.conf. As shown in the
  ### example below it contains one section labelled [users].
  ### The name and password for each user follow, one account per line.

 

[users]
  # harry = harryssecret
  # sally = sallyssecret
  dsw= 123 //添加用户名和密码

 

3.启动svnserve,以及客户端的访问

我们介绍两种,一种是以daemon方式调用,一种是以Windows Service的方式调用。
< !--[if !supportLineBreakNewLine]-->
< !--[endif]-->

3.1.Daemon方式

在cmd里运行svnserve--daemon,则启动svn服务器,此时在客户端通过svncheckout即可访问,地址:svn://59.64.xxx.xxx/svn/fcrepos,(注意是svn开头不是http开头,http开头的用于基于apache的svn)但这种方式必须cmd窗口必须一直打开,一旦关闭,则svnserve停止。因此可以考虑采用windows service的方法,即开机自动启动。

3.2.WindowsService的方式

在系统内添加自动启动的服务项:

sccreate svnservice binpath= "C:/Program Files/Subversion/bin/svnserve.exe"

这里要特别注意一下sc命令的使用。主要是注意一下=号后面的空格和svn路径的空格。

若svnserve.exe的路径中有空格,则必须在路径前后加入”的转义符/”。

用此方式启动的服务,访问方式与Daemon方式相同,地址:svn://59.64.xxx.xxx/svn/fcrepos。本机的话貌似不能用127.0.0.1来访问

添加该服务之后,每次系统启动后会自动启动svnserve。

但当前因为还没有重启电脑,所以需要手动启动:

netstart svnservice

若要停止:             net stopsvnservice

删除服务:             sc deletesvnservice

要删除前面添加的服务,只需要运行"sc delete svn","svn"就是我们创建服务时使用的名字。

4备注

若要让一个文件夹脱离SVN控制,删除该目录下的“.svn”文件夹即可。

要查看添加的服务,运行services.msc即可。

 

第三步:创建项目以及配置访问权限
进到C:/svn目录下,鼠标右键选择[TotoiseSVN]->[CreateRepository href...]进行创建,创建之前保证该目录下没有任何的文件夹和文件。

创建成功后会在里面自动生成几个文件夹:dav目录是提供给Apache与mod_dav_svn使用的目录,让它们存储内部数据;db目录就是所有版本控制的数据文件;hooks目录放置hook脚本文件的目录;locks用来放置Subversion文件库锁定数据的目录,用来追踪存取文件库的客户端;format文件是一个文本文件,里面只放了一个整数,表示当前文件库配置的版本号;conf存放的是配置文件;
访问权限的设置方法:
1、在conf目录下,用记事本打开svnserve.conf,设置如下:

[general]
anon-access = none
auth-access = write
password-db = passwd

第一个用来设置匿名用户的权限 none为设置存储库不允许匿名访问
第二个用来设置经过授权的用户的权限 write为可以写入
第三个用来指定授权用户的密码存放文件
2、在同一目录下打开passwd,也就是上面设置的,当然你也可以改成其他的文件名,设置如下:

[users]

格式为:用户名 = 密码          //dsw = 12345
多个用户就写多行,设置完之后就大功告成了。

 

3、建立一个用户组admin,并把我自己加入这个组,赋予这个组中成员读写的权利。

打开D:/svn/conf/authz,修改如下:

[groups]
admin = robindy

[/]
* = r
@admin = rw

重启Subversion服务后生效。

 

此外, 经常有朋友问到Subversion是否可以对中文目录进行权限控制,如果可以,该如何配置。

经过测试,发现subversion是可以很好地控制中文目录的权限的。

方法很简单,就是将你的权限控制文件的格式转换为UTF-8格式,
将权限文件改成UTF-8格式我使用的是UltraEdit的菜单"ASCII to UTF-8 (Unicode Editing)"。

 

接下去就可以开始使用TotoiseSVN进行Import、Update、Checkout、Commit等操作了。

 

别人机器要访问,需要在本机打开3690端口。Win7控制面板\系统和安全\Windows 防火墙\高级设置\出站规则\新建规则 -- 添加端口 名称svn,端口号:3690

 

 

Subversion的有用配置
1,使用“锁定-编辑-解锁”模型
Subversion使用与CVS相似的工作模型,也就是“拷贝-修改-合并”,但是有时候还是很有必要使用“锁定-编辑-解锁”模型,例如对于二进制文件,或者其他不太适合合并的文件。
实现这种模式是通过设置文件属性然后再锁定文件来操作的。属性是附加到版本控制下的文件之上的属性,就像最后的修改日期是一个文件的属性一样,你可以为Subversion控制之下的文件和目录设置自定义的属性。
在Subversion 里是通过内置的属性“svn:needs-lock”实现“锁定-编辑-解锁”模型的,例如我们有一个word文件“介绍.doc”,大家很清楚Word 文件是二进制格式,不可能使用“拷贝-修改-合并”模型,所以我们要使用“锁定-编辑-解锁”模型。你可以将它设置属性“svn:needs-lock”,然后提交,之后其他人在更新这个文件的时候,就会得到一个只读的文件,他们想修改这个文件必须首先获得锁,获得锁的过程会将文件置为可写,而其他人此时如果想得到锁就会发现做不到,只有得到锁的人放弃锁定,别人才能得到锁,继续工作。下面分别讲述了如何使用svn命令行和TortoiseSVN设置锁和使用锁。

1) 第一步,设定“svn:needs-lock”属性
● 使用命令行锁定“介绍.doc”:
svn propset svn:needs-lock 'x' 介绍.doc

运行这个命令后,“介绍.doc”就已经是设置了“svn:needs-lock ”,但为了使之生效还要运行“svn commit”,之后其他用户update的时候就会发现这个文件已经是只读的了。需要注意的是我们设置的属性值是“x”,实际上任意值都可以, Subversion会忽略其内容。
● 使用TortoiseSVN设定属性也很简单:
“介绍.doc”右键选中- >属性->Subversion选项夹->properties->add,然后在弹出的窗口中的property name选择“svn:needs-lock”,值任意,然后选择OK。之后再提交“介绍.doc”即可。


2)第二步,获取锁
在设定了这个属性之后,我们要想修改“介绍.doc”,就必须首先获得锁。

● 使用命令行操作如下:
svn lock 介绍.doc
这样“介绍.doc”就变成了可写文件,你可以进行编辑修改了,这个时候如果有人和你一样期望获得这个文件的锁就会得到错误的提示,表示文件已经被你锁定了。

● 使用TortoiseSVN获取锁
操作依然简单,“介绍.doc”右键选中-> TortoiseSVN -> Get Lock... ,然后输入锁定的注释,选择“OK”,既完成了锁定。

3)第三步,释放锁
当你完成了修改,选择提交后,默认就会释放锁,别人就可以重新获得锁。当然你也可以放弃修改,直接选择释放锁。

● 命令操作如下:
svn unlock 介绍.doc
这样“介绍.doc”就重新变成只读,别人就可以获得锁并进行修改了。

● 使用TortoiseSVN的操作:
“介绍.doc”右键选中-> TortoiseSVN -> Release Lock,然后选择确认即可。

2,自动化属性
如果有很多文件需要做锁定属性的设置该如何处理。这时可能就需要自动化属性功能,通过文件名匹配的方式将某类文件设置某种属性。我们还是以Word文档为例,设定将所有Word文档设置为只读。

这里我们用到了Subversion的运行配置区特性,Subversion的许多全局的配置参数都是放在运行配置区中,运行配置区实际上就是一个目录,在我的XP操作系统这个目录是“C:\Documents and Settings\jzj\Application Data\Subversion”,其中jzj是我的用户名,在UNIX下这个目录可能是“.subversion”。在这个目录里config文件是客户端操作的一些属性,而servers则是服务器端的属性,这一部分我们要使用config文件。

打开运行配置区的config文件,去掉“enable-auto-props = yes”前面的“#”和空格,然后找到“[auto-props]”小节,增加下面的属性并保存即可实现Word文件的自动添加需要锁定的属性:
*.doc = svn:needs-lock=x

作了这个设置后,以后通过“svn add”和“svn import”添加的*.doc文件都会有“svn:needs-lock”属性,当然你愿意,你也可以把上面的值修改为“* = svn:needs-lock=x”,这样所有新加的文件都是进入了“锁定-编辑-解锁”模型。

注意:这些设置是针对客户端的,其他用户还需要做同样的设置。

3,忽略文件
在执行svn status等操作时,我们不想看到某些文件,就要使用设置属性进行忽略。在Subversion有两种方式进行这个设置,一个是更改全局设置,也就是前面提到的config文件,另一个是使用svn的内置属性“svn:ignore”。

1)使用config的global-ignores配置
假定我们的程序会编译出很多exe文件,如果不使用忽略属性,当我们执行“svn status”结果会是这个样子:
? admin\test.exe
M admin\test.txt

为了不让exe文件打扰我们,我们只需找到config文件的[miscellany]小节,修改global-ignores,增加对exe的忽略,我修改后的这一行变成:

global-ignores = *.o *.lo *.la #*# .*.rej *.rej .*~ *~ .#* .DS_Store *.exe

然后再执行“svn status”,结果如下:
M admin\test.txt

2)使用svn的内置属性“svn:ignore”
有时候匹配没有这么普遍,例如Java的工程会在bin目录生成的很多临时Jar文件,我们只需要a.jar,而不希望temp.jar影响我们的视线,所以我们只需要设置bin的属性“svn:ignore”为temp.jar即可,具体设置同上。

使用SVN避免冲突的几条原则
修改本地代码前一定要先从配置库上更新最新的版本,再在此版本上修改。
修改完后即时提交。
对于无法合并的文件(比如二进制文件,像word),我们一定要设置文件的只读属性并锁定文件后再修改。
如果文件是只读状态的,我们一定要通过获取锁的方式来修改文件的可写属性,而不能直接在本地修改。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值