Changeset 12 in tailor


Ignore:
Timestamp:
06/19/04 01:51:47 (9 years ago)
Author:
lele@…
Hash name:
20040618235147-97f81-4ee191bc82973330cdc14d1f7ae12afc58c63b26
Message:

Added svn and darcs working dirs

Location:
vcpx
Files:
2 added
3 edited

Legend:

Unmodified
Added
Removed
  • vcpx/cvs.py

    r11 r12  
    1212from target import SyncronizableTargetWorkingDir 
    1313 
     14 
    1415class CvsPsLog(SystemCommand): 
    15     COMMAND = "cvsps -u -b%(branch)s" 
    16  
     16    COMMAND = "cvsps %(update)s-b%(branch)s" 
     17 
     18    def __call__(self, output=None, dry_run=False, **kwargs): 
     19        update = kwargs.get('update', '') 
     20        if update: 
     21            update = '-u ' 
     22        kwargs['update'] = update 
     23         
     24        return SystemCommand.__call__(self, output=output, 
     25                                      dry_run=dry_run, **kwargs) 
     26 
     27     
    1728class CvsUpdate(SystemCommand): 
    1829    COMMAND = 'cvs %(dry)supdate -d -r%(revision)s %(entry)s2>&1' 
     
    2637        return SystemCommand.__call__(self, output=output, 
    2738                                      dry_run=False, **kwargs) 
    28      
     39 
     40 
     41class CvsAdd(SystemCommand): 
     42    COMMAND = "cvs add %(entry)s" 
     43 
     44 
     45class CvsCommit(SystemCommand): 
     46    COMMAND = "cvs ci -F %(logfile)s %(entries)s" 
     47     
     48 
     49class CvsRemove(SystemCommand): 
     50    COMMAND = "cvs remove %(entry)s" 
     51 
     52 
    2953from textwrap import TextWrapper 
    3054from re import compile, MULTILINE 
     
    4872 
    4973 
    50 class CvsSourceWorkingDir(UpdatableSourceWorkingDir): 
    51     def _getLastSyncedRevision(self): 
     74class CvsWorkingDir(UpdatableSourceWorkingDir, 
     75                    SyncronizableTargetWorkingDir): 
     76 
     77    ## UpdatableSourceWorkingDir 
     78     
     79    def __getLastUpstreamRevision(self, root): 
    5280        from os.path import join, exists 
    5381         
    54         fname = join(self.root, 'CVS', 'last-synced-revision') 
     82        fname = join(root, 'CVS', 'last-synced-revision') 
    5583        if exists(fname): 
    5684            return open(fname).read() 
    5785 
    58     def _setLastSyncedRevision(self, revision): 
     86    def __setLastUpstreamRevision(self, root, revision): 
    5987        from os.path import join, exists 
    6088         
    61         fname = join(self.root, 'CVS', 'last-synced-revision') 
     89        fname = join(root, 'CVS', 'last-synced-revision') 
    6290        open(fname, 'w').write(revision) 
    6391         
    64     def _getUpstreamChangesets(self, startfrom_rev=None): 
    65         cvsps = CvsPsLog(working_dir=self.root) 
    66  
     92    def _getUpstreamChangesets(self, root): 
     93        cvsps = CvsPsLog(update=True, working_dir=root) 
     94 
     95        startfrom_rev = self.__getLastUpstreamRevision(root) 
    6796        if startfrom_rev: 
    6897            startfrom_rev = int(startfrom_rev) 
     
    75104        else: 
    76105            branch="HEAD" 
    77              
    78         for cs in self.__enumerateChangesets(cvsps(output=True,branch=branch)): 
     106 
     107        log = cvsps(output=True, branch=branch) 
     108        for cs in self.__enumerateChangesets(log): 
    79109            if not startfrom_rev or (startfrom_rev<=cs.revision): 
    80110                self.changesets.append(cs) 
     
    153183            yield Changeset(**pset) 
    154184 
    155     def _applyChangeset(self, changeset): 
    156         cvsup = CvsUpdate(working_dir=self.root) 
     185    def _applyChangeset(self, root, changeset): 
     186        cvsup = CvsUpdate(working_dir=root) 
    157187        for e in cs.entries: 
    158188            cvsup(entry=e.name, revision=e.new_revision) 
    159  
    160 class CvsAdd(SystemCommand): 
    161     COMMAND = "cvs add %(entry)s" 
    162  
    163  
    164 class CvsCommit(SystemCommand): 
    165     COMMAND = "cvs ci -F %(logfile)s %(entries)s" 
    166      
    167  
    168 class CvsRemove(SystemCommand): 
    169     COMMAND = "cvs remove %(entry)s" 
    170  
    171  
    172 class CvsTargetWorkingDir(SyncronizableTargetWorkingDir): 
     189        self.__setLastUpstreamRevision(root, revision) 
     190         
     191    ## SyncronizableTargetWorkingDir 
     192 
    173193    def _addEntry(self, root, entry): 
    174194        """ 
     
    176196        """ 
    177197 
     198        from os.path import split, join, exists 
     199 
     200        basedir = split(entry)[0] 
     201        if basedir and not exists(join(basedir, 'CVS')): 
     202            self._addEntry(root, basedir) 
     203         
    178204        c = CvsAdd(working_dir=root) 
    179205        c(entry=entry) 
    180206 
    181     def _commit(self, root, remark, changelog, entries): 
     207    def _commit(self, root, author, remark, changelog, entries): 
    182208        """ 
    183209        Commit the changeset. 
  • vcpx/source.py

    r11 r12  
    1515 
    1616class UpdatableSourceWorkingDir(object): 
    17     """This is an abstract working dir. Subclasses MUST override ALL 
    18        these methods.""" 
     17    """This is an abstract working dir. Subclasses MUST override at least 
     18       the _underscoredMethods.""" 
    1919 
    20     def _getLastSyncedRevision(self, root): 
    21         """ 
    22         Return the last synced revision. 
    23  
    24         Since this info must be stored somewhere, it's up to the target 
    25         storage how/where it best fits; as such, this method must be 
    26         overridden by subclasses. 
    27         """ 
    28  
    29         raise "SubclassResponsibility" 
    30  
    31     def _setLastSyncedRevision(self, root, revision): 
    32         """ 
    33         Record the last synced revision. 
    34  
    35         Since this info must be stored somewhere, it's up to the target 
    36         storage how/where it best fits; as such, this method must be 
    37         overridden by subclasses. 
    38         """ 
    39  
    40         raise "SubclassResponsibility" 
    41  
    42     def _getUpstreamChangesets(self, root, startfrom_rev=None): 
     20    def _getUpstreamChangesets(self, root): 
    4321        """ 
    4422        Do the actual work of fetching the upstream changeset. 
     
    4725        """ 
    4826 
    49         raise "SubclassResponsibility" 
     27        raise "%s should override this method" % self.__class__ 
    5028         
    5129    def _applyChangeset(self, root, changeset): 
    5230        """ 
    53         Do the actual work of applying the changeset to the workink copy. 
     31        Do the actual work of applying the changeset to the working copy. 
    5432        """ 
    5533 
    56         raise "SubclassResponsibility" 
     34        raise "%s should override this method" % self.__class__ 
    5735 
    5836    def collectUpstreamChangesets(self, root): 
     
    6341        """ 
    6442 
    65         lastrev = self._getLastSyncedRevision(root) 
    66         return self._getUpstreamChangesets(self, root, startfrom_rev=lastrev) 
     43        self._getUpstreamChangesets(self, root) 
    6744         
    6845    def applyUpstreamChangesets(self, root, changesets): 
  • vcpx/target.py

    r11 r12  
    1515class SyncronizableTargetWorkingDir(object): 
    1616    """ 
    17     This is an abstract working dir. Subclasses MUST override ALL 
    18     these methods. 
     17    This is an abstract working dir. Subclasses MUST override at least 
     18    the _underscoredMethods. 
    1919    """ 
    2020 
     
    4141        changelog = changeset.log 
    4242        entries = [e.name for e in changeset.entries] 
    43         self._commit(root, remark, changelog, entries) 
     43        self._commit(root, changeset.author, remark, changelog, entries) 
    4444 
    4545    def _addEntry(self, root, entry): 
     
    5050        raise "%s should override this method" % self.__class__ 
    5151 
    52     def _commit(self, root, remark, changelog, entries): 
     52    def _commit(self, root, author, remark, changelog, entries): 
    5353        """ 
    5454        Commit the changeset. 
Note: See TracChangeset for help on using the changeset viewer.