Changeset 51 in tailor


Ignore:
Timestamp:
07/06/04 00:10:28 (9 years ago)
Author:
lele@…
Hash name:
20040705221028-97f81-0f860f643ab56ed6d68769d5c0e93deafc93542b
Message:

Use the logger instead of print statements

Location:
vcpx
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • vcpx/cvs.py

    r50 r51  
    1515 
    1616from shwrap import SystemCommand 
    17 from source import UpdatableSourceWorkingDir 
    18 from target import SyncronizableTargetWorkingDir 
     17from source import UpdatableSourceWorkingDir, ChangesetApplicationFailure 
     18from target import SyncronizableTargetWorkingDir, TargetInitializationFailure 
    1919 
    2020 
     
    194194                yield Changeset(**pset) 
    195195 
    196     def _applyChangeset(self, root, changeset): 
     196    def _applyChangeset(self, root, changeset, logger=None): 
    197197        from os.path import join, exists, dirname 
    198198        from os import makedirs 
     
    206206            cvsup(output=True, entry=e.name, revision=e.new_revision) 
    207207 
     208            if cvsup.exit_status: 
     209                raise ChangesetApplicationFailure( 
     210                    "'cvs update' returned status %s" % cvsup.exit_status) 
     211             
    208212            if e.action_kind == e.DELETED: 
    209213                # XXX: should drop edir if empty 
    210214                pass 
    211215                 
    212  
    213     ## SyncronizableTargetWorkingDir 
    214  
    215     def _addEntry(self, root, entry): 
    216         """ 
    217         Add a new entry, maybe registering the directory as well. 
    218         """ 
    219  
    220         from os.path import split, join, exists 
    221  
    222         basedir = split(entry)[0] 
    223         if basedir and not exists(join(root, basedir, 'CVS')): 
    224             self._addEntry(root, basedir) 
    225          
    226         c = CvsAdd(working_dir=root) 
    227         c(entry=entry) 
    228  
    229     def _checkoutUpstreamRevision(self, basedir, repository, module, revision): 
     216    def _checkoutUpstreamRevision(self, basedir, repository, module, revision, 
     217                                  logger=None): 
    230218        """ 
    231219        Concretely do the checkout of the upstream sources. Use `revision` as 
     
    244232              module=module, 
    245233              revision=revision) 
     234            if c.exit_status: 
     235                raise TargetInitializationFailure( 
     236                    "'cvs checkout' returned status %s" % c.exit_status) 
     237        else: 
     238            if logger: logger.info("Using existing %s", wdir) 
    246239             
    247240        self.__forceTagOnEachEntry(wdir) 
     
    268261                break 
    269262 
    270         assert found, "Something went wrong, did not find the right cvsps revision in '%s'" % wdir 
    271          
     263        if not found: 
     264            raise TargetInitializationFailure( 
     265                "Something went wrong, did not find the right cvsps " 
     266                "revision in '%s'" % wdir) 
     267        else: 
     268            if logger: logger.info("working copy up to cvsps revision %s", 
     269                                   last.revision) 
     270             
    272271        return last.revision 
     272     
     273 
     274    ## SyncronizableTargetWorkingDir 
     275 
     276    def _addEntry(self, root, entry): 
     277        """ 
     278        Add a new entry, maybe registering the directory as well. 
     279        """ 
     280 
     281        from os.path import split, join, exists 
     282 
     283        basedir = split(entry)[0] 
     284        if basedir and not exists(join(root, basedir, 'CVS')): 
     285            self._addEntry(root, basedir) 
     286         
     287        c = CvsAdd(working_dir=root) 
     288        c(entry=entry) 
    273289 
    274290    def __forceTagOnEachEntry(self, root): 
  • vcpx/source.py

    r44 r51  
    2525""" 
    2626 
     27class ChangesetApplicationFailure(Exception): 
     28    pass 
     29 
    2730class UpdatableSourceWorkingDir(object): 
    2831    """ 
     
    4346    """ 
    4447 
    45     def applyUpstreamChangesets(self, root, sincerev, replay=None): 
     48    def applyUpstreamChangesets(self, root, sincerev, 
     49                                replay=None, logger=None): 
    4650        """ 
    4751        Apply the collected upstream changes. 
     
    6266        conflicts = [] 
    6367        for c in changesets: 
    64             print "# Applying upstream changeset", c.revision 
     68            if logger: 
     69                logger.info("Applying upstream changeset %s", c.revision) 
     70 
     71            try: 
     72                res = self._applyChangeset(root, c, logger=logger) 
     73            except: 
     74                if logger: logger.critical("Couldn't apply changeset %s", 
     75                                           c.revision, exc_info=True) 
     76                raise 
    6577             
    66             res = self._applyChangeset(root, c) 
    6778            if res: 
    6879                conflicts.append((c, res)) 
     
    7081                    raw_input(CONFLICTS_PROMPT % (str(c), '\n * '.join(res))) 
    7182                except KeyboardInterrupt: 
    72                     print "INTERRUPTED BY THE USER!" 
     83                    if logger: logger.info("INTERRUPTED BY THE USER!") 
    7384                    return c, conflicts 
    7485                 
    7586            if replay: 
    7687                replay(root, c) 
    77  
    78             print 
    7988             
    8089        return c, conflicts 
     
    91100        raise "%s should override this method" % self.__class__ 
    92101         
    93     def _applyChangeset(self, root, changeset): 
     102    def _applyChangeset(self, root, changeset, logger=None): 
    94103        """ 
    95104        Do the actual work of applying the changeset to the working copy. 
     
    102111        raise "%s should override this method" % self.__class__ 
    103112 
    104     def checkoutUpstreamRevision(self, root, repository, module, revision): 
     113    def checkoutUpstreamRevision(self, root, repository, module, revision, 
     114                                 logger=None): 
    105115        """ 
    106116        Extract a working copy from a repository. 
     
    121131 
    122132        return self._checkoutUpstreamRevision(root, repository, 
    123                                               module, revision) 
     133                                              module, revision, 
     134                                              logger=logger) 
    124135         
    125     def _checkoutUpstreamRevision(self, basedir, repository, module, revision): 
     136    def _checkoutUpstreamRevision(self, basedir, repository, module, revision, 
     137                                  logger=None): 
    126138        """ 
    127139        Concretely do the checkout of the upstream revision. 
  • vcpx/darcs.py

    r49 r51  
    1414from shwrap import SystemCommand 
    1515from source import UpdatableSourceWorkingDir 
    16 from target import SyncronizableTargetWorkingDir 
     16from target import SyncronizableTargetWorkingDir, TargetInitializationFailure 
    1717 
    1818 
     
    175175        return handler.changesets 
    176176         
    177     def _applyChangeset(self, root, changeset): 
     177    def _applyChangeset(self, root, changeset, logger=None): 
    178178        """ 
    179179        Do the actual work of applying the changeset to the working copy. 
     
    263263        c(output=True) 
    264264 
     265        if c.exit_status: 
     266            raise TargetInitializationFailure( 
     267                "'darcs initialize' returned status %s" % c.exit_status) 
     268 
  • vcpx/svn.py

    r46 r51  
    1313 
    1414from shwrap import SystemCommand 
    15 from source import UpdatableSourceWorkingDir 
     15from source import UpdatableSourceWorkingDir, ChangesetApplicationFailure 
    1616from target import SyncronizableTargetWorkingDir, TargetInitializationFailure 
    1717 
     
    206206        return handler.changesets 
    207207     
    208     def _applyChangeset(self, root, changeset): 
     208    def _applyChangeset(self, root, changeset, logger=None): 
    209209        svnup = SvnUpdate(working_dir=root) 
    210         out = svnup(output=True, entry='.', revision=changeset.revision)        
     210        out = svnup(output=True, entry='.', revision=changeset.revision) 
     211         
     212        if svnup.exit_status: 
     213            raise ChangesetApplicationFailure( 
     214                "'svn update' returned status %s" % cvsup.exit_status) 
     215             
    211216        result = [] 
    212217        for line in out: 
    213218            if len(line)>2 and line[0] == 'C' and line[1] == ' ': 
     219                logger.warn("Conflict after 'svn update': '%s'" % line) 
    214220                result.append(line[2:-1]) 
    215221             
    216222        return result 
    217223         
    218     ## SyncronizableTargetWorkingDir 
    219  
    220     def _addEntry(self, root, entry): 
    221         """ 
    222         Add a new entry, maybe registering the directory as well. 
    223         """ 
    224  
    225         from os.path import split, join, exists 
    226  
    227         basedir = split(entry)[0] 
    228         if basedir and not exists(join(basedir, '.svn')): 
    229             self._addEntry(root, basedir) 
    230  
    231         c = SvnAdd(working_dir=root) 
    232         c(entry=entry) 
    233  
    234     def _checkoutUpstreamRevision(self, basedir, repository, module, revision): 
     224    def _checkoutUpstreamRevision(self, basedir, repository, module, revision, 
     225                                  logger=None): 
    235226        """ 
    236227        Concretely do the checkout of the upstream revision. 
     
    245236            svnco(output=True, repository=repository, 
    246237                  wc=module, revision=revision) 
    247              
    248         return SvnInfo(working_dir=wdir)(entry='.')['Revision'] 
    249      
     238            if svnco.exit_status: 
     239                raise TargetInitializationFailure( 
     240                    "'svn checkout' returned status %s" % svnco.exit_status) 
     241 
     242        actual = SvnInfo(working_dir=wdir)(entry='.')['Revision'] 
     243 
     244        if logger: logger.info("working copy up to svn revision %s", 
     245                               last.revision) 
     246         
     247        return actual  
     248     
     249    ## SyncronizableTargetWorkingDir 
     250 
     251    def _addEntry(self, root, entry): 
     252        """ 
     253        Add a new entry, maybe registering the directory as well. 
     254        """ 
     255 
     256        from os.path import split, join, exists 
     257 
     258        basedir = split(entry)[0] 
     259        if basedir and not exists(join(basedir, '.svn')): 
     260            self._addEntry(root, basedir) 
     261 
     262        c = SvnAdd(working_dir=root) 
     263        c(entry=entry) 
     264 
    250265    def _commit(self,root, date, author, remark, changelog=None, entries=None): 
    251266        """ 
  • vcpx/dualwd.py

    r46 r51  
    4141    ## UpdatableSourceWorkingDir 
    4242         
    43     def applyUpstreamChangesets(self, root, sincerev, replay=None): 
     43    def applyUpstreamChangesets(self, root, sincerev, 
     44                                replay=None, logger=None): 
    4445        return self.source.applyUpstreamChangesets(root, sincerev, 
    45                                                    self.target.replayChangeset) 
     46                                                   self.target.replayChangeset, 
     47                                                   logger=logger) 
    4648         
    47     def checkoutUpstreamRevision(self, root, repository, module, revision): 
     49    def checkoutUpstreamRevision(self, root, repository, module, revision, 
     50                                 logger=None): 
    4851        return self.source.checkoutUpstreamRevision(root, 
    4952                                                    repository, module, 
    50                                                     revision) 
     53                                                    revision, 
     54                                                    logger=logger) 
    5155 
    5256    ## SyncronizableTargetWorkingDir 
  • vcpx/tailor.py

    r48 r51  
    9999            source_kind, revision, module, repository)) 
    100100        actual = dwd.checkoutUpstreamRevision(self.root, repository, 
    101                                               module, revision) 
     101                                              module, revision, 
     102                                              logger=self.logger) 
    102103        self.logger.info("initializing %s shadow" % target_kind) 
    103104        dwd.initializeNewWorkingDir(self.root, repository, module, actual) 
     
    131132         
    132133        dwd = DualWorkingDir(self.source_kind, self.target_kind) 
    133         actual,conflics = dwd.applyUpstreamChangesets(proj, 
    134                                                       self.upstream_revision) 
     134        actual,conflicts = dwd.applyUpstreamChangesets(proj, 
     135                                                       self.upstream_revision, 
     136                                                       logger=self.logger) 
    135137        if actual: 
    136138            self.upstream_revision = actual.revision 
     
    251253        else: 
    252254            tailored.update() 
    253             print 
     255 
Note: See TracChangeset for help on using the changeset viewer.