+if $version =~ /git/
+ if defined?(SCM_DIR) and File.exists?(File.join(SCM_DIR, '.git'))
+ begin
+ git_out = `git status`
+ git_out.match(/^# On branch (.*)\n/)
+ if $1 # git 1.5.x
+ branch = $1.dup || "unknown"
+ changed = git_out.match(/^# Change(.*)\n/)
+ rev = "revision "
+ git_out = `git log -1 --pretty=format:"%h%n%b%n%ct"`.split("\n")
+ rev << git_out.first
+ $version_timestamp = git_out.last.to_i
+ if git_out[1].match(/^git-svn-id: \S+@(\d+)/)
+ rev << "(svn #{$1})"
+ end
+ rev << ", local changes" if changed
+ else # older gits
+ git_out = `git branch`
+ git_out.match(/^\* (.*)\n/)
+ branch = $1.dup rescue "unknown"
+ rev = "revision " + `git rev-parse HEAD`[0,6]
+ end
+ rescue => e
+ puts e.inspect
+ branch = "unknown branch"
+ rev = "unknown revision"
+ end
+
+ $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
+end
+