svn: Can't find a temporary directory 问题解决

今天我机子上的SVN突然没有办法进行代码提交了,出现的错误提示信息为:

Error:Can't find temporary directory:internal error

然后试了下其他的SVN源,发现均无法提交,并且update时也出现上面的错误信息。对比项目文件时出现"不能创建目录或文件"

 

公司网站首页正在改版,突然出现上面的问题,导致代码管理无法使用,此时是十分着急,

赶忙到google上去搜索,发现很多人出现了同样的问题,普遍的问题产生原因是:linux 下盘满,导致svn找不到临时目录存放文件所至.

然后我去装有SVN服务的LINUX机器上查看了一下磁盘空间:df -h

/dev/mapper/VolGroup00-LogVol00
                       18G  6.3G   11G  38% /
/dev/hda6              99M   12M   82M  13% /boot
tmpfs                 248M     0  248M   0% /dev/shm
很显然,磁盘空间还有很多剩余,并非磁盘空间不足导致的。

 

然后继续谷歌,但查找了很久始终没有找到有效的解决方法:

如:查看下 /var/tmp和/tmp的权限是否正确,使用chmod -R 1777 /var/tmp 和 chmod -R 1777 /tmp 修改目录权限。

检测过权限没有问题,并也试用过上面的命令,但均告无效。

 

也试了一些网上谈到的其他方法,不过都没有得到解决,问题依旧。

 

找网上查找无门后,自己开始寻求其他途径,我想可能有以下原因导致问题:

1、端口问题,端口可能被占用。

2、SVN客户端版本问题。

刚开始试了下方法:我把我的SSH服务的端口从2002(早期时期改了2002)改为了22,然后试了下SVN更新,竟然突然好了,可以使用了。

我很高兴,以为是端口问题,可我就是想不明白端口为何会导致这样。 但是,过了10分钟左右,我使用SVN进行提交,又出现了之前的那个错误提示。 这下真是郁闷了。我又试着改了SSH端口号,但这次我怎么改都没用了。 这个方法最终我宣告放弃了。

我开始尝试第二个方法,我检测到自己的客户端版本不是与SVN服务对应的版本,然后我下载了对应的版本,安装,然后重启机器。

然后再SVN提交,但问题依旧。 

 

本想这下拿它没折了,但意外的发现,这次提交失败的错误信息更加详细了,

Error:Can't find temporary directory

Error: C:/Documents and Settings/Administrator/Local Settings/Temp/tmpxxxxx   internal error

提示的"find temporary directory" 这里的临时目录文件指向的路径竟然是客户端机器的目录地址。 这就是关键!

 

我根据提示信息发现C:/Documents and Settings/Administrator/Local Settings/Temp/这个目录是存在的。

但是为何它提示不存在? 暂时想不明白,先不管了。

我发现那个目录下全是临时文件,目录大小有350多M。看着不顺眼,想把里面的文件全清楚了,我Ctrl+a 然后 Shift+Delete,

本以为一下就能全删除了。 结果却是:无响应,试了多次,都是无响应。  仔细一想,明白了,那个目录下的文件太多了,全是1K大小左右的文件,至少3-5万个。  我不知道windows一个目录下有3-5个文件会导致什么结果,但有一定我很清楚,会让机子很慢,常导致"无响应"。我推测有可能是这个目录下临时文件的个数太多了,导致SVN在此目录下创建临时文件失败。  然后我就一小部分一小部分的对目录里的文件进行删除(一次删2-3千个文件响应起来还是很快的),删了20多次,最终清理得只剩几个删不掉的文件了(正在使用的)。然后我再使用SVN的Commit进行文件提交,正如我所料,OK了。再试了其他的SVN命令都一切正常了。

 

这个问题从出现到解决,花了我4个小时左右的时间,今天在此记录,希望能对其他碰到此问题的朋友有一些帮助。

你可能感兴趣的:(linux,windows,SVN,ssh,delete,磁盘)