代码之家  ›  专栏  ›  技术社区  ›  Joe Ludwig

如何让Subversion(SVN)在签入时发送电子邮件?

  •  51
  • Joe Ludwig  · 技术社区  · 18 年前

    我总是发现签入(提交)邮件对于跟踪其他人在代码库/存储库中的工作非常有用。如何设置SVN在每次提交时通过电子邮件发送通讯组列表?

    我在Windows上运行客户端,在Linux上运行Apache Subversion服务器。下面各种平台的答案可能对其他人有用。

    16 回复  |  直到 10 年前
        1
  •  31
  •   bahrep Ahamed    14 年前
        2
  •  20
  •   bahrep Ahamed    14 年前

    请看一看单机版 Subversion Notify 工具 它可以在提交时发送电子邮件,还有更多!

        3
  •  3
  •   jxh    14 年前

    你会想熟悉你自己 repository hooks post-commit hook .

        4
  •  2
  •   bahrep Ahamed    13 年前

    VisualSVN服务器具有有用的提交电子邮件通知挂钩 VisualSVNServerHooks.exe

    看见 "Configuring Email Notifications in VisualSVN Server"

        5
  •  2
  •   Sagar Zaveri    12 年前

    1) 使用sudo apt get在svn服务器上安装svnnotify

    2) 使用回购协议的提交后挂钩(请阅读svn网站上的提交后挂钩)

    3) 打开post commit hook文件并粘贴以下代码以使用smtp服务器发送电子邮件。 使用smtp很简单,因为您不需要配置sendmail。

    4) 确保\(换行)后没有多余的空间。

    #!/bin/sh
    
    REPOS="$1"
    REV="$2"
    TO="xyz@yah.com" # who will receive the notifications
    FROM="hello@goog.com" # what will be in "FROM" fields
    
    
     /usr/bin/svnnotify \
    
    --repos-path "$REPOS" \
    --revision "$REV" \
    --to $TO \
    --from $FROM \
    --reply-to $FROM \
    --smtp "YOUR.SMTP.MAIL.COM" \
    --subject-prefix "[svn commit]" \
    --attach-diff -a \
    --header 'Message generated on Subversion Check-in.' \
    --footer 'OpenSource Team. ' \
    --svnlook "/usr/local/bin/svnlook" \
    --handler HTML::ColorDiff # make diff pretty
    
        6
  •  1
  •   Community Mohan Dere    9 年前

    here 在提交后钩子上。就我个人而言,我更喜欢发送一条信息到我可以从中获得RSS提要的地方,因为每次提交一封电子邮件会很快使我的收件箱超载。

        7
  •  1
  •   Community Mohan Dere    9 年前

    附议@ Matt Miller 在RSS提要上。

    有一个有用的工具叫做 WebSVN 它提供每个存储库和各个分支/标记/文件夹的RSS提要,其中包含完整的提交消息。它也是一个很好的web界面,可以快速查看文件历史记录和提交/差异,而无需运行更新和打开所选编辑器。

        8
  •  1
  •   Will Dean    18 年前

    正如其他人所说,“什么平台”。在Windows上,我使用了“blat”,这是一个免费的命令行SMTP邮件程序,以及一个post commit和另一个批处理文件。

     call d:\subversion\repos\rts\hooks\mail %1 %2
    

    mail.bat看起来像这样:

    copy d:\subversion\repos\RTS\hooks\Commitmsg.txt %temp%\commit.txt
    copy d:\subversion\repos\RTS\hooks\subjbase.txt %temp%\subject.txt
    svnlook info -r %2 %1 >> %temp%\commit.txt
    echo Revision %2 >> %temp%\commit.txt
    svnlook changed -r %2 %1 >> %temp%\commit.txt
    svnlook author -r %2 %1 >> %temp%\subject.txt
    c:\utils\blat %temp%\commit.txt -t <me@my.email.com> -sf %temp%\subject.txt -server ServerName -f "SVN Admin <svn@my.email.com>" -noh2
    

        9
  •  1
  •   Matt Joiner    18 年前
        10
  •  1
  •   Logan    16 年前

    在特定subversion分支的“hooks”目录中,有9个模板文件可以帮助您入门。

    不 如果文件名为“post commit.tmpl”或“post commit.sh”或类似名称,则执行该文件。

    另外,请确保运行subversion的同一用户可以执行该文件。

        11
  •  1
  •   bahrep Ahamed    13 年前

    我使用类似于此的提交后脚本 one .

    它发送了一封漂亮的HTML电子邮件。我对它进行了一些更新,其中突出显示了以红色删除的代码,突出显示了以蓝色添加的代码。

        12
  •  1
  •   Danijel    12 年前

    1. 创建邮件列表( svn-notify@xy.com )并将人员添加到列表中。

    2. 编辑 /path_to_your_svn/svn/hooks/svn-notify/mailer.conf

      • to_addr=svn-notify@xy.com
      • from_addr=%(作者)s@xy.com
      • 提交主题前缀=[XY-SVN]
    3. 将此行添加到您的 /path_to_your_svn/svn/hooks/post-commit 文件:
      /path_to_your_svn/svn/hooks/svn-notify/mailer.py commit "$REPOS" "$REV" /path_to_your_svn/svn/hooks/svn-notify/mailer.conf
        13
  •  1
  •   Peter Mortensen Pieter Jan Bonestroo    10 年前

    在MacOSX上我已经安装了 msmtp svn (或 www )用户。

    REPOS="`echo $1 | sed 's/\/{root of repository}//g'` "
    REV="$2"
    MSG=`/usr/local/bin/svn log -v -r HEAD https://localhost$REPOS`
    
    /usr/local/bin/msmtp {list of recipients} <<EOF
    Subject: SVN-Commit $REPOS#$REV
    MIME-Version: 1.0
    Content-Type: text/plain; charset=utf-8
    Content-Transfer-Encoding: 8Bit
    
    $MSG
    EOF
    

    {root of repository} {list of recipients} 针对您的需要。注意,我使用UTF-8是因为我们在瑞典有一些特殊字符(·)。

        14
  •  0
  •   Sean Carpenter    18 年前

    Subversion源代码中包含一个用Perl编写的(大型)示例(可以是 viewed here ).

        15
  •  0
  •   kervin    13 年前

    而且 SVNMailer ,它在Linux上工作。

        16
  •  0
  •   Guardian    13 年前

    svn mod电子邮件 描述的包 here . 这个 svn mod电子邮件 是一个强大的SVN电子邮件通知管理工具,作为Debian归档文件提供。它易于安装、配置和使用。