##// END OF EJS Templates
Bug fixing in localrepository.changegroupsubset. Bugs found in testing.
Eric Hopper -
r1460:40d08cf1 default
parent child Browse files
Show More
@@ -895,21 +895,27 b' class localrepository:'
895 def changegroupsubset(self, bases, heads):
895 def changegroupsubset(self, bases, heads):
896 cl = self.changelog
896 cl = self.changelog
897 # msng = missing
897 # msng = missing
898 msng_cl_lst, bases, heads = cl.nodesbetween(basenodes, headnodes)
898 msng_cl_lst, bases, heads = cl.nodesbetween(bases, heads)
899 junk = None
899 junk = None
900 knownheads = {}
900 knownheads = {}
901 for n in basenodes:
901 for n in bases:
902 for p in cl.parents(n):
902 for p in cl.parents(n):
903 if p != nullid:
903 if p != nullid:
904 knownheads[p] = 1
904 knownheads[p] = 1
905 knownheads = knownheads.keys()
905 knownheads = knownheads.keys()
906 if knownheads:
906 has_cl_set, junk, junk = cl.nodesbetween(None, knownheads)
907 has_cl_set, junk, junk = cl.nodesbetween(None, knownheads)
907 has_cl_set = dict.fromkeys(hasnodeset)
908 has_cl_set = dict.fromkeys(hasnodeset)
909 else:
910 has_cl_set = {}
908
911
909 mnfst = self.manifest
912 mnfst = self.manifest
910 msng_mnfst_set = {}
913 msng_mnfst_set = {}
911 msng_filenode_set = {}
914 msng_filenode_set = {}
912
915
916 junk = mnfst.index[mnfst.count() - 1] # Get around a bug in lazyindex
917 junk = None
918
913 def identity(x):
919 def identity(x):
914 return x
920 return x
915
921
@@ -938,8 +944,8 b' class localrepository:'
938 for f in c[3]:
944 for f in c[3]:
939 # This is to make sure we only have one instance of each
945 # This is to make sure we only have one instance of each
940 # filename string for each filename.
946 # filename string for each filename.
941 changedfileset.set_default(f, f)
947 changedfileset.setdefault(f, f)
942 msng_mnfst_set.set_default(c[0], clnode)
948 msng_mnfst_set.setdefault(c[0], clnode)
943 return collect_manifests_and_files
949 return collect_manifests_and_files
944
950
945 def prune_manifests():
951 def prune_manifests():
@@ -961,7 +967,8 b' class localrepository:'
961 if fnode is not None:
967 if fnode is not None:
962 clnode = msng_mnfst_set[mnfstnode]
968 clnode = msng_mnfst_set[mnfstnode]
963 ndset = msng_filenode_set.setdefault(f, {})
969 ndset = msng_filenode_set.setdefault(f, {})
964 ndset.set_default(fnode, clnode)
970 ndset.setdefault(fnode, clnode)
971 return collect_msng_filenodes
965
972
966 def prune_filenodes(f, filerevlog):
973 def prune_filenodes(f, filerevlog):
967 msngset = msng_filenode_set[f]
974 msngset = msng_filenode_set[f]
@@ -989,7 +996,7 b' class localrepository:'
989 msng_mnfst_lst.sort(cmp_by_rev_func(mnfst))
996 msng_mnfst_lst.sort(cmp_by_rev_func(mnfst))
990 changedfiles = changedfiles.keys()
997 changedfiles = changedfiles.keys()
991 changedfiles.sort()
998 changedfiles.sort()
992 group = mnfst.group(mnfst, lookup_manifest_link,
999 group = mnfst.group(msng_mnfst_lst, lookup_manifest_link,
993 filenode_collector(changedfiles))
1000 filenode_collector(changedfiles))
994 for chnk in group:
1001 for chnk in group:
995 yield chnk
1002 yield chnk
@@ -1000,10 +1007,10 b' class localrepository:'
1000 prune_filenodes(fname, filerevlog)
1007 prune_filenodes(fname, filerevlog)
1001 msng_filenode_lst = msng_filenode_set[fname].keys()
1008 msng_filenode_lst = msng_filenode_set[fname].keys()
1002 if len(msng_filenode_lst) > 0:
1009 if len(msng_filenode_lst) > 0:
1003 yield struct.pack(">l", len(f) + 4) + f
1010 yield struct.pack(">l", len(fname) + 4) + fname
1004 msng_filenode_lst.sort(cmp_by_rev_func(filerevlog))
1011 msng_filenode_lst.sort(cmp_by_rev_func(filerevlog))
1005 group = filerevlog.group(msng_filenode_lst,
1012 group = filerevlog.group(msng_filenode_lst,
1006 lookup_filenode_link)
1013 lookup_filenode_link_func(fname))
1007 for chnk in group:
1014 for chnk in group:
1008 yield chnk
1015 yield chnk
1009 del msng_filenode_set[fname]
1016 del msng_filenode_set[fname]
@@ -1048,9 +1055,6 b' class localrepository:'
1048 changedfiles.sort()
1055 changedfiles.sort()
1049
1056
1050 mnfst = self.manifest
1057 mnfst = self.manifest
1051 def nodegen(revlog, reviter):
1052 for r in reviter:
1053 yield revlog.node(r)
1054 nodeiter = gennodelst(mnfst)
1058 nodeiter = gennodelst(mnfst)
1055 for chnk in mnfst.group(nodeiter, lookuprevlink_func(mnfst)):
1059 for chnk in mnfst.group(nodeiter, lookuprevlink_func(mnfst)):
1056 yield chnk
1060 yield chnk
General Comments 0
You need to be logged in to leave comments. Login now