def update_with_addendumevents(self,events) :
     action_added = False
     for event in events :
         if event.eventType() == event.EVENTTYPE_IGNORE :
             if event.revision() != None :
                 self._svnrepository.add_action( svnAction( svnAction.ACTIONTYPE_IGNORE, self._trunk, event.revision() ) )
         elif event.eventType() == event.EVENTTYPE_MERGE :
             action = svnAction(
                     svnAction.ACTIONTYPE_MERGE,
                     event.branch(),
                     event.revision(),
                     branchFrom=event.branchTo(),
                     revisionFrom=event.revisionTo(),
                     branchFromSource=event.branchFrom(),
                     revisionFromSource=event.revisionFrom(),
                     )
             self._svnrepository.add_action(
                 action,
                 )
             action_added = True
     return action_added
    def run(self):
        self._svnhistory = self._svnHistoryClass(self._url,self._filename)
        self._svnrepository = svnRepository(self._url,self._trunk)
        self._graphrenderer = self._graphRendererClass(filename=self._output+self._graphRendererClass.default_extension)

        self._graph = svnGraph(self._svnrepository,self._graphrenderer,self._configuration)

        svnaddendum = svnAddendum()

        for addendumfilename in self._addendum :
            self.update_with_addendumevents(svnaddendum.parse_file(addendumfilename))

        branch_list = myset()
        branch_list.add(self._trunk)

        for x in branch_list :
            print x

        lastbranchecount = len(branch_list)
        for svnrevision in self._svnhistory :
            #print "%s : %s" % (svnrevision.number(),svnrevision)
            r = svnrevision.number()
            #print "%s : " % (r,)
            working_branches = myset()
            action_added = False

            if self.update_with_addendumevents(svnaddendum.parse_text(svnrevision.comment(),r)) :
                action_added = True

            for svnfilechange in svnrevision :
                #print "    %s" % (svnfilechange,)
                fromfile = svnfilechange.fromfile()
                if svnfilechange.change_type() == svnfilechange.CHANGE_TYPE_ADDED :
                    if fromfile != None :
                        if fromfile in branch_list :
                            branch_list.add(svnfilechange.filename())
                            self._svnrepository.add_action( svnAction( svnAction.ACTIONTYPE_CREATION, svnfilechange.filename(), r, svnfilechange.fromfile(), svnfilechange.fromrev() ) )
                            action_added = True
                            print "    %s : %s -> %s" % (r,svnfilechange.fromfile(),svnfilechange.filename())
                    elif svnfilechange.filename() == self._trunk :
                        self._svnrepository.add_action( svnAction( svnAction.ACTIONTYPE_CREATION, svnfilechange.filename(), r ) )
                        action_added = True
                        print "    %s : * %s" % (r,svnfilechange.filename())

            for svnfilechange in svnrevision :
                filename = svnfilechange.filename()
                if filename not in branch_list :
                    for branch in branch_list :
                        if filename[:len(branch)] == branch :
                            if branch not in working_branches :
                                self._svnrepository.add_action( svnAction( svnAction.ACTIONTYPE_WORK, branch, r ) )
                                action_added = True
                                working_branches.add(branch)

            for svnfilechange in svnrevision :
                if (svnfilechange.change_type() == svnfilechange.CHANGE_TYPE_DELETED) :
                    if svnfilechange.filename() in branch_list :
                        #branch_list.remove(svnfilechange.filename())
                        self._svnrepository.add_action( svnAction( svnAction.ACTIONTYPE_DELETE, svnfilechange.filename(), r ) )
                        action_added = True
                        # print "    %s : X %s" % (r,svnfilechange.filename())

            if lastbranchecount != len(branch_list) :
                pass # print "----XxxX(%d)" % (len(branch_list),)
            lastbranchecount = len(branch_list)

            if action_added :
                self._svnrepository.add_info_revision( r, author=svnrevision.author(), date=svnrevision.date() )

        self._svnrepository.resolv()

        if self._columns :
            self._graph.columns(self._columns)
        self._graph.render()