/// <summary> /// Produce the report /// Alternate interface for when we are given a server cooection /// This is needed for the SharpCvsLib command line client /// </summary> public LogReport Run(ICommandConnection connection) { // read Root and Repository from local directory if (null == this.cvsRoot) { Manager manager = new Manager(localDirectory); Root root = (Root)manager.FetchSingle (localDirectory, Factory.FileType.Root); this.cvsRoot = new CvsRoot(root.FileContents); } if (null == workingDirectory) { Manager manager = new Manager(localDirectory); Repository repository = (Repository)manager.FetchSingle (localDirectory, Factory.FileType.Repository); this.workingDirectory = new WorkingDirectory(cvsRoot, localDirectory, repository.FileContents); } ILogCommand command; // Recursively add all cvs folders/files under the localDirectory System.Console.WriteLine("GNE workingDirectory.WorkingPath = {0}", workingDirectory.WorkingPath); System.Console.WriteLine("GNE localDirectory: {0}", localDirectory); // if (Directory.Exists(workingDirectory.WorkingPath)) { if (Directory.Exists(localDirectory) && File.Exists(Path.Combine(localDirectory, "Repository"))) { workingDirectory.FoldersToUpdate = FetchFiles(localDirectory); command = new LogCommand(workingDirectory, this.workingDirectory.ModuleName, null); } else { command = // GNE - this wont compile new LogCommand(workingDirectory, this.workingDirectory.ModuleName); new RLogCommand(workingDirectory, this.workingDirectory.ModuleName); } // add any date restrictions if (hasStartDate && hasEndDate) { command.AddInclusiveDateRange(startDate, endDate); } else if (hasStartDate) { command.AddInclusiveDateStart(startDate); } else if (hasEndDate) { command.AddInclusiveDateEnd(endDate); } // Initialse state machine curLogReport = new LogReport(); // this is what we are going to return to the caller curLogFile = new LogFile(this.cvsRoot); curLogRevision = new LogRevision(); logState = LogState.WANT_FILE_HEADER_START; if (connection.GetType() == typeof(CVSServerConnection)) { CVSServerConnection cvsServerConnection = (CVSServerConnection)connection; cvsServerConnection.MessageEvent.MessageEvent += new EncodedMessage.MessageHandler(OnMessage); } command.Execute(connection); // return curLogReport but clear our reference to it LogReport report = curLogReport; curLogReport = null; return report; }
private void FetchFilesRecursive(ArrayList folders, string localDirectory) { String modulePath = localDirectory; Manager manager = new Manager(modulePath); Folder folder = new Folder (); folder.Repository = (Repository)manager.FetchSingle (modulePath, Factory.FileType.Repository); Entries entries1= manager.FetchEntries(Path.Combine(modulePath, Entry.FILE_NAME)); foreach (DictionaryEntry dicEntry in entries1) { Entry entry = (Entry)dicEntry.Value; if (!entry.IsDirectory) { if (LOGGER.IsDebugEnabled) { LOGGER.Debug("Found file=[" + entry.FullPath + "]"); } folder.Entries.Add (entry.FullPath, entry); } } folders.Add (folder); foreach (DictionaryEntry dicEntry in entries1) { Entry entry = (Entry)dicEntry.Value; if (entry.IsDirectory) { string childDir = Path.Combine(localDirectory, entry.Name); if (LOGGER.IsDebugEnabled) { LOGGER.Debug("Found directory=[" + childDir + "]"); } FetchFilesRecursive(folders, childDir); } } }
/// <summary> /// Produce the report /// </summary> public LogReport Run(string password) { // read Root and Repository from local directory if (null == this.cvsRoot) { Manager manager = new Manager(localDirectory); Root root = (Root)manager.FetchSingle (localDirectory, Factory.FileType.Root); cvsRoot = new CvsRoot(root.FileContents); } if (null == this.workingDirectory) { workingDirectory = new WorkingDirectory(cvsRoot, localDirectory, module); } // Get a connection CVSServerConnection connection = new CVSServerConnection(); connection.Connect(workingDirectory, password); return Run(connection); }