今天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 強制更新