svn常见错误解决办法
1. 隐藏⽂件.svn⽬录删除了怎么办
Checkout后,⼯作空间下.svn⽬录下有⼤量隐藏⽂件,占⽤⽐较⼤的空间,他们是⼯作空间的管理⽂件,不能删除,如果不⼩⼼删除了也不要抓狂,不会影响服务器端的,重新checkout就⼜可以⼯作了。如果想不包含这些隐藏⽂件导出,可以⽤TSVN菜单⾥的export完成。
2.⽂件名⼤⼩写问题,在下载代码时,下载到⼀半,系统提⽰不能到……⽂件, 提⽰Can't copy"……"to"……"系统不到指定⽂件
该问题很可能是因为上传了⼤⼩写不同的同名⽂件,在Repo-Browser⾥到同名⽂件删除⼀个就好了。(该问题曾经困惑过好长时间,解决了是如此简单)
在apache配置⽂件f配置的只是个配置库仓库的虚拟⽬录,物理上是不存在,即使有所有配置库的权限也只能访问到具体的配置库⼀级
4.在安装svn的机器上可以进⾏commit操作,但是通过其他机器commit出错
在安装svn的机器上可以进⾏commit操作,但是通过其他机器commit出现如下错误,appach的权限⽂件没有问题
错误信息如下
Error  Commit failed(details follow)
通过多次尝试,终于到原因了。发现原来是域名写错了。
受下⾯的配置影响:
在f⽂件添加:
#SSPI authentication
<Location /repository>
DAV svn
SVNParentPath d:/repository
AuthzSVNAccessFile e:/repository/accessfile
Require valid-user
AuthType SSPI
AuthName "Subversion repositories"
# SSPI settings
SSPIAuth On
SSPIAuthoritative On
# point to domaincontroller
SSPIDomain domain
SSPIOfferBasic On
</Location>
SSIDomain中的domain写的是全部的域名,我们公司的域名是domain.把它修改成domain,然后重新启动appache就可以了
5.can’t connect to host …………
1,服务器有没有运⾏,有没有打开相应端⼝
如果服务器是svnserve,检查有没有运⾏svnserve,有没有打开3690端⼝
如果服务器是apache,检查apahce是否运⾏,是否打开80端⼝
检查时可以在服务器运⾏netstat -na看看相应端⼝是否在LISTEN
2,防⽕墙有没有开放相应端⼝
3,客户端是否可以连接服务器的相应端⼝
使⽤命令telnet 服务器IP 相应端⼝
如:telnet 192.168.0.1 3690
6.基于svnserve的subversion服务器在新配置权限后:f:12: Option expected
该问题是因为subversion读取配置⽂件f时,⽆法识别有前置空格的配置⽂件,因此在配置⽂件⾥每⾏前⾯不能有空格7.        怎样才能把svn版本库中的某⼀个⽂件或⽬录永久的删除?
[案例⼀]
例如:当前库的最新版本是46,我在第46个版本上,更加了⼀个5M的⽂件,名字为FY07 GDCC
Training_Customer_Satisfaction_Survey v1.0 (Internal Trainer).rtf
现在我要把这个新增加的5M⽂件彻底的删除,不想让它存在库中占⽤空间
(1)⽤svn log -v命令查看添加⽂件时的Path。或者使⽤tortoisesvn之类的客户端⼯具查看也可以
C:/myhouse/SCM_Home/SVN_HOME/localtest/docs/general>svn log -v "FY07 GDCC
Training_Customer_Satisfaction_Survey v1.0 (Internal Trainer).rtf"
------------------------------------------------------------------------
r46 | zhangjia | 2007-09-23 10:40:34 +0800 | 3 lines
Changed paths:
A /docs/general/FY07 GDCC Training_Customer_Satisfaction_Survey v1.0 (Internal Trainer).rtf
FY07 GDCC Training_Customer_Satisfaction_Survey v1.0 (Internal Trainer).rtf
delete for ever
------------------------------------------------------------------------
(2)结果得到添加的路径为/docs/general/FY07 GDCC Training_Customer_Satisfaction_Survey v1.0 (Internal Trainer).rtf
(3)把整个库先lock住,防⽌在此过程中有⼈继续修改
当然如果不lock也是可以了,只不过当你把所有的内容导⼊到新库中之后,还要⽤dumpfilter把旧库中
新增部分也导⼊到新库中。为了避免不必要的⿇烦,所以我们需要lock
(4)导出旧库中的所有版本
svnadmin dump C:/myhouse/external/SVNRepos/svn > svns.dmp
(5)对导出的旧库中的⽂件做过滤,剔除我们不⽤的那个⽂件的PATH
type svns.dmp | svndumpfilter exclude "docs/general/FY07 GDCC Training_Customer_Satisfaction_Survey v1.0 (Internal Trainer).rtf" > filter.dmp
(6)重新创建⼀个新的库,版本最好和以前的相同。⽽且不要做任何的修改
svnadmin create C:/myhouse/external/SVNRepos/svndump
(7)把我们过滤后的那个导出⽂件,导⼊到新的库中
svnadmin load C:/myhouse/external/SVNRepos/svndump < filter.dmp
(8)检查新库中的⽂件和版本状态
[案例⼆]
当前库的最新版本是48,我在第46个版本上,更加了⼀个5M的⽂件,名字为FY07 GDCC Training_Customer_Satisfaction_Survey v1.0 (Internal Trainer).rtf
现在我要把在第46个版本上新增加的5M⽂件彻底的删除,不想让它存在库中占⽤空间
(1)⽤svn log -v命令查看添加⽂件时的Path。或者使⽤tortoisesvn之类的客户端⼯具查看也可以
C:/myhouse/SCM_Home/SVN_HOME/localtest/docs/general>svn log -v "FY07 GDCC
Training_Customer_Satisfaction_Survey v1.0 (Internal Trainer).rtf"
------------------------------------------------------------------------
r46 | zhangjia | 2007-09-23 10:40:34 +0800 | 3 lines
Changed paths:
A /docs/general/FY07 GDCC Training_Customer_Satisfaction_Survey v1.0 (Internal Trainer).rtf
FY07 GDCC Training_Customer_Satisfaction_Survey v1.0 (Internal Trainer).rtf
delete for ever
------------------------------------------------------------------------
(2)结果得到添加的路径为/docs/general/FY07 GDCC Training_Customer_Satisfaction_Survey v1.0 (Internal Trainer).rtf
(3)把整个库先lock住,防⽌在此过程中有⼈继续修改
(4)导出旧库中的所有版本
svnadmin dump C:/myhouse/external/SVNRepos/svn > svns2.dmp
(5)对导出的旧库中的⽂件做过滤,剔除我们不⽤的那个⽂件的PATH
type svns2.dmp | svndumpfilter exclude "docs/general/FY07 GDCC Training_Customer_Satisfaction_Survey v1.0 (Internal Trainer).rtf" > filter2.dmp
(6)重新创建⼀个新的库,版本最好和以前的相同。⽽且不要做任何的修改
svnadmin create C:/myhouse/external/SVNRepos/svndump2
(7)把我们过滤后的那个导出⽂件,导⼊到新的库中
导⼊过程中出现提⽰:
...
<<< Started new transaction, based on original revision 46
------- Committed revision 46 >>>
<<< Started new transaction, based on original revision 47
提交的东西不能更改* editing path : src/l ... done.
------- Committed revision 47 >>>
<<< Started new transaction, based on original revision 48
* editing path : src/l ... done.
------- Committed revision 48 >>>
显然46号版本已经保留了,但是我们要删除的那个⽂件也同样被删除了
(8)检查新库中的⽂件和版本状态
[案例三]
当前库的最新版本是60,我在第50个版本上,更加了⼀个5M的⽂件,名字为FY07 GDCC Training_Customer_Satisfaction_Survey v1.0 (Internal Trainer).rtf;
同时修改了10个源代码⽂件;删除了2个源代码⽂件
现在我要把在第46个版本上新增加的5M⽂件彻底的删除,不想让它存在库中占⽤空间
考虑⼀下,如果按照我们案例中提供的⽅法是否能够做到保留历史,⽽删除物理⽂件?
并说明理由?
[总结]
删除⽂件确实能够通过我们上述的提供的⽅法解决,但是我们也看到如果当库中的版本很多,容量很⼤的时候
每次当我们导出和导⼊的时候,花费的时间⽐较长,⽽且使⽤的空间也⽐较⼤。我们建议,
所有的导⼊和导出以及过滤的操作尽量在同⼀块磁盘或者扇区上执⾏,这样速度⽐较快;当然你要保证你的
扇区的容量能够容纳原来仓库⾄少2倍(2~4倍)的⼤⼩((1)原始的库,(2)导出的dump,(3)导出的filter dump,(4)导⼊的库)
当然你也可以copy到别的扇区,磁盘或者机器上运⾏,只要保证环境⼀致就可以
8.svn-怎么把authz转换成UTF-8格式
⽤菜单转换功能转换先,
⽤unicode转换为utf-8,然后再存盘
打开后再⽤utf-8转unicode(ASCII编辑)即可。
9.如何从客户端修改⽤户密码
从客户端修改密码的⼯具见附件,apache⽅式
10.提⽰:405 Method Not Allowed的原因和解决⽅法
11.执⾏Import操作,出错信息:Error: Can't create directory '/storage/yslProR/db/': Permission denied (来⾃⽹络)
⽅法:这跟linux⽤户访问⽬录的权限有关。
1)、创建apache⽤户、组,useradd apache groupadd apache
2)、将⽤户apache加⼊apache组 usermod -ggroup apache
3)、修改apache的⽂件
到 User daemon
Group daemon
改为 User apache
Group apache

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。