Index: common.php
===================================================================
--- common.php	(revision 1087)
+++ common.php	(working copy)
@@ -2319,6 +2319,21 @@
   return make_cdash_url($diff_url);
 }
 
+/** Return the Loggerhead URL */
+function get_loggerhead_diff_url($projecturl, $directory, $file, $revision)
+{
+  if($revision != '')
+    {
+       $diff_url = $projecturl."/revision/".$revision.($directory ? ("/".$directory) : "")."/".$file;
+    } 
+  else
+    {
+    $diff_url .= $projecturl."/changes/head:/".($directory ? ($directory) : "")."/".$file;
+    }
+
+  return make_cdash_url($diff_url);
+}
+
 /** Get the diff url based on the type of viewer */
 function get_diff_url($projectid,$projecturl, $directory, $file, $revision='')
 {
@@ -2354,6 +2369,10 @@
     {
     return get_websvn_diff_url($projecturl, $directory, $file, $revision);
     }
+  elseif($project_array["cvsviewertype"] == "loggerhead")
+    {
+    return get_loggerhead_diff_url($projecturl, $directory, $file, $revision);
+    }
   else // default is viewcvs
     {
     return get_viewcvs_diff_url($projecturl, $directory, $file, $revision);
Index: createProject.php
===================================================================
--- createProject.php	(revision 1087)
+++ createProject.php	(working copy)
@@ -543,6 +543,7 @@
 $xml .= AddCVSViewer("viewvc","ViewVC",$project_array['cvsviewertype']);
 $xml .= AddCVSViewer("viewvc1.1","ViewVC1.1",$project_array['cvsviewertype']);
 $xml .= AddCVSViewer("websvn","WebSVN",$project_array['cvsviewertype']);
+$xml .= AddCVSViewer("loggerhead","Loggerhead",$project_array['cvsviewertype']);
  
 $xml .= add_XML_value("nrepositories",$nRepositories); // should be at the end
   
Index: dailyupdates.php
===================================================================
--- dailyupdates.php	(revision 1087)
+++ dailyupdates.php	(working copy)
@@ -454,6 +454,46 @@
 }
 
 
+function get_bzr_repository_commits($bzrroot, $dates)
+{
+  $commits = array();
+
+  $fromtime = gmdate("Y-m-d H:i:s", $dates['nightly-1']+1) . " GMT";
+  $totime = gmdate("Y-m-d H:i:s", $dates['nightly-0']) . " GMT";
+
+  $raw_output = `bzr log -v --xml -r date:"$fromtime"..date:"$totime" $bzrroot 2>&1`;  
+
+  $doc = new DomDocument;
+  $doc->loadXML($raw_output);
+  $logs = $doc->getElementsByTagName("log");
+
+  foreach ($logs as $log) {
+     $current_author = $log->getElementsByTagName("committer")->item(0)->nodeValue;
+     // remove email from author and strip result
+     $current_author = trim(substr($current_author, 0, strpos($current_author, "<")));     
+     
+     $current_comment = $log->getElementsByTagName("message")->item(0)->nodeValue;
+     $current_time = gmdate("Y-m-d H:i:s.u",strtotime($log->getElementsByTagName("timestamp")->item(0)->nodeValue));
+     $current_revision = $log->getElementsByTagName("revno")->item(0)->nodeValue;
+     
+     $files = $log->getElementsByTagName("file");
+     foreach ($files as $file) {
+        $current_filename = $file->nodeValue;
+        $current_directory = remove_directory_from_filename($current_filename);
+        $commit = array();
+        $commit['directory'] = $current_directory;
+        $commit['filename'] = $current_filename;
+        $commit['revision'] = $current_revision;
+        $commit['time'] = $current_time;
+        $commit['author'] = $current_author;
+        $commit['comment'] = $current_comment;
+        $commits[$current_directory . "/" . $current_filename . ";" . $current_revision] = $commit;        
+     }
+  }
+
+  return $commits;
+}
+
 // Return an array of arrays. Each entry in the returned array will
 // have the following named elements:
 //   directory, filename, revision, time, author, comment
@@ -474,6 +514,12 @@
     $roots[] = $repositories_array["url"];
     } 
 
+  $cvsviewers = pdo_query("SELECT cvsviewertype FROM project 
+                        WHERE id='$projectid'");
+
+  $cvsviewers_array = pdo_fetch_array($cvsviewers);
+  $cvsviewer = $cvsviewers_array[0];
+  
   // Start with an empty array:
   $commits = array();
 
@@ -485,7 +531,14 @@
       }
     else
       {
-      $new_commits = get_svn_repository_commits($root, $dates);
+      if ($cvsviewer == "loggerhead")
+        {
+        $new_commits = get_bzr_repository_commits($root, $dates);
+        }
+      else
+        {
+          $new_commits = get_svn_repository_commits($root, $dates);
+        }       
       }
 
     if (count($new_commits)>0)
