Changeset 680 for CMT/v1r25-branch/mgr


Ignore:
Timestamp:
May 27, 2016, 5:27:39 PM (8 years ago)
Author:
rybkin
Message:

merge -r 670:679 HEAD

Location:
CMT/v1r25-branch
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • CMT/v1r25-branch

  • CMT/v1r25-branch/mgr/cmt_svn_checkout.py

    r664 r680  
    2424"""
    2525
    26 __version__ = '0.8.0'
    27 __date__ = 'Wed Jul 31 2013'
     26__version__ = '0.10.0'
     27__date__ = 'Fri May 27 2016'
    2828__author__ = 'Grigory Rybkin'
    2929
     
    204204        self.with_version_directory = with_version_directory
    205205        self.cleanup = cleanup
    206         self.head_version = head_version
    207         self.env()
    208 
    209     def env(self):
    210         if self.head_version is None:
    211             self.set_head_version(os.getenv('CMTHEADVERSION', 'HEAD'))
    212 #        print >>sys.stderr, 'env: set head_version: %s' % self.head_version
     206        if head_version:
     207            self.set_head_version(head_version)
     208        else:
     209            self.set_head_version(os.getenv('CMTHEADVERSION', ''))
    213210
    214211    def set_head_version(self, version):
    215         self.head_version = str(version).replace('<package>', '%(package)s').replace('<PACKAGE>', '%(PACKAGE)s').replace('<revision>', '%(revision)i')
     212        if not version:
     213            self.head_version = ''
     214            self.head_version_tag = False
     215        elif version.startswith('!'):
     216            # strip the leading '!'
     217            # require synchronization with C++ code
     218            self.head_version = version[1:]
     219            self.head_version_tag = False
     220        else:
     221            self.head_version = version
     222            self.head_version_tag = True
    216223
    217224    def eval_head_version(self, m):
    218         return self.head_version % \
    219                {'package' : m.package,
    220                 'PACKAGE' : m.package.upper(),
    221                 'revision' : m.info.last_changed_rev}
     225        return str(self.head_version).replace('<package>', '%(package)s').replace('<PACKAGE>', '%(PACKAGE)s').replace('<revision>', '%(revision)i') % \
     226            {'package' : m.package,
     227             'PACKAGE' : m.package.upper(),
     228             'revision' : m.info.last_changed_rev} \
     229             or 'HEAD'
    222230
    223231    def write(self, p, version):
     
    597605            if self.version is None:
    598606                m.head = True
    599                 m.version = self.trunk_tag(m, client_context) or \
    600                             cmt_context.eval_head_version(m)
    601 #                print >>sys.stderr, 'set version: %s' % m.version
     607                if cmt_context.head_version_tag:
     608                    m.version = self.trunk_tag(m, client_context) or \
     609                        cmt_context.eval_head_version(m)
     610                else:
     611                    trunk = posixpath.join(m.url, self.trunk)
     612                    cmd = 'svn info %s' % trunk
     613                    scc, out = Utils.getstatusoutput(cmd)
     614                    logger.debug('%s\n%s' % (cmd, out))
     615                    if scc != 0:
     616                        logger.error('%s\n%s' % (cmd, out))
     617                        sc += 1; continue
     618                    p = r'last\s+changed\s+rev:\s+(?P<rev>\d+)'
     619                    M = re.search(p, out, re.I)
     620                    if M:
     621                        class info(object): pass
     622                        info.last_changed_rev = int(M.group('rev'))
     623                        self.info_receiver(trunk, info, m)
     624                        logger.debug('last_changed_rev: %d' % info.last_changed_rev)
     625                    else:
     626                        logger.warning('%s: last_changed_rev: Not found' % trunk)
     627                    m.version = cmt_context.eval_head_version(m)
     628                logger.debug('set version: %s' % m.version)
    602629            else:
    603630                m.head = False
Note: See TracChangeset for help on using the changeset viewer.