3

我遇到了 Apache Subversion 存储库的问题,我正在寻找最佳解决方案:

我无法提交到 Subversion 存储库,并且收到错误消息:

svn: E720002: Commit failed (详情如下): svn: E720002: Can't open file 'C:\Repositories\myproject\db\txn-current': 系统找不到指定的文件。

如果我创建一个空txn-current文件,如果提交时会出现另一个错误:

svn:E070014:提交失败(详细信息如下):svn:E070014:无法读取文件'C:\Repositories\myproject\db\txn-current':找到文件结尾

注意:假设我没有存储库的备份,因此我必须手动修复该问题。

StackOverflow 上已经讨论了相同的行为:svn commit problem, Cannot read 'd:\UC\db\txn-current': End of file found。但是我怀疑那里的答案真的很有帮助:

  • 我不认为\db\txn-current手动创建并放一个0(或任何其他整数)是一个好的解决方案。我想它可能会在不久的将来导致一些意想不到的行为,

  • svnadmin recover和/或svnadmin verify不创建和/或填充txn-current. 在这种情况下,这些命令是无能为力的。

根据FSFS 描述 \db\txn-current文件包含下一个事务密钥号。如果我将一些整数放入文件中,那么我可以提交并且整数将增加 1。

然而,看起来放一些不相关的整数会破坏我的回购中的某些东西,我不希望这种情况发生。

“txn-current”文件是一个包含单行文本的文件,其中仅包含一个 base-36 数字。当前值将用于下一个事务名称,以及事务所基于的修订号。这个序列号确保事务名称不会被重用,即使事务被中止并且基于相同修订的新事务开始。FSFS 对该文件执行的唯一操作是“获取和递增”;“txn-current-lock”文件在此操作期间被锁定。

我应该怎么做才能\db\txn-current正确解决问题?我应该在文件中放入什么整数?有没有其他方法可以解决这个问题?

编辑:

  • 除了文件,我如何解决相同的问题(不存在或为空)db/current
4

6 回答 6

5

我有类似的问题。为了解决,我编辑了“txn-current”文件,在里面放了一些大数字,比如 xxxxx。除此之外,我还必须在“db\transactions”文件夹中编辑另一个名为“current”的文件。我从这个文件中删除了所有内容,只添加了一个输入并关闭了这个文件。

于 2013-02-14T12:53:08.177 回答
3

我有一个类似的问题,在提交期间发生电源故障。我尝试修改“当前”文件,但没有奏效。

我对存储库进行了备份,然后删除了“当前”文件,并在存储库上运行了“svnadmin verify”。此后,我收到以下错误:

“格式错误的文件 svn:序列化散列缺少终止符”

然后我对存储库进行了转储,删除了旧存储库,重新创建了存储库并导入了转储文件。

此后一切都再次运行良好。完整的存储库和历史记录仍然存在。

于 2013-08-07T11:04:01.180 回答
3

我收到错误消息“无法读取 'D:\SVNROOT\UC\db\txn-current'.: End of file found” 在进一步探测后,我们意识到 db 文件夹中的“当前”文件在某些​​服务器操作系统之后为空升级活动。我们从 revs 文件夹中找到了最新的修订号,并将该号添加到“当前”文件中

它仍然不起作用然后我们发现这篇文章指定您必须输入修订号,然后在其后输入“输入”

这可以解决错误!

于 2013-04-24T10:01:52.830 回答
3

在 FSFS 中txn-current保存下一个事务 ID。提交后存储在修订本身中的事务 ID。所以puttign非常大的数字txn-current应该没问题。

另一种解决方案是svnadmin dump存储库,然后svnadmin load是新的存储库。

更新:已调查文件损坏问题,txn-current并已在 r1483781 中修复。

  • 修复 Windows 上电源/磁盘故障时的存储库损坏 (r1483781)

修复在 Subversion 1.7.10 及更高版本中可用。

于 2012-10-23T18:07:02.773 回答
1

我做了:

svnadmin verify /mnt/repos/
svnadmin recover /mnt/repos/

还是报错...

svn: E000002: Übertragen schlug fehl (Details folgen):
svn: E000002: Kann Datei »/mnt/repos/db/txn-current« nicht öffnen: Datei oder Verzeichnis nicht gefunden

然后我创建了空文件:/mnt/repos/db/txn-current 然后svn ci再次工作

如果您不想等待:

svnadmin verify -r 997:HEAD <path>

是比较快的。与修订号交换 997,小于错误修订

于 2018-01-14T23:05:01.257 回答
0

就我而言。设置 SVN 的 VirtualMachine,空间已满。所以清理了空间

于 2019-07-15T11:39:21.467 回答