Changeset 51 in tailor
- Timestamp:
- 07/06/04 00:10:28 (9 years ago)
- Hash name:
- 20040705221028-97f81-0f860f643ab56ed6d68769d5c0e93deafc93542b
- Location:
- vcpx
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
vcpx/cvs.py
r50 r51 15 15 16 16 from shwrap import SystemCommand 17 from source import UpdatableSourceWorkingDir 18 from target import SyncronizableTargetWorkingDir 17 from source import UpdatableSourceWorkingDir, ChangesetApplicationFailure 18 from target import SyncronizableTargetWorkingDir, TargetInitializationFailure 19 19 20 20 … … 194 194 yield Changeset(**pset) 195 195 196 def _applyChangeset(self, root, changeset ):196 def _applyChangeset(self, root, changeset, logger=None): 197 197 from os.path import join, exists, dirname 198 198 from os import makedirs … … 206 206 cvsup(output=True, entry=e.name, revision=e.new_revision) 207 207 208 if cvsup.exit_status: 209 raise ChangesetApplicationFailure( 210 "'cvs update' returned status %s" % cvsup.exit_status) 211 208 212 if e.action_kind == e.DELETED: 209 213 # XXX: should drop edir if empty 210 214 pass 211 215 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): 230 218 """ 231 219 Concretely do the checkout of the upstream sources. Use `revision` as … … 244 232 module=module, 245 233 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) 246 239 247 240 self.__forceTagOnEachEntry(wdir) … … 268 261 break 269 262 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 272 271 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) 273 289 274 290 def __forceTagOnEachEntry(self, root): -
vcpx/source.py
r44 r51 25 25 """ 26 26 27 class ChangesetApplicationFailure(Exception): 28 pass 29 27 30 class UpdatableSourceWorkingDir(object): 28 31 """ … … 43 46 """ 44 47 45 def applyUpstreamChangesets(self, root, sincerev, replay=None): 48 def applyUpstreamChangesets(self, root, sincerev, 49 replay=None, logger=None): 46 50 """ 47 51 Apply the collected upstream changes. … … 62 66 conflicts = [] 63 67 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 65 77 66 res = self._applyChangeset(root, c)67 78 if res: 68 79 conflicts.append((c, res)) … … 70 81 raw_input(CONFLICTS_PROMPT % (str(c), '\n * '.join(res))) 71 82 except KeyboardInterrupt: 72 print "INTERRUPTED BY THE USER!"83 if logger: logger.info("INTERRUPTED BY THE USER!") 73 84 return c, conflicts 74 85 75 86 if replay: 76 87 replay(root, c) 77 78 print79 88 80 89 return c, conflicts … … 91 100 raise "%s should override this method" % self.__class__ 92 101 93 def _applyChangeset(self, root, changeset ):102 def _applyChangeset(self, root, changeset, logger=None): 94 103 """ 95 104 Do the actual work of applying the changeset to the working copy. … … 102 111 raise "%s should override this method" % self.__class__ 103 112 104 def checkoutUpstreamRevision(self, root, repository, module, revision): 113 def checkoutUpstreamRevision(self, root, repository, module, revision, 114 logger=None): 105 115 """ 106 116 Extract a working copy from a repository. … … 121 131 122 132 return self._checkoutUpstreamRevision(root, repository, 123 module, revision) 133 module, revision, 134 logger=logger) 124 135 125 def _checkoutUpstreamRevision(self, basedir, repository, module, revision): 136 def _checkoutUpstreamRevision(self, basedir, repository, module, revision, 137 logger=None): 126 138 """ 127 139 Concretely do the checkout of the upstream revision. -
vcpx/darcs.py
r49 r51 14 14 from shwrap import SystemCommand 15 15 from source import UpdatableSourceWorkingDir 16 from target import SyncronizableTargetWorkingDir 16 from target import SyncronizableTargetWorkingDir, TargetInitializationFailure 17 17 18 18 … … 175 175 return handler.changesets 176 176 177 def _applyChangeset(self, root, changeset ):177 def _applyChangeset(self, root, changeset, logger=None): 178 178 """ 179 179 Do the actual work of applying the changeset to the working copy. … … 263 263 c(output=True) 264 264 265 if c.exit_status: 266 raise TargetInitializationFailure( 267 "'darcs initialize' returned status %s" % c.exit_status) 268 -
vcpx/svn.py
r46 r51 13 13 14 14 from shwrap import SystemCommand 15 from source import UpdatableSourceWorkingDir 15 from source import UpdatableSourceWorkingDir, ChangesetApplicationFailure 16 16 from target import SyncronizableTargetWorkingDir, TargetInitializationFailure 17 17 … … 206 206 return handler.changesets 207 207 208 def _applyChangeset(self, root, changeset ):208 def _applyChangeset(self, root, changeset, logger=None): 209 209 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 211 216 result = [] 212 217 for line in out: 213 218 if len(line)>2 and line[0] == 'C' and line[1] == ' ': 219 logger.warn("Conflict after 'svn update': '%s'" % line) 214 220 result.append(line[2:-1]) 215 221 216 222 return result 217 223 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): 235 226 """ 236 227 Concretely do the checkout of the upstream revision. … … 245 236 svnco(output=True, repository=repository, 246 237 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 250 265 def _commit(self,root, date, author, remark, changelog=None, entries=None): 251 266 """ -
vcpx/dualwd.py
r46 r51 41 41 ## UpdatableSourceWorkingDir 42 42 43 def applyUpstreamChangesets(self, root, sincerev, replay=None): 43 def applyUpstreamChangesets(self, root, sincerev, 44 replay=None, logger=None): 44 45 return self.source.applyUpstreamChangesets(root, sincerev, 45 self.target.replayChangeset) 46 self.target.replayChangeset, 47 logger=logger) 46 48 47 def checkoutUpstreamRevision(self, root, repository, module, revision): 49 def checkoutUpstreamRevision(self, root, repository, module, revision, 50 logger=None): 48 51 return self.source.checkoutUpstreamRevision(root, 49 52 repository, module, 50 revision) 53 revision, 54 logger=logger) 51 55 52 56 ## SyncronizableTargetWorkingDir -
vcpx/tailor.py
r48 r51 99 99 source_kind, revision, module, repository)) 100 100 actual = dwd.checkoutUpstreamRevision(self.root, repository, 101 module, revision) 101 module, revision, 102 logger=self.logger) 102 103 self.logger.info("initializing %s shadow" % target_kind) 103 104 dwd.initializeNewWorkingDir(self.root, repository, module, actual) … … 131 132 132 133 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) 135 137 if actual: 136 138 self.upstream_revision = actual.revision … … 251 253 else: 252 254 tailored.update() 253 print 255
Note: See TracChangeset
for help on using the changeset viewer.
