--- orig/cvsspam.rb	2009-08-21 15:50:36.000000000 +0200
+++ new/cvsspam.rb	2009-08-21 16:21:02.000000000 +0200
@@ -783,6 +783,30 @@
 end
 
 
+# Link to Gforge SCM
+class GforgeSCMFrontend < WebFrontend
+  def initialize(base_url)
+    super(base_url)
+  end
+
+  def initialize(repository_name)
+    super(repository_name)
+  end
+
+  def path_url(path, tag)
+    "#{@base_url}/viewvc.php/#{urlEncode(path)}?root=#{urlEncode(@repository_name)}&amp;view=log&amp;pathrev=#{urlEncode(tag)}"
+  end
+
+  def version_url(path, version)
+    "#{@base_url}/viewvc.php/#{urlEncode(path)}?revision=#{version}&amp;root=#{urlEncode(@repository_name)}&amp;view=markup"
+  end
+
+  def diff_url(file)
+    "#{@base_url}/viewvc.php/#{urlEncode(file.path)}?root=#{urlEncode(@repository_name)}&amp;r1=#{file.fromVer}&r2=#{file.toVer}"
+  end
+end
+
+
 # in need of refactoring...
 
 # Note when LogReader finds record of a file that was added in this commit
@@ -1253,6 +1277,7 @@
 $viewcvsURL = nil
 $choraURL = nil
 $cvswebURL = nil
+$gforgescmURL = nil
 $from_address = nil
 $subjectPrefix = nil
 $files_in_subject = false;
@@ -1337,11 +1362,13 @@
 elsif $cvswebURL !=nil
   $cvswebURL << "/" unless $cvswebURL =~ /\/$/
   $frontend = CVSwebFrontend.new($cvswebURL)
+elsif $gforgescmURL != nil
+  $frontend = GforgeSCMFrontend.new($gforgescmURL)
 else
   $frontend = NoFrontend.new
 end
 
-if $viewcvsURL != nil || $cvswebURL !=nil
+if $viewcvsURL != nil || $cvswebURL !=nil || $gforgescmURL != nil
   if $repository_name == GUESS
     # use the last component of the repository path as the name
     ENV['CVSROOT'] =~ /([^\/]+$)/
