SVN- 原始文本缺失

SVN- pristine text missing

已经很沮丧了...尝试 update/commit/cleanup Tortoise SVN,但总是收到有关原始文本丢失的通知。

在 SO 和网络上找到了一些 posts/questions,没有任何帮助:

pristine svn-base file missing - 建议清理原始文件,在我的例子中是 "pristine text" 未找到。

pristine svn-base file missing - 建议使用 smartSVN- 单击 "Modify"-> 验证管理区域 - 在我刚下载的智能 SVN 中不再存在...

并且 Error in Netbeans & Svn: Pristine text not found 没有答案...

有人帮忙吗?

Subversion 工作副本格式不是特别健壮,偶尔损坏也不足为奇。当发生这种情况时,通常不值得修复它。如果svn cleanup应付不了,不如:

  1. 查看新的工作副本。
  2. 使用您最喜欢的文件比较工具(Meld, WinMerge, KDiff3,随便什么)从损坏的工作副本中复制待处理的更改。

您不应丢失更改列表以外的重要信息,因为其他所有信息都存储在存储库中,因为 Subversion 是一个集中式版本控制系统。

我刚遇到同样的问题。原始文本实际上存在于

.svn/pristine/09/09verylongnamereportedbysvncleanup.svn-base

通过检查其内容,我可以追踪到

./local/foobar/somefile

另一种方法是直接访问 SVN 数据库:

sqlite3 .svn/wc.db
sqlite> SELECT repos_path FROM nodes WHERE checksum LIKE '%7685df22%';
path/to/the/file/that/got/corrupted
sqlite> .quit

删除文件(将其移至其他位置,例如将其重命名为“.bak”),运行 一个 svn cleanup,一个 svn update 在该文件上,然后查看应用任何对之前保存的副本的更改。

有一个简单的方法。对相同的 database/trunk 进行新的 SVN 结帐。 之后去 corrupted_database/ 找到 .svn 文件夹。将此文件夹重命名为 .svn_old(在“corrupted_database”目录 mv corrupted_database/.svn corrupted_database/.svn_old 中使用命令)

现在转到“fresh_checkout”并找到 .svn 文件夹。使用命令 cp -r fresh_checkout/.svn corrupted_database/

将此文件夹复制到 corrupted_database

现在执行 cd corrupted_database; svn up 并检查其工作情况。