How do you get notified of your repository's updates?
-
21-09-2019 - |
Question
I'm working on several repositories at work and would like to be informed, if anything changes in the SVN repositories.
I made a small BAT script (yes, BAT is useful sometimes) that keeps executing an svn log -r BASE:HEAD
on my working copy. It shows all submit comments and revision dates. It works really well, but it's not comfortable for different repositories.
How do you keep track of changes in your repositories? Do you use a small program you made for yourself? Do you use software someone else made? I'm interested in every approach to this problem.
I would like to get notifications and more information about the commit. The IDE integrated functions are good, but work only if I request the information.
I don't want to act to get this information.
Platform: Windows, Subversion 1.5 and higher.
Solution
I'm using CommitMonitor; it's from one of the TortoiseSVN developers. You can easily add several SVN URLs to monitor and specify an interval to check for commits. If any updates are found, it shows a little popup windows in the corner of the screen.
There is also SVN Monitor, but that is a bit more complicated to use and setup. Besides giving a message on commits, it can also show you which files you have modified and remind you to commit your changes.
OTHER TIPS
If you have TortoiseSVN installed, then you could use SVN Notifier.
I have WebSVN installed and subscribe to RSS feeds of the paths I'm interested in.
Email. An example SVN post-commit hook to send email can be found in subversion itself.
I use PowerShell to detect changes on an SVN branch and deploy. This script should be called from Task Scheduler and executed from the SVN root (or you can simply loop and sleep forever):
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..." }
This is far easier and portable than using any of the above mentioned third-party applications.
svn info | grep Revision
works for me. It shows, for example:
Revision: 183
If it's changed from what I think it should, then I investigate further.
I use
svn status --show-updates
to show you which files I've changed as well as those files which have changed in the repository.
You could use Subversion's hook scripts to set up notifications.