[Checkins] SVN: zc.buildout/branches/1.4/ Backport of c120884 from trunk
Hanno Schlichting
hannosch at hannosch.eu
Sat Mar 12 03:09:10 EST 2011
Log message for revision 120885:
Backport of c120884 from trunk
Changed:
U zc.buildout/branches/1.4/CHANGES.txt
U zc.buildout/branches/1.4/src/zc/buildout/buildout.py
-=-
Modified: zc.buildout/branches/1.4/CHANGES.txt
===================================================================
--- zc.buildout/branches/1.4/CHANGES.txt 2011-03-12 08:05:52 UTC (rev 120884)
+++ zc.buildout/branches/1.4/CHANGES.txt 2011-03-12 08:09:10 UTC (rev 120885)
@@ -4,6 +4,8 @@
1.4.5 (unreleased)
==================
+- Introduce a cache for the expensive `buildout._dir_hash` function.
+
- Remove duplicate path from script's sys.path setup.
Bugs fixed:
Modified: zc.buildout/branches/1.4/src/zc/buildout/buildout.py
===================================================================
--- zc.buildout/branches/1.4/src/zc/buildout/buildout.py 2011-03-12 08:05:52 UTC (rev 120884)
+++ zc.buildout/branches/1.4/src/zc/buildout/buildout.py 2011-03-12 08:09:10 UTC (rev 120885)
@@ -1371,7 +1371,11 @@
ignore_directories = '.svn', 'CVS'
+_dir_hashes = {}
def _dir_hash(dir):
+ dir_hash = _dir_hashes.get(dir, None)
+ if dir_hash is not None:
+ return dir_hash
hash = md5()
for (dirpath, dirnames, filenames) in os.walk(dir):
dirnames[:] = [n for n in dirnames if n not in ignore_directories]
@@ -1383,7 +1387,8 @@
hash.update(' '.join(filenames))
for name in filenames:
hash.update(open(os.path.join(dirpath, name)).read())
- return hash.digest().encode('base64').strip()
+ _dir_hashes[dir] = dir_hash = hash.digest().encode('base64').strip()
+ return dir_hash
def _dists_sig(dists):
result = []
More information about the checkins
mailing list