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(); }
/// <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; }
/// <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; }
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); } }
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); }
/// <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; }