今天svn在反复commit、cleanup时,产生了错误如下(我用的是mac电脑,终端)
svn ci aaa -m ''
svn: E155010: Commit failed (details follow):
svn: E155010: Pristine text 'a31e85c8da93f9838bde24db70544f9089ed4359' not present
解决方案:
在http://www.sqlite.com/download.html下载sqlite, 我选择的是 Precompiled Binaries for Mac OS X (x86),当然大家可以根据自己的设备选择适当的文件
解压之后把sqlite文件放在了我的svn根目录,这里是dev,然后执行:
sqlite3 .svn/wc.db "SELECT * FROM nodes WHERE checksum like '%a31e85c8da93f9838bde24db70544f9089ed4359'"
返回一行对应的数据,说明语句正常,我这里是(隐藏了文件名):
这里是对应的文件|14161|normal|||file|()||$sha1$a31e85c8da93f9838bde24db70544f9089ed4359||14161|1452593165408165|tongkun|17835|1452593209000000|||
修改此节点的状态:
sqlite3 .svn/wc.db "UPDATE nodes set presence='not-present' WHERE checksum like '%a31e85c8da93f9838bde24db70544f9089ed4359'"
执行没问题,说明问题得到了解决
svn up 会发现我们要提交的文件状态变成’unversioned’状态了,因为版本对应的节点日志变成not-present了,所以svn 会认为这个版本文件是不存在的,有两种解决方式:
第一种:把文件重新添加到版本库 svn add file 、 svn ci file ….
第二种:svn update –force 强制更新