Example #1
0
        public Tree(FileItem item)
        {
            // Event Id -> TreeNode
            Dictionary<string, Tree> dict = new Dictionary<string, Tree>();
            foreach (var e in item.History)
            {
                if (e.ParentId != null)
                {
                    dict[e.EventId] = new Tree(e);
                    dict[e.ParentId].Add(dict[e.EventId]);
                }
                else
                {
                    dict[e.EventId] = this;
                    dict[e.EventId].Event = e;
                    dict[e.EventId].Children = new List<Tree>();
                }
            }

            dict[item.CurrentEventId].State = TreeState.Current;
            this.Layout();
        }
Example #2
0
        /// <summary>
        /// Create a file item
        /// </summary>
        /// <param name="name">The name.</param>
        /// <param name="isDirectory">If set to <c>true</c> is directory.</param>
        /// <param name="when">The when.</param>
        /// <returns>The file item.</returns>
        public FileItem Create(string name, bool isDirectory, DateTime when)
        {
            if (this.pathToFile.ContainsKey(name))
            {
                return null;
            }

            FileItem item = new FileItem(name, isDirectory);
            item.Create(name, when);

            this.AllFiles.Add(item);

            this.pathToFile.Add(name, item);

            return item;
        }
Example #3
0
 /// <summary>
 /// Sets file by name.
 /// </summary>
 /// <param name="name">The name.</param>
 /// <param name="fileItem">File item.</param>
 public void SetFileByName(string name, FileItem fileItem)
 {
     this.pathToFile[name] = fileItem;
 }
Example #4
0
        public void MergeTest()
        {
            // File Test
            FileItem file = new FileItem();

            {
                FileEvent e = new FileEvent();
                e.Type = FileEventType.Created;
                e.Name = "haha";
                e.SHA1 = "11";
                e.When = DateTime.FromFileTimeUtc(1);
                file.Merge(e);
            }

            {
                FileEvent e = new FileEvent();
                e.Type = FileEventType.Created;
                e.Name = "haha";
                e.SHA1 = "11";
                e.When = DateTime.FromFileTimeUtc(2);
                file.Merge(e);
            }

            {
                FileEvent e = new FileEvent();
                e.Type = FileEventType.Created;
                e.Name = "haha";
                e.SHA1 = null;
                e.When = DateTime.FromFileTimeUtc(3);
                file.Merge(e);
            }

            {
                FileEvent e = new FileEvent();
                e.Type = FileEventType.Renamed;
                e.Name = "haha";
                e.SHA1 = null;
                e.When = DateTime.FromFileTimeUtc(4);
                file.Merge(e);
            }

            {
                FileEvent e = new FileEvent();
                e.Type = FileEventType.Changed;
                e.Name = "haha";
                e.SHA1 = "11";
                e.When = DateTime.FromFileTimeUtc(5);
                file.Merge(e);
            }

            {
                FileEvent e = new FileEvent();
                e.Type = FileEventType.Deleted;
                e.Name = "haha";
                e.SHA1 = "11";
                e.When = DateTime.FromFileTimeUtc(6);
                file.Merge(e);
            }

            FileItem dir = new FileItem();

            {
                FileEvent e = new FileEvent();
                e.Type = FileEventType.Created;
                e.IsDirectory = true;
                e.Name = "dir";
                e.When = DateTime.FromFileTimeUtc(1);
                dir.Merge(e);
            }

            {
                FileEvent e = new FileEvent();
                e.Type = FileEventType.Created;
                e.IsDirectory = true;
                e.Name = "dir";
                e.When = DateTime.FromFileTimeUtc(2);
                dir.Merge(e);
            }

            {
                FileEvent e = new FileEvent();
                e.Type = FileEventType.Created;
                e.IsDirectory = true;
                e.Name = "dir";
                e.When = DateTime.FromFileTimeUtc(3);
                dir.Merge(e);
            }

            {
                FileEvent e = new FileEvent();
                e.Type = FileEventType.Changed;
                e.IsDirectory = true;
                e.Name = "dir";
                e.When = DateTime.FromFileTimeUtc(4);
                dir.Merge(e);
            }

            {
                FileEvent e = new FileEvent();
                e.Type = FileEventType.Renamed;
                e.IsDirectory = true;
                e.Name = "dir2";
                e.When = DateTime.FromFileTimeUtc(5);
                dir.Merge(e);
            }

            {
                FileEvent e = new FileEvent();
                e.Type = FileEventType.Deleted;
                e.IsDirectory = true;
                e.Name = "dir2";
                e.When = DateTime.FromFileTimeUtc(6);
                dir.Merge(e);
            }
        }
