一.安装subversion
首先安装服务端程序subversion1.x.x和客户端程序TortoiseSVN-1.x.x.xxxx(是两个网站)。subversion在服务器端客户端都需要安装,TortoiseSVN只要在客户端安装就行。TortoiseSVN的语言包下载和TortoiseSVN的下载都在其官网的同一页
如果使用了eclipse并且用插件的话,则可以不用TortoiseSVN。
二.建立Repository(保存文档各个版本的数据库),必须建立在服务端
1)在服务器端建立一个空目录,比如“d:/svn/project1”。
2)进入dos
3)svnadmin create --fs-type bdb d:/svn/project1
// svnadmin 是exe程序,安装时已经自动加到系统路径了。
// 这里选择了 Berkeley Database(BDB)方式做为版本库的类型
// 也可用TortoiseSVN这个客户端工具实现创建
// d:/svn是版本库的位置,也可以取别的名字,别的路径,一个版本库可以包含多个项目
// project1是某个项目名称,
三.在服务端配置Repository,主要的目的是控制访问权限和添加用户。
1)打开d:/svn/project1/conf/svnserve.conf
2)把以下行前的#去掉,保存
# anon-access = read
# auth-access = write
# password-db = passwd
3)打开d:/svn/project1/conf/passwd文件
4)末尾加一行
xy = 1
保存
// xy是用户名,1是密码,自行替换
5)多个用户就加多行
四.在服务端启动subversion服务器。
1)进入dos
2)svnserve.exe -d -r d:/svn
3)服务启动后,在服务器端的3690端口监听客户端的连接请求。
4)参数的作用是:当在客户端用“svn://xxx/project1”(xxx可以是服务器端主机名或ip)访问服务器的Repository时,
服务器会知道你要访问的Repository路径是“d:/svn/project1”。
5)如果当我有两个完全不相干的项目要进行版本控制时,可以再建立一个空目录
“d:/svn/Project2”,并在其中再建立一个Repository,
此时客户端就可以用“svn: //xxx/project2”访问“C:/SVNProjects/Project2”下的Repository。
6)如果想要注册为window服务,
进入dos,
sc create svnservice binpath= "D:/Program Files/Subversion/bin/svnserve.exe --service -r d:/svn" displayname= "SVNService" depend= Tcpip
svnserve.exe --service -r c:/svnxyh
// 请务必在一行内输入
// SVNService是服务名,也可以替换
// D:/Program Files/Subversion/ 是服务器安装svn的路径,要替换
7)如果想注销window服务
进入dos
sc delete SVNService
五、在客户端安装eclipse的svn插件,安装好后几乎无需任何配置
在线安装方式的url是http://subclipse.tigris.org/update
六、在客户端,首先确保服务打开,打开视图,window -> show view -> other -> svn -> svn资源库
右键单击,新建->资源库位置-> svn://localhost/project1,出现一个资源库,
右键单击,取出为->作为新项目取出,并用向导配置。选yes
java->java项目,next->finish.
七、在客户端,在eclipse的左边视图项目根目录下加文件夹,加文件,然后
在eclipse的左边视图的文件夹或根路径下提交,更新。(右键单击)
所有的操作都在eclipse的界面内完成,工作效率极高。比TortoiseSVN方便,
注意eclipse的配置文件不要提交上去,就是建立eclipse项目时会自动建立在项目文件夹里的两三个文件。
因为是“作为新项目取出”。
xieye 20080101
一. 安装subversion
首先安装subversion1.2.3和图形化客户端TortoiseSVN-1.2.4.4479(该版本 的TortoiseSVN针对subversion1.2.3)。subversion在服务器端和客户端都需要安装,TortoiseSVN只要在客户 端安装就行。
二 下载并安装apache服务器,一路next.只是在输入domain的时候,如果你没有正式的domain,输入你机子的ip即可.
三 .建立Repository(保存文档各个版本的数据库)
在 服务器端建立一个空目录,比如“C:/SVNProjects/Project1”。建立Repository的具体方式是:在subversion安装 目录下的/bin子目录下有一个svnadmin.exe文件,在DOS窗口下进入该/bin目录,并执行“svnadmin create --fs-type bdb C:/SVNProjects/Project1”。之后你会发现原本是空目录的“C:/SVNProjects/Project1”下多出了几个目录和 几个文件。这些目录和文件就是用来存储文档各个版本的数据库。
***除了用命令行方式建立Repository外,还可以用 TortoiseSVN建立,不过这要求在服务器端也安装TortoiseSVN。建立Repository的具体方式是:在“C:/ SVNProjects/Project1”目录上右击鼠标,TortoiseSVN->Create Repository here....,然后弹出一个对话框选择Berkeley Database(BDB),然后点OK按钮。
四 .配置Repository
建 立Repository后,还应该对Repository进行配置,主要的目的是控制访问权限和添加Repository的用户。“C:/ SVNProjects/Project1/conf/svnserve.conf”文件就是该Repository的配置文件。它是一个典型的INI文 件,虽然该文件并不是以INI作为扩展名。用文本编辑器打开它后,可以看见一些文本,该文件以“#”开始的行都是注释行。将“#[general]”行的 “#”删掉,“#anon-access = none”“#auth-access = write”“#password-db = passwd”行也删掉“#”,注意,只是删掉“#”字符,不要把整行都删了。“anon-access = none”是指不允许匿名访问Repository,不管是读操作还是写操作。“auth-access = write”表示认证的访问允许写操作,当然读操作就更允许了。“password-db = passwd”表示用户名及用户密码存在一个叫passwd的文件里,这个文件也在“C:/SVNProjects/Project1/conf”目录 下,用文本编辑器打开后,将“# [users]”的“#”字符删掉,然后在文件的最后添加一个新行,在该行写上用户名和密码,格式为“xxxx = yyyy”其中“xxxx”表示用户名,“yyyy”表示密码,一行只能设定一个用户,要设定多个用户,请再起新行。
注意的是如果你不想加身份认证,一样要去掉#[general}前边的#号,我就是没去,结果老是报错说服务器主动拒绝连接,整了两天才发现问题在这.
五 .启动subversion服务器
Subversion 提供了三种服务器模式,这里介绍其中的一种,它是subversion自带的一种轻量级的服务器,该服务器启动后,在服务器端的3690端口监听客户端的 连接请求(这是默认情况下,如果你有其他程序占用了3690端口,可以用“--listen-port”参数指定服务器监听端口)。服务器的具体启动方式 是:在subversion安装目录下的/bin子目录下有一个svnserve.exe文件,该文件运行时可带参数,常用的参数有两个一个是“-d”, 该参数表明服务器作为一个精灵进程一直运行,直到手动结束该程序。另一个参数就是“-r”,该参数指定服务器进程寻找Repository的根路径。在 DOS窗口下进入/bin目录,并执行:
“svnserve.exe -d -r C:/SVNProjects”。服务器这时就启动了。“-r C:/SVNProjects”参数的作用是:当在客户端用“svn://xxx/project1”(xxx可以是服务器端主机名,也可以是服务器端的 ip地址)访问服务器的Repository时,服务器会知道你要访问的Repository路径是“C:/SVNProjects/ Project1”。如果当我有两个完全不相干的项目要进行版本控制时,可以再建立一个空目录 “C:/SVNProjects/Project2”,并在其中再建立一个Repository,此时客户端就可以用“svn: //xxx/project2”访问“C:/SVNProjects/Project2”下的Repository。至此,服务器端就配置完毕了。
六 下面来修改apache让subversion和apache一起工作
复制subversion"httpd"下的*.so到apache 的安装目录的modules目录中,然后复制subversion"bin"目录中*.dll文件到apache"bin"目录中。
添加下面几行
LoadModule dav_svn_module modules/mod_dav_svn.so
LoadModule authz_svn_module modules/mod_authz_svn.so
修改"/path/to/apache/conf/httpd.conf" 在最下面添加
<Location /svn>
DAV svn
SVNParentPath /absolute/path/to/repository
</Location>
如果不想让任何人都看到,要在location块内添加如下的代码
AuthType Basic
AuthName "Subversion repository"
AuthUserFile /path/to/svnpasswd.file
Require valid-user
其中svnpasswd.file是通过"htpasswd -cb /path/to/svnpasswd.file username password"来创建的
"Require valid-user"告诉apache在svnpasswd.file中所有的用户都可以访问。如果没有它,则只能第一个用户可以访问
#/path/to/apache/bin/apachectl restart
重启apache,打开浏览器访问http://localhost/svn/test/,如果有东西显示就说明成功。如果不能正确的显示,你看看您的"/absolute/path/to/repository"目录是否对apache的用户是可写的就可以了。
如果你还想更进一步对各个目录控制访问,并对访问repository进行加密的话,请参考subversion 手册启动ssl加密服务..
5 向Subversion中导入项目:现在我们需要将项目导入到Subversion的库中,只需执行一下命令: svn import d:/projectname svn://localhost/projectname -m "initial import" --username admin --password mypassword
这样项目就导入到subversion库中啦。
svn命令行如何导入?
来源:SVN中文技术网[www.svn8.com] 作者:SVN技术研究中心 时间:2008-03-29 点击: 560
(问题搜集)
配置服务器:
修改了svnserve。conf中的
anon-access = read
auth-access = write
password-db = passwd
realm = svnhome
和passwd中【user】
admin = mypassword
能够启动服务器
svnservice -install -d -r d:/svnhome
不过要先执行svnservice -remove,否则不能成功!(仅限于我的机器)
导入时
svn import D:/myproject svn://localhos
t/svnhome -m "initial import" --username admin --password mypassword
时报错:svn: 无法连接主机“localhost”: 由于目标机器积极拒绝,无法连接。
用svn import D:/myproject file:///D:/svnhome -m "initial import" --username admin --password mypassword成功
这是为什么?
问题二: 能不能在配置服务器时,设置匿名的管理 而不需要admin = mypassword?还有realm = svnhome 这条语句是必需要改的吗?为什么一定要realm=库所在文件夹名?
问题三:svn import D:/myproject file:///D:/svnhome -m "initial import" --username admin --password mypassword 这条语句中 必需要 -m ""吗?我不要的话,就不能执行。(因为很多介绍import命令的资料上都没注明这点,故有此一问)
恳请各位解答!跪谢!
用的是svn的命令行形式。
首先安装好了svn后,设置PATH,将其值设置成svn的安装目录(D:/Program Files/Subversion)+/bin,即D:/Program Files/Subversion/bin
然后将空文件夹(d:/svnhome)设置成我的版本库,使用的命令行是svnadmin create d:/svnhome. 这时在d:/svnhome文件中已经有了其他子文件,说明版本库建立成功。
下一步是将我的工程myproject这个文件夹(在D盘)导入版本库,使用的命令行是svn import d:/myproject svn://localhost/svnhome/
回车后,命令行(cmd.exe)中出现svn: ?/229?/174?/137?/229?/133?/168?/230?/149?/176?/230?/141?/174?/226?/128?/156
--?/226?/128?/157?/229?/144?/142?/233?/157?/162?/230?/152?/175?/233?/157?/158ASC
II?/229?/173?/151?/232?/138?/130 230: ?/228?/184?/141?/232?/131?/189?/232?/189?/
172?/230?/141?/162?/229?/136?/176/?/232?/135?/170 UTF-8
1你还没有启动svnserve,所以无法使用svn://协议
要么你启动svnserve ,要么使用file://协议
假设你这样启动svnserve:
svnserve -d -r d:/svnhome
那么可以使用svn://localhost来访问你的版本库,导入时的命令
svn import d:/myproject svn://localhost
SVN Eclipse插件Subclipse安装和配置
一、安装Subclipse
安装Subclipse的最好方法是使用Eclipse Update Manager。在Eclipse 3.1中,它位于Help -> Software Updates -> Find and Install...菜单下。
选择搜索要安装的新功能部件,点击新建远程站点,弹出图1,在URl输入框输入http://subclipse.tigris.org/update作为URL添加New Remote Site。
图1:使用Eclipse Update Manager安装Subclipse
点击OK后,系统会自动去网站上搜索该插件
图2
在图2中选择Subclipse点击Next按钮,直到安装成功,点击完成按钮退出
然后重新启动eclipse,
点击eclipse窗体菜单,选择打开透视图,如果在里面看见SVN资源库研究,说明SVN插件已经安装成功。此时在打开透视图窗体里选择SVN资源库研究,点击确定按钮,在Eclipse左边就会出现SVN资源库的标签。
二、建立版本库
在SVN资源库的标签里点击右键,选择新建资源库位置,再添加SVN资源库窗体里URL里输入svn://192.168.0.70/techsupport/crm ,点击完成,系统提示输入用户名和密码,添加成功后,SVN资源库的标签里会显示版本库的信息
三、Check out
在SVN资源库的标签里选择资源库,点击右键,选择取出为,在从SVN取出窗体里输入项目名称,或者默认,直接点击完成按钮,版本库即被下载成功,
四、提交和更新
进入导航器标签里,我们可以看到被check out出来的版本库资源,此时该资源路径已经与服务器上的路径绑定在一起,现在我们要做的就是提交和更新,方法如下:
选择你所要提交的文件或代码,点击右键,选择小组,然后选择提交和更新功能,就可以完成版本的提交和更新。
Subversion: 用 Apache2 作为 Subversion 的服务平台
Posted by dualface as 工作, at 2005-06-04
我以前一直是用 Svnserve 做为 Subversion 服务器。这样简单易行,而且访问速度也不错。
但 Svnserve 做服务器有几个不足之处:
1、权限管理太简单,只能为整个仓库设置访问权限,不能为目录设置访问权限;
2、访问用户的密码以明文形式保存在文本文件里面;
3、只能提供一个仓库,如果要提供多个仓库,就必须启动多个 Svnserve 实例;
4、Svnserve.exe 必须借助第三方工具软件(例如 FireDaemon)才能安装为 Windows 系统服务;
5、必须在防火墙上打开单独的端口,而不能直接通过 HTTP 协议访问。
而换成用 Apache2 作为 Subversion 的服务平台,具有下列好处:
1、可以为每个仓库、目录设置访问权限;
2、密码采用 MD5 或者 Crypt 加密存储,并可以利用其他验证方式;
3、可以同时服务多个 Subversion 仓库;
4、通过 HTTP 协议即可访问仓库,几乎不会受到防火墙影响;
5、可以通过浏览器直接浏览、下载文件;
6、任何支持 WebDAV 的软件都可以操作 Subversion 仓库。
废话不说了,安装步骤如下:
第一步:安装 Apache2
很遗憾,必须使用 Apache2,而不能是 Apache1 或者 IIS。如果你的系统正在使用 IIS 或者 Apache1,那么可以将 Apache2 绑定到其他端口,例如 8080。这只需要修改 httpd.conf 的 Listen 80 为 Listen 8080 (注意去掉该行前面的 # 注释符号) 即可。
第二步:集成 Subversion 到 Apache2 中
修改 httpd.conf,加入下面两行:
LoadModule dav_svn_module d:/svn-1.2.0-win32/bin/mod_dav_svn.so
LoadModule dav_svn_module d:/svn-1.2.0-win32/bin/mod_authz_svn.so
第三步:创建仓库
在命令行窗口运行:
d:/svn-1.2.0-win32/bin/svnadmin create d:/svnrepo
然后继续修改 httpd.conf,加入下面的内容:
DAV svn
SVNPath d:/svnrepo
现在启动 Apache2,通过浏览器访问
http://127.0.0.1:8080/public/
应该就可以看到如下画面了。当然了,如果你的仓库里面什么都没有,就只能看到一个空目录而已。
第四步:权限验证
经过前面三个步骤,我们建立了一个任何人都可以访问并操作的 Subversion 仓库。所以现在就是该为这个仓库加上锁的时候了。
修改 httpd.conf,找到刚刚输入的 ,修改为如下内容:
DAV svn
SVNPath d:/svnrepo
AuthzSVNAccessFile "d:/svn-1.2.0-win32/conf/repo-access-file"
Satisfy Any
Require valid-user
AuthType Basic
AuthName "我的 Subversion 仓库"
AuthUserFile "d:/svn-1.2.0-win32/conf/auth-file"
这里我们指定了两个文件。repo-access-file 文件用于指定仓库的访问策略,auth-file 则保存用户名和密码。
repo-access-file 文件的内容如下:
[/]
dualface = rw
* = r
[/private]
dualface = rw
这个文件里面,[/] 表示要为根目录指定访问策略,而 [/private] 则表示为 /private 目录指定访问策略。
[/] 后面的 dualface = rw 表示名为 dualface 的用户在这个目录及其子目录中具有读写权限(r = 读,w = 写)。* = r 则表示任何用户都具有只读权限。[/private] 后面没有 * = r,因此除了 dualface 以外的任何其他用户都无法访问这个目录。
这里要注意的是,虽然我们为 / 根目录指定的访问策略是允许任何人具有只读权限,但 /private 目录单独的访问策略具有更高的优先级。
接下来,还要创建保存用户名和密码的 auth-file 文件。这个文件不能直接建立,需要使用 Apache2 的 htpasswd 程序来建立。使用格式如下:
htpasswd -cm d:/svn-1.2.0-win32/conf/auth-file dualface
-cm 参数表示创建文件,并添加用户。而 dualface 则是要添加的用户名。执行命令后,htpasswd 会提示输入两次为用户指定的密码。
如果要添加更多用户,将参数 -cm 改为 -m 即可。最后重新启动 Apache2,如果一切顺利,我们的仓库就完全建立好了!
Subversion是否可以控制中文目录的访问权限?可以!
经过测试,发现subversion是可以很好地控制中文目录的权限的。
http://doc.iusesvn.com/show-31-1.html
--------------------------------------
如何恢复SVN中已删除文件或文件夹
http://doc.iusesvn.com/show-30-1.html
-------------------------------------
如何在svn里使用vss的share功能:svn:externals我们公司是从vss转到svn的,以前大家喜欢用vss的share功能,实现两个不同目录的文件的同步修改更新
等操作。在svn里可以通过属性svn:externals达到这个目标。
http://doc.iusesvn.com/show-29-1.html
-------------------------------------
svnserve.conf:12: Option expected的问题解决方法
经常有新手配置基于svnserve的subversion服务器后,
在客户端访问subversion版本库时出现这个错误:
svnserve.conf:12: Option expected
为什么会出现这个错误呢,就是因为subversion读取配置文件svnserve.conf时,无法识别有前置空格的
配置文件
http://doc.iusesvn.com/show-28-1.html
-------------------------------------
405 Method Not Allowed的原因和解决方法
用TortoiseSVN访问基于apache配置的svn版本库时,有时候会提示错误405 Method Not Allowed,查看
apache error log时又有什么200 OK。
今天早上我也碰到这个问题了,后来发现,事情原来是这样的:
开始用TSVN checkout了一个正常的目录,假设服务器地址为:http://www.iusesvn.com/project1,
之后,服务器经过其它配置,这个地址变了,使得用这个地址不再能访问到正确的版本库,此时,TSVN就
极有可能报405错误。
另外,当你访问的地址大小写与服务器的地址不一致时,也会出现该错误。
只要将TSVN访问的地址改成正确的,或修改服务器配置,使原地址可以访问即可解决。
http://doc.iusesvn.com/show-27-1.html
------------------------------------
目标机器积极拒绝,无法连接'或Can't connect to host的原因
当出现'目标机器积极拒绝,无法连接'或svn: Can't connect to host ...时,请依次检查下面各项
1,服务器有没有运行,有没有打开相应端口
如果服务器是svnserve,检查有没有运行svnserve,有没有打开3690端口
如果服务器是apache,检查apahce是否运行,是否打开80端口
检查时可以在服务器运行netstat -na看看相应端口是否在LISTEN
2,防火墙有没有开放相应端口
3,客户端是否可以连接服务器的相应端口
使用命令telnet 服务器IP 相应端口
如:telnet 192.168.0.1 3690
http://doc.iusesvn.com/show-26-1.html
---------------------------------------
cvs与svn的比较
http://doc.iusesvn.com/show-25-1.html
--------------------------------------
将库分布到不同的分区上
svnserve模式
http://doc.iusesvn.com/show-24-1.html
------------------------------------------
subversion中BDB和FSFS两种存储方式的比较http://doc.iusesvn.com/show-21-1.html
-----------------------------------------
关于subversion删除内容的问题http://doc.iusesvn.com/show-20-1.html
-------------------------------------------
使用svnimporter将CVS转为SVN
http://doc.iusesvn.com/show-18-1.html
--------------------------------------------
linux下apache+svn的ssl实现方法http://doc.iusesvn.com/show-16-1.html
--------------------------------------------
在Redhat AS4上安装配置svn 1.4(svnserve方式)
http://doc.iusesvn.com/show-15-1.html
--------------------------------------------
邮件通知支持中文的解决办法http://doc.iusesvn.com/show-13-1.html
---------------------------------------------
RHEL5/CentOS5 轻松安装 Subversion+apache+mysql+ssl
http://doc.iusesvn.com/show-12-1.html
------------------------------------------------
subversion服务器两种配置方式所用的配置文件及格式http://doc.iusesvn.com/show-11-1.html
-----------------------------------------------------
windows上安装apache2.0.59+SVN+自动邮件通知(完整版)[2007-7-27更新]
http://doc.iusesvn.com/show-9-1.html
----------------------------------------
基于svnserve的服务器,权限文件authz配置的常见问题及解答
http://doc.iusesvn.com/show-8-1.html
----------------------------------------
RHEL(AS4)上安装apache2.2.3 + svn1.4 + 自动邮件通知(超完整版)[2007-2-8更新]
http://doc.iusesvn.com/show-7-1.html
--------------------------------------
linux 9 下 apache2.2.2+svn 1.3.1安装http://doc.iusesvn.com/show-6-1.html
--------------------------------------
windows安装基于Apache的SVN服务器(包括SSL配置)[2007-8-19更新]
http://doc.iusesvn.com/show-5-1.html
-----------------------------------------
Subversion之路--实现精细的目录访问权限控制(v1.0 更新于2006.12.05)
http://doc.iusesvn.com/show-1-1.html
关于权限的设置
例子:
- arm部门文档的目录结构如下::
arm 部门名称
├─diary 工作日志目录
│ ├─headquarters 总部工作日志目录
│ ├─beijing 北京办日志目录
│ └─shanghai 上海办日志目录
├─ref 公司公共文件参考目录
└─temp 临时文件目录
- 人员情况
- morson,公司总经理,不习惯使用电脑,更喜欢传统的纸与笔,以及面对面的交流
- michael,arm事业部的部门经理,没事的时候喜欢弄点儿新技术,用svn来管理日志,就是他想出来的主意
- scofield,北京办人员,老员工,为人油滑难管
- lincon,上海办人员,老员工,大老实人一个
- linda,总部协调员、秘书,文笔不错,长得也不错
- rory,单片机技术员,技术支持
- 访问权限需求分析
- 允许总经理、部门经理读取所有文件。顺便给他们开放写权限,以便体现对他们职位的尊重,虽然对于某些文件来说,他们若拥有“写”权限其实也没什么用处
- 除部门经理外,所有其他人员,均只能看到本办事处人员工作日志
- 不允许匿名访问
- ref目录只允许经理和秘书读写,对其他人只读
- temp目录人人都可以随意读写
编辑代码库基础配置文件
``````````````````````
在服务器端,编辑代码库的 ``arm/conf/svnserve.conf`` 文件,如下::
[general]
password-db = passwd.conf
anon-access = none
auth-access = write
authz-db = authz.conf
管理用户帐号
````````````
在服务器端,新建 ``arm/conf/passwd.conf`` 文件,如下::
[users]
morson = ShowMeTheMoney
michael = mysecretpassword
scofield = hellolittilekiller
lincon = asyouknows111
rory = 8809117
linda = IlikeWorldCup2006
建立目录访问权限控制文件
````````````````````````
在服务器端,新建 ``arm/conf/authz.conf`` 文件,内容如下::
[groups]
g_vip = morson
g_manager = michael
g_beijing = scofield
g_shanghai = lincon
g_headquarters = rory, linda
g_docs = linda
[arm:/]
@g_manager = rw
* = r
[arm:/diary/headquarters]
@g_manager = rw
@g_headquarters = rw
@g_vip = r
* =
[arm:/diary/beijing]
@g_manager = rw
@g_beijing = rw
@g_vip = r
* =
[arm:/diary/shanghai]
@g_manager = rw
@g_shanghai = rw
@g_vip = r
* =
[arm:/ref]
@g_manager = rw
@g_docs = rw
* = r
[arm:/temp]
* = rw