某些提交不会调用提交后挂钩

时间:2013-01-10 06:35:43

标签: svn

我们使用post-commit hook将文件从源复制到目标(源和目标是存储库的根文件夹)。 文件夹。如果属性(属性名称:版本)应用于源下的任何文件夹,我们从post-commit.bat调用python脚本来执行复制。

我们在执行复制时遇到一个问题,某些文件夹未从源复制到目标。 我们通过以下步骤找到了问题, 在python脚本的开头,我们记录了修订号,并为每次提交更改了日志文件的路径。 但对于某些两个文件夹,日志文件中没有属性集条目(修订号和更改的路径)。 (请注意,在post-commit.bat中,我们只调用了python脚本,没有别的)。 当我们第二次尝试时,这两个文件夹的属性条目在日志文件中可用,并且文件已成功复制到目标文件夹。

是否有任何Post-Commit挂钩未被调用的情况?

1 个答案:

答案 0 :(得分:2)

应始终调用post-commit挂钩,但由于某种原因它可能会失败,如果执行提交的用户没有告诉您,您可能永远不会知道它。毕竟,就用户而言,提交已完成,他们只是收到了一些错误消息并不是很有意义。

现在,你正在做什么?您是否将文件从一个Subversion目录复制到另一个目录,然后提交这些更改?如果是这样,你如何防止你的提交后挂钩第二次触发。如果是这种情况,可能是你的天才系统阻止后提交挂钩在无限循环中触发会导致问题。

即使你没有这样做,创建一个post-commit钩子做一些可能需要几秒钟的事情并不是一个好主意。在提交后挂钩完成之前,提交无法完成。如果提交后挂钩需要10秒才能运行,那么用户必须坐在那里10秒钟,想知道发生了什么。

最好使用Jenkins之类的CI系统来处理为您创建发行版。 Jenkins很容易设置,并且会在没有在提交后地狱中占用用户的提交过程的情况下处理后提交。如果由于某种原因,提交后进程失败,Jenkins可以通过电子邮件提醒您该问题。 Jenkins用户界面完全基于Web,开发人员可以轻松查看提交后流程的历史记录。