Example #5
0
        public void TestOrder()
        {
            if (Directory.Exists(".Distribox"))
            {
                Directory.Delete(".Distribox", true);
            }

            Directory.CreateDirectory(".Distribox");
            Directory.CreateDirectory(".Distribox\\data");
            try
            {
                FileItem item = new FileItem();
                File.WriteAllText("Haha", string.Empty);
                item.Create("Haha", DateTime.FromFileTimeUtc(1));
                File.WriteAllText("Haha", "haha");
                File.Copy("Haha", ".Distribox\\data\\" + CommonHelper.GetSHA1Hash("Haha"));
                item.Change("Haha", CommonHelper.GetSHA1Hash("Haha"), DateTime.FromFileTimeUtc(2));
                Assert.AreEqual(2, item.History.Count());
            }
            finally
            {
                Directory.Delete(".Distribox", true);
            }
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="VersionControlTest" /> class.
        /// </summary>
        public VersionControlTest()
        {
            // Initialize
            if (!Directory.Exists(".Distribox"))
            {
                Directory.CreateDirectory(".Distribox");
            }

            if (!Directory.Exists(".Distribox/data"))
            {
                Directory.CreateDirectory(".Distribox/data");

            }
            if (Directory.Exists("Dir"))
            {
                Directory.Delete("Dir");
            }

            FileEvent e1 = new FileEvent();
            e1.Type = FileEventType.Created;
            e1.EventId = "1";
            e1.FileId = "1";
            e1.Name = "haha";

            FileEvent e2 = new FileEvent();
            e2.Type = FileEventType.Changed;
            e2.EventId = "2";
            e2.FileId = "1";
            e2.SHA1 = "11";
            e2.Name = "haha";
            File.WriteAllText(".Distribox/data/11", "haha");

            FileEvent e3 = new FileEvent();
            e3.Type = FileEventType.Renamed;
            e3.EventId = "3";
            e3.FileId = "1";
            e3.SHA1 = "11";
            e3.Name = "XX";

            FileEvent e4 = new FileEvent();
            e4.Type = FileEventType.Deleted;
            e4.EventId = "4";
            e4.FileId = "1";
            e4.Name = "XX";

            FileEvent e5 = new FileEvent();
            e5.Type = FileEventType.Created;
            e5.EventId = "5";
            e5.FileId = "2";
            e5.Name = "TT";

            FileEvent e6 = new FileEvent();
            e6.Type = FileEventType.Changed;
            e6.EventId = "6";
            e6.FileId = "2";
            e6.SHA1 = "11";
            e6.Name = "TT";

            FileEvent e7 = new FileEvent();
            e7.Type = FileEventType.Created;
            e7.EventId = "7";
            e7.FileId = "3";
            e7.Name = "Dir";
            e7.IsDirectory = true;
            e7.When = DateTime.FromFileTimeUtc(7);

            FileItem item1 = new FileItem();
            item1.Merge(e1);
            item1.Merge(e2);
            item1.Merge(e3);
            item1.Merge(e4);

            FileItem item2 = new FileItem();
            item2.Merge(e5);
            item2.Merge(e6);

            FileItem item3 = new FileItem();
            item3.Merge(e7);

            this.list.Add(item1);
            this.list.Add(item2);
            this.list.Add(item3);
        }
Example #7
0
 /// <summary>
 /// Sets file by name.
 /// </summary>
 /// <param name="name">The name.</param>
 /// <param name="fileItem">File item.</param>
 public void SetFileByName(string name, FileItem fileItem)
 {
     this.pathToFile[name] = fileItem;
 }