5

我想添加一个提交后挂钩,以便如果用户提交对特定文件的更改,我将通过电子邮件收到通知。

有没有人见过这样的例子,或者有可能吗?

我之前已经设置了一个预提交挂钩,但这是我知识的限制。

4

3 回答 3

6

在 github 上有一个 post-commit 钩子可以做到这一点,它允许用户(而不是管理员说他们正在监视哪些文件以进行更改,以及这些更改应该发送到哪些电子邮件地址。

您可以将它与我的pre-commit-kitchen-sink 挂钩结合使用,以确保用户只能编辑他们自己的监视文件。钩子脚本使用 Perl,但它们不需要任何非标准模块,因此它们非常易于使用。

每个用户都有自己的监视文件,语法很简单:

mail = david@gmail.com
file =**/build.xml
match = [Mm]akefile

mail行是我想通过电子邮件发送通知的地方。我可以有多个。这file是我正在观看的文件的全局表达式(锚定在表达式的前面和后面)。该match行是相似的,并且使用了一个未锚定的 Perl 正则表达式。

监视文件存储在您指定的目录中的 Subversion 存储库中。这意味着用户可以设置自己的手表。您可以使用我的 pre-commit-kitchen-sink 挂钩来防止用户更改其他用户的监视文件:

[file You are only allowed to change their own watch files]
file =/watchfiles/**
permission = read-only
users = @ALL

[file You are only allowed to change their own watch files]
file = /watchfiles/<USER>.cfg
permission = read-write
users = @ALL

<USER>字符串被解释为用户的 ID。


例子

如果我想为多个文件设置提交后挂钩,我可以设置吗?比如 file = ab/build.xml, bb/cs.txt, cc/ 等我只想通过电子邮件通知这些文件

您可以为每个模式输入一行:

 email = my@email.com
 file = **/ab/build.xml
 file = **/bb/cs.txt
 file = **/cc/*.*

请记住,fileglob 模式锚定到存储库的根目录(/用作根目录),因此您需要指定完整路径,或使用**/指定该文件的任何路径。

于 2011-09-19T18:35:42.840 回答
1

在 subversion 发行版中有几个发送电子邮件的钩子脚本。在目录中查找

工具/挂钩脚本

贡献/钩子脚本

于 2011-09-19T17:01:28.823 回答
0

我设置了一个 PHP 脚本以在提交后执行。您可以将 PHP 脚本编辑得非常聪明,并根据更新的文件执行某些操作。

/subversion/hooks/post-commit:

 REPOS="$1"
 REV="$2"
 MESSAGE=$(svnlook propget --revprop -r $REV $REPOS svn:log)
 CHANGES=$(svnlook changed -r $REV $REPOS)
 php /usr/share/subversion/hook-scripts/commit-email.php "$REPOS" "$REV" "$MESSAGE" "$CHANGES"

/usr/share/subversion/hook-scripts/commit-email.php:

 <?php
      //files updated will be in $_SERVER['argv'][4], you could expand it in to an a
      //array and search for what you need, and depending on what's found, send emails accordingly.
 ?>
于 2012-04-13T18:17:50.423 回答