准备:要把几个SVN项目由windows移到linux环境下面,前期在网上看了些相关迁移的资料,但我怀疑SVN是以其独立的数据库进行存储的,并不需要用
svn的dump命令,我这边先进行了测试,直接把一
个项目(一个项目一个独立版本库,也有独立的认证及密码文件,简单明了)
*号是项目名称,建版本库时以项目名称为版本库名称,认证及密码文件也在这个目录下,原建立版本库的批处理文件如下
mkdir d:projects*
svnadmin create --fs-type fsfs d:projects*
1.LINUX是oracle版的rhel5.5,先安装apache,svn几个包,很幸运,负责这个服务器的系管在装系统时将所有的包进行了安装(太浪费了吧?呵呵,服务器够好不在乎),rpm了一下
rpm -qa | grep httpd
httpd-2.2.3-43.0.1.el5
rpm -qa | grep apr
apr-util-1.2.7-11.el5
apr-1.2.7-11.el5_3.1
rpm -qa | grep subversion
subversion-1.4.2-4.0.1.el5_3.1
以上三个在装系统时可默认装好,还有一个必须手动进行安装,包可以直接在系统光盘中找到,如在网上DOWN的话其版本应与上面Subversion包一致(并且区分32位,64位,32位包的装在64位下会出现
错误)
rpm -ivh mod_dav_svn-1.4.2-4.0.1.el5_3.1.x86_64.rpm
rpm -qa | grep mod_dav_svn
mod_dav_svn-1.4.2-4.0.1.el5_3.1
安装好后启动apache
service httpd restart
用浏览器查看http://localhost/,得到it
works,说明apache已经配置成功了。
2.修改配置文件,apache是跨平台的,所以在配置上其实与windows上差不多,在linux下面是通过/etc/httpd/conf.d/subversion.conf配置版本库信息的。
windows下:
AuthType
Basic
AuthName
"MBP Subversion Repositories"
AuthUserFile
/var/projectspasswd_md5
username// 创建完成后,再次登录,输入用户名及密码后就可以登进去了。
看来还是密码文件的问题,比对了一下两个文件,windows是明文密码,linux是md5加密过的密码,这时我就想能不能把传输模式改下,去掉加密方式,系统里面设置成明文传输(懒人一个,呵呵)
再次google一下,查了半天,得出让我超沮丧的结果:
[root@JDEAPP svn]# htpasswd --help
Usage:
htpasswd [-cmdpsD] passwordfile username
htpasswd -b[cmdpsD] passwordfile username password
htpasswd -n[mdps] username
htpasswd -nb[mdps] username password
-c Create a new file.
-n Don't update file; display
results on stdout.
-m Force MD5 encryption of the
password.
-d Force CRYPT encryption of
the password (default).
-p Do not encrypt the password
(plaintext).
-s Force SHA encryption of the
password.
-b Use the password from the
command line rather than prompting for it.
-D Delete the specified
user.
On Windows, NetWare and TPF systems the '-m' flag is used by
default.
On all other systems, the '-p' flag will probably not work.
htpasswd是支持明文传输的,但是只在Windows, NetWare and
TPF这三个系统中生效,悲哀,看来只能将明文变成MD5加密的才行了,但几十个用户难道要一个一个的改掉??
明文: test:123456
MD5加密:test:$apr1$rf8s5...$aKXCksz0GPvjM1K95BbUA.
最后不得己还是死了N多脑细胞写了个shell解决掉了(没啥编程基础的,大家别笑话)
进入密码文件目录 cd /var/projects*/g 查找替换
网上摘的方法如下:
SVN版本库的迁移
--------------------------------------------------------------------------------
2009-09-16 15:50:01 标签:svn [推送到技术圈]
版权声明:原创作品,如需转载,请与作者联系。否则将追究法律责任。
两台服务器,进行SVN的迁移:
系统平台:windows server 2003
版本库:test
源服务器:192.168.1.14
目标服务器:192.168.1.12
源SVN版本库的path: D:svntest
要迁移到的path: E:svntest
第一种方法:(推荐)
首先说明:这个目标服务器上的SVN是可以用,本文中只是将它们的版本库进行
迁移。
1.停止http服务,本文中用的是apache (源服务器)(目标服务器)
2.cd C:Program FilesSubversionbin(Subversion的安装目录)(源服务器)
3.执行:svnadmin dump D:svntest
>D:svntesttest.dump(源服务器)
4. 在E盘中建立一个同名的test的文件夹(目标服务器)
5.cd C:Program FilesSubversionbin(目标服务器)
6.svnadmin create E:svntest (目标服务器)
7. 测试此test版本库是否可以用,如果可以用。再做下面的操作(目标服务器)
《要把在源服务器上导出的test.dump文件copy目标服务器上》
8.Svnadmin load E:svntest < c:svntesttest.dump
(目标服务器。这个只是将源服务器上导出的版本库,导入到现在的服务器上。)
9. 修改http配置文件和修改权限,也可以将原来的权限文件直接copy到新的版本库中。(目标服务器)
第二种方法:
1.停止http服务,我用的是apache
2.把D:svntest下面的所有的文件copy到192.168.1.12的E:svntest
3. 修改apache中的文件路径,写入新的文件路径
4.打开http服务,但是这种做法的条件是:SVN旧版本库的操作环境系统和新版本操作环境系统相同,而且SVN的版本相同。
5.在本地复制的版本库,右键---TortoiseSVN --- Relocate,在弹出的框框内,重新输入版本库的ip地址。