无法提交Subversion

时间:2008-12-03 23:47:25

标签: svn

我有一个客户端必须重建他的自动构建服务器。他从我的subversion服务器检出了他的项目文件夹,但现在不再能够提交了 - 他收到了这个错误:

Error: Commit failed (details follow):  
Error: Cannot write to the prototype revision file of transaction
'551-1' because a   
Error: previous representation is currently being written by another
process  
Finished!:   

我搜索了Google,但是虽然经常报告此错误但没有明确的解释 - StackOverflow上的任何人都有解决方案吗?

更新:没有其他人提交到该存储库,因此它不是一个事务卡住(至少不是来自其他用户)。最后,我们发现权限设置不正确。并不是说你会从这条消息中知道它,但这解决了这个问题。

18 个答案:

答案 0 :(得分:43)

您可以在重启时清除此错误:

  1. 识别(或创建)根SVN存储库中不属于失败提交的目录。

  2. 在步骤1的目录中创建一个新文件。

  3. 提交新文件(如果在步骤1中创建了目录)。因为该文件是新的,所以它与先前的提交不冲突,并且可以更新服务器上的修订版#。

  4. 提交原始文件/目录。

  5. 删除新文件(如果在步骤1中创建,则删除目录)。

  6. 提交整棵树。

  7. **步骤5& 6不是必需的,但我喜欢保持我的存储库整洁......

    我得到了很多错误b / c SVN经常在提交我的大文件时调出来,这反过来导致后续提交尝试写入被中断的修订版。

答案 1 :(得分:15)

我有一个类似的问题,除了消息说“......以前的陈述目前正在由这个过程写”。

svnadmin lstxns没有显示任何交易。

重启Apache解决了我的问题。

答案 2 :(得分:9)

您的存储库存在卡住的事务。您可以使用svnadmin命令来修复它。与所有其他svn实用程序一样,svnadmin接受命令后跟选项(通常只是存储库目录)。必须在具有存储库的服务器上运行svnadmin。

做这样的事情:

svnadmin lstxns /path/to/repository

获取正在处理的交易清单(你应该看到你的违规551-1)。然后,您可以决定如何最好地从此错误中恢复... svnadmin还有一个命令rmtxns来删除有问题的事务。有关更多信息,请发出:

svnadmin help

或查看底格里斯网站:http://subversion.tigris.org/。您还可以通过help命令以及您感兴趣的命令名称获得有关特定命令的更详细帮助。例如:

svnadmin help lstxns

显然,您需要对存储库服务器进行shell访问,并在存储库上写入权限以使用svnadmin。如果您的存储库格式是Berkely DB,则应暂停svnserve守护程序(如果使用它)和任何web_dav / web_svn访问权限,以确保在发出svnadmin命令时不会损坏数据库。

答案 3 :(得分:5)

对我来说,通过更改本地文件夹(而不是存储库)的权限,问题得以解决(如更新问题所示)。在Windows Vista中,您可以通过右键单击文件夹并在属性/安全性中更改权限。

错误信息不是很好,找到答案并不容易,所以我希望我的答案可以帮助其他人解决这个烦人但另一方面简单解决问题。

答案 4 :(得分:3)

有同样的问题,重启apache解决了这个问题。

答案 5 :(得分:2)

在我取消正在进行的提交后,进入同样的问题。在使用要删除的事务编号执行svnadm rmtxns之后,我仍然收到了消息。我正在使用带有apache的webdav,所以我按照建议(/ sbin / service httpd restart)重新启动了apache。工作

答案 6 :(得分:1)

我还没有看到它,但是继续发送错误消息我猜测某些东西已经卡住了写文件。我尝试重新启动你的svn服务器进程/重启服务器。

答案 7 :(得分:1)

“无法写入事务的原型修订文件” 重启apache也为我解决了这个问题。我正在发帖,以便有用的东西可能实际上成为谷歌的顶端。

祝你好运!

答案 8 :(得分:1)

您必须更改repos目录的权限

sudo chown -R www-data:www-data /home/pi/repos/
sudo chown -R www-data:www-data /home/pi/repos/myProject

答案 9 :(得分:0)

我为@DamianM做了一票  回答。在我看来,这似乎是问题所在。文件损坏导致无法在服务器上写入。 Issue with SVN Commit for certain File Extension

但是,我没有重新启动你的svn服务器进程/重启服务器,而是将dll [有问题的文件]再次复制到工作文件夹,并且能够提交。

答案 10 :(得分:0)

我记录了同样的错误信息,当我“获取锁定”提交时,成功〜

答案 11 :(得分:0)

伊万

我遇到了与Windows 2003上安装的Visual SVN Server完全相同的问题,我更改了默认安装以将Repository文件夹放在单独的分区上,因为服务器C驱动器很小。我不得不将权限更改为该文件夹(在本例中为D:\ Repository),作为一个快速而肮脏的黑客,我只是将“Everyone”用户添加到此文件夹并选择“修改”权限(当然不是最安全的)一个肮脏的工作黑客(尽管如此)。这解决了这个问题。

答案 12 :(得分:0)

我最近遇到了这样的问题(eclipse 3.7 + svn插件)并重启我的电脑。现在可以使用了!

答案 13 :(得分:0)

可能只是一个所有权问题。尝试以递归方式更改目录的所有权,如下所示:

chmod -R 777 /path/to/repo

答案 14 :(得分:0)

我有相同的错误代码,但错误结果导致我最近在本地计算机上安装的CNTLM代理。
要解决此问题,我必须向代理绕过例外列表添加一个额外的域后缀,以便能够提交到托管在现场的团队svn服务器。

答案 15 :(得分:0)

错误消息信息量最少。似乎是由各种原因造成的。

对我来说,事实证明,我对本地机器上的当前目录没有写访问权限,Subversion尝试为提交消息创建临时文件,因为我试图直接在存储库中创建一个新目录。

将当前工作目录更改为我的Documents文件夹立即解决了这个问题。

答案 16 :(得分:0)

我们不时会遇到同样的问题。我们试图:

本地:   重试   svn干净   svn更新   杀死所有的svn进程

服务器:   检查打开的线程   弹跳SVN

目前我们唯一的解决方法是删除文件中的所有内容并提交。成功之后,我们将文件的内容粘贴回来并再次提交。如果这得到相同的错误,我们会一次又一次地填充文件几个字节,直到我们可以提交整个文件。

通常这发生在提交中的一个文件中,我们单独提交每个文件,直到我们弄清楚导致问题的FILE是什么。然后我们继续上述过程。

答案 17 :(得分:-1)

在我们的案例中,SubVersion存储库的挂载点已满,添加了更多空间。