Changeset 50 in tailor for vcpx/cvs.py


Ignore:
Timestamp:
07/06/04 00:00:14 (9 years ago)
Author:
lele@…
Hash name:
20040705220014-97f81-9cda32b9ec89ff245b3ef41ee41ce78406040d2d
Message:

Force sticky tags after checkout

File:
1 edited

Legend:

Unmodified
Added
Removed
  • vcpx/cvs.py

    r46 r50  
    245245              revision=revision) 
    246246             
     247        self.__forceTagOnEachEntry(wdir) 
     248         
    247249        entries = CvsEntries(wdir) 
    248250         
     
    269271         
    270272        return last.revision 
     273 
     274    def __forceTagOnEachEntry(self, root): 
     275        """ 
     276        Massage each CVS/Entries file, locking (ie, tagging) each 
     277        entry to its current CVS version. 
     278 
     279        This is to prevent silly errors such those that could arise 
     280        after a manual `cvs update` in the working directory. 
     281        """ 
     282         
     283        from os import walk, rename 
     284        from os.path import join 
     285 
     286        for dir, subdirs, files in walk(root): 
     287            if dir[-3:] == 'CVS': 
     288                efn = join(dir, 'Entries') 
     289                f = open(efn) 
     290                entries = f.readlines() 
     291                f.close() 
     292                rename(efn, efn+'.old') 
     293                 
     294                newentries = [] 
     295                for e in entries: 
     296                    if e.startswith('/'): 
     297                        fields = e.split('/') 
     298                        fields[-1] = "T%s\n" % fields[2] 
     299                        newe = '/'.join(fields) 
     300                        newentries.append(newe) 
     301                    else: 
     302                        newentries.append(e) 
     303 
     304                f = open(efn, 'w') 
     305                f.writelines(newentries) 
     306                f.close() 
    271307     
    272308    def _commit(self,root, date, author, remark, changelog=None, entries=None): 
Note: See TracChangeset for help on using the changeset viewer.