/// <summary>
        /// Format the LogReport into a change log
        /// which will be written to textWriter
        /// </summary>
        private void FormatReport(XmlTextWriter textWriter, LogReport logReport)
        {
            LogRevision logRevision;

            // This is where we accumulate information on all the entries from the log command
            SortedList entries = new SortedList();
            LogEntry entry;
            string prevRevision;
            
            // now collect together revisions that were checked-in together
	        foreach (LogFile logFile in logReport)
    	    {
//    	        foreach (LogRevision logRevision in logFile)
    	        // traverse revisions in reverse order so we look at oldest first
    	        // which simplifies the remembering the previous revision
    	        prevRevision = "";
                for (int idx = logFile.Count - 1; idx >= 0; idx--)
    	        {
    	            logRevision = logFile[idx];
                    entry = new LogEntry(logRevision.Timestamp, logRevision.Author, logRevision.Comment);
                    // determine if this entry already exists
                    if (entries.ContainsKey(entry.Key)) {
                        // need to update an existing entry
                        entry = (LogEntry)entries[entry.Key];
                    } else {
                        // add new entry
                        entries.Add(entry.Key, entry);
                    }
                    // finally add details about the file/revision
                    entry.AddFileRevision(logFile.WorkingFnm, logRevision.Revision, prevRevision);
    	            prevRevision = logRevision.Revision;
    	        }
    	    }
               
            // now finally produce the XML report
//            try {
                textWriter.Formatting = Formatting.Indented;
                textWriter.WriteStartDocument();
                textWriter.WriteStartElement("changelog");
                
                // add the entries ...
                foreach (DictionaryEntry de in entries) {
                    LogEntry logEntry = (LogEntry)de.Value;
                    logEntry.ExportToXml(textWriter, nameMap);
                }
                
                // finish off
                textWriter.WriteEndElement();    // changelog
                textWriter.WriteEndDocument();
                textWriter.Close();
//            } catch (Exception e) {
//                System.Console.WriteLine("XML write error: {0}", e.Message);
//                throw e;
//            }
        }