diff hgext/largefiles/lfutil.py @ 16103:3e1efb458e8b stable

largefiles: only cache largefiles in new heads This fixes a serious performance regression in largefiles introduced in Mercurial 2.1. Caching new largefiles on pull is necessary, because otherwise largefiles will be missing (and unable to be downloaded) when the user tries to merge or rebase a new head with an old one. But this is an expensive operation and should only be done for heads that are new from the pull, rather than on all heads in the repository.
author Na'Tosha Bard <natosha@unity3d.com>
date Fri, 10 Feb 2012 14:46:09 +0100
parents 6a42846cf769
children 47ee41fcf42b 05197f9fd1f3
line wrap: on
line diff
--- a/hgext/largefiles/lfutil.py	Tue Feb 07 18:47:16 2012 +0100
+++ b/hgext/largefiles/lfutil.py	Fri Feb 10 14:46:09 2012 +0100
@@ -449,3 +449,11 @@
 class storeprotonotcapable(Exception):
     def __init__(self, storetypes):
         self.storetypes = storetypes
+
+def getcurrentheads(repo):
+    branches = repo.branchmap()
+    heads = []
+    for branch in branches:
+        newheads = repo.branchheads(branch)
+        heads = heads + newheads
+    return heads