diff -r 908c5906091b -r 7f27e69dd27f mercurial/util.py --- a/mercurial/util.py Mon May 04 21:30:39 2009 +0200 +++ b/mercurial/util.py Mon May 04 22:14:52 2009 +0200 @@ -21,13 +21,18 @@ # Python compatibility def sha1(s): + return _fastsha1(s) + +def _fastsha1(s): + # This function will import sha1 from hashlib or sha (whichever is + # available) and overwrite itself with it on the first call. + # Subsequent calls will go directly to the imported function. try: - import hashlib - _sha1 = hashlib.sha1 + from hashlib import sha1 as _sha1 except ImportError: from sha import sha as _sha1 - global sha1 - sha1 = _sha1 + global _fastsha1 + _fastsha1 = _sha1 return _sha1(s) import subprocess