+if $version =~ /svn/
+ if defined?(SVN_DIR) and File.exists?(File.join(SVN_DIR, '.git'))
+ $version.sub!('svn', 'git')
+
+ git_out = `git status`
+
+ git_out.match(/^# On branch (.*)\n/)
+ branch = $1.dup || "unknown"
+ changed = git_out.match(/^# Change(.*)\n/)
+ rev = "revision "
+ git_out = `git log -1 --pretty=format:"%h%n%b"`.split("\n")
+ rev << git_out.first
+ if git_out.last.match(/^git-svn-id: \S+@(\d+)/)
+ rev << "(svn #{$1})"
+ end
+ rev << ", local changes" if changed
+
+ $version << " (#{branch} branch, #{rev})"
+ else
+ up = File.dirname(__FILE__) + "/.."
+ rev = " (unknown revision)"
+ begin
+ svn_out = `svn info #{up}`
+ if svn_out =~ /Last Changed Rev: (\d+)/
+ rev = " (revision #{$1}"
+ end
+ svn_st = `svn st #{up}`
+ if svn_st =~ /^[MDA] /
+ rev << ", local changes"
+ end
+ rev << ")"
+ rescue => e
+ puts e.inspect
+ end
+ $version += rev
+ end