最近在一个比较纯净的linux服务器上安装支持http的svn,差点吐血,太干净也烦,还要奋战后终于拿下
apache2.2以上 svn1.8.3
所需文件:
注意这里的neon在svn1.8.1版本被移除了,需要serf来支持http
svn验证文件导入导出:
将文件导入版本库:
终端输入:svn import [源路径] [目标版本库路径] -m [日志信息]
源路径可以是相对路径,导入时会递归导入源路径下的所有文件和文件夹,目标版本库路径需要绝对目录(反正我试验是这样的),例如版本库的目录是:
./svn import ../../svnceshi/ file:///usr/local/svnRepo/ -m "new file"
从版本库导出:
导入后原文件并未被纳入版本管理,若想获得受版本控制的文件,就需要从版本库导出
终端输入:svn co [版本库路径] [导出目标路径]
./svn co file:///usr/local/svnRepo/ /usr/local/svnceshi/
因为没有配置PATH 所以这里./svn启动
===============
上面我是配置好了svn服务器,这里要支持http访问,我必须要apache服务器来集成svn,所以安装svn的时候我们要先确保有了apache服务器,
安装apache的时候编译命令:
./configure --prefix=/usr/local/httpd-2.4.7/ --with-apr=/usr/local/apr/bin/apr-1-config --with-apr-util=/usr/local/apr-util/bin/apu-1-config --enable-dav --with-pcre=/usr/local/prce/
--enable-dav这个参数必须有,
安装svn时编译svn二进制包的命令: ./configure --prefix=/usr/local/svn --with-apxs=/usr/local/httpd-2.4.7/bin/apxs --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util/ --with-openssl=/usr/local/ssl/ --with-serf=/usr/local/serf-1.2.1/ --with-sqlite=/usr/local/sqlite3/,注意这里的--with-apxs就是我的apache安装目录中bin目录下的,这个会为httpd.conf文件中注入:
LoadModule dav_svn_module /usr/local/svn/libexec/mod_dav_svn.so
LoadModule authz_svn_module /usr/local/svn/libexec/mod_authz_svn.so
apache启动后执行svn就是由这个配置指引的;
--with-serf这个上面说了 ,subversion1.8.3移除了neon,改用serf;
--with-sqlite,svn的数据库保存,开始报没有sqlite,我去搜索了下,有的说什么解压缩sqlite-autoconf-3080002.zip包,复制sqlite.3c的文件到svn的目录下(没有就创建一个什么的目录再复制进去),其实那些人大多数都是copy别人的,nnd都是好久的了,反正我试了没用,我就直接sqlite官网下载了sqlite-amalgamation-3.6.16.tar.gz包,编译安装后再去安装svn,带上--with-sqlite这个参数就可以了,数据库OK;
--with-openssl:至于这个参数,开始系统没有ssl,安装svn的时候报错没有ssl支持,就去下了个openssl-1.0.1e.tar.gz;
好了,跑完后,发现OK;
1.创建版本库:
cd到svn目录的bin目录下,执行./svnadmin create 路径(你的库文件夹,这里我是/usr/local/svnRepo)
2.执行./svnserver -d -r /usr/local/svnRepo,启动svn服务器的时候一定要带上后面的库目录;
3.执行=============上面的导入导出文件,根据命令提示以及查找文件可以看到你的svn是不是ok。
接下来我们集成apache服务器。
1.cd 到apache服务器下的conf目录,编译里面的httpd.conf目录,查看是否有
LoadModule dav_svn_module /usr/local/svn/libexec/mod_dav_svn.so
LoadModule authz_svn_module /usr/local/svn/libexec/mod_authz_svn.so,如果没有可能,去svn安装目录下的libexec目录看是否有libexec/mod_dav_svn.so和mod_authz_svn.so,有的话就在httpd.conf加上LoadModule那两句话,没有的话要重新编译安装svn了。
2.安装完apache服务器启动后报了没有指定ServerName,具体什么的不清楚了,但是那段英文大致就是这个把,需要在httpd.conf中添加ServerName 域名:89(端口),这里的端口要和httpd.conf中Listen 89(端口) 中端口一致。
3.然后我们添加http访问svn认证机制。
在httpd.conf最后加上:
<Location /repo/>
DAV svn
SVNListParentPath on
SVNParentPath /usr/local/svnRepo
#SVNPath /usr/local/svnRepo/bankCS SVNParentPath和SVNPath的不同,不知道去google
AuthzSVNAccessFile /usr/local/svn/conf/authz
#Satisfy Any
AuthType Basic
AuthName "Subversion repositories"
#AuthzSVNAccessFile /usr/local/svn/conf/authz
AuthUserFile /usr/local/svn/conf/passwd
Require valid-user
</Location>
这里的passwd和authz文件的格式在我们刚创建的版本库里的conf有,我们copy到别的地方(我这里是把conf文件夹从库里copy到svn安装目录下,以做apache对不同库的统一认证),
passwd文件内容是通过apache bin下的htpasswd添加的,自己手动添加是没用的,因为没有加密,登录的时候无法识别,htpasswd添加的是加密的,如:
[users]
wjg:$apr1$4aT/vQ0g$y.5f4H75WeoWSXjvyi5gq1
(不懂google吧,实际上对应的是名wjg 密码123456)
./htpasswd -c .passwd tonyzhang pass
在bin目录下生成一个.passwd文件,用户名tonyzhang ,密码:pass,默认采用MD5加密方式.
./htpasswd -b .passwd onlyzq pass
去掉c选项,即可在第一个用户之后添加第二个用户,依此类推
authz内容:
[groups]
admin=wjg
developer=zi
[/]
*=r
[bankCS:/]
@admin=rw
[exploy:/]
*=r
这里注意#[aliases]不能和#[groups]随便开放,否则会出现面的情况,登录后没有出现对应的目录:
正确的是:
这2个配置文件我花了2个夜晚至少8个多小时,对于很多无权限访问的问题都是authz配置错误导致的;
还有一个对于上面说的创建版本库后要执行chmod –R o+rw /usr/local/svnRepo,不然apache启动后用svn客户端不能上传,报 Can’t open ‘/XXX/db/txn-current-lock’: Permission denied,主要就是apache没有操作的权限。
实际上apache操作的是版本库,和svn服务器没有关于了,所以我们kill了svn的服务后还是可以通过http访问svn服务。
本来还想截个无权限访问的图,结果忘了 。。这记忆汗啊
总结:
关于最后的权限问题真是奔溃,网上查了很多,基本都是cope,想找作者交流都很无力,最后google去看英文帖子总算解决了,再次希望看到此贴的人尊重他人的心得,留下转载地址:http://wjg-java.iteye.com/admin/blogs/1991051
- 大小: 18.1 KB
- 大小: 17.7 KB
- 大小: 19.7 KB
分享到:
相关推荐
linux下SVN的一些常用的命令,比如常用的导入导出命令
Linux下的Subversion(简称svn)是一种版本控制系统,用于管理文件和目录的不同版本。它使得团队协作和源代码管理变得高效且可靠。以下是关于Linux svn的详细说明和常见操作的介绍: 1. **版本库目录结构**: - `...
可以使用`svnadmin dump`命令导出仓库,然后使用`svnadmin load`导入到另一位置,实现备份和恢复。 9. **性能优化**:SVN 1.9.3可能包含对性能的优化,比如更快的版本查询、更有效的网络通信等。了解这些优化对于...
svn export $URL $DIR:从版本库导出一个干净的目录树 svn up:更新本地工作空间,与 SVN 服务器保持同步 svn up filename:更新 filename 为最新 三、从本地到版本库 svn import $DIR $URL -m "注释信息":将 $...
svn安装建库导库备份及日常管理操作 在windows上配置svn的方法 在linux 10.117.100.130 上安装svn svn库的导入导出 ........
11. **版本库迁移**: 如果需要更换SVN服务器,可以使用SVN的导出和导入功能迁移整个版本库,保持历史记录的完整。 12. **跨平台**: SVN不仅支持Windows,还支持Linux、macOS等操作系统,具有良好的跨平台性。 总之...
6. **Exporting**: 导出不含`.svn`隐藏目录的版本,所有文件不再受版本控制。 7. **Add**: 添加新文件或目录到项目。 8. **Repo-Browser**: 浏览库资源。 9. **Revision Graph**: 查看版本图谱。 **Windows下的...
- 创建SVN仓库,并根据项目结构导入VSS数据。 - 在VS中安装TortoiseSVN,配置SVN客户端。 - 使用TortoiseSVN的Checkout功能获取仓库代码到本地工作副本。 - 将VSS导出的项目合并到SVN工作副本中,解决可能出现的...
9. **导入导出**:它支持导入和导出SVN仓库,这对于迁移版本控制系统或者备份数据非常有用。 10. **许可证管理**:Smart SVN提供商业和免费版本,商业版提供更高级的特性和服务,而免费版则满足基本的版本控制需求...
1. 安装:根据操作系统选择合适的SVN客户端,如Windows上的TortoiseSVN,Linux/Unix下的svn命令行工具等。 2. 配置:配置SVN客户端,包括设置仓库地址、用户名和密码,以及个性化设置。 三、SVN基本操作 1. 检出...
管理员还可以通过导入导出操作来备份和迁移项目配置信息,以及实现svn和http协议之间的转换。 最后,附录中包含了数据库表结构和版本记录,提供了SVN管理员在进行配置和管理时可参考的信息。联系方式则为管理员提供...
- **导出与导入**:支持将SVN仓库的数据导出为其他格式,或者从外部导入数据到现有仓库。 2. 安装与配置USVN: - 首先,你需要安装Linux环境(例如Ubuntu或CentOS),并确保系统已安装Apache、PHP和MySQL。 - ...
具体操作包括导出Windows上的SVN仓库、在Linux上创建新的仓库并导入数据等。 #### 五、附录 **5.1 Subversion中BDB和FSFS两种格式的比较** - **BDB**:Berkeley DB存储格式,早期Subversion使用的存储方式,适用...
4. **版本库操作**:讲解如何创建、克隆、导出和导入版本库,以及如何进行版本库的备份和恢复,确保数据的安全性。 5. **分支与标签**:阐述了SVN如何处理分支和标签,以及如何有效地使用它们进行并行开发和发布...
在Linux环境中,SVN命令行工具提供了一系列命令来实现对版本库的操作。以下是对SVN常用命令的详细说明: 1. **查询帮助**: - `svn help`:显示所有基本的SVN命令。 - `svn help <command>`:获取特定命令的详细...
- 备份:定期导出版本库到外部文件,或者利用SVN工具进行热备份。 - 恢复:如果发生问题,可以导入备份文件或从某个版本回滚。 6. **SVN与其他工具集成** - CI/CD工具:如Jenkins、GitLab CI/CD,可以与SVN集成...
6. **注册表文件(.reg)**:在Windows系统中,注册表文件用于导入或导出注册表项,修改系统设置。这里的.reg文件可能是用来隐藏.svn文件,使其在文件浏览器中不可见。 7. **安全注意事项**:修改注册表时要谨慎,...