diff mercurial/hg.py @ 262:3db700146536

implement demand loading hack -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 implement demand loading hack This attempts to speed up start-up times without pushing imports down into local scopes. manifest hash: f9c18897e67f7872b44f5c89bdde00edfc3628ce -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.0 (GNU/Linux) iD8DBQFCo0kHywK+sNU5EO8RAg5HAKCxRKAz3FXDyv4wScq1ZbwTgfPa2gCfW9K+ dg5nC3Uvp4FilP8waF6liAY= =dolF -----END PGP SIGNATURE-----
author mpm@selenic.com
date Sun, 05 Jun 2005 10:48:39 -0800
parents 649ed23e4661
children e8eb427c6d71
line wrap: on
line diff
--- a/mercurial/hg.py	Sun Jun 05 10:42:52 2005 -0800
+++ b/mercurial/hg.py	Sun Jun 05 10:48:39 2005 -0800
@@ -6,10 +6,10 @@
 # of the GNU General Public License, incorporated herein by reference.
 
 import sys, struct, os
-from mercurial import lock
-from mercurial.transaction import *
-from mercurial.revlog import *
-from difflib import SequenceMatcher
+from revlog import *
+from demandload import *
+demandload(globals(), "re lock urllib urllib2 transaction time socket")
+demandload(globals(), "tempfile byterange difflib")
 
 class filelog(revlog):
     def __init__(self, opener, path):
@@ -32,7 +32,7 @@
 
         def pair(parent, child):
             new = []
-            sm = SequenceMatcher(None, strip(parent), strip(child))
+            sm = difflib.SequenceMatcher(None, strip(parent), strip(child))
             for o, m, n, s, t in sm.get_opcodes():
                 if o == 'equal':
                     new += parent[m:n]
@@ -138,7 +138,6 @@
 
     def add(self, manifest, list, desc, transaction, p1=None, p2=None,
                   user=None, date=None):
-        import socket, time
         user = (user or
                 os.environ.get("HGUSER") or
                 os.environ.get("EMAIL") or
@@ -310,7 +309,6 @@
             self.dirstate = dirstate(self.opener, ui, self.root)
 
     def ignore(self, f):
-        import re
         if self.ignorelist is None:
             self.ignorelist = []
             try:
@@ -358,14 +356,15 @@
         # save dirstate for undo
         ds = self.opener("dirstate").read()
         self.opener("undo.dirstate", "w").write(ds)
-        return transaction(self.opener, self.join("journal"),
-                           self.join("undo"))
+        
+        return transaction.transaction(self.opener, self.join("journal"),
+                                       self.join("undo"))
 
     def recover(self):
         lock = self.lock()
         if os.path.exists(self.join("recover")):
             self.ui.status("attempting to rollback interrupted transaction\n")
-            return rollback(self.opener, self.join("recover"))
+            return transaction.rollback(self.opener, self.join("recover"))
         else:
             self.ui.warn("no interrupted transaction available\n")
 
@@ -373,7 +372,7 @@
         lock = self.lock()
         if os.path.exists(self.join("undo")):
             self.ui.status("attempting to rollback last transaction\n")
-            rollback(self.opener, self.join("undo"))
+            transaction.rollback(self.opener, self.join("undo"))
             self.dirstate = None
             os.rename(self.join("undo.dirstate"), self.join("dirstate"))
             self.dirstate = dirstate(self.opener, self.ui, self.root)
@@ -952,8 +951,6 @@
     def merge3(self, fn, my, other):
         """perform a 3-way merge in the working directory"""
 
-        import tempfile
-        
         def temp(prefix, node):
             pre = "%s~%s." % (os.path.basename(fn), prefix)
             (fd, name) = tempfile.mkstemp("", pre)
@@ -1164,14 +1161,10 @@
 
 def repository(ui, path=None, create=0):
     if path and path[:7] == "http://":
-        import urllib, urllib2
         return remoterepository(ui, path)
     if path and path[:5] == "hg://":
-        import urllib, urllib2
         return remoterepository(ui, path.replace("hg://", "http://"))
     if path and path[:11] == "old-http://":
-        import urllib, urllib2
-        from mercurial import byterange
         return localrepository(ui, path.replace("old-http://", "http://"))
     else:
         return localrepository(ui, path, create)