示例#1
0
 /// <summary>
 /// Initializes a new instance of the <see cref="CVSFolder"/> class.
 /// </summary>
 /// <param name="parentFolder">The parent folder.</param>
 public CVSFolder(Folder parentFolder)
 {
     _parent = parentFolder;
      CVSDirectory = new DirectoryInfo(Path.Combine(parentFolder.Info.FullName, "CVS"));
      RepositoryFile = new FileInfo(Path.Combine(CVSDirectory.FullName, "Repository"));
      EntriesFile = new FileInfo(Path.Combine(CVSDirectory.FullName, "Entries"));
      RootFile = new FileInfo(Path.Combine(CVSDirectory.FullName, "Root"));
 }
示例#2
0
 /// <summary>
 /// Initializes a new instance of the Folder class
 /// The sub folders in the tree use this constructor, which contains the parent parameter.
 /// The Parent Info property is used with the module path name to name the new folder
 /// </summary>
 /// <param name="name">Name of the folder. This also is added to the module name of the parent</param>
 /// <param name="parent">Parent folder</param>
 public Folder(string name, Folder parent)
     : base(parent)
 {
     DirectoryInfo di = new DirectoryInfo(Path.Combine(parent.Info.FullName, name));
      Info = di;
      _childItems = new List<ICVSItem>();
      _cvsFolder = new CVSFolder(this);
 }
示例#3
0
 public void TestEntry()
 {
     // starting module folder
      DirectoryInfo di = new DirectoryInfo(@"c:\_temp\working\team\mymod");
      Folder rootModuleFolder = new Folder(di, _connection, _repository, _module);
      Entry file1 = new Entry("file1.cs", rootModuleFolder);
      Assert.AreSame(rootModuleFolder, file1.Parent);
      Assert.AreSame(file1.CVSFolder, rootModuleFolder.CVSFolder);
      Assert.AreEqual(@"c:\_temp\working\team\mymod\file1.cs", file1.Info.FullName);
 }
        ////public IList<IFileResponseGroup> CreateFileGroupsFromResponses(IList<IResponse> responses)
        ////{
        ////   IList<IFileResponseGroup> files = new List<IFileResponseGroup>();
        ////   IFileResponseGroup file = null;
        ////   foreach (IResponse response in responses)
        ////   {
        ////      if (response.Type == ResponseType.ModTime)
        ////      {
        ////         file = new FileResponseGroup { ModTime = (ModTimeResponse)response };
        ////      }
        ////      if (response is IMessageResponse)
        ////      {
        ////         if (file != null) file.MT = (IMessageResponse)response;
        ////      }
        ////      if (response is IFileResponse)
        ////      {
        ////         if (file != null)
        ////         {
        ////            file.FileResponse = (IFileResponse)response;
        ////            files.Add(file);
        ////         }
        ////      }
        ////   }
        ////   return files;
        ////}
        ///// <summary>
        ///// Creates the CVS file structure.
        ///// </summary>
        ///// <param name="root">The root.</param>
        ///// <param name="fileGroups">The file groups.</param>
        ///// <returns></returns>
        ////public Folder CreateCVSFileStructure(IRoot root, IList<IFileResponseGroup> fileGroups)
        ////{
        ////   DirectoryInfo di = PServerHelper.GetRootModuleFolderPath(root.WorkingDirectory, root.Module);
        ////   Folder rootFolder = new Folder(di, root.CVSConnectionString, root.Repository, root.Module);
        ////   Folder parent = rootFolder;
        ////   foreach (IFileResponseGroup fileGroup in fileGroups)
        ////   {
        ////      IFileResponse response = fileGroup.FileResponse;
        ////      string module = ResponseHelper.FixResponseModuleSlashes(response.Module);
        ////      // add file to current folder
        ////      if (module != parent.Module)
        ////      {
        ////         string name = ResponseHelper.GetLastModuleName(response.Module);
        ////         Folder folder = new Folder(name, parent);
        ////         parent = folder;
        ////      }
        ////      Entry entry = new Entry(fileGroup.FileResponse.Name, parent);
        ////      entry.Length = response.Length;
        ////      entry.FileContents = response.Contents;
        ////   }
        ////   return rootFolder;
        ////}
        /// <summary>
        /// Adds the file to the Folder tree and returns the folder the entry was added to.
        /// </summary>
        /// <param name="startingFolder">Either the root folder or the last folder an entry was added to</param>
        /// <param name="file">Group of responses needed for one file</param>
        /// <returns>The folder the entry was added to</returns>
        public Entry AddFile(Folder startingFolder, IFileResponseGroup file)
        {
            string module = file.FileResponse.Module;
             Folder parent = GetModuleFolder(startingFolder, module);

             Entry entry = new Entry(file.FileResponse.Name, parent);
             entry.Length = file.FileResponse.Length;
             entry.FileContents = file.FileResponse.Contents;
             entry.EntryLine = file.FileResponse.EntryLine;
             return entry;
        }
