svn:使用输出阻止预提交挂钩(退出代码3)

时间:2012-10-11 10:43:09

标签: svn

我做了什么 - 以及问题是什么

我添加了svn中存在少量文件的目录:

$ svn add ABC (ABC is directory)
A ABC
A ABC/file_1
A ABC/file_2
A ABC/file_3
然后我做了 -

$ svn ci -m "some comments" ABC
Adding  ABC
Adding  ABC/file_1
Adding  ABC/file_2
Adding  ABC/file_3
Transmitting file data..svn commit failed details follows
svn commit blocked by precommit hook exit code3 with output

现在我无法提交,我也不知道如何成功。 你能帮帮我吗感谢。

1 个答案:

答案 0 :(得分:1)

你没有做错任何事。

问题在于预提交钩子。出于某种原因,预提交挂钩会阻止您的提交完成。这是预提交钩子的目的:如果事务违反某些特定于站点的策略,则阻止事务完成。

没有标准的预提交挂钩。它们必须由网站实施。许多网站出于各种原因编写自己的网站。有些使用各种标准的预提交钩子。因此,您必须找到负责Subversion存储库的人员并询问预提交挂钩,它应该做什么,以及为什么它会拒绝您的特定事务。

通常情况下,预提交钩子的作者很友好地给你一个理由。 (就像您没有添加目录的权限一样,或者存储库因某种原因被锁定)。但是,看起来执行预提交挂钩的人未能提供任何类型的错误消息,这使得无法确定哪些错误。很可能,预提交钩子本身有一个错误,而且它根本就没有完成。

让使用预提交挂钩的站点对其进行修改,因此它在失败时始终会显示错误消息。如果预提交挂钩将输出写入STDERR,如果预提交挂钩未通过提交,它将打印出该信息,但如果允许提交则不会打印出该信息。因此,他们应该将调试代码添加到提交挂钩,因此当它失败时,很容易看到它失败的地方,如果有理由拒绝你的交易,它会告诉你原因。

相关问题