如何获得存储库更新的通知?

时间:2010-02-17 07:27:00

标签: svn version-control change-notification

我正在研究工作中的几个存储库,如果SVN存储库发生任何变化,我希望得到通知。

我制作了一个小型BAT脚本(是的,BAT有时很有用),它在我的工作副本上继续执行svn log -r BASE:HEAD。它显示所有提交评论和修订日期。它工作得非常好,但对于不同的存储库来说并不舒服。

如何跟踪存储库中的更改?你是否使用自己制作的小程序?你使用别人制作的软件吗? 我对解决这个问题的方法很感兴趣。

我想获得通知以及有关提交的更多信息。 IDE集成功能很好,但只有在我请求信息时才能工作。
我不想采取行动来获取这些信息。

平台:Windows,Subversion 1.5及更高版本。

7 个答案:

答案 0 :(得分:31)

我正在使用CommitMonitor;它来自TortoiseSVN开发人员之一。您可以轻松添加多个SVN URL进行监控,并指定检查提交的时间间隔。如果找到任何更新,它会在屏幕的一角显示一个小弹出窗口。

还有SVN Monitor,但使用和设置有点复杂。除了提交有关提交的消息外,它还可以显示您已修改的文件并提醒您提交更改。

答案 1 :(得分:5)

如果您安装了TortoiseSVN,则可以使用SVN Notifier

答案 2 :(得分:2)

我安装了WebSVN并订阅了我感兴趣的路径的RSS源。

答案 3 :(得分:1)

答案 4 :(得分:1)

我使用PowerShell来检测SVN分支上的更改并进行部署。这个脚本应该从Task Scheduler调用并从SVN根执行(或者你可以简单地循环和永久睡眠):

function get-revision() {
    $rev = svn info 2>&1 | sls '^Last Changed Rev:' | out-string
    $rev = $rev -split ':'
    $rev[1].Trim()
}

function if-changed([string]$branch, [scriptblock]$script) {
    Write-Verbose "Checking for changes: $branch"
    pushd $branch
    $r = get-revision

    if ($r -gt $status[$branch]) {
        Write-Verbose "|- '$branch' changed, revision $r"
        & $script
    }
    else { Write-Verbose "|- '$branch' is up to date at revision $r" }
    $status[$branch] = $r
    popd
}

svn update
Write-Verbose "Getting the deploy status"
if (Test-Path status) { $status = Import-Clixml status } else { Write-Verbose "|- No status found"; $status=@{} }

if-changed trunk { "Deploying trunk..." }

这比使用任何上述第三方应用程序更容易和便携。

答案 5 :(得分:0)

svn info | grep Revision适合我。它显示,例如:

Revision: 183

如果它改变了我的想法,那么我会进一步调查。

答案 6 :(得分:0)

我用

svn status --show-updates

显示我已更改的文件以及存储库中已更改的文件。

您可以使用Subversion's hook scripts设置通知。