0

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

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

是否有任何情况下没有调用 Post-Commit 挂钩?

4

1 回答 1

2

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

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

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

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

于 2013-01-10T15:03:34.410 回答