Changeset 1000


Ignore:
Timestamp:
08/17/06 16:54:20 (7 years ago)
Author:
mglb1
Message:

Don't include revisions which only touched directory properties when
finding the youngest revision

File:
1 edited

Legend:

Unmodified
Added
Removed
  • ccsd/trunk/crcnetd/_utils/ccsd_cfengine.py

    r999 r1000  
    18891889    def getYoungestRevision(self, path=""): 
    18901890        """Returns the number of the youngest revision in the repository""" 
     1891        revno = -1 
    18911892 
    18921893        if path != "": 
     
    18971898        try: 
    18981899            self.lock.acquire() 
     1900            t = mkdtemp("", "ccsd") 
    18991901            try: 
    19001902                l = self.mSvn.log(path) 
    1901                 revno = l[0]["revision"].number 
     1903                for entry in l: 
     1904                    # Discard revisions which touched only the directory 
     1905                    r1 = pysvn.Revision(pysvn.opt_revision_kind.number, \ 
     1906                            entry["revision"].number-1) 
     1907                    r2 = pysvn.Revision(pysvn.opt_revision_kind.number, \ 
     1908                            entry["revision"].number) 
     1909                    try: 
     1910                        diff = self.mSvn.diff(t, path, r1, r2).strip() 
     1911                    except: 
     1912                        (type, value, tb) = sys.exc_info() 
     1913                        if str(value).find("was not found") != -1: 
     1914                            # Earlier revision not found, must be added  
     1915                            revno = entry["revision"].number 
     1916                            break 
     1917                    ignore = True 
     1918                    for line in diff.split("\n"): 
     1919                        if line.strip() == "Property changes on:": 
     1920                            continue 
     1921                        if line.startswith("Property changes on:"): 
     1922                            ignore = False 
     1923                            break 
     1924                    if ignore: 
     1925                        continue 
     1926                    # Found a revision which touched inside the directory 
     1927                    revno = entry["revision"].number 
     1928                    break 
    19021929            finally: 
    19031930                self.lock.release() 
     1931                removeDir(t) 
    19041932        except: 
    19051933            log_warn("Could not determine youngest revision", sys.exc_info()) 
    1906             revno = -1 
    19071934 
    19081935        return revno 
Note: See TracChangeset for help on using the changeset viewer.