debian11服务器端的SVN搭建完毕,我们本地提交远程仓库后,发现我们在/www/svndata/proj_1目录下根本就没有找到我们上传的文件,这是为什么呢?难道我们没有上传成功?

实际上,这是由于把文件上传到SVN版本库后,上传的文件不再以文件原来的格式存储,而是被svn以它自定义的格式压缩成版本库数据,存放在版本库中,svn服务器版本库有两种格式,一种为FSFS,一种为BDB,这时候我们就需要在linux中实现检出(check out)。

1、手动check out

svn checkout svn://ip/proj_1 /wwww/online_data

svn://ip/proj_1表示需要检出的仓库地址,/wwww/online_data 表示需要代码检出到哪个目录下

2、自动check out

在/www/svndata/proj_1/hooks目录下新建一个post-commit文件(注意没有后缀名),post-commit文件添加内容为:

#!/bin/sh

SVN=/usr/bin/svn  

WEB=/wwww/online_data

export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8
export LANGUAGE=en_US.UTF-8

$SVN update $WEB --username 管理员账号 --password 管理员密码

注意/usr/bin/svn是你的svn执行文件路径,/wwww/online_data是你要将代码checkout的地址

将post-commit设置为可执行

chmod +x /www/svndata/proj_1//hooks/post-commit

到此自动checkout配置完成,以后每次本地提交的时候,/wwww/online_data里面会同步checkout。

需要注意的是,第一次的时候需要SSH手动检出,之后就不需要了。

如果第一次不手动checkout,配置了hook的post-commit钩子文件后,本地客户端更新时会报错。第一次checkout时候会让你输入root密码,不管,安全第一可以不输入。但是后面的SVN管理账号和密码就需要了

到此linux搭建svn服务器完成。

3、修复字符集bug
当你开心的提交完代码后,突然发现SVN客户端报错了~:
E000022: Can‘t convert string from ‘UTF-8‘ to native encoding~
原因是服务器中文字符集,单纯的修改~/.bashrc,依然会报错
-bash: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8): No such file or directory~

完美解决方法如下:

写文不易,请博主喝一瓶冰阔落

价格: 3.00 元
VIP会员价格:3.00元终身会员免费
温馨提示:登录付款后可永久阅读隐藏内容。 付费可读