示例#5
0
 public void SetUp()
 {
     _entries = new List<string>
                             {
                                "/file1.cs/1.1/Tue Jan  5 15:47:45 2010//",
                                "/file2.cs/1.1/Tue Jan  5 15:47:45 2010//",
                                "/file3.cs/1.3/Thu Jan  7 15:49:20 2010//",
                                "/TestApp.csproj/1.1/Tue Jan  5 15:47:45 2010//",
                                "D/Properties////",
                                "/.gitignore/1.1/Tue Jan  5 15:47:45 2010//",
                                "/AssemblyVersionIncrementor.dll/1.1/Tue Jan  5 15:47:45 2010/-kb/"
                             };
      _mocks = new MockRepository();
      _readerWriter = _mocks.DynamicMock<IReaderWriter>();
      ReaderWriter.Current = _readerWriter;
      DirectoryInfo di = new DirectoryInfo(@"c:\_temp\working\team\mymod");
      _rootModuleFolder = new Folder(di, _connection, _repository, _module);
      _file1 = new Entry("file1.cs", _rootModuleFolder) { EntryLine = _entries[0] };
      _proj = new Entry("TestApp.csproj", _rootModuleFolder) { EntryLine = _entries[3] };
      _props = new Folder("Properties", _rootModuleFolder) { EntryLine = _entries[4] };
      _file = new Entry(".gitignore", _rootModuleFolder) { EntryLine = _entries[5] };
      _binary = new Entry("AssemblyVersionIncrementor.dll", _rootModuleFolder) { EntryLine = _entries[6] };
 }
 public Folder CreateFolderStructure(string[] folders)
 {
     Folder current = _root.RootFolder;
      string repository = _root.Module;
      for (int i = 1; i < folders.Length; i++)
      {
     string folderName = folders[i];
     Folder folder = null;
     foreach (ICVSItem item in current)
     {
        if ((item is Folder) && item.Name == folderName)
           folder = (Folder) item;
     }
     if (folder == null)
     {
        repository += "/" + folderName;
        DirectoryInfo di = new DirectoryInfo(Path.Combine(current.Info.FullName, folderName));
        folder = new Folder(di, current);
        //current.AddItem(folder);
     }
     current = folder;
      }
      return current;
 }
        /// <summary>
        /// Adds the folder for the module to the Folder hierarchy in the Root object
        /// </summary>
        /// <param name="rootFolder">The root folder.</param>
        /// <param name="module">The module.</param>
        /// <returns>The new Folder that was created</returns>
        public Folder AddFolderToStructure(Folder rootFolder, string module)
        {
            string[] modules = module.Split(new[] { "/" }, StringSplitOptions.RemoveEmptyEntries);
             string mod = string.Empty;
             Folder parent = rootFolder;
             Folder folder = null;
             for (int i = 0; i < modules.Length; i++)
             {
            mod += "/" + modules[i];
            mod = ResponseHelper.FixResponseModuleSlashes(mod);
            folder = FindModuleFolder(rootFolder, mod);
            if (folder == null)
            {
               string name = ResponseHelper.GetLastModuleName(mod);
               folder = new Folder(name, parent);
            }

            parent = folder;
             }

             return folder;
        }
        /// <summary>
        /// Gets the module folder.
        /// </summary>
        /// <param name="startingFolder">The starting folder.</param>
        /// <param name="module">The CVS module.</param>
        /// <returns>Folder for the module</returns>
        public Folder GetModuleFolder(Folder startingFolder, string module)
        {
            module = ResponseHelper.FixResponseModuleSlashes(module);
             Folder folder;

             folder = FindModuleFolder(startingFolder, module);
             if (folder == null)
            folder = AddFolderToStructure(startingFolder.GetRootFolder(), module);

             return folder;
        }
        /// <summary>
        /// Finds the module Folder in sub folders.
        /// </summary>
        /// <param name="startingFolder">The starting folder.</param>
        /// <param name="module">The module.</param>
        /// <returns>The Folder if it exists, else null</returns>
        public Folder FindModuleInSubFolders(Folder startingFolder, string module)
        {
            Folder returnFolder = null;
             if (module == startingFolder.Module)
            returnFolder = startingFolder;
             if (returnFolder == null)
             {
            IList<Folder> subFolders = startingFolder.GetSubFolders().ToList();
            foreach (Folder folder in subFolders)
            {
               if (returnFolder == null)
                  returnFolder = FindModuleInSubFolders(folder, module);
            }
             }

             // return the folder that was found or null if it was not found
             return returnFolder;
        }
        /// <summary>
        /// Finds the module folder.
        /// </summary>
        /// <param name="startingFolder">The starting folder.</param>
        /// <param name="module">The module.</param>
        /// <returns>The Folder if it exists, else null</returns>
        public Folder FindModuleFolder(Folder startingFolder, string module)
        {
            Folder returnFolder = FindModuleInSubFolders(startingFolder, module);

             // if the folder was not found, start from the root and find again
             if (returnFolder == null)
             {
            Folder rootFolder = startingFolder.GetRootFolder();
            if (!startingFolder.Equals(rootFolder))
               returnFolder = FindModuleInSubFolders(startingFolder.GetRootFolder(), module);
             }

             return returnFolder;
        }
 public void WriteToDisk(Folder module)
 {
     module.Write();
      foreach (ICVSItem item in module)
      {
     if (item is Folder)
        WriteToDisk((Folder) item);
     else
        item.Write();
      }
 }
 public void SetUp()
 {
     _processor = new ResponseProcessor();
      DirectoryInfo di = new DirectoryInfo(@"c:\_temp\cvs\abougie");
      _rootFolder = new Folder(di, "connection string", "/usr/local/cvsroot/sandbox", "abougie");
      _sub1 = new Folder("sub1", _rootFolder);
      _sub2 = new Folder("sub2", _sub1);
      _sub21 = new Folder("sub21", _sub2);
      _sub211 = new Folder("sub211", _sub21);
      _sub3 = new Folder("sub3", _sub2);
      _sub11 = new Folder("sub11", _sub1);
      _sub12 = new Folder("sub12", _sub11);
 }
