Changeset 1048 in tailor


Ignore:
Timestamp:
12/27/05 13:28:08 (7 years ago)
Author:
lele@…
Hash name:
20051227122808-7a6fb-1698d025510cbc4aa6ccfd308c636f07a1072c79
Message:

Reset the notion of external copies at each changeset
Changesets [840] and [841] introduced a bug in the Subversion log
parser, outlined by #24. This fix the case by resetting the list of
copied paths at each changeset.

Location:
vcpx
Files:
1 added
2 edited

Legend:

Unmodified
Added
Removed
  • vcpx/svn.py

    r1042 r1048  
    6969            self.current_field = [] 
    7070            self.renamed = {} 
    71             self.external_copies = [] 
     71            self.copies = [] 
    7272 
    7373        def startElement(self, name, attributes): 
     
    7676                self.current['revision'] = attributes['revision'] 
    7777                self.current['entries'] = [] 
     78                self.copies = [] 
    7879            elif name in ['author', 'date', 'msg']: 
    7980                self.current_field = [] 
     
    117118                        mv_or_cp[e.old_name] = e 
    118119 
    119                 def parent_was_copied_externally(n): 
    120                     for p in self.external_copies: 
    121                         if n.startswith(p): 
     120                def parent_was_copied(n): 
     121                    for p in self.copies: 
     122                        if n.startswith(p+'/'): 
    122123                            return True 
    123124                    return False 
     
    137138                        e.action_kind = e.ADDED 
    138139                        entries.append(e) 
    139                     elif parent_was_copied_externally(e.name): 
     140                    elif parent_was_copied(e.name): 
    140141                        if e.action_kind != e.DELETED: 
    141142                            e.action_kind = e.ADDED 
     
    167168 
    168169                    if type(self.current_path_action) == type( () ): 
     170                        self.copies.append(entry.name) 
    169171                        old = get_entry_from_path(self.current_path_action[1]) 
    170172                        if old: 
     
    173175                            self.renamed[entry.old_name] = True 
    174176                        else: 
    175                             self.external_copies.append(entry.name) 
    176177                            entry.action_kind = entry.ADDED 
    177178                    else: 
  • vcpx/tests/svn.py

    r933 r1048  
    268268                                            chunksize=100)) 
    269269        self.assertEqual(len(csets), 4) 
     270 
     271    def testExternalCopies(self): 
     272        """Verify that external copies+deletions are handled ok""" 
     273 
     274        log = self.getSvnLog('svn-external_copies_test') 
     275        csets = changesets_from_svnlog(log, 'svn+ssh://caia/tmp/svn', '/trunk') 
     276         
     277        cset = csets.next() 
     278        cset = csets.next() 
     279        self.assertEqual(len(cset.entries), 5) 
     280 
     281        entry = cset.removedEntries()[0] 
     282        self.assertEqual(entry.name, 'README_LOGIN') 
     283 
     284        cset = csets.next() 
     285        self.assertEqual(len(cset.entries), 4) 
Note: See TracChangeset for help on using the changeset viewer.