Linux|Svn: E155010: Pristine Text A31e85c8da93f9838bde24db70544f9089ed4359 Not Present

今天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|||

  3. 【Linux|Svn: E155010: Pristine Text A31e85c8da93f9838bde24db70544f9089ed4359 Not Present】修改此节点的状态:
    sqlite3 .svn/wc.db "UPDATE nodes set presence='not-present' WHERE checksum like '%a31e85c8da93f9838bde24db70544f9089ed4359'"

    执行没问题,说明问题得到了解决
  4. svn up 会发现我们要提交的文件状态变成’unversioned’状态了,因为版本对应的节点日志变成not-present了,所以svn 会认为这个版本文件是不存在的,有两种解决方式:
    • 第一种:把文件重新添加到版本库 svn add file 、 svn ci file ….
    • 第二种:svn update --force 强制更新

    推荐阅读