1

已经很沮丧...尝试更新/提交/清理 Tortoise SVN 但总是收到有关原始文本丢失的通知。

在 SO 和网络上发现了一些帖子/问题,没有任何帮助:

原始 svn 基础文件丢失- 建议清理原始文件,在我的情况下,它是未找到的“原始文本”。

原始 svn-base 文件丢失-建议使用 smartSVN-单击“修改”->验证管理区域-在我刚刚下载的智能 SVN 中不再存在...

Netbeans和 Svn 中的错误:未找到原始文本 答案...

任何人 - 请帮忙?

4

3 回答 3

7

Subversion 工作副本格式不是特别健壮,它时不时地被破坏并不奇怪。发生这种情况时,通常不值得努力修复它。如果svn cleanup无法应对,最好:

  1. 查看一个新的工作副本。
  2. 使用您最喜欢的文件比较工具( MeldWinMergeKDiff3等)从损坏的工作副本中复制待处理的更改。

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

于 2017-03-27T07:17:03.100 回答
2

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

.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”),在该文件上运行 a svn cleanup, asvn update并查看应用先前保存的副本中的任何更改。

于 2018-09-12T12:54:28.303 回答
1

有一个简单的方法。对同一数据库/主干进行新的 SVN 结帐。之后转到损坏的数据库/找到 .svn 文件夹。将此文件夹重命名为 .svn_old(在“corrupted_database”目录中使用命令mv corrupted_database/.svn corrupted_database/.svn_old

现在转到“fresh_checkout”并找到 .svn 文件夹。使用命令将此文件夹复制到损坏的数据库cp -r fresh_checkout/.svn corrupted_database/

现在做cd corrupted_database; svn up并检查它的工作。

于 2020-11-25T11:43:55.540 回答