Changeset 608 in tailor


Ignore:
Timestamp:
08/17/05 02:23:07 (8 years ago)
Author:
lele@…
Hash name:
20050817002307-97f81-0ba3e1234a097057caad008b39bddfeecc30089f
Message:

Allow disjunct working directories
If the source and target repository use different directories, use
rsync to keep the target aligned with source, after the initial
checkout and right after the application of the upstream patch.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • vcpx/dualwd.py

    r607 r608  
    1111working copy shared between the two VC systems. 
    1212 
     13In a slightly more elaborated way, the source and the target system may 
     14use separate directories, that gets rsynced when needed. 
     15 
    1316This module implements `DualWorkingDir`, which instances have a 
    1417`source` and `target` properties offering the right capabilities to do 
     
    2023from source import UpdatableSourceWorkingDir, InvocationError 
    2124from target import SyncronizableTargetWorkingDir 
     25from shwrap import ExternalCommand 
    2226 
    2327IGNORED_METADIRS = [] 
     
    4852 
    4953        self.prepareWorkingDirectory = self.target.prepareWorkingDirectory 
    50         self.importFirstRevision = self.target.importFirstRevision 
    51         self.replayChangeset = self.target.replayChangeset 
    5254 
    5355    def setStateFile(self, state_file): 
     
    7072                                                  applyable=applyable, 
    7173                                                  applied=applied) 
     74 
     75    def importFirstRevision(self, source_repo, changeset, initial): 
     76        if self.source.basedir <> self.target.basedir: 
     77            self._syncTargetWithSource() 
     78        self.target.importFirstRevision(source_repo, changeset, initial) 
     79 
     80    def replayChangeset(self, changeset): 
     81        if self.source.basedir <> self.target.basedir: 
     82            self._syncTargetWithSource() 
     83        self.target.replayChangeset(changeset) 
     84 
     85    def _syncTargetWithSource(self): 
     86        cmd = ['rsync', '--delete', '--archive', 
     87               '--exclude', self.source.repository.METADIR, 
     88               '--exclude', self.target.repository.METADIR] 
     89        rsync = ExternalCommand(command=cmd) 
     90        rsync.execute(self.source.basedir+'/', self.target.basedir) 
Note: See TracChangeset for help on using the changeset viewer.