def _retrieveRevisionInfo( self ): # check if specified revision is in cache. do not check for 'HEAD' if self.getRevision() in self.__revisionInfoCache: return self.__revisionInfoCache[self.getRevision()] info = RevisionInfo( "SvnRevisionInfo" ) revisionParameter = ['-r', str( self.getRevision() )] if self.getRevision() else [] cmd = [ self.getCommand(), '--non-interactive', 'log', '--xml', '--limit', '1', self.getUrl() ] + revisionParameter runner = RunCommand( cmd, searchPaths = self.getCommandSearchPaths() ) runner.run() if runner.getReturnCode() == 0: xmldoc = minidom.parseString( runner.getStdOut().encode( "utf-8" ) ) logentries = xmldoc.getElementsByTagName( 'logentry' ) assert len( logentries ) == 1 results = parse_log_entry( logentries[0] ) ( info.committerName, info.commitMessage, info.revision, info.commitTime, info.commitTimeReadable ) = results info.shortRevision = info.revision if self.getSCMUidMapper(): email = self.getSCMUidMapper().getEmail( info.committerName ) mApp().debugN( self, 5, "E-Mail address for {0} from SCM uid mapper: {1}".format( info.committerName, email ) ) info.committerEmail = email # add to cache. do not add 'HEAD' if self.getRevision(): self.__revisionInfoCache[self.getRevision()] = info return info
def _retrieveRevisionInfo( self ): # check if specified revision is in cache. do not check for 'HEAD' info = RevisionInfo( "LocalSourceDirRevisionInfo" ) info.commitMessage = 'N/A' info.committerEmail = 'N/A' info.committerName = getpass.getuser() info.commitTime = 0 info.commitTimeReadable = 'N/A' info.revision = 'N/A' return info