Changeset 678


Ignore:
Timestamp:
May 18, 2016, 6:14:32 PM (8 years ago)
Author:
rybkin
Message:

See C.L. 527

Location:
CMT/HEAD
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • CMT/HEAD/ChangeLog

    r670 r678  
     12016-05-18    <rybkin@lal.in2p3.fr> 527
     2
     3        * mgr/cmt_svn_checkout.py: For trunk checkout, skip the check whether
     4        trunk corresponds to a particular tag if CMTHEADVERSION is unset, empty,
     5        or its value starts with '!'
     6
    172014-02-04    <rybkin@lal.in2p3.fr> 526
    28
  • CMT/HEAD/mgr/cmt_svn_checkout.py

    r650 r678  
    2424"""
    2525
    26 __version__ = '0.8.0'
    27 __date__ = 'Wed Jul 31 2013'
     26__version__ = '0.9.0'
     27__date__ = 'Wed May 18 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            # it may be appropriate to strip the leading '!'
     217            # that will require synchronization with C++ code, however
     218            # self.head_version = version[1:]
     219            self.head_version = version
     220            self.head_version_tag = False
     221        else:
     222            self.head_version = version
     223            self.head_version_tag = True
    216224
    217225    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}
     226        return str(self.head_version).replace('<package>', '%(package)s').replace('<PACKAGE>', '%(PACKAGE)s').replace('<revision>', '%(revision)i') % \
     227            {'package' : m.package,
     228             'PACKAGE' : m.package.upper(),
     229             'revision' : m.info.last_changed_rev} \
     230             or 'HEAD'
    222231
    223232    def write(self, p, version):
     
    597606            if self.version is None:
    598607                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
     608                if cmt_context.head_version_tag:
     609                    m.version = self.trunk_tag(m, client_context) or \
     610                        cmt_context.eval_head_version(m)
     611                else:
     612                    trunk = posixpath.join(m.url, self.trunk)
     613                    cmd = 'svn info %s' % trunk
     614                    scc, out = Utils.getstatusoutput(cmd)
     615                    logger.debug('%s\n%s' % (cmd, out))
     616                    if scc != 0:
     617                        logger.error('%s\n%s' % (cmd, out))
     618                        sc += 1; continue
     619                    p = r'last\s+changed\s+rev:\s+(?P<rev>\d+)'
     620                    M = re.search(p, out, re.I)
     621                    if M:
     622                        class info(object): pass
     623                        info.last_changed_rev = int(M.group('rev'))
     624                        self.info_receiver(trunk, info, m)
     625                        logger.debug('last_changed_rev: %d' % info.last_changed_rev)
     626                    else:
     627                        logger.warning('%s: last_changed_rev: Not found' % trunk)
     628                    m.version = cmt_context.eval_head_version(m)
     629                logger.debug('set version: %s' % m.version)
    602630            else:
    603631                m.head = False
Note: See TracChangeset for help on using the changeset viewer.