Changeset 909 in tailor


Ignore:
Timestamp:
10/16/05 03:42:33 (8 years ago)
Author:
lele@…
Hash name:
20051016014233-97f81-44d6611671f5d5df9cbdd4f1cb6bdbbcc3f4bffb
Message:

Drop the queuelen from the statefile
It was used mainly for informing user about how many changesets were still
pending in the queue. Keeping it in the pickle is a major PITA, and not
relaying on it makes everything more streamy.

Location:
vcpx
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • vcpx/source.py

    r847 r909  
    185185        """ 
    186186 
    187         pending = len(self.state_file) 
    188         if pending == 0: 
     187        if not self.state_file.pending(): 
    189188            last = self.state_file.lastAppliedChangeset() 
    190189            if last: 
  • vcpx/tailor.py

    r876 r909  
    102102            raise 
    103103 
    104         nchanges = len(pendings) 
    105         if nchanges: 
    106             self.log_info("Applying %d upstream changesets" % nchanges) 
     104        if pendings.pending(): 
     105            self.log_info("Applying pending upstream changesets") 
    107106 
    108107            try: 
  • vcpx/tests/statefile.py

    r907 r909  
    2121        sf = StateFile(rontf.name, None) 
    2222        sf.setPendingChangesets([1,2,3,4,5]) 
    23         self.assertEqual(len(sf), 5) 
    2423 
    2524        sf = StateFile(rontf.name, None) 
     
    3837        sf.applied() 
    3938        self.assertEqual(sf.lastAppliedChangeset(), 2) 
    40         self.assertEqual(len(sf), 3) 
    4139        sf.finalize() 
     40        self.assertEqual(sf.pending(), True) 
    4241 
    4342        sf = StateFile(rontf.name, None) 
    4443        self.assertEqual(sf.lastAppliedChangeset(), 2) 
    45         self.assertEqual(len(sf), 3) 
    4644        i = 3 
    4745        for cs in sf: 
    4846            self.assertEqual(cs, i) 
     47            sf.applied() 
    4948            i += 1 
     49        sf.finalize() 
     50        self.assertEqual(sf.pending(), False) 
    5051 
    5152    def testJournal(self): 
     
    5859        sf = StateFile(rontf.name, None) 
    5960        sf.setPendingChangesets([1,2,3,4,5]) 
    60         self.assertEqual(len(sf), 5) 
    6161 
    6262        sf = StateFile(rontf.name, None) 
     
    6868        sf.applied() 
    6969        self.assertEqual(sf.lastAppliedChangeset(), 2) 
    70         self.assertEqual(len(sf), 3) 
    7170        self.assert_(exists(rontf.name + '.journal')) 
    7271 
    7372        sf = StateFile(rontf.name, None) 
    7473        self.assertEqual(sf.lastAppliedChangeset(), 2) 
    75         self.assertEqual(len(sf), 3) 
    7674        i = 3 
    7775        for cs in sf: 
     
    8684        sf = StateFile(rontf.name, None) 
    8785        sf.setPendingChangesets([1,2,3,4,5]) 
    88         self.assertEqual(len(sf), 5) 
    8986 
    9087        reversed = list(sf.reversed()) 
  • vcpx/statefile.py

    r907 r909  
    4545        self.last_applied = None 
    4646        self.current = None 
    47         self.queuelen = 0 
    4847 
    4948    def _load(self): 
     
    6059            self.archive = open(self.filename) 
    6160            self.last_applied = load(self.archive) 
    62             self.queuelen = load(self.archive) 
     61            # compatibility dummity: there was the queuelen here 
     62            load(self.archive) 
    6363        except IOError: 
    6464            self.archive = None 
    6565            self.last_applied = None 
    66             self.queuelen = 0 
    6766 
    6867    def _write(self, changesets): 
     
    7574            sf = open(self.filename, 'w') 
    7675            dump(self.last_applied, sf) 
    77             dump(len(changesets), sf) 
     76            dump(None, sf) 
    7877            for cs in changesets: 
    7978                dump(cs, sf) 
     
    9796            self.archive = None 
    9897            raise StopIteration 
    99         self.queuelen -= 1 
    10098        return self.current 
    101  
    102     def __len__(self): 
    103         if self.archive is None: 
    104             self._load() 
    105         return self.queuelen 
    10699 
    107100    def reversed(self): 
     
    128121            yield load(self.archive) 
    129122 
     123    def pending(self): 
     124        """ 
     125        Verify if there's at least one changeset still pending. 
     126        """ 
     127 
     128        if self.archive is None: 
     129            self._load() 
     130        if self.archive is None: 
     131            return False 
     132 
     133        pos = self.archive.tell() 
     134        try: 
     135            next = load(self.archive) 
     136        except EOFError: 
     137            next = None 
     138        self.archive.seek(pos) 
     139        return next is not None 
     140 
    130141    def applied(self, current=None): 
    131142        """ 
     
    170181                    old = open(self.filename) 
    171182                    load(old) # last applied 
    172                     queuelen = load(old) 
    173                     if queuelen>0: 
     183                    load(old) # dummy queuelen 
     184                    try: 
    174185                        cs = load(old) 
    175186                        # Skip already applied changesets 
    176187                        while cs <> last_applied: 
    177                             queuelen -= 1 
    178                             if queuelen==0: 
    179                                 break 
    180188                            cs = load(old) 
    181  
     189                    except EOFError: 
     190                        cs = None 
    182191                    sf = open(self.filename + '.new', 'w') 
    183192                    dump(last_applied, sf) 
    184                     if queuelen==0: 
    185                         dump(queuelen, sf) 
    186                     else: 
    187                         dump(queuelen-1, sf) 
     193                    dump(None, sf) 
     194                    if cs is not None: 
    188195                        while True: 
    189196                            try: 
     
    199206                    sf = open(self.filename, 'w') 
    200207                    dump(last_applied, sf) 
    201                     dump(0, sf) 
    202208                    sf.close() 
    203209 
Note: See TracChangeset for help on using the changeset viewer.