【问题标题】:Commit blocked by pre-commit hook SVN提交被预提交挂钩 SVN 阻止
【发布时间】:2012-06-13 13:57:05
【问题描述】:

我的服务器上有颠覆,当我尝试提交时出现如下错误:

error creating module:org.tigris.subversion.javahi.ClientException:svn:
Commit blocked by pre-commit hook(exit code 199) with no output.
svn MERGE of '/svn/mssql/trunk':409 Conflict (http://www.domain.com)

然后我尝试检查 /var/log/httpd/error_log 中的错误日志

我得到了如下错误:

Could not MERGE resource "/svn/[project name]/!svn/act/8b7476df-3701-0010-a025-c590208c08a0" into  "/svn/[project name]/trunk"

Commit blocked by pre-commit hook (exit code 199) with no output.  [409, #165001]

那是什么错误?

如何解决?

【问题讨论】:

  • 解决冲突 - 其他人签入了您即将进行的更改。找出其他开发者是谁并与他们交谈。
  • 在提交之前您是否更新了工作副本?
  • 我尝试创建新的存储库,当我第一次尝试提交项目时。我也出错了。
  • 您有自定义的预提交挂钩脚本吗?我不相信新的存储库、新的源代码会在提交中导致任何问题。

标签: svn pre-commit


【解决方案1】:

有两种不同类型的 pre-commit 钩子:

  • 服务器端:这是标准的 Unix 预提交挂钩。钩子本身位于存储库hooks 目录中。如果钩子不可执行,或者没有名为pre-commit 的钩子脚本,则钩子不会运行。
  • TortoiseSVN 客户端钩子:钩子在客户端上,是 TortoiseSVN 特有的。

当你说pre-commit hook时,你说的是服务器上的那个还是你电脑上的那个?你说你修改了钩子,把exit 0放在前面。

你没有说明钩子是做什么的,或者是谁把它放在那里的。这使得很难确定出了什么问题。有数以千计的 Subversion 钩子在执行各种任务。我不知道这个是什么。这个钩子是谁设的?默认情况下,Subversion 没有活动的钩子。一定是有人添加的。谁做的?

而且,他们为什么要放这个钩子?这个钩子应该完成什么。一些挂钩可防止将重复文件添加到存储库中。一些防止不匹配的套管。有些是安全的,有些只是开玩笑。

在Pastebin 上发布你的钩子,然后回来告诉我们你已经更新了它。让我们知道是谁添加了钩子以及原因。

否则,我们无能为力。

【讨论】:

  • 这是我服务器上的 subversion。我使用 gforge,其中包含 subversion。这是我在 pastebin.com/XSceFWBV 上的预提交的 pastebin。我认为预提交脚本是由 subversion 自动生成的。帮帮我解决这个问题,谢谢
  • 您的 pre-commit 挂钩脚本正在调用另一个名为 pre_commit_checks.php 的脚本。这对于 Subversion 来说并不罕见。 Subversion 会自动运行一个名为pre-commit 的脚本,您通常会修改它以调用另一个脚本作为预提交挂钩本身的一部分。你能把那个pre_commit_checks.php 脚本也贴到bin 里吗?我通常会说只是将 pre-commit 重命名为其他名称,但它可能是 gforce 工作所需的脚本。
【解决方案2】:

我可以使用以下代码在预提交脚本上添加新行来解决这个问题:

#!/bin/sh
exit 0;

之后,我可以提交、更新、结帐等:)

但是我必须在每个存储库项目中手动添加这些行吗?是另一种解决这个问题的方法吗?

谢谢

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-09
    • 1970-01-01
    • 1970-01-01
    • 2012-12-07
    • 1970-01-01
    • 2016-02-20
    相关资源
    最近更新 更多