svn 引发的一系列麻烦

零、前言

先简单介绍一下问题发生的环境。手头有很多测试机,windows/linux/solaris 俱全。在为了方便协同工作,拿其中一台 solaris 测试机设置了共享目录。这样 linux 机器可以直接 sshfs 挂载;windows 机器可以用 samba 挂成虚拟驱动器。这些测试机本来都是用公司公共 nfs 服务的 ,后来测试环境隔离出来之后,就搭成了这个样子。原因也没别的,solaris 不熟,用起来很不顺手,也没有现成的 sshfs 和 smbfs 可用,干脆就把共享目录扔在 solaris 机器上了,本地目录访问起来不需要任何配置。

一、不稳定的 sshfs

最近做 svn 更新(当然是在其他机器上对 sshfs 挂载过来的目录进行更新,solaris 那么难用),居然两次令 sshfs 失去了响应。看来这 sshfs 还是不够稳定(感觉还没有以前的 nfs 稳定)。而且失去响应了之后,umount 不掉,只得重启机器,很是麻烦。看来高强度 IO 的时候还是不要用 sshfs 共享的办法,不要给自己找麻烦。

二、svn: Can't convert string from 'UTF-8' to native encoding

于是转而 ssh 到 solaris 上作本地 svn up。更新到一半,就出了标题上的那个错误。看了看,是个名字带日文的文件。上网搜上述错误信息,答案很清楚,执行 svn co 环境的 locale 无法表达某些字符。

解决办法倒是不难。如 linux/solaris 这样的系统,可以用 locale 命令看当前 locale 设置——这 solaris 居然一直是光秃秃的 zh,之前一直都没注意过,汗——赶紧把下面这一行扔到了 .bashrc 里面

declare -x LANG=zh_CN.UTF-8


三、还是 svn: Can't convert string from 'UTF-8' to native encoding

终于可以继续了。只是这 solaris 在诸多测试机中配置最老,硬盘也最小。更新未完居然磁盘空间不足。看了一下,已经 8.4G 的数据了,难怪 sshfs 吃不消。反正这次要更新的项目跟 linux/solaris 也没什么关系,于是准备把这个 svn 项目迁移到 windows 机器上,只要 windows 之间能共享就行。

两台 windows 测试机,一台英文 windows xp + 中文包,一台纯日文 windows xp,都装了 cygwin,一是为了用着顺手,二是作 wii/ds 开发调试必不可少。

先在英文 windows 上 checkout,居然出现了熟悉的错误。可能是非日文系统的缘故,于是又在日文 windows 上尝试,居然一样。这才觉得可能跟 windows 系统本身的编码没有关系,而是 cygwin 的问题。但是 cygwin 下居然连 locale 命令都没有,连当前 locale 都不得而知(估计默认应该是 ISO-8859-1 吧)。

继续用 cygwin + locale 搜,得知 cygwin 下的 locale 貌似已经是个老大难问题了。网上也不乏各种 hack 的技巧,让 cygwin 环境也能正常显示中文云云,林林总总,不胜其烦。

我倒不很在意能否在 cygwin 下显示中日文,这 cygwin 本来就是寄人篱下,用来便利日常工作的。我等懒人,还是换用 TortoiseSVN 作 checkout,一切正常。

p.s. 10G 数据的项目用 svn 管理真是害人哪,还我青春……
发表评论