Changeset 866 in tailor


Ignore:
Timestamp:
10/03/05 01:25:00 (8 years ago)
Author:
lele@…
Hash name:
20051002232500-97f81-927d793eaed07abcad3e7c7dd2bbabb13fce527f
Message:

Collapse multiple deletions on a single file, being tolerant on timestamp
This complete the fix to #7, taking into account the usual threshold
when comparing the timestamp.

Location:
vcpx
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • vcpx/cvs.py

    r865 r866  
    4646    last = None 
    4747 
     48    # Loop over collected changesets, and collapse those with same author, 
     49    # same changelog and that were committed within 3 minutes one from the 
     50    # other. If they have entries in common, keep them separated. Special 
     51    # treatment to deleted entries, given that sometime there are two 
     52    # deletions on the same file: in that case, keep only the last one, 
     53    # with higher revision. 
    4854    for cs in collected: 
    49         if (last and last.author == cs.author and  last.log == cs.log and 
     55        if (last and last.author == cs.author and last.log == cs.log and 
    5056            abs(lastts - cs.date) < threshold and 
    5157            not [e for e in cs.entries 
    52                  if e.name in [n.name for n in last.entries]]): 
    53             last.entries.extend(cs.entries) 
     58                 if e.name in [n.name for n in last.entries 
     59                               if n.action_kind <> e.action_kind]]): 
     60            for e in cs.entries: 
     61                if e.action_kind == e.DELETED: 
     62                    doubledelete = False 
     63                    for n in last.entries: 
     64                        if n.name == e.name and n.action_kind == n.DELETED: 
     65                            doubledelete = True 
     66                            n.new_revision = e.new_revision 
     67                            break 
     68                    if not doubledelete: 
     69                        last.entries.append(e) 
     70                else: 
     71                    last.entries.append(e) 
    5472            if lastts < cs.date: 
    5573                lastts = cs.date 
  • vcpx/tests/cvs.py

    r865 r866  
    954954Backup 
    955955============================================================================= 
     956 
     957RCS file: /cvsroot/composestar/composestar/temp/ComposestarVSAddin/ConfigManager/Attic/ConfigManager.cs,v 
     958head: 1.3 
     959branch: 
     960locks: strict 
     961access list: 
     962keyword substitution: kv 
     963total revisions: 3;     selected revisions: 3 
     964description: 
     965---------------------------- 
     966revision 1.3 
     967date: 2004/07/15 08:28:03;  author: sverre_boschman;  state: dead;  lines: +0 -0 
     968*** empty log message *** 
     969---------------------------- 
     970revision 1.2 
     971date: 2004/07/15 08:28:02;  author: sverre_boschman;  state: dead;  lines: +0 -0 
     972*** empty log message *** 
     973---------------------------- 
     974revision 1.1 
     975date: 2004/07/14 15:39:55;  author: sverre_boschman;  state: Exp; 
     976Backup 
     977============================================================================= 
    956978""" 
    957979 
     
    960982 
    961983        log = StringIO(self.DOUBLE_DEAD_TEST) 
    962         csets = changesets_from_cvslog(log, 'composestar') 
     984        csets = changesets_from_cvslog(log, 
     985                                       'composestar/temp/ComposestarVSAddin') 
    963986 
    964987        self.assertEqual(len(csets), 2) 
    965988 
    966989        cset = csets[0] 
    967         self.assertEqual(len(cset.entries), 1) 
    968         entry = cset.entries[0] 
    969         self.assertEqual(entry.name, 'temp/ComposestarVSAddin/ComposestarVSAddin/Ini.cs') 
     990        self.assertEqual(len(cset.entries), 2) 
     991        entry = cset.entries[0] 
     992        self.assertEqual(entry.name, 'ComposestarVSAddin/Ini.cs') 
    970993        self.assertEqual(entry.new_revision, '1.1') 
    971994        self.assertEqual(entry.action_kind, entry.ADDED) 
     995        entry = cset.entries[1] 
     996        self.assertEqual(entry.name, 'ComposestarVSAddin/ConfigManager.cs') 
     997        self.assertEqual(entry.new_revision, '1.1') 
     998        self.assertEqual(entry.action_kind, entry.ADDED) 
    972999 
    9731000        cset = csets[1] 
    974         self.assertEqual(len(cset.entries), 1) 
    975         entry = cset.entries[0] 
    976         self.assertEqual(entry.name, 'temp/ComposestarVSAddin/ComposestarVSAddin/Ini.cs') 
     1001        self.assertEqual(len(cset.entries), 2) 
     1002        entry = cset.entries[0] 
     1003        self.assertEqual(entry.name, 'ComposestarVSAddin/Ini.cs') 
    9771004        self.assertEqual(entry.new_revision, '1.3') 
    9781005        self.assertEqual(entry.action_kind, entry.DELETED) 
    979  
     1006        entry = cset.entries[1] 
     1007        self.assertEqual(entry.name, 'ComposestarVSAddin/ConfigManager.cs') 
     1008        self.assertEqual(entry.new_revision, '1.3') 
     1009        self.assertEqual(entry.action_kind, entry.DELETED) 
     1010 
Note: See TracChangeset for help on using the changeset viewer.