public SourceControlRepository(udcEntities db) { date = DateTime.UtcNow; commits = (from c in db.Commits select new SourceControlCommit { Id = c.Id, Hash = c.Hash, Date = c.CommitDate }).ToDictionary(c => c.Id); foreach (var rel in db.CommitRelations) { SourceControlCommit parent = commits[rel.ParentCommit]; SourceControlCommit child = commits[rel.ChildCommit]; parent.Children.Add(child); child.Parents.Add(parent); } }
public HashSet <SourceControlCommit> GetDescendants() { HashSet <SourceControlCommit> set = new HashSet <SourceControlCommit>(); Queue <SourceControlCommit> queue = new Queue <SourceControlCommit>(); queue.Enqueue(this); while (queue.Count > 0) { SourceControlCommit c = queue.Dequeue(); if (set.Add(c)) { foreach (var child in c.Children) { queue.Enqueue(child); } } } return(set); }
public HashSet <SourceControlCommit> GetAncestors() { HashSet <SourceControlCommit> set = new HashSet <SourceControlCommit>(); Queue <SourceControlCommit> queue = new Queue <SourceControlCommit>(); queue.Enqueue(this); while (queue.Count > 0) { SourceControlCommit c = queue.Dequeue(); if (set.Add(c)) { foreach (var parent in c.Parents) { queue.Enqueue(parent); } } } return(set); }