示例#13
0
 public void SetUp()
 {
     DirectoryInfo di = new DirectoryInfo(@"c:\_temp");
      _parent = new Folder(di, "my connection", "/f1/f2/f3", "mymod");
 }
示例#14
0
        public void TestFolder()
        {
            // starting module folder
             DirectoryInfo di = new DirectoryInfo(@"c:\_temp\working\team\mymod");
             Folder rootModuleFolder = new Folder(di, _connection, _repository, _module);
             Assert.IsNull(rootModuleFolder.Parent);
             Assert.AreEqual("mymod", rootModuleFolder.Module);
             Assert.AreEqual(_connection, rootModuleFolder.Connection);
             Assert.AreEqual(_repository, rootModuleFolder.Repository);
             CVSFolder cvsfolder = rootModuleFolder.CVSFolder;
             Assert.AreEqual(@"c:\_temp\working\team\mymod\CVS", cvsfolder.CVSDirectory.FullName);

             // add sub folder
             di = new DirectoryInfo(@"c:\_temp\working\team\mymod\project1");
             Folder project1 = new Folder("project1", rootModuleFolder);
             Assert.AreSame(rootModuleFolder, project1.Parent);
             Assert.AreEqual("mymod/project1", project1.Module);
             Assert.AreEqual(_connection, project1.Connection);
             Assert.AreEqual(_repository, project1.Repository);
             cvsfolder = project1.CVSFolder;
             Assert.AreEqual(@"c:\_temp\working\team\mymod\project1\CVS", cvsfolder.CVSDirectory.FullName);
             Assert.AreEqual(1, rootModuleFolder.Count);
             Assert.AreSame(project1, rootModuleFolder[0]);

             // add sub-sub folder
             di = new DirectoryInfo(@"c:\_temp\working\team\mymod\project1\Properties");
             Folder prop = new Folder("Properties", project1);
             Assert.AreEqual("mymod/project1/Properties", prop.Module);
             Assert.AreSame(project1, prop.Parent);
             cvsfolder = prop.CVSFolder;
             Assert.AreEqual(@"c:\_temp\working\team\mymod\project1\Properties\CVS", cvsfolder.CVSDirectory.FullName);
             Assert.AreEqual(1, project1.Count);
             Assert.AreSame(prop, project1[0]);
        }
