【发布时间】:2013-09-17 13:09:55
【问题描述】:
最小可重现故障如下:
> mkdir test && cd test
> svn co https://svn.server.com/repo .
> vim php/main.php
> svn commit
Sending php/main.php
Transmitting file data ..svn: Commit failed (details follow):
svn: File not found: Transaction »52-1r«, Path »/php/main.php«
svn: Your commit message was left in a temporary file:
令我困惑的是,这是一个干净的结帐,没有人接触过回购(svn update 在提交之前没有任何区别)并且文件确实存在(我可以ls 它或vim 它)。
这里唯一值得注意的是包含 main.php 的文件夹名称在 r1 和 r52 之间发生了变化。
这个问题是从哪里来的,为什么那个文件明明就在那里却找不到呢?我该如何解决这个问题?
【问题讨论】:
-
尝试
svn cleanup然后提交。如果这没有帮助,您将不得不进入服务器并执行svnadmin lslocks和svnadmin lstxns。您可能必须使用svnadmin rmlocks和svnadmin rmtxns进行清理。 -
@DavidW。
svn cleanup没有修复提交。svnadmin lslocks和svnadmin lstxns都没有返回任何内容。 -
好的,看看存储库,并确保所有文件和目录的权限都归运行服务器的用户所有(如果您使用的是 Apache,则为 Apache),并且可由该用户写入。我有时会发现错误的权限会允许签出,但不允许提交。
-
@DavidW。哇,我找到了问题...请参阅下面的答案 :) 不过感谢您的提示!
-
我有一个非常相似的问题。我们使用错误的路径启动了 svn 服务器。
标签: svn