# HG changeset patch # User Scott Chacon # Date 1241234167 25200 # Node ID d7b8768d005a05c88e7c75820d30ce47518eb60a # Parent aa2dadf0414402514e4a7a7a236465efd4ee4834 reapplying defunkts changes diff -r aa2dadf04144 -r d7b8768d005a git_handler.py --- a/git_handler.py Fri May 01 20:05:30 2009 -0700 +++ b/git_handler.py Fri May 01 20:16:07 2009 -0700 @@ -360,14 +360,16 @@ def generate_pack_contents(self, want, have): graph_walker = SimpleFetchGraphWalker(want, self.git.get_parents) next = graph_walker.next() - shas = [] + shas = set() while next: if next in have: graph_walker.ack(next) else: - shas.append(next) + shas.add(next) next = graph_walker.next() - + + seen = [] + # so now i have the shas, need to turn them into a list of # tuples (sha, path) for ALL the objects i'm sending # TODO : don't send blobs or trees they already have @@ -377,11 +379,15 @@ for (mode, name, sha) in tree.entries(): if mode == 57344: # TODO : properly handle submodules continue + if sha in seen: + continue + obj = self.git.get_object(sha) + seen.append(sha) if isinstance (obj, Blob): changes.append((obj, path + name)) elif isinstance(obj, Tree): - changes.extend (get_objects (obj, path + name + '/')) + changes.extend(get_objects(obj, path + name + '/')) return changes objects = []