我正在工作中处理多个存储库,如果 SVN 存储库发生任何变化,我希望得到通知。

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

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

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

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

有帮助吗?

解决方案

我使用 CommitMonitor ;这是从的 TortoiseSVN的的开发商之一。您可以轻松地添加多个SVN网址,以监控和指定的时间间隔来检查提交。如果找到任何更新,它显示在屏幕的角落一个小的弹出窗口。

还有 SVN监视器,但是这是一个比较复杂一点使用和安装。除了在提交给一个消息,它也可以告诉你哪些文件你已经修改,并提醒您提交更改。

其他提示

如果你有 乌龟SVN 安装好了,然后你就可以使用 SVN通知程序.

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

我使用 PowerShell的以检测在一个SVN分支的更改和部署。这个脚本应该从任务计划被调用,从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..." }

这远比使用任何上述提到的第三方应用程序的更容易和便于携带。

svn info | grep Revision为我工作。它显示,例如:

Revision: 183

如果它是从什么,我认为它应该,那么我进一步调查改变了。

我用

svn status --show-updates

告诉你哪些文件,我已经改变,以及那些已经在仓库中修改过的文件。

您可以使用 Subversion的钩子脚本来设置通知。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top