예제 #1
0
        public static LaneGraph CreateLaneGraph(List<GitRevision> revisions)
        {
            return CreateLaneGraph();

            LaneGraph graph = new LaneGraph();

            //foreach (GitRevision revision in revisions)
            for (int n = revisions.Count-1; n >= 0; n--)
            {
                GitRevision revision = revisions[n];
                foreach (string parentGuid in revision.ParentGuids)
                {
                    LanePoint currentPoint = null;

                    //Add point to all lanes
                    foreach (Lane lane in graph.FindLanesEndingWith(parentGuid))
                    {
                        //Add point to lane
                        if (currentPoint == null)
                        {
                            currentPoint = graph.AddPoint(lane, revision);
                        }
                        else
                            graph.AddPoint(lane, revision).BranchFrom = currentPoint.Lane;
                    }
                    {
                        //If this revision is not on a lane yet, add a new lane
                        if (currentPoint == null)
                        {
                            Lane newLane = graph.AddLane();
                            currentPoint = graph.AddPoint(newLane, revision);

                            foreach (Lane searchLane in graph.Lanes)
                            {
                                if (searchLane.Contains(parentGuid) && searchLane != newLane)
                                {
                                    currentPoint.BranchFrom = searchLane;
                                }
                            }
                        }
                    }
                }
            }

            return graph;
        }