示例#15
0
 /// <summary>
 /// Initializes a new instance of the <see cref="CVSItemBase"/> class.
 /// </summary>
 /// <param name="parent">The parent.</param>
 protected CVSItemBase(Folder parent)
 {
     Parent = parent;
      Parent.AddItem(this);
 }
        /// <summary>
        /// Processes the responses of each request. When all the requests 
        /// needed to save a file have been retrieved from the CVS server,
        /// the file is saved and the information contained in the command
        /// is deleted for performance.
        /// </summary>
        /// <param name="request">The request.</param>
        protected internal override void AfterRequest(IRequest request)
        {
            if (request is ExportRequest)
             {
            IResponse response;
            IFileResponseGroup file = null;
            IList<IResponse> messages = null;
            bool gettingFile = false;
            ResponseProcessor processor = new ResponseProcessor();

            response = Connection.GetResponse();
            ProcessResponse(response);
            do
            {
               if (gettingFile)
               {
                  if (response is MTMessageResponse)
                     messages.Add(response);
                  if (response is UpdatedResponse)
                  {
                     messages = ResponseHelper.CollapseMessagesInResponses(messages);
                     file.MT = (IMessageResponse)messages[0];
                     file.FileResponse = (IFileResponse)response;

                     // process each file
                     Entry entry = processor.AddFile(CurrentFolder, file);
                     entry.Save(true);
                     Folder folder = entry.Parent;
                     if (SaveCVSFolder)
                     {
                        if (folder.Module != CurrentFolder.Module)
                           folder.SaveCVSFolder();
                     }

                     CurrentFolder = folder;
                     file = null;
                     RemoveProcessedResponses();
                     gettingFile = false; // all done getting file

                  }
               }
               else
               {
                  if (response is ModTimeResponse)
                  {
                     file = new FileResponseGroup();
                     messages = new List<IResponse>();
                     file.ModTime = (ModTimeResponse)response;
                     gettingFile = true;
                  }
               }

               response = Connection.GetResponse();
               ProcessResponse(response);
            }
            while (response != null);
             }
             else
             {
            base.AfterRequest(request);
             }
        }