SVN-原始文本丢失

问题描述 投票:0回答:4

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

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

原始 svn-base 文件丢失 - 建议清理原始文件,在我的情况下,这是找不到“原始文本”。

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

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

有人请帮忙吗?

svn tortoisesvn smartsvn
4个回答
9
投票

Subversion 工作副本格式并不是特别强大,并且时不时地被损坏并不奇怪。当这种情况发生时,通常不值得花费精力去修复它。如果

svn cleanup
无法应对,最好:

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

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


4
投票

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

.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
,然后检查应用之前保存的副本中的任何更改。


3
投票

有一个简单的方法可以做到这一点。对同一数据库/主干进行新的 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
并检查其工作情况。


0
投票

我已经在新文件夹中进行了全新的检查,并将丢失的原始文件从那里复制到无法工作的原始副本目录中。看起来工作正常。

© www.soinside.com 2019 - 2024. All rights reserved.