svn: E155010: Pristine text ‘a31e85c8d4…089ed435e’ not present

  • Post author:
  • Post category:其他

今天svn在反复commit、cleanup时,产生了错误如下(我用的是mac电脑,终端)

svn ci aaa -m ''
svn: E155010: Commit failed (details follow):
svn: E155010: Pristine text 'a31e85c8da93f9838bde24db70544f9089ed4359' not present    

解决方案:

  1. http://www.sqlite.com/download.html下载sqlite, 我选择的是 Precompiled Binaries for Mac OS X (x86),当然大家可以根据自己的设备选择适当的文件

  2. 解压之后把sqlite文件放在了我的svn根目录,这里是dev,然后执行:

    sqlite3 .svn/wc.db "SELECT * FROM nodes WHERE checksum like '%a31e85c8da93f9838bde24db70544f9089ed4359'"

返回一行对应的数据,说明语句正常,我这里是(隐藏了文件名):

这里是对应的文件|14161|normal|||file|()||$sha1$a31e85c8da93f9838bde24db70544f9089ed4359||14161|1452593165408165|tongkun|17835|1452593209000000|||
  1. 修改此节点的状态:

    sqlite3 .svn/wc.db "UPDATE nodes set presence='not-present' WHERE checksum like '%a31e85c8da93f9838bde24db70544f9089ed4359'"

执行没问题,说明问题得到了解决

  1. svn up 会发现我们要提交的文件状态变成’unversioned’状态了,因为版本对应的节点日志变成not-present了,所以svn 会认为这个版本文件是不存在的,有两种解决方式:

    • 第一种:把文件重新添加到版本库 svn add file 、 svn ci file ….

    • 第二种:svn update –force 强制更新