]> arthur.barton.de Git - bup.git/commitdiff
git.cp(): don't repeatedly recompute default repo 0.29-rc1
authorRob Browning <rlb@defaultvalue.org>
Sat, 17 Dec 2016 20:40:02 +0000 (14:40 -0600)
committerRob Browning <rlb@defaultvalue.org>
Sat, 17 Dec 2016 20:40:04 +0000 (14:40 -0600)
Before, bup would end up calling repo() for every invocation of cp().
Given that constructions like cp().get(id) are common, this could cause
a lot of unecessary calls, given that we already have git.repodir, which
will have the relevant value once initialized.

Discovered after noticing "bup restore" was hammering
"$BUP_DIR"/.git (which didn't exist).

Signed-off-by: Rob Browning <rlb@defaultvalue.org>
Tested-by: Rob Browning <rlb@defaultvalue.org>
lib/bup/git.py

index fc9eb39cb2c35ec8b9d0cc67c4f8b1cdd0b84e24..31ae34216e6dde4b6a6c375d4f02db883ce6d7b1 100644 (file)
@@ -22,7 +22,7 @@ max_pack_objects = 200*1000  # cache memory usage is about 83 bytes per object
 
 verbose = 0
 ignore_midx = 0
-repodir = None
+repodir = None  # The default repository, once initialized
 
 _typemap =  { 'blob':3, 'tree':2, 'commit':1, 'tag':4 }
 _typermap = { 3:'blob', 2:'tree', 1:'commit', 4:'tag' }
@@ -1228,9 +1228,9 @@ _cp = {}
 
 def cp(repo_dir=None):
     """Create a CatPipe object or reuse the already existing one."""
-    global _cp
+    global _cp, repodir
     if not repo_dir:
-        repo_dir = repo()
+        repo_dir = repodir or repo()
     repo_dir = os.path.abspath(repo_dir)
     cp = _cp.get(repo_dir)
     if not cp: