相关文章推荐

SVN:文件名、目录名或者卷标语法不正确。

团队中大部人都是使用mac的,而我是为数不多的用win的穷人。

问题现象

一个项目检出代码时,死活报错。错误信息为 Failed to run the WC DB work queue associated with xxxx… 文件名、目录名或者卷标语法不正确

提示信息大概意思就是WC数据库里面的work队列跑不下去了,因为一个136*12.png文件。win下*符号是特殊符号之一,是无法创建这种文件的。

解决过程

原理就是从work队列里面剔除掉这条任务,完全检出后对比与服务器来说就缺失这个文件。(缺失也不影响的只要你的工作和这个文件无关)

项目的.svn下会有个wc.db文件,就是提示文本中的WC DB,需要使用sqlite(一个应用广泛的嵌入式小型数据库)打开它。

D:\project\你的项目\.svn>dir
 驱动器 D 中的卷是 Data
 卷的序列号是 9AB4-F420
 D:\project\你的项目\.svn 的目录
2020/12/01  10:10                 3 entries
2020/12/01  10:10                 3 format
2020/12/01  10:11    <DIR>          pristine
2020/12/01  11:11    <DIR>          tmp
2020/12/01  11:11        27,983,872 wc.db
2020/12/01  11:11                 0 wc.db-journal
               4 个文件     27,983,878 字节
               2 个目录 301,177,925,632 可用字节
D:\project\你的项目\.svn>sqlite3 wc.db
SQLite version 3.33.0 2020-08-14 13:23:32
Enter ".help" for usage hints.
sqlite> .table
ACTUAL_NODE    NODES          PRISTINE       WC_LOCK
EXTERNALS      NODES_BASE     REPOSITORY     WORK_QUEUE
LOCK           NODES_CURRENT  WCROOT

wc.db里面的一系列表,通过.table命令查看,接下来我们要做的就是对NODES、WORK_QUEUE、WC_LOCK进行清理。

# 看看有啥,非必要
select * from NODES where local_relpath like '%*%';
# 1|src/path/to/136*12.png|0|src/path/to|1|dpath/to/136*12.png|12487|normal|||file|(svn:mime-type application/octet-stream)||$sha1$a6ab08429621146c6f3d2aeb3b246b7daa2e1c5f||10739|1563264828707442|提交人帐号|||||
# 1|src/path/to/136*12-hover.png|0|src/path/to|1|path/to/136*12-hover.png|12487|normal|||file|(svn:mime-type application/octet-stream)||$sha1$42fa4db5041d07f474d15c6b426e08de87f32d61||10739|1563264828707442|提交人帐号|||||
# 清理它,必要
delete from NODES where local_relpath like '%*%';
delete from WORK_QUEUE;
delete from WC_LOCK;

执行完上面三条清理命令后再svn update检出就ok了,有多少个这类文件上面步骤就是重复多少次(裂开.jpg)。

问题重现

前面问题的原因很简单看报错内容就能猜想到七七八八了,重现来验证一下它。

我们来建一个测试项目,并且在linux端提交一个带*符号的163*90.txt文件。

/tmp/svn # ls -l
total 0
/tmp/svn # vi 163*90.txt
/tmp/svn # svn add 163\*90.txt
A         163*90.txt
/tmp/svn # svn commit -m 'test' 163\*90.txt
Authentication realm: <svn://127.0.0.1:3690> 6027cf3b-971a-4cee-ad60-94dd9fe05040
 
推